Endpoint de teste. Executa o motor com ações simuladas (echoText, transformText, extractKeywords, etc.). Os eventos da execução são coletados e retornados na resposta.

Endpoint

POST /run

Ações disponíveis no sandbox

  • echoText — repete um texto de volta
  • transformText — transforma texto (uppercase, lowercase, reverse, trim)
  • extractKeywords — extrai palavras-chave removendo stopwords
  • calculateSum — soma lista de números com estatísticas
  • buildList — monta lista formatada com título e itens
  • mergeTexts — combina múltiplos textos com separador
  • respondToUser — entrega a resposta final ao chamador (deve ser o último step)

Parâmetros

instructions
string
required

O que o motor deve fazer, em linguagem natural.

context
object

Dados de contexto repassados para as ações (ex: hostId, userId).

options
object

Exemplo

curl -X POST "{BASE_URL}/run" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "Pegue o texto \"hello world\", transforme para maiúsculas e extraia as palavras-chave."
  }'

Resposta

{
  "data": {
    "result": {
      "success": true,
      "intentId": "uuid-da-execucao",
      "steps": [
        {
          "stepNumber": 1,
          "action": "transformText",
          "status": "completed",
          "result": { "original": "hello world", "operation": "uppercase", "result": "HELLO WORLD" },
          "params": { "text": "hello world", "operation": "uppercase" },
          "durationMs": 1200
        },
        {
          "stepNumber": 2,
          "action": "extractKeywords",
          "status": "completed",
          "result": { "keywords": ["hello", "world"], "count": 2 },
          "params": { "text": "HELLO WORLD" },
          "durationMs": 800
        },
        {
          "stepNumber": 3,
          "action": "respondToUser",
          "status": "completed",
          "result": { "message": "As palavras-chave extraídas são: hello, world." },
          "params": { "message": "As palavras-chave extraídas são: hello, world." },
          "durationMs": 500
        }
      ],
      "finalAnswer": { "message": "As palavras-chave extraídas são: hello, world." },
      "feasibilityAnalysis": { "feasible": true, "issues": [], "warnings": [], "recommendations": [] },
      "metrics": {
        "totalDurationMs": 3500,
        "totalLlmCalls": 4,
        "totalTokensUsed": { "prompt": 1200, "completion": 450 }
      },
      "auditLog": [],
      "error": null
    },
    "events": [
      { "type": "plan_ready", "intentId": "uuid", "timestamp": "2024-01-15T14:00:00.000Z", "payload": { "steps": [], "totalSteps": 3 } },
      { "type": "feasibility_checked", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.000Z", "payload": { "feasible": true } },
      { "type": "execution_started", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.100Z", "payload": { "totalSteps": 3 } },
      { "type": "step_started", "intentId": "uuid", "timestamp": "2024-01-15T14:00:01.200Z", "payload": { "stepNumber": 1, "action": "transformText", "progress": 33 } },
      { "type": "step_completed", "intentId": "uuid", "timestamp": "2024-01-15T14:00:02.400Z", "payload": { "stepNumber": 1, "result": {}, "progress": 33 } },
      { "type": "execution_completed", "intentId": "uuid", "timestamp": "2024-01-15T14:00:04.600Z", "payload": { "success": true, "totalSteps": 3 } }
    ]
  }
}

Campos da Resposta

data
object

O body pode vir em req.body.data ou req.body diretamente, dependendo do cliente.

Erros

CódigoDescrição
400instructions ausente ou não é string
500Erro interno do servidor