@measureoneinc/savant 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-SDK.md +148 -0
- package/dist/ai/agents/domain-identifier.agent.d.ts +34 -0
- package/dist/ai/agents/domain-identifier.agent.d.ts.map +1 -0
- package/dist/ai/agents/domain-identifier.agent.js +176 -0
- package/dist/ai/agents/domain-identifier.agent.js.map +1 -0
- package/dist/ai/agents/dynamic-agent.d.ts +105 -0
- package/dist/ai/agents/dynamic-agent.d.ts.map +1 -0
- package/dist/ai/agents/dynamic-agent.js +505 -0
- package/dist/ai/agents/dynamic-agent.js.map +1 -0
- package/dist/ai/agents/executor.agent.d.ts +25 -0
- package/dist/ai/agents/executor.agent.d.ts.map +1 -0
- package/dist/ai/agents/executor.agent.js +44 -0
- package/dist/ai/agents/executor.agent.js.map +1 -0
- package/dist/ai/agents/index.d.ts +17 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +29 -0
- package/dist/ai/agents/index.js.map +1 -0
- package/dist/ai/agents/knowledge.agent.d.ts +25 -0
- package/dist/ai/agents/knowledge.agent.d.ts.map +1 -0
- package/dist/ai/agents/knowledge.agent.js +42 -0
- package/dist/ai/agents/knowledge.agent.js.map +1 -0
- package/dist/ai/agents/learning.agent.d.ts +63 -0
- package/dist/ai/agents/learning.agent.d.ts.map +1 -0
- package/dist/ai/agents/learning.agent.js +288 -0
- package/dist/ai/agents/learning.agent.js.map +1 -0
- package/dist/ai/agents/orchestrator.agent.d.ts +26 -0
- package/dist/ai/agents/orchestrator.agent.d.ts.map +1 -0
- package/dist/ai/agents/orchestrator.agent.js +42 -0
- package/dist/ai/agents/orchestrator.agent.js.map +1 -0
- package/dist/ai/agents/planner.agent.d.ts +25 -0
- package/dist/ai/agents/planner.agent.d.ts.map +1 -0
- package/dist/ai/agents/planner.agent.js +36 -0
- package/dist/ai/agents/planner.agent.js.map +1 -0
- package/dist/ai/agents/response-parser.d.ts +23 -0
- package/dist/ai/agents/response-parser.d.ts.map +1 -0
- package/dist/ai/agents/response-parser.js +313 -0
- package/dist/ai/agents/response-parser.js.map +1 -0
- package/dist/ai/agents/summarizer.agent.d.ts +38 -0
- package/dist/ai/agents/summarizer.agent.d.ts.map +1 -0
- package/dist/ai/agents/summarizer.agent.js +245 -0
- package/dist/ai/agents/summarizer.agent.js.map +1 -0
- package/dist/ai/instructions/domain-identifier.instructions.d.ts +10 -0
- package/dist/ai/instructions/domain-identifier.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/domain-identifier.instructions.js +63 -0
- package/dist/ai/instructions/domain-identifier.instructions.js.map +1 -0
- package/dist/ai/instructions/executor.instructions.d.ts +11 -0
- package/dist/ai/instructions/executor.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/executor.instructions.js +218 -0
- package/dist/ai/instructions/executor.instructions.js.map +1 -0
- package/dist/ai/instructions/knowledge.instructions.d.ts +11 -0
- package/dist/ai/instructions/knowledge.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/knowledge.instructions.js +145 -0
- package/dist/ai/instructions/knowledge.instructions.js.map +1 -0
- package/dist/ai/instructions/learning.instructions.d.ts +11 -0
- package/dist/ai/instructions/learning.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/learning.instructions.js +226 -0
- package/dist/ai/instructions/learning.instructions.js.map +1 -0
- package/dist/ai/instructions/orchestrator.instructions.d.ts +11 -0
- package/dist/ai/instructions/orchestrator.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/orchestrator.instructions.js +148 -0
- package/dist/ai/instructions/orchestrator.instructions.js.map +1 -0
- package/dist/ai/instructions/planner.instructions.d.ts +12 -0
- package/dist/ai/instructions/planner.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/planner.instructions.js +129 -0
- package/dist/ai/instructions/planner.instructions.js.map +1 -0
- package/dist/ai/instructions/summarizer.instructions.d.ts +11 -0
- package/dist/ai/instructions/summarizer.instructions.d.ts.map +1 -0
- package/dist/ai/instructions/summarizer.instructions.js +84 -0
- package/dist/ai/instructions/summarizer.instructions.js.map +1 -0
- package/dist/ai/learning/execution-learner.d.ts +79 -0
- package/dist/ai/learning/execution-learner.d.ts.map +1 -0
- package/dist/ai/learning/execution-learner.js +536 -0
- package/dist/ai/learning/execution-learner.js.map +1 -0
- package/dist/ai/response_handlers/base-handler.d.ts +73 -0
- package/dist/ai/response_handlers/base-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/base-handler.js +153 -0
- package/dist/ai/response_handlers/base-handler.js.map +1 -0
- package/dist/ai/response_handlers/direct-response-handler.d.ts +18 -0
- package/dist/ai/response_handlers/direct-response-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/direct-response-handler.js +86 -0
- package/dist/ai/response_handlers/direct-response-handler.js.map +1 -0
- package/dist/ai/response_handlers/error-handler.d.ts +13 -0
- package/dist/ai/response_handlers/error-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/error-handler.js +72 -0
- package/dist/ai/response_handlers/error-handler.js.map +1 -0
- package/dist/ai/response_handlers/handler-registry.d.ts +51 -0
- package/dist/ai/response_handlers/handler-registry.d.ts.map +1 -0
- package/dist/ai/response_handlers/handler-registry.js +268 -0
- package/dist/ai/response_handlers/handler-registry.js.map +1 -0
- package/dist/ai/response_handlers/index.d.ts +16 -0
- package/dist/ai/response_handlers/index.d.ts.map +1 -0
- package/dist/ai/response_handlers/index.js +29 -0
- package/dist/ai/response_handlers/index.js.map +1 -0
- package/dist/ai/response_handlers/message-handler.d.ts +23 -0
- package/dist/ai/response_handlers/message-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/message-handler.js +193 -0
- package/dist/ai/response_handlers/message-handler.js.map +1 -0
- package/dist/ai/response_handlers/plan-ready-handler.d.ts +26 -0
- package/dist/ai/response_handlers/plan-ready-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/plan-ready-handler.js +394 -0
- package/dist/ai/response_handlers/plan-ready-handler.js.map +1 -0
- package/dist/ai/response_handlers/request-input-handler.d.ts +14 -0
- package/dist/ai/response_handlers/request-input-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/request-input-handler.js +87 -0
- package/dist/ai/response_handlers/request-input-handler.js.map +1 -0
- package/dist/ai/response_handlers/request-plan-handler.d.ts +18 -0
- package/dist/ai/response_handlers/request-plan-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/request-plan-handler.js +143 -0
- package/dist/ai/response_handlers/request-plan-handler.js.map +1 -0
- package/dist/ai/response_handlers/step-complete-handler.d.ts +22 -0
- package/dist/ai/response_handlers/step-complete-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/step-complete-handler.js +307 -0
- package/dist/ai/response_handlers/step-complete-handler.js.map +1 -0
- package/dist/ai/response_handlers/unknown-handler.d.ts +12 -0
- package/dist/ai/response_handlers/unknown-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/unknown-handler.js +27 -0
- package/dist/ai/response_handlers/unknown-handler.js.map +1 -0
- package/dist/ai/response_handlers/user-input-handler.d.ts +20 -0
- package/dist/ai/response_handlers/user-input-handler.d.ts.map +1 -0
- package/dist/ai/response_handlers/user-input-handler.js +69 -0
- package/dist/ai/response_handlers/user-input-handler.js.map +1 -0
- package/dist/ai/tools/log-step.d.ts +29 -0
- package/dist/ai/tools/log-step.d.ts.map +1 -0
- package/dist/ai/tools/log-step.js +47 -0
- package/dist/ai/tools/log-step.js.map +1 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +223 -0
- package/dist/app.js.map +1 -0
- package/dist/config/environment/local.d.ts +12 -0
- package/dist/config/environment/local.d.ts.map +1 -0
- package/dist/config/environment/local.js +124 -0
- package/dist/config/environment/local.js.map +1 -0
- package/dist/config/environment/production.d.ts +7 -0
- package/dist/config/environment/production.d.ts.map +1 -0
- package/dist/config/environment/production.js +105 -0
- package/dist/config/environment/production.js.map +1 -0
- package/dist/config/environment/test.d.ts +7 -0
- package/dist/config/environment/test.d.ts.map +1 -0
- package/dist/config/environment/test.js +97 -0
- package/dist/config/environment/test.js.map +1 -0
- package/dist/config/index.d.ts +219 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +360 -0
- package/dist/config/index.js.map +1 -0
- package/dist/controllers/agent_request.controller.d.ts +43 -0
- package/dist/controllers/agent_request.controller.d.ts.map +1 -0
- package/dist/controllers/agent_request.controller.js +141 -0
- package/dist/controllers/agent_request.controller.js.map +1 -0
- package/dist/controllers/base.controller.d.ts +208 -0
- package/dist/controllers/base.controller.d.ts.map +1 -0
- package/dist/controllers/base.controller.js +378 -0
- package/dist/controllers/base.controller.js.map +1 -0
- package/dist/controllers/conversations.controller.d.ts +31 -0
- package/dist/controllers/conversations.controller.d.ts.map +1 -0
- package/dist/controllers/conversations.controller.js +138 -0
- package/dist/controllers/conversations.controller.js.map +1 -0
- package/dist/controllers/knowledge.controller.d.ts +63 -0
- package/dist/controllers/knowledge.controller.d.ts.map +1 -0
- package/dist/controllers/knowledge.controller.js +311 -0
- package/dist/controllers/knowledge.controller.js.map +1 -0
- package/dist/controllers/mcp.controller.d.ts +25 -0
- package/dist/controllers/mcp.controller.d.ts.map +1 -0
- package/dist/controllers/mcp.controller.js +93 -0
- package/dist/controllers/mcp.controller.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/app-constants.d.ts +231 -0
- package/dist/lib/app-constants.d.ts.map +1 -0
- package/dist/lib/app-constants.js +240 -0
- package/dist/lib/app-constants.js.map +1 -0
- package/dist/lib/controller-utils.d.ts +48 -0
- package/dist/lib/controller-utils.d.ts.map +1 -0
- package/dist/lib/controller-utils.js +70 -0
- package/dist/lib/controller-utils.js.map +1 -0
- package/dist/lib/exceptions/app-exceptions.d.ts +158 -0
- package/dist/lib/exceptions/app-exceptions.d.ts.map +1 -0
- package/dist/lib/exceptions/app-exceptions.js +287 -0
- package/dist/lib/exceptions/app-exceptions.js.map +1 -0
- package/dist/lib/middleware/upload.middleware.d.ts +13 -0
- package/dist/lib/middleware/upload.middleware.d.ts.map +1 -0
- package/dist/lib/middleware/upload.middleware.js +35 -0
- package/dist/lib/middleware/upload.middleware.js.map +1 -0
- package/dist/lib/middleware/validation.middleware.d.ts +29 -0
- package/dist/lib/middleware/validation.middleware.d.ts.map +1 -0
- package/dist/lib/middleware/validation.middleware.js +219 -0
- package/dist/lib/middleware/validation.middleware.js.map +1 -0
- package/dist/lib/model/validation-schema/submit-message.schema.d.ts +3 -0
- package/dist/lib/model/validation-schema/submit-message.schema.d.ts.map +1 -0
- package/dist/lib/model/validation-schema/submit-message.schema.js +40 -0
- package/dist/lib/model/validation-schema/submit-message.schema.js.map +1 -0
- package/dist/lib/model/validation-schema/update-knowledge.schema.d.ts +3 -0
- package/dist/lib/model/validation-schema/update-knowledge.schema.d.ts.map +1 -0
- package/dist/lib/model/validation-schema/update-knowledge.schema.js +35 -0
- package/dist/lib/model/validation-schema/update-knowledge.schema.js.map +1 -0
- package/dist/lib/open-ai-event-processor.d.ts +101 -0
- package/dist/lib/open-ai-event-processor.d.ts.map +1 -0
- package/dist/lib/open-ai-event-processor.js +426 -0
- package/dist/lib/open-ai-event-processor.js.map +1 -0
- package/dist/lib/schemas/ai-responses.schema.d.ts +617 -0
- package/dist/lib/schemas/ai-responses.schema.d.ts.map +1 -0
- package/dist/lib/schemas/ai-responses.schema.js +377 -0
- package/dist/lib/schemas/ai-responses.schema.js.map +1 -0
- package/dist/lib/schemas/common.schemas.d.ts +84 -0
- package/dist/lib/schemas/common.schemas.d.ts.map +1 -0
- package/dist/lib/schemas/common.schemas.js +87 -0
- package/dist/lib/schemas/common.schemas.js.map +1 -0
- package/dist/lib/schemas/conversation.schema.d.ts +28 -0
- package/dist/lib/schemas/conversation.schema.d.ts.map +1 -0
- package/dist/lib/schemas/conversation.schema.js +31 -0
- package/dist/lib/schemas/conversation.schema.js.map +1 -0
- package/dist/lib/schemas/http-client.schema.d.ts +39 -0
- package/dist/lib/schemas/http-client.schema.d.ts.map +1 -0
- package/dist/lib/schemas/http-client.schema.js +36 -0
- package/dist/lib/schemas/http-client.schema.js.map +1 -0
- package/dist/lib/schemas/index.d.ts +95 -0
- package/dist/lib/schemas/index.d.ts.map +1 -0
- package/dist/lib/schemas/index.js +32 -0
- package/dist/lib/schemas/index.js.map +1 -0
- package/dist/lib/schemas/knowledge.schema.d.ts +145 -0
- package/dist/lib/schemas/knowledge.schema.d.ts.map +1 -0
- package/dist/lib/schemas/knowledge.schema.js +81 -0
- package/dist/lib/schemas/knowledge.schema.js.map +1 -0
- package/dist/lib/schemas/orchestration.schema.d.ts +168 -0
- package/dist/lib/schemas/orchestration.schema.d.ts.map +1 -0
- package/dist/lib/schemas/orchestration.schema.js +133 -0
- package/dist/lib/schemas/orchestration.schema.js.map +1 -0
- package/dist/lib/schemas/plan.schema.d.ts +103 -0
- package/dist/lib/schemas/plan.schema.d.ts.map +1 -0
- package/dist/lib/schemas/plan.schema.js +58 -0
- package/dist/lib/schemas/plan.schema.js.map +1 -0
- package/dist/lib/sequelize-service.d.ts +23 -0
- package/dist/lib/sequelize-service.d.ts.map +1 -0
- package/dist/lib/sequelize-service.js +446 -0
- package/dist/lib/sequelize-service.js.map +1 -0
- package/dist/lib/source-hash.d.ts +39 -0
- package/dist/lib/source-hash.d.ts.map +1 -0
- package/dist/lib/source-hash.js +56 -0
- package/dist/lib/source-hash.js.map +1 -0
- package/dist/lib/stable-stringify.d.ts +32 -0
- package/dist/lib/stable-stringify.d.ts.map +1 -0
- package/dist/lib/stable-stringify.js +72 -0
- package/dist/lib/stable-stringify.js.map +1 -0
- package/dist/lib/streaming-utils.d.ts +60 -0
- package/dist/lib/streaming-utils.d.ts.map +1 -0
- package/dist/lib/streaming-utils.js +190 -0
- package/dist/lib/streaming-utils.js.map +1 -0
- package/dist/lib/utils/conversation-builder.d.ts +36 -0
- package/dist/lib/utils/conversation-builder.d.ts.map +1 -0
- package/dist/lib/utils/conversation-builder.js +132 -0
- package/dist/lib/utils/conversation-builder.js.map +1 -0
- package/dist/lib/utils/domain-matcher.d.ts +25 -0
- package/dist/lib/utils/domain-matcher.d.ts.map +1 -0
- package/dist/lib/utils/domain-matcher.js +42 -0
- package/dist/lib/utils/domain-matcher.js.map +1 -0
- package/dist/lib/utils/file-util.d.ts +157 -0
- package/dist/lib/utils/file-util.d.ts.map +1 -0
- package/dist/lib/utils/file-util.js +373 -0
- package/dist/lib/utils/file-util.js.map +1 -0
- package/dist/lib/utils/html-summarizer.d.ts +27 -0
- package/dist/lib/utils/html-summarizer.d.ts.map +1 -0
- package/dist/lib/utils/html-summarizer.js +189 -0
- package/dist/lib/utils/html-summarizer.js.map +1 -0
- package/dist/lib/utils/http-client.d.ts +108 -0
- package/dist/lib/utils/http-client.d.ts.map +1 -0
- package/dist/lib/utils/http-client.js +298 -0
- package/dist/lib/utils/http-client.js.map +1 -0
- package/dist/lib/utils/index.d.ts +12 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +28 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +30 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +88 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/mcp-utils.d.ts +208 -0
- package/dist/lib/utils/mcp-utils.d.ts.map +1 -0
- package/dist/lib/utils/mcp-utils.js +451 -0
- package/dist/lib/utils/mcp-utils.js.map +1 -0
- package/dist/lib/utils/sequelize-service.d.ts +153 -0
- package/dist/lib/utils/sequelize-service.d.ts.map +1 -0
- package/dist/lib/utils/sequelize-service.js +339 -0
- package/dist/lib/utils/sequelize-service.js.map +1 -0
- package/dist/lib/utils/tool-call-extractor.d.ts +36 -0
- package/dist/lib/utils/tool-call-extractor.d.ts.map +1 -0
- package/dist/lib/utils/tool-call-extractor.js +121 -0
- package/dist/lib/utils/tool-call-extractor.js.map +1 -0
- package/dist/lib/utils/zod-to-json-schema.d.ts +17 -0
- package/dist/lib/utils/zod-to-json-schema.d.ts.map +1 -0
- package/dist/lib/utils/zod-to-json-schema.js +53 -0
- package/dist/lib/utils/zod-to-json-schema.js.map +1 -0
- package/dist/models/AgentRequest.d.ts +33 -0
- package/dist/models/AgentRequest.d.ts.map +1 -0
- package/dist/models/AgentRequest.js +49 -0
- package/dist/models/AgentRequest.js.map +1 -0
- package/dist/models/AgentRun.d.ts +44 -0
- package/dist/models/AgentRun.d.ts.map +1 -0
- package/dist/models/AgentRun.js +53 -0
- package/dist/models/AgentRun.js.map +1 -0
- package/dist/models/AuditLog.d.ts +37 -0
- package/dist/models/AuditLog.d.ts.map +1 -0
- package/dist/models/AuditLog.js +46 -0
- package/dist/models/AuditLog.js.map +1 -0
- package/dist/models/Conversation.d.ts +39 -0
- package/dist/models/Conversation.d.ts.map +1 -0
- package/dist/models/Conversation.js +49 -0
- package/dist/models/Conversation.js.map +1 -0
- package/dist/models/Embedding.d.ts +56 -0
- package/dist/models/Embedding.d.ts.map +1 -0
- package/dist/models/Embedding.js +36 -0
- package/dist/models/Embedding.js.map +1 -0
- package/dist/models/ExecutionPattern.d.ts +57 -0
- package/dist/models/ExecutionPattern.d.ts.map +1 -0
- package/dist/models/ExecutionPattern.js +61 -0
- package/dist/models/ExecutionPattern.js.map +1 -0
- package/dist/models/Knowledge.d.ts +49 -0
- package/dist/models/Knowledge.d.ts.map +1 -0
- package/dist/models/Knowledge.js +67 -0
- package/dist/models/Knowledge.js.map +1 -0
- package/dist/models/KnowledgeRevision.d.ts +35 -0
- package/dist/models/KnowledgeRevision.d.ts.map +1 -0
- package/dist/models/KnowledgeRevision.js +51 -0
- package/dist/models/KnowledgeRevision.js.map +1 -0
- package/dist/models/Plan.d.ts +34 -0
- package/dist/models/Plan.d.ts.map +1 -0
- package/dist/models/Plan.js +43 -0
- package/dist/models/Plan.js.map +1 -0
- package/dist/models/PlanStep.d.ts +56 -0
- package/dist/models/PlanStep.d.ts.map +1 -0
- package/dist/models/PlanStep.js +65 -0
- package/dist/models/PlanStep.js.map +1 -0
- package/dist/models/SourceData.d.ts +39 -0
- package/dist/models/SourceData.d.ts.map +1 -0
- package/dist/models/SourceData.js +18 -0
- package/dist/models/SourceData.js.map +1 -0
- package/dist/models/index.d.ts +36 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +179 -0
- package/dist/models/index.js.map +1 -0
- package/dist/routes/agent.routes.d.ts +13 -0
- package/dist/routes/agent.routes.d.ts.map +1 -0
- package/dist/routes/agent.routes.js +27 -0
- package/dist/routes/agent.routes.js.map +1 -0
- package/dist/routes/agent_request.routes.d.ts +13 -0
- package/dist/routes/agent_request.routes.d.ts.map +1 -0
- package/dist/routes/agent_request.routes.js +65 -0
- package/dist/routes/agent_request.routes.js.map +1 -0
- package/dist/routes/knowledge.routes.d.ts +13 -0
- package/dist/routes/knowledge.routes.d.ts.map +1 -0
- package/dist/routes/knowledge.routes.js +91 -0
- package/dist/routes/knowledge.routes.js.map +1 -0
- package/dist/routes/mcp.routes.d.ts +14 -0
- package/dist/routes/mcp.routes.d.ts.map +1 -0
- package/dist/routes/mcp.routes.js +27 -0
- package/dist/routes/mcp.routes.js.map +1 -0
- package/dist/sdk/index.d.ts +13 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +35 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/savant.sdk.d.ts +53 -0
- package/dist/sdk/savant.sdk.d.ts.map +1 -0
- package/dist/sdk/savant.sdk.js +120 -0
- package/dist/sdk/savant.sdk.js.map +1 -0
- package/dist/services/agent-request-service.d.ts +104 -0
- package/dist/services/agent-request-service.d.ts.map +1 -0
- package/dist/services/agent-request-service.js +319 -0
- package/dist/services/agent-request-service.js.map +1 -0
- package/dist/services/audit_log.service.d.ts +104 -0
- package/dist/services/audit_log.service.d.ts.map +1 -0
- package/dist/services/audit_log.service.js +339 -0
- package/dist/services/audit_log.service.js.map +1 -0
- package/dist/services/conversation.service.d.ts +90 -0
- package/dist/services/conversation.service.d.ts.map +1 -0
- package/dist/services/conversation.service.js +552 -0
- package/dist/services/conversation.service.js.map +1 -0
- package/dist/services/domain.service.d.ts +58 -0
- package/dist/services/domain.service.d.ts.map +1 -0
- package/dist/services/domain.service.js +244 -0
- package/dist/services/domain.service.js.map +1 -0
- package/dist/services/embedding.service.d.ts +132 -0
- package/dist/services/embedding.service.d.ts.map +1 -0
- package/dist/services/embedding.service.js +587 -0
- package/dist/services/embedding.service.js.map +1 -0
- package/dist/services/file_upload.service.d.ts +50 -0
- package/dist/services/file_upload.service.d.ts.map +1 -0
- package/dist/services/file_upload.service.js +172 -0
- package/dist/services/file_upload.service.js.map +1 -0
- package/dist/services/knowledge.service.d.ts +200 -0
- package/dist/services/knowledge.service.d.ts.map +1 -0
- package/dist/services/knowledge.service.js +784 -0
- package/dist/services/knowledge.service.js.map +1 -0
- package/dist/types/responses-api.types.d.ts +181 -0
- package/dist/types/responses-api.types.d.ts.map +1 -0
- package/dist/types/responses-api.types.js +12 -0
- package/dist/types/responses-api.types.js.map +1 -0
- package/package.json +145 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Request Plan Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles REQUEST_PLAN message_type from AgentResponse.
|
|
6
|
+
* Agent is requesting a plan from the planner.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RequestPlanHandler = void 0;
|
|
10
|
+
const base_handler_1 = require("./base-handler");
|
|
11
|
+
const domain_matcher_1 = require("../../lib/utils/domain-matcher");
|
|
12
|
+
class RequestPlanHandler extends base_handler_1.BaseHandler {
|
|
13
|
+
can_handle(message_type, output_type, input) {
|
|
14
|
+
return message_type === 'REQUEST_PLAN';
|
|
15
|
+
}
|
|
16
|
+
async handle(input, context) {
|
|
17
|
+
this.logger.info('Request plan handler received result');
|
|
18
|
+
// Parse AgentResponse from output_text
|
|
19
|
+
let agent_response;
|
|
20
|
+
if (!input.content) {
|
|
21
|
+
this.logger.warn('⚠️ No output_text in response');
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
result: [],
|
|
25
|
+
should_continue: false
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Use base handler extraction method to handle markdown, escape sequences, etc.
|
|
29
|
+
const extracted = this.extract_agent_response(input.content);
|
|
30
|
+
if (!extracted) {
|
|
31
|
+
this.logger.error('❌ Failed to extract AgentResponse from output_text');
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
result: [],
|
|
35
|
+
should_continue: false
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
agent_response = extracted;
|
|
39
|
+
// Extract domain from orchestrator response (for domain identification)
|
|
40
|
+
const extracted_domain = agent_response?.domain || agent_response?.content?.domain || null;
|
|
41
|
+
const available_domains = context?.available_domains || [];
|
|
42
|
+
// Find matching domain (case-insensitive) and use original case from available_domains
|
|
43
|
+
const matched_domain = extracted_domain ? (0, domain_matcher_1.find_matching_domain)(extracted_domain, available_domains) : null;
|
|
44
|
+
const domain_valid = (0, domain_matcher_1.is_domain_in_list)(extracted_domain, available_domains);
|
|
45
|
+
// Log domain identification result from orchestrator
|
|
46
|
+
this.logger.info('🎯 RequestPlanHandler - Orchestrator domain identification', {
|
|
47
|
+
identified_domain: extracted_domain || 'null',
|
|
48
|
+
matched_domain: matched_domain || 'null',
|
|
49
|
+
message_type: agent_response.message_type,
|
|
50
|
+
available_domains: available_domains,
|
|
51
|
+
domain_valid: domain_valid,
|
|
52
|
+
agent_kind: agent_response?.agent_kind
|
|
53
|
+
});
|
|
54
|
+
// Validate domain for REQUEST_PLAN
|
|
55
|
+
if (!extracted_domain || !domain_valid) {
|
|
56
|
+
const error_message = !extracted_domain
|
|
57
|
+
? 'Could not identify domain for the request. Available domains: ' + available_domains.join(', ')
|
|
58
|
+
: `Domain '${extracted_domain}' is not supported. Available domains: ${available_domains.join(', ')}`;
|
|
59
|
+
this.logger.warn(!extracted_domain ? '❌ No domain identified for REQUEST_PLAN' : '❌ Domain not in available_domains', {
|
|
60
|
+
identified_domain: extracted_domain,
|
|
61
|
+
available_domains: available_domains
|
|
62
|
+
});
|
|
63
|
+
// Reject the request - domain is missing or invalid
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
result: [],
|
|
67
|
+
should_continue: false,
|
|
68
|
+
context: {
|
|
69
|
+
message_type: 'NO_DOMAIN',
|
|
70
|
+
domain: null,
|
|
71
|
+
error: error_message
|
|
72
|
+
},
|
|
73
|
+
message_type: 'NO_DOMAIN'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// Use matched_domain (with original case from available_domains) for consistency
|
|
77
|
+
this.logger.info('✅ Domain validated', { domain: matched_domain });
|
|
78
|
+
// Store domain in context for later use (e.g., learning capture)
|
|
79
|
+
// Use matched_domain to ensure consistent casing
|
|
80
|
+
const handler_context = {
|
|
81
|
+
domain: matched_domain
|
|
82
|
+
};
|
|
83
|
+
this.streaming_utils.write('status', { message: extracted.content.message });
|
|
84
|
+
// Check if there's an active plan in context
|
|
85
|
+
// If there is, route to executor (STEP_READY) instead of planner
|
|
86
|
+
const plan_id = context?.plan_id;
|
|
87
|
+
if (plan_id) {
|
|
88
|
+
this.logger.info(`✅ Request plan received but active plan exists (plan_id: ${plan_id}) - routing to executor`);
|
|
89
|
+
// Format message for executor to continue with the plan
|
|
90
|
+
const user_message = typeof input.content === 'string'
|
|
91
|
+
? input.content
|
|
92
|
+
: input.content?.message || input.content?.text || JSON.stringify(input.content);
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
result: [{
|
|
96
|
+
role: 'user',
|
|
97
|
+
content: `I have provided additional inputs: ${user_message}. Continue with the plan from the next step.`
|
|
98
|
+
}],
|
|
99
|
+
should_continue: true,
|
|
100
|
+
message_type: 'STEP_READY' // Route to executor when active plan exists
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
this.logger.info(`✅ Request plan received - continuing to planner`);
|
|
104
|
+
// REQUEST_PLAN - continue to planner (no active plan)
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
result: [{
|
|
108
|
+
role: 'user',
|
|
109
|
+
content: ' Create a detailed plan for the task: ' + context.original_message
|
|
110
|
+
}],
|
|
111
|
+
should_continue: true,
|
|
112
|
+
message_type: 'REQUEST_PLAN', // Route to planner based on context
|
|
113
|
+
context: handler_context // Include domain in context
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Prepare input for PlannerAgent
|
|
118
|
+
* Formats the message for plan creation
|
|
119
|
+
*/
|
|
120
|
+
prepare_input(last_message) {
|
|
121
|
+
if (!last_message) {
|
|
122
|
+
return [{
|
|
123
|
+
role: 'user',
|
|
124
|
+
content: 'Create a detailed plan for the task'
|
|
125
|
+
}];
|
|
126
|
+
}
|
|
127
|
+
// Extract the user's message
|
|
128
|
+
let user_message = '';
|
|
129
|
+
if (typeof last_message.content === 'string') {
|
|
130
|
+
user_message = last_message.content;
|
|
131
|
+
}
|
|
132
|
+
else if (last_message.content && typeof last_message.content === 'object') {
|
|
133
|
+
user_message = last_message.content.message || last_message.content.text || JSON.stringify(last_message.content);
|
|
134
|
+
}
|
|
135
|
+
const formatted_message = user_message || 'Create a detailed plan for the task';
|
|
136
|
+
return [{
|
|
137
|
+
role: 'user',
|
|
138
|
+
content: formatted_message
|
|
139
|
+
}];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.RequestPlanHandler = RequestPlanHandler;
|
|
143
|
+
//# sourceMappingURL=request-plan-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-plan-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/request-plan-handler.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,iDAA4E;AAE5E,mEAAyF;AAEzF,MAAa,kBAAmB,SAAQ,0BAAW;IAE/C,UAAU,CAAC,YAA2B,EAAE,WAAmB,EAAE,KAAkB;QAC3E,OAAO,YAAY,KAAK,cAAc,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB,EAAE,OAAuB;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAEzD,uCAAuC;QACvC,IAAI,cAA6B,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAClD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,KAAK;aACzB,CAAC;QACN,CAAC;QAED,gFAAgF;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,KAAK;aACzB,CAAC;QACN,CAAC;QAED,cAAc,GAAG,SAAS,CAAC;QAE3B,wEAAwE;QACxE,MAAM,gBAAgB,GAAI,cAAsB,EAAE,MAAM,IAAK,cAAsB,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;QAC7G,MAAM,iBAAiB,GAAI,OAAe,EAAE,iBAAiB,IAAI,EAAE,CAAC;QAEpE,uFAAuF;QACvF,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAA,qCAAoB,EAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3G,MAAM,YAAY,GAAG,IAAA,kCAAiB,EAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;QAE5E,qDAAqD;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;YAC3E,iBAAiB,EAAE,gBAAgB,IAAI,MAAM;YAC7C,cAAc,EAAE,cAAc,IAAI,MAAM;YACxC,YAAY,EAAE,cAAc,CAAC,YAAY;YACzC,iBAAiB,EAAE,iBAAiB;YACpC,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAG,cAAsB,EAAE,UAAU;SAClD,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,CAAC,gBAAgB;gBACnC,CAAC,CAAC,gEAAgE,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjG,CAAC,CAAC,WAAW,gBAAgB,0CAA0C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAE1G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,mCAAmC,EAAE;gBAClH,iBAAiB,EAAE,gBAAgB;gBACnC,iBAAiB,EAAE,iBAAiB;aACvC,CAAC,CAAC;YAEH,oDAAoD;YACpD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,eAAe,EAAE,KAAK;gBACtB,OAAO,EAAE;oBACL,YAAY,EAAE,WAAW;oBACzB,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,aAAa;iBACvB;gBACD,YAAY,EAAE,WAAW;aAC5B,CAAC;QACN,CAAC;QAED,iFAAiF;QACjF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAEnE,iEAAiE;QACjE,iDAAiD;QACjD,MAAM,eAAe,GAAQ;YACzB,MAAM,EAAE,cAAc;SACzB,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAG,SAAiB,CAAC,OAAO,CAAC,OAAiB,EAAE,CAAC,CAAC;QAEhG,6CAA6C;QAC7C,iEAAiE;QACjE,MAAM,OAAO,GAAI,OAAe,EAAE,OAAO,CAAC;QAE1C,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,OAAO,yBAAyB,CAAC,CAAC;YAE/G,wDAAwD;YACxD,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAClD,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAE,KAAK,CAAC,OAAe,EAAE,OAAO,IAAK,KAAK,CAAC,OAAe,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEvG,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,CAAC;wBACL,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,sCAAsC,YAAY,8CAA8C;qBAC5G,CAAC;gBACF,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,YAAY,CAAC,4CAA4C;aAC1E,CAAC;QACN,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAEpE,sDAAsD;QACtD,OAAO;YACH,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,CAAC;oBACL,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,wCAAwC,GAAG,OAAO,CAAC,gBAA0B;iBACzF,CAAC;YACF,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,cAAc,EAAE,oCAAoC;YAClE,OAAO,EAAE,eAAe,CAAC,4BAA4B;SACxD,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,YAAyB;QACnC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,CAAC;oBACJ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,qCAAqC;iBACjD,CAAC,CAAC;QACP,CAAC;QAED,6BAA6B;QAC7B,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,IAAI,YAAY,CAAC,OAAO,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1E,YAAY,GAAI,YAAY,CAAC,OAAe,CAAC,OAAO,IAAK,YAAY,CAAC,OAAe,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvI,CAAC;QAED,MAAM,iBAAiB,GAAG,YAAY,IAAI,qCAAqC,CAAC;QAEhF,OAAO,CAAC;gBACJ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,iBAAiB;aAC7B,CAAC,CAAC;IACP,CAAC;CACJ;AAxJD,gDAwJC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Step Complete Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles STEP_COMPLETE message_type from AgentResponse.
|
|
5
|
+
* Updates step status in database, finds next step, and continues execution.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
8
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
9
|
+
export declare class StepCompleteHandler extends BaseHandler {
|
|
10
|
+
can_handle(message_type: string | null, output_type: string, input: ChatMessage): boolean;
|
|
11
|
+
handle(input: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Load conversation context from database
|
|
14
|
+
*/
|
|
15
|
+
private load_conversation_context;
|
|
16
|
+
/**
|
|
17
|
+
* Save context to conversation in database
|
|
18
|
+
* Merges new context with existing context
|
|
19
|
+
*/
|
|
20
|
+
private save_conversation_context;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=step-complete-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-complete-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/step-complete-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAoB,WAAW,EAA6B,MAAM,mBAAmB,CAAC;AAI7F,qBAAa,mBAAoB,SAAQ,WAAW;IAEhD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAInF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyQjF;;OAEG;YACW,yBAAyB;IAuBvC;;;OAGG;YACW,yBAAyB;CAsC1C"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Step Complete Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles STEP_COMPLETE message_type from AgentResponse.
|
|
6
|
+
* Updates step status in database, finds next step, and continues execution.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StepCompleteHandler = void 0;
|
|
10
|
+
const base_handler_1 = require("./base-handler");
|
|
11
|
+
const models_1 = require("../../models");
|
|
12
|
+
class StepCompleteHandler extends base_handler_1.BaseHandler {
|
|
13
|
+
can_handle(message_type, output_type, input) {
|
|
14
|
+
return message_type === 'STEP_COMPLETE';
|
|
15
|
+
}
|
|
16
|
+
async handle(input, context) {
|
|
17
|
+
this.logger.info('Step complete handler received result ' + input.content);
|
|
18
|
+
// Parse AgentResponse from output_text
|
|
19
|
+
if (!input.content) {
|
|
20
|
+
this.logger.warn('⚠️ No output_text in response');
|
|
21
|
+
return { success: false, result: [], should_continue: false };
|
|
22
|
+
}
|
|
23
|
+
const extracted = this.extract_agent_response(input.content);
|
|
24
|
+
if (!extracted) {
|
|
25
|
+
this.logger.error('❌ Failed to extract AgentResponse from output_text');
|
|
26
|
+
return { success: false, result: [], should_continue: false };
|
|
27
|
+
}
|
|
28
|
+
const executor_response = extracted;
|
|
29
|
+
const step_result = executor_response.content?.step_result;
|
|
30
|
+
const step_result_context = executor_response.content?.context;
|
|
31
|
+
if (!step_result) {
|
|
32
|
+
this.logger.warn('⚠️ STEP_COMPLETE but no step_result in response');
|
|
33
|
+
return { success: false, result: [], should_continue: false };
|
|
34
|
+
}
|
|
35
|
+
// Load context from database
|
|
36
|
+
if (!step_result_context?.conversation_id) {
|
|
37
|
+
this.logger.error('❌ conversation_id not found in handler context');
|
|
38
|
+
return { success: false, result: [], should_continue: false };
|
|
39
|
+
}
|
|
40
|
+
const db_context = await this.load_conversation_context(step_result_context.conversation_id);
|
|
41
|
+
// Extract plan_id - prioritize step_result context since that's what the executor is reporting
|
|
42
|
+
// This ensures we use the correct plan_id even if the database context is stale
|
|
43
|
+
const content_context = executor_response.content?.context || {};
|
|
44
|
+
const plan_id = content_context?.plan_id || step_result_context?.plan_id || db_context?.plan_id || null;
|
|
45
|
+
if (!plan_id) {
|
|
46
|
+
this.logger.error('❌ plan_id not found in conversation context');
|
|
47
|
+
return { success: false, result: [], should_continue: false };
|
|
48
|
+
}
|
|
49
|
+
// Extract tool results from context (passed from conversation service)
|
|
50
|
+
// Tool results are extracted from automaticFunctionCallingHistory after ExecutorAgent execution
|
|
51
|
+
let tool_results = [];
|
|
52
|
+
if (context.tool_results && Array.isArray(context.tool_results)) {
|
|
53
|
+
tool_results = context.tool_results;
|
|
54
|
+
this.logger.info(`📊 Found ${tool_results.length} tool result(s) in handler context`);
|
|
55
|
+
}
|
|
56
|
+
else if (content_context?.tool_results && Array.isArray(content_context.tool_results)) {
|
|
57
|
+
tool_results = content_context.tool_results;
|
|
58
|
+
}
|
|
59
|
+
else if (step_result_context?.tool_results && Array.isArray(step_result_context.tool_results)) {
|
|
60
|
+
tool_results = step_result_context.tool_results;
|
|
61
|
+
}
|
|
62
|
+
else if (db_context?.tool_results && Array.isArray(db_context.tool_results)) {
|
|
63
|
+
// Fallback to database context
|
|
64
|
+
tool_results = db_context.tool_results;
|
|
65
|
+
}
|
|
66
|
+
// Extract context from step_result and merge with DB context (context is separate from step instructions)
|
|
67
|
+
const step_context = { ...step_result_context, ...content_context };
|
|
68
|
+
// Merge tool_results: deduplicate by call_id before merging
|
|
69
|
+
const existing_tool_results = db_context?.tool_results || [];
|
|
70
|
+
const existing_call_ids = new Set(existing_tool_results.map((tr) => tr.call_id).filter(Boolean));
|
|
71
|
+
// Filter out duplicates from new tool_results
|
|
72
|
+
const unique_new_results = tool_results.filter((tr) => {
|
|
73
|
+
const call_id = tr.call_id;
|
|
74
|
+
if (!call_id) {
|
|
75
|
+
// If no call_id, check for duplicates by tool_name + result hash
|
|
76
|
+
const result_str = JSON.stringify(tr.result);
|
|
77
|
+
const key = `${tr.tool_name}:${result_str}`;
|
|
78
|
+
return !existing_tool_results.some((etr) => {
|
|
79
|
+
if (etr.call_id)
|
|
80
|
+
return false; // Has call_id, skip
|
|
81
|
+
return `${etr.tool_name}:${JSON.stringify(etr.result)}` === key;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return !existing_call_ids.has(call_id);
|
|
85
|
+
});
|
|
86
|
+
const all_tool_results = [...existing_tool_results, ...unique_new_results];
|
|
87
|
+
if (unique_new_results.length < tool_results.length) {
|
|
88
|
+
this.logger.info(`📊 Filtered out ${tool_results.length - unique_new_results.length} duplicate tool result(s)`);
|
|
89
|
+
}
|
|
90
|
+
const merged_context = {
|
|
91
|
+
...db_context,
|
|
92
|
+
...step_context,
|
|
93
|
+
plan_id: plan_id,
|
|
94
|
+
tool_results: all_tool_results // All tool results from all steps (deduplicated)
|
|
95
|
+
};
|
|
96
|
+
// Save merged context to database (without step instructions)
|
|
97
|
+
await this.save_conversation_context(context.conversation_id, merged_context);
|
|
98
|
+
// Determine if step succeeded (no error)
|
|
99
|
+
const is_success = step_result.success;
|
|
100
|
+
const error_message = executor_response.content?.error_message || null;
|
|
101
|
+
const error_code = executor_response.content?.error_code || null;
|
|
102
|
+
const step_succeeded = is_success && !error_message && !error_code;
|
|
103
|
+
// Update step status in database
|
|
104
|
+
let next_step = null;
|
|
105
|
+
const all_steps = await models_1.PlanStepModel.findAll({ where: { plan_id }, order: [['step_index', 'ASC']] });
|
|
106
|
+
// Find current step by step_id first, then fallback to step_index
|
|
107
|
+
let current_step = all_steps.find(s => s.id === step_result.step_id);
|
|
108
|
+
if (!current_step && step_result.step_index !== undefined) {
|
|
109
|
+
current_step = all_steps.find(s => s.step_index === step_result.step_index);
|
|
110
|
+
}
|
|
111
|
+
if (!current_step) {
|
|
112
|
+
this.logger.error('❌ Current step not found in database', {
|
|
113
|
+
step_id: step_result.step_id,
|
|
114
|
+
step_index: step_result.step_index,
|
|
115
|
+
plan_id: plan_id,
|
|
116
|
+
available_steps: all_steps.map(s => ({ id: s.id, step_index: s.step_index, status: s.status }))
|
|
117
|
+
});
|
|
118
|
+
return { success: false, result: [], should_continue: false };
|
|
119
|
+
}
|
|
120
|
+
// Prepare update attributes based on success/failure
|
|
121
|
+
const step_status = step_succeeded ? 'COMPLETED' : 'FAILED';
|
|
122
|
+
const error_text = step_succeeded ? null : (error_message || (error_code ? `Error code: ${error_code}` : 'Step execution failed') || 'Step execution failed');
|
|
123
|
+
// Update step status in database
|
|
124
|
+
await current_step.update({
|
|
125
|
+
status: step_status, result: step_result.result || null, error: error_text,
|
|
126
|
+
completed_at: new Date(), updated_at: new Date()
|
|
127
|
+
});
|
|
128
|
+
if (!step_succeeded) {
|
|
129
|
+
return {
|
|
130
|
+
success: false, result: [input], should_continue: false,
|
|
131
|
+
context: merged_context, message_type: 'EXECUTION_REPORT'
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
this.logger.info(`✅ Marked step ${current_step.step_index} as COMPLETED`);
|
|
135
|
+
// Get next step (first pending step after current) only if current step succeeded
|
|
136
|
+
// Only look for steps with step_index greater than current step_index
|
|
137
|
+
// This ensures we don't accidentally mark the plan as complete if there are earlier pending steps
|
|
138
|
+
const current_step_index = current_step.step_index;
|
|
139
|
+
next_step = all_steps.find(s => s.status === 'PENDING' && s.step_index > current_step_index) || null;
|
|
140
|
+
// Log all steps for debugging
|
|
141
|
+
this.logger.info(`🔍 Checking for next step after step ${current_step_index}`, {
|
|
142
|
+
total_steps: all_steps.length,
|
|
143
|
+
current_step_index: current_step_index,
|
|
144
|
+
all_steps_status: all_steps.map(s => ({ step_index: s.step_index, status: s.status })),
|
|
145
|
+
pending_steps_after_current: all_steps.filter(s => s.status === 'PENDING' && s.step_index > current_step_index).map(s => s.step_index)
|
|
146
|
+
});
|
|
147
|
+
if (!next_step) {
|
|
148
|
+
// Check if there are any pending steps at all (including earlier ones)
|
|
149
|
+
const any_pending_steps = all_steps.some(s => s.status === 'PENDING');
|
|
150
|
+
if (any_pending_steps) {
|
|
151
|
+
this.logger.warn(`⚠️ No next step found after step ${current_step_index}, but there are pending steps. This might indicate a step_index ordering issue.`);
|
|
152
|
+
// Find the first pending step regardless of index (fallback)
|
|
153
|
+
next_step = all_steps.find(s => s.status === 'PENDING') || null;
|
|
154
|
+
}
|
|
155
|
+
if (!next_step) {
|
|
156
|
+
// All steps are complete - mark plan as COMPLETED
|
|
157
|
+
const plan = await models_1.PlanModel.findByPk(plan_id);
|
|
158
|
+
if (plan) {
|
|
159
|
+
await plan.update({ status: 'COMPLETED', updated_at: new Date() });
|
|
160
|
+
this.logger.info(`✅ All steps completed - marked plan ${plan_id} as COMPLETED`);
|
|
161
|
+
// Update context with completed plan
|
|
162
|
+
const all_steps_completed = await models_1.PlanStepModel.findAll({
|
|
163
|
+
where: { plan_id: plan_id },
|
|
164
|
+
order: [['step_index', 'ASC']]
|
|
165
|
+
});
|
|
166
|
+
const plan_with_steps = {
|
|
167
|
+
...plan.to_shared_type(),
|
|
168
|
+
steps: all_steps_completed.map(step => step.to_shared_type())
|
|
169
|
+
};
|
|
170
|
+
merged_context.plan = plan_with_steps;
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
success: true,
|
|
174
|
+
result: [input],
|
|
175
|
+
should_continue: false,
|
|
176
|
+
context: merged_context,
|
|
177
|
+
message_type: 'EXECUTION_REPORT'
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
await next_step.update({ status: 'IN_PROGRESS', started_at: new Date(), updated_at: new Date() });
|
|
182
|
+
this.logger.info(`✅ Marked next step ${next_step.step_index} as IN_PROGRESS`);
|
|
183
|
+
// Load plan with all steps for context update
|
|
184
|
+
const plan = await models_1.PlanModel.findByPk(plan_id);
|
|
185
|
+
if (plan) {
|
|
186
|
+
const all_steps = await models_1.PlanStepModel.findAll({
|
|
187
|
+
where: { plan_id: plan_id },
|
|
188
|
+
order: [['step_index', 'ASC']]
|
|
189
|
+
});
|
|
190
|
+
const plan_with_steps = {
|
|
191
|
+
...plan.to_shared_type(),
|
|
192
|
+
steps: all_steps.map(step => step.to_shared_type())
|
|
193
|
+
};
|
|
194
|
+
merged_context.plan = plan_with_steps;
|
|
195
|
+
}
|
|
196
|
+
// Query knowledge base using next step description
|
|
197
|
+
let knowledge_base_results = [];
|
|
198
|
+
if (context.embedding_service && next_step.description) {
|
|
199
|
+
try {
|
|
200
|
+
this.logger.info(`🔍 Querying knowledge base for next step: ${next_step.description}`);
|
|
201
|
+
knowledge_base_results = await context.embedding_service.search_embeddings(next_step.description, undefined, // knowledge_id - search all
|
|
202
|
+
10, // limit
|
|
203
|
+
undefined, // model - use default
|
|
204
|
+
undefined, // type - search all types
|
|
205
|
+
undefined // domain - search all domains
|
|
206
|
+
);
|
|
207
|
+
this.logger.info(`✅ Found ${knowledge_base_results.length} knowledge base results for next step`);
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
this.logger.warn('⚠️ Failed to query knowledge base', { error });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Format knowledge base results for inclusion in message
|
|
214
|
+
let knowledge_base_text = '';
|
|
215
|
+
if (knowledge_base_results.length > 0) {
|
|
216
|
+
knowledge_base_text = `\n\n## Knowledge Base Learnings:\n`;
|
|
217
|
+
knowledge_base_text += knowledge_base_results.map((result, idx) => `${idx + 1}. ${result.text} (score: ${result.score.toFixed(3)})`).join('\n');
|
|
218
|
+
}
|
|
219
|
+
// Format context JSON for inclusion in message
|
|
220
|
+
const context_json = JSON.stringify(merged_context, null, 2);
|
|
221
|
+
// Create result message with step instructions and context (similar to PlanReadyHandler)
|
|
222
|
+
return {
|
|
223
|
+
success: true,
|
|
224
|
+
result: [{
|
|
225
|
+
role: 'user',
|
|
226
|
+
content: `Execute the following step: ${next_step.id}: ${next_step.description}
|
|
227
|
+
Use the parameters available from the context in JSON format below.
|
|
228
|
+
If the step is unsuccessful, use the suggestions on failure to recover.
|
|
229
|
+
${knowledge_base_text}
|
|
230
|
+
## Context:
|
|
231
|
+
\`\`\`json
|
|
232
|
+
${context_json}
|
|
233
|
+
\`\`\`
|
|
234
|
+
`
|
|
235
|
+
}],
|
|
236
|
+
should_continue: true,
|
|
237
|
+
context: merged_context,
|
|
238
|
+
message_type: 'STEP_READY'
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Load conversation context from database
|
|
243
|
+
*/
|
|
244
|
+
async load_conversation_context(conversation_id) {
|
|
245
|
+
try {
|
|
246
|
+
const conversation = await models_1.ConversationModel.findByPk(conversation_id);
|
|
247
|
+
if (!conversation || !conversation.context) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
return JSON.parse(conversation.context);
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
this.logger.warn('⚠️ Failed to parse conversation context from database', { error: e });
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
this.logger.error('❌ Failed to load conversation context', {
|
|
260
|
+
error: error instanceof Error ? error.message : String(error),
|
|
261
|
+
conversation_id
|
|
262
|
+
});
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Save context to conversation in database
|
|
268
|
+
* Merges new context with existing context
|
|
269
|
+
*/
|
|
270
|
+
async save_conversation_context(conversation_id, new_context) {
|
|
271
|
+
try {
|
|
272
|
+
const conversation = await models_1.ConversationModel.findByPk(conversation_id);
|
|
273
|
+
if (!conversation) {
|
|
274
|
+
this.logger.warn(`⚠️ Conversation not found: ${conversation_id}`);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
// Load existing context
|
|
278
|
+
let existing_context = {};
|
|
279
|
+
if (conversation.context) {
|
|
280
|
+
try {
|
|
281
|
+
existing_context = JSON.parse(conversation.context);
|
|
282
|
+
}
|
|
283
|
+
catch (e) {
|
|
284
|
+
this.logger.warn('⚠️ Failed to parse existing context, starting fresh');
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// Merge new context with existing (new context takes precedence)
|
|
288
|
+
const merged_context = { ...existing_context, ...new_context };
|
|
289
|
+
// Save merged context
|
|
290
|
+
conversation.context = JSON.stringify(merged_context);
|
|
291
|
+
await conversation.save();
|
|
292
|
+
this.logger.info('✅ Saved conversation context to database', {
|
|
293
|
+
conversation_id,
|
|
294
|
+
context_keys: Object.keys(merged_context)
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
this.logger.error('❌ Failed to save conversation context', {
|
|
299
|
+
error: error instanceof Error ? error.message : String(error),
|
|
300
|
+
conversation_id
|
|
301
|
+
});
|
|
302
|
+
// Don't throw - context saving is not critical
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
exports.StepCompleteHandler = StepCompleteHandler;
|
|
307
|
+
//# sourceMappingURL=step-complete-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-complete-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/step-complete-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unknown Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles unknown output types as a fallback.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
7
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
8
|
+
export declare class UnknownHandler extends BaseHandler {
|
|
9
|
+
can_handle(message_type: string | null, output_type: string, input: ChatMessage): boolean;
|
|
10
|
+
handle(input: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=unknown-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknown-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/unknown-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,cAAe,SAAQ,WAAW;IAC9C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAKnF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAYjF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Unknown Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles unknown output types as a fallback.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.UnknownHandler = void 0;
|
|
9
|
+
const base_handler_1 = require("./base-handler");
|
|
10
|
+
class UnknownHandler extends base_handler_1.BaseHandler {
|
|
11
|
+
can_handle(message_type, output_type, input) {
|
|
12
|
+
// This is the fallback handler - always returns true
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
async handle(input, context) {
|
|
16
|
+
this.logger.warn(`⚠️ Unknown output type: ${input.content}`);
|
|
17
|
+
return {
|
|
18
|
+
success: true,
|
|
19
|
+
result: [input],
|
|
20
|
+
should_continue: false,
|
|
21
|
+
context: {},
|
|
22
|
+
message_type: null
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.UnknownHandler = UnknownHandler;
|
|
27
|
+
//# sourceMappingURL=unknown-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknown-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/unknown-handler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,iDAA4E;AAG5E,MAAa,cAAe,SAAQ,0BAAW;IAC9C,UAAU,CAAC,YAA2B,EAAE,WAAmB,EAAE,KAAkB;QAC9E,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB,EAAE,OAAuB;QAEvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7D,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,eAAe,EAAE,KAAK;YACtB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,IAAI;SAClB,CAAC;IACH,CAAC;CACD;AAlBD,wCAkBC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview User Input Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles user input messages. Formats and prepares user messages for routing to agents.
|
|
5
|
+
* This handler processes raw user input and determines the appropriate routing.
|
|
6
|
+
*/
|
|
7
|
+
import type { GenerateContentResponse } from "@google/genai";
|
|
8
|
+
import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
9
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
10
|
+
export declare class UserInputHandler extends BaseHandler {
|
|
11
|
+
can_handle(message_type: string | null, output_type: string, result: GenerateContentResponse | ChatMessage): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Handle the user input message
|
|
14
|
+
* @param input - The ChatMessage object
|
|
15
|
+
* @param context - The HandlerContext object
|
|
16
|
+
* @returns The HandlerResult object
|
|
17
|
+
*/
|
|
18
|
+
handle(input: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=user-input-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-input-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/user-input-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,WAAW,GAAG,OAAO;IASpH;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA0CpF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview User Input Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles user input messages. Formats and prepares user messages for routing to agents.
|
|
6
|
+
* This handler processes raw user input and determines the appropriate routing.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.UserInputHandler = void 0;
|
|
10
|
+
const base_handler_1 = require("./base-handler");
|
|
11
|
+
const models_1 = require("../../models");
|
|
12
|
+
const domain_service_1 = require("../../services/domain.service");
|
|
13
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
14
|
+
const logger = (0, logger_1.create_default_logger)("user-input-handler");
|
|
15
|
+
class UserInputHandler extends base_handler_1.BaseHandler {
|
|
16
|
+
can_handle(message_type, output_type, result) {
|
|
17
|
+
if ('role' in result && result.role === 'user') {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false; // Not used for agent responses - called explicitly for user input
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Handle the user input message
|
|
24
|
+
* @param input - The ChatMessage object
|
|
25
|
+
* @param context - The HandlerContext object
|
|
26
|
+
* @returns The HandlerResult object
|
|
27
|
+
*/
|
|
28
|
+
async handle(input, context) {
|
|
29
|
+
this.logger.info('User input handler processing user message');
|
|
30
|
+
const conversation = await models_1.ConversationModel.findByPk(context.conversation_id);
|
|
31
|
+
if (!conversation) {
|
|
32
|
+
this.logger.error(`⚠️ Conversation not found: ${context.conversation_id}`);
|
|
33
|
+
throw new Error(`Conversation not found: ${context.conversation_id}`);
|
|
34
|
+
}
|
|
35
|
+
// Parse context from database (it's stored as JSON string)
|
|
36
|
+
let db_context = {};
|
|
37
|
+
if (conversation.context) {
|
|
38
|
+
try {
|
|
39
|
+
db_context = JSON.parse(conversation.context);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
this.logger.warn('⚠️ Failed to parse conversation context from database', { error: e });
|
|
43
|
+
db_context = {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
context = { ...context, ...db_context };
|
|
47
|
+
// Fetch available domains and add to context for orchestrator
|
|
48
|
+
// The orchestrator needs this to identify the domain of the request
|
|
49
|
+
const domain_service = (0, domain_service_1.get_domain_service)();
|
|
50
|
+
const available_domains = await domain_service.get_unique_domains();
|
|
51
|
+
context = { ...context, available_domains: available_domains };
|
|
52
|
+
logger.info('Fetched available domains for orchestrator', {
|
|
53
|
+
domains_count: available_domains.length,
|
|
54
|
+
domains: available_domains
|
|
55
|
+
});
|
|
56
|
+
// Always route to orchestrator - let it decide what to do based on context
|
|
57
|
+
// The orchestrator will check for active plans and route accordingly
|
|
58
|
+
// UserInputHandler should not make routing decisions - it just passes user input through
|
|
59
|
+
return {
|
|
60
|
+
success: true,
|
|
61
|
+
result: [input],
|
|
62
|
+
should_continue: true,
|
|
63
|
+
context: context,
|
|
64
|
+
message_type: null // null routes to OrchestratorAgent
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.UserInputHandler = UserInputHandler;
|
|
69
|
+
//# sourceMappingURL=user-input-handler.js.map
|