UNPKG

braiin

Version:

Behavioral Reasoning AI for Intelligent Navigation

66 lines (65 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseLLMAction = void 0; const asString = (value) => typeof value === 'string' ? value : undefined; const parseLLMAction = (raw) => { if (!raw || typeof raw !== 'object') { return { ok: false, error: 'Response is not a JSON object' }; } const obj = raw; const action = asString(obj.action); if (!action) { const legacyTool = asString(obj.tool); if (legacyTool === 'finished') { const answer = asString(obj.input) ?? asString(obj.answer); if (answer === undefined) return { ok: false, error: 'Legacy "finished" requires string "input"' }; return { ok: true, action: { action: 'finish', answer } }; } if (legacyTool === 'none') { const reason = asString(obj.input) ?? asString(obj.reason) ?? 'unspecified'; return { ok: true, action: { action: 'abort', reason } }; } const legacyAgent = asString(obj.agent); if (legacyAgent && legacyTool) { return { ok: true, action: { action: 'call', agent: legacyAgent, tool: legacyTool, input: obj.input } }; } return { ok: false, error: 'Missing "action" field' }; } switch (action) { case 'describe': { const agent = asString(obj.agent); if (!agent) return { ok: false, error: '"describe" requires string "agent"' }; return { ok: true, action: { action: 'describe', agent } }; } case 'call': { const agent = asString(obj.agent); const tool = asString(obj.tool); if (!agent) return { ok: false, error: '"call" requires string "agent"' }; if (!tool) return { ok: false, error: '"call" requires string "tool"' }; return { ok: true, action: { action: 'call', agent, tool, input: obj.input } }; } case 'finish': { const answer = asString(obj.answer) ?? asString(obj.input); if (answer === undefined) return { ok: false, error: '"finish" requires string "answer"' }; return { ok: true, action: { action: 'finish', answer } }; } case 'abort': { const reason = asString(obj.reason) ?? asString(obj.input) ?? 'unspecified'; return { ok: true, action: { action: 'abort', reason } }; } default: return { ok: false, error: `Unknown action: ${action}` }; } }; exports.parseLLMAction = parseLLMAction;