@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,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Response Handler Registry
|
|
4
|
+
*
|
|
5
|
+
* Registry for managing and selecting appropriate handlers.
|
|
6
|
+
* Routes by message_type (from AgentResponse) first, then falls back to output_type (from OpenAI Response).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HandlerRegistry = void 0;
|
|
10
|
+
const direct_response_handler_1 = require("./direct-response-handler");
|
|
11
|
+
const plan_ready_handler_1 = require("./plan-ready-handler");
|
|
12
|
+
const request_plan_handler_1 = require("./request-plan-handler");
|
|
13
|
+
const message_handler_1 = require("./message-handler");
|
|
14
|
+
const step_complete_handler_1 = require("./step-complete-handler"); // Keep this one
|
|
15
|
+
const error_handler_1 = require("./error-handler"); // Keep this one
|
|
16
|
+
const unknown_handler_1 = require("./unknown-handler");
|
|
17
|
+
const user_input_handler_1 = require("./user-input-handler");
|
|
18
|
+
class HandlerRegistry {
|
|
19
|
+
constructor(logger, streaming_utils) {
|
|
20
|
+
this.logger = logger;
|
|
21
|
+
this.streaming_utils = streaming_utils;
|
|
22
|
+
this.message_type_handlers = [];
|
|
23
|
+
this.output_type_handlers = [];
|
|
24
|
+
// Create user input handler instance
|
|
25
|
+
this.user_input_handler = new user_input_handler_1.UserInputHandler(this.streaming_utils);
|
|
26
|
+
// Register message_type handlers (from AgentResponse in output_text)
|
|
27
|
+
// These are checked first when output_text exists
|
|
28
|
+
this.message_type_handlers.push(new error_handler_1.ErrorHandler(this.streaming_utils)); // Error handler should be checked early
|
|
29
|
+
this.message_type_handlers.push(new direct_response_handler_1.DirectResponseHandler(this.streaming_utils));
|
|
30
|
+
this.message_type_handlers.push(new request_plan_handler_1.RequestPlanHandler(this.streaming_utils));
|
|
31
|
+
this.message_type_handlers.push(new plan_ready_handler_1.PlanReadyHandler(this.streaming_utils));
|
|
32
|
+
this.message_type_handlers.push(new step_complete_handler_1.StepCompleteHandler(this.streaming_utils));
|
|
33
|
+
// Unknown handler should be last as fallback
|
|
34
|
+
this.message_type_handlers.push(new unknown_handler_1.UnknownHandler(this.streaming_utils));
|
|
35
|
+
}
|
|
36
|
+
// Note: output_type_handlers are not currently used due to the DynamicAgent's strategy
|
|
37
|
+
// of parsing AgentResponse from the text property. If Gemini's native tool outputs
|
|
38
|
+
// were to be used, these would need to be re-introduced.
|
|
39
|
+
/**
|
|
40
|
+
* Get handler for preparing input based on message_type
|
|
41
|
+
* This is used to format input before calling an agent
|
|
42
|
+
*/
|
|
43
|
+
get_handler_for_prepare_input(message_type) {
|
|
44
|
+
// Map message_type to the handler that will process responses from that agent
|
|
45
|
+
// The handler knows how to prepare input for the agent it routes to
|
|
46
|
+
if (message_type === null) {
|
|
47
|
+
// Route to orchestrator - use DirectResponseHandler
|
|
48
|
+
return this.message_type_handlers.find(h => h instanceof direct_response_handler_1.DirectResponseHandler) || null;
|
|
49
|
+
}
|
|
50
|
+
switch (message_type) {
|
|
51
|
+
case "REQUEST_PLAN":
|
|
52
|
+
return this.message_type_handlers.find(h => h instanceof request_plan_handler_1.RequestPlanHandler) || null;
|
|
53
|
+
case "PLAN_READY":
|
|
54
|
+
case "STEP_READY":
|
|
55
|
+
case "STEP_COMPLETE":
|
|
56
|
+
case "TOOL_CALL_READY":
|
|
57
|
+
// For executor, use PlanReadyHandler or ToolCallReadyHandler
|
|
58
|
+
return this.message_type_handlers.find(h => h instanceof plan_ready_handler_1.PlanReadyHandler) || null;
|
|
59
|
+
case "KNOWLEDGE_ANSWER":
|
|
60
|
+
// For knowledge agent, use MessageHandler (handles KNOWLEDGE_ANSWER)
|
|
61
|
+
return this.output_type_handlers.find(h => h instanceof message_handler_1.MessageHandler) || null;
|
|
62
|
+
default:
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract message_type from ChatMessage content
|
|
68
|
+
* Handles both string content and object content
|
|
69
|
+
*/
|
|
70
|
+
extract_message_type_from_content(content) {
|
|
71
|
+
if (!content) {
|
|
72
|
+
this.logger.debug('❌ No content in message');
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
// If content is an object, check for message_type directly
|
|
76
|
+
if (typeof content === 'object' && content !== null) {
|
|
77
|
+
if (content.message_type) {
|
|
78
|
+
this.logger.info(`✅ Found message_type in content object: ${content.message_type}`);
|
|
79
|
+
return content.message_type;
|
|
80
|
+
}
|
|
81
|
+
// If it's an AgentResponse object, return the message_type
|
|
82
|
+
if (content.type === 'agent_response' && content.message_type) {
|
|
83
|
+
return content.message_type;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// If content is a string, try to parse it
|
|
87
|
+
const content_str = typeof content === 'string' ? content : JSON.stringify(content);
|
|
88
|
+
this.logger.debug(`🔍 Attempting to extract message_type from content (length: ${content_str.length})`);
|
|
89
|
+
// First, try to parse as pure JSON
|
|
90
|
+
try {
|
|
91
|
+
const agent_response = JSON.parse(content_str);
|
|
92
|
+
this.logger.info(`✅ Parsed as pure JSON, message_type: ${agent_response.message_type}`);
|
|
93
|
+
return agent_response.message_type || null;
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
this.logger.debug(`⚠️ Pure JSON parse failed, trying to extract from text: ${e instanceof Error ? e.message : String(e)}`);
|
|
97
|
+
// If pure JSON parsing fails, try to extract JSON from text
|
|
98
|
+
// The response might be natural text with JSON embedded in it
|
|
99
|
+
try {
|
|
100
|
+
const extracted_json = this.extract_json_from_text(content_str);
|
|
101
|
+
if (extracted_json) {
|
|
102
|
+
this.logger.info(`✂️ Extracted JSON from text (${extracted_json.length} chars)`);
|
|
103
|
+
const agent_response = JSON.parse(extracted_json);
|
|
104
|
+
this.logger.info(`✅ Parsed extracted JSON, message_type: ${agent_response.message_type}`);
|
|
105
|
+
return agent_response.message_type || null;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this.logger.warn(`❌ extract_json_from_text returned null`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (extract_error) {
|
|
112
|
+
this.logger.warn('❌ Could not extract JSON from text for message_type', {
|
|
113
|
+
error: extract_error instanceof Error ? extract_error.message : String(extract_error)
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
this.logger.warn('❌ Could not parse content for message_type', { error: e instanceof Error ? e.message : String(e) });
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extract output_type from ChatMessage content
|
|
122
|
+
* For model messages, we infer output_type from the content structure
|
|
123
|
+
*/
|
|
124
|
+
extract_output_type_from_content(content) {
|
|
125
|
+
// If content is an object, check for output_type or infer from structure
|
|
126
|
+
if (typeof content === 'object' && content !== null) {
|
|
127
|
+
// Check if it has an output array structure
|
|
128
|
+
if (content.output && Array.isArray(content.output) && content.output[0]?.type) {
|
|
129
|
+
return content.output[0].type;
|
|
130
|
+
}
|
|
131
|
+
// Check for function_call or tool_call indicators
|
|
132
|
+
if (content.function_call || content.tool_calls) {
|
|
133
|
+
return 'function_call';
|
|
134
|
+
}
|
|
135
|
+
if (content.error) {
|
|
136
|
+
return 'error';
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Default to 'message' for text content
|
|
140
|
+
return 'message';
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Extract JSON object from text that may contain natural language or markdown code blocks
|
|
144
|
+
* Looks for JSON objects in the text (starting with { and ending with })
|
|
145
|
+
* PUBLIC so handlers can use this for parsing raw output_text
|
|
146
|
+
*/
|
|
147
|
+
extract_json_from_text(text) {
|
|
148
|
+
// Remove leading/trailing whitespace
|
|
149
|
+
let trimmed = text.trim();
|
|
150
|
+
this.logger.debug(`🔍 Extracting JSON from text (length: ${trimmed.length}, starts with: ${trimmed.substring(0, 50)})`);
|
|
151
|
+
// CRITICAL FIX: Strip markdown code blocks (```json...``` or ```...```)
|
|
152
|
+
// Gemini sometimes wraps JSON in markdown despite structured output being enabled
|
|
153
|
+
const markdown_json_match = trimmed.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
154
|
+
if (markdown_json_match) {
|
|
155
|
+
this.logger.info(`✂️ Found markdown wrapper, stripping it (captured ${markdown_json_match[1].length} chars)`);
|
|
156
|
+
trimmed = markdown_json_match[1].trim();
|
|
157
|
+
this.logger.debug(`✂️ After stripping: ${trimmed.substring(0, 100)}...`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.logger.debug(`❌ No markdown wrapper detected in text`);
|
|
161
|
+
}
|
|
162
|
+
// FIX: Gemini sometimes outputs invalid escape sequences which are NOT valid JSON
|
|
163
|
+
// JSON only allows: \", \\, \/, \b, \f, \n, \r, \t, \uXXXX
|
|
164
|
+
// Fix common invalid escape sequences:
|
|
165
|
+
// 1. \' (escaped single quote) - replace with '
|
|
166
|
+
// 2. \x (hex escape without proper format) - remove backslash
|
|
167
|
+
// 3. \z, \a, etc. (invalid single char escapes) - remove backslash
|
|
168
|
+
// 4. \u without 4 hex digits - fix or remove
|
|
169
|
+
const original_length = trimmed.length;
|
|
170
|
+
// Fix \' (escaped single quote) - most common issue
|
|
171
|
+
if (trimmed.includes("\\'")) {
|
|
172
|
+
trimmed = trimmed.replace(/\\'/g, "'");
|
|
173
|
+
}
|
|
174
|
+
// Fix \u sequences that don't have 4 hex digits (invalid \u escapes)
|
|
175
|
+
// Replace \u followed by less than 4 hex digits with just the characters
|
|
176
|
+
trimmed = trimmed.replace(/\\u(?![0-9a-fA-F]{4})/g, 'u');
|
|
177
|
+
// Fix invalid escape sequences like \x, \z, \a, etc. (but keep valid ones)
|
|
178
|
+
// Match \ followed by a character that's not a valid escape sequence
|
|
179
|
+
// Valid: ", \, /, b, f, n, r, t, u (for \uXXXX)
|
|
180
|
+
trimmed = trimmed.replace(/\\(?!["\\/bfnrtu])/g, '');
|
|
181
|
+
if (original_length !== trimmed.length) {
|
|
182
|
+
this.logger.info(`🔧 Fixed invalid escape sequences (${original_length - trimmed.length} chars removed)`);
|
|
183
|
+
}
|
|
184
|
+
// Try to find JSON object in the text
|
|
185
|
+
// Look for the first occurrence of { ... } which is likely the JSON response
|
|
186
|
+
const first_brace_open = trimmed.indexOf('{');
|
|
187
|
+
const last_brace_close = trimmed.lastIndexOf('}');
|
|
188
|
+
this.logger.debug(`🔍 JSON extraction: first_brace_open=${first_brace_open}, last_brace_close=${last_brace_close}`);
|
|
189
|
+
if (first_brace_open !== -1 && last_brace_close !== -1 && last_brace_close > first_brace_open) {
|
|
190
|
+
const json_candidate = trimmed.substring(first_brace_open, last_brace_close + 1);
|
|
191
|
+
this.logger.debug(`🔍 JSON candidate (${json_candidate.length} chars): ${json_candidate.substring(0, 100)}...`);
|
|
192
|
+
try {
|
|
193
|
+
// Validate it's valid JSON
|
|
194
|
+
JSON.parse(json_candidate);
|
|
195
|
+
this.logger.info(`✅ Successfully parsed JSON candidate`);
|
|
196
|
+
return json_candidate;
|
|
197
|
+
}
|
|
198
|
+
catch (e) {
|
|
199
|
+
this.logger.warn(`❌ JSON parse failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
200
|
+
this.logger.debug(`Failed JSON: ${json_candidate.substring(0, 200)}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
this.logger.warn(`❌ Could not find valid brace positions in trimmed text`);
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Find and return the appropriate handler for the given ChatMessage
|
|
210
|
+
* Uses heuristics-based classification:
|
|
211
|
+
* - If message.role == 'user', returns UserInputHandler
|
|
212
|
+
* - Otherwise, parses content to extract message_type/output_type and finds appropriate handler
|
|
213
|
+
*/
|
|
214
|
+
find_handler(message) {
|
|
215
|
+
// Check if this is a user message
|
|
216
|
+
if (message.role === 'user') {
|
|
217
|
+
this.logger.info('📋 Selected handler: UserInputHandler for user message');
|
|
218
|
+
return this.user_input_handler;
|
|
219
|
+
}
|
|
220
|
+
// Extract content from ChatMessage
|
|
221
|
+
const content = message.content;
|
|
222
|
+
if (!content) {
|
|
223
|
+
this.logger.warn('⚠️ No content in message, using UnknownHandler');
|
|
224
|
+
return this.output_type_handlers[this.output_type_handlers.length - 1];
|
|
225
|
+
}
|
|
226
|
+
// Extract message_type and output_type from content
|
|
227
|
+
const message_type = this.extract_message_type_from_content(content);
|
|
228
|
+
const output_type = this.extract_output_type_from_content(content);
|
|
229
|
+
this.logger.info('Routing response:', { message_type, output_type, role: message.role });
|
|
230
|
+
// Create a minimal AIResponse-like structure for handlers that need it
|
|
231
|
+
// Convert content to string if it's an object
|
|
232
|
+
const content_str = typeof content === 'string' ? content : JSON.stringify(content);
|
|
233
|
+
// First, try message_type handlers (even if message_type is null, handlers can check structure)
|
|
234
|
+
// This allows handlers like PlanReadyHandler to check response structure even if message_type extraction failed
|
|
235
|
+
for (const handler of this.message_type_handlers) {
|
|
236
|
+
if (handler.can_handle(message_type, output_type, message)) {
|
|
237
|
+
this.logger.info(`📋 Selected handler: ${handler.constructor.name} for message_type: ${message_type || 'null (structure match)'}`);
|
|
238
|
+
return handler;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Fallback to output_type handlers
|
|
242
|
+
for (const handler of this.output_type_handlers) {
|
|
243
|
+
if (handler.can_handle(message_type, output_type, message)) {
|
|
244
|
+
this.logger.info(`📋 Selected handler: ${handler.constructor.name} for output_type: ${output_type}`);
|
|
245
|
+
return handler;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Fallback to unknown handler (should never happen, but just in case)
|
|
249
|
+
return this.output_type_handlers[this.output_type_handlers.length - 1];
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Handle the response using the appropriate handler
|
|
253
|
+
*/
|
|
254
|
+
async handle_response(message, context) {
|
|
255
|
+
const handler = this.find_handler(message);
|
|
256
|
+
if (!handler) {
|
|
257
|
+
this.logger.error(`❌ No handler found for message`);
|
|
258
|
+
return {
|
|
259
|
+
success: false,
|
|
260
|
+
result: [],
|
|
261
|
+
should_continue: false
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return await handler.handle(message, context);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
exports.HandlerRegistry = HandlerRegistry;
|
|
268
|
+
//# sourceMappingURL=handler-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-registry.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/handler-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Response Handlers Exports
|
|
3
|
+
*
|
|
4
|
+
* Central export point for all response handlers.
|
|
5
|
+
*/
|
|
6
|
+
export { BaseHandler as BaseResponseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
7
|
+
export { DirectResponseHandler } from "./direct-response-handler";
|
|
8
|
+
export { PlanReadyHandler } from "./plan-ready-handler";
|
|
9
|
+
export { RequestPlanHandler } from "./request-plan-handler";
|
|
10
|
+
export { StepCompleteHandler } from "./step-complete-handler";
|
|
11
|
+
export { MessageHandler } from "./message-handler";
|
|
12
|
+
export { ErrorHandler } from "./error-handler";
|
|
13
|
+
export { UnknownHandler } from "./unknown-handler";
|
|
14
|
+
export { UserInputHandler } from "./user-input-handler";
|
|
15
|
+
export { HandlerRegistry as ResponseHandlerRegistry } from "./handler-registry";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Response Handlers Exports
|
|
4
|
+
*
|
|
5
|
+
* Central export point for all response handlers.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ResponseHandlerRegistry = exports.UserInputHandler = exports.UnknownHandler = exports.ErrorHandler = exports.MessageHandler = exports.StepCompleteHandler = exports.RequestPlanHandler = exports.PlanReadyHandler = exports.DirectResponseHandler = exports.BaseResponseHandler = void 0;
|
|
9
|
+
var base_handler_1 = require("./base-handler");
|
|
10
|
+
Object.defineProperty(exports, "BaseResponseHandler", { enumerable: true, get: function () { return base_handler_1.BaseHandler; } });
|
|
11
|
+
var direct_response_handler_1 = require("./direct-response-handler");
|
|
12
|
+
Object.defineProperty(exports, "DirectResponseHandler", { enumerable: true, get: function () { return direct_response_handler_1.DirectResponseHandler; } });
|
|
13
|
+
var plan_ready_handler_1 = require("./plan-ready-handler");
|
|
14
|
+
Object.defineProperty(exports, "PlanReadyHandler", { enumerable: true, get: function () { return plan_ready_handler_1.PlanReadyHandler; } });
|
|
15
|
+
var request_plan_handler_1 = require("./request-plan-handler");
|
|
16
|
+
Object.defineProperty(exports, "RequestPlanHandler", { enumerable: true, get: function () { return request_plan_handler_1.RequestPlanHandler; } });
|
|
17
|
+
var step_complete_handler_1 = require("./step-complete-handler");
|
|
18
|
+
Object.defineProperty(exports, "StepCompleteHandler", { enumerable: true, get: function () { return step_complete_handler_1.StepCompleteHandler; } });
|
|
19
|
+
var message_handler_1 = require("./message-handler");
|
|
20
|
+
Object.defineProperty(exports, "MessageHandler", { enumerable: true, get: function () { return message_handler_1.MessageHandler; } });
|
|
21
|
+
var error_handler_1 = require("./error-handler");
|
|
22
|
+
Object.defineProperty(exports, "ErrorHandler", { enumerable: true, get: function () { return error_handler_1.ErrorHandler; } });
|
|
23
|
+
var unknown_handler_1 = require("./unknown-handler");
|
|
24
|
+
Object.defineProperty(exports, "UnknownHandler", { enumerable: true, get: function () { return unknown_handler_1.UnknownHandler; } });
|
|
25
|
+
var user_input_handler_1 = require("./user-input-handler");
|
|
26
|
+
Object.defineProperty(exports, "UserInputHandler", { enumerable: true, get: function () { return user_input_handler_1.UserInputHandler; } });
|
|
27
|
+
var handler_registry_1 = require("./handler-registry");
|
|
28
|
+
Object.defineProperty(exports, "ResponseHandlerRegistry", { enumerable: true, get: function () { return handler_registry_1.HandlerRegistry; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,+CAAmG;AAA1F,mHAAA,WAAW,OAAuB;AAC3C,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,uDAAgF;AAAvE,2HAAA,eAAe,OAA2B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Message Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles message output types by parsing the output_text and reading message_type
|
|
5
|
+
* to decide whether to continue execution or break.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
8
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
9
|
+
export declare class MessageHandler 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
|
+
* Prepare input for KnowledgeAgent
|
|
14
|
+
* Formats the message as a question for the knowledge base
|
|
15
|
+
*/
|
|
16
|
+
prepare_input(last_message: ChatMessage): ChatMessage[];
|
|
17
|
+
/**
|
|
18
|
+
* Extract JSON object from text that may contain natural language
|
|
19
|
+
* Looks for JSON objects in the text (starting with { and ending with })
|
|
20
|
+
*/
|
|
21
|
+
private extract_json_from_text;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=message-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/message-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAc/D,qBAAa,cAAe,SAAQ,WAAW;IAE3C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAYnF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA0HjF;;;OAGG;IACH,aAAa,CAAC,YAAY,EAAE,WAAW,GAAG,WAAW,EAAE;IAyBvD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;CAsBjC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Message Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles message output types by parsing the output_text and reading message_type
|
|
6
|
+
* to decide whether to continue execution or break.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MessageHandler = void 0;
|
|
10
|
+
const base_handler_1 = require("./base-handler");
|
|
11
|
+
/**
|
|
12
|
+
* Terminal response types that should break the execution loop
|
|
13
|
+
*/
|
|
14
|
+
const TERMINAL_RESPONSE_TYPES = [
|
|
15
|
+
"DIRECT_RESPONSE",
|
|
16
|
+
"NO_DOMAIN",
|
|
17
|
+
"REQUEST_INPUT",
|
|
18
|
+
"EXECUTION_REPORT",
|
|
19
|
+
"ERROR",
|
|
20
|
+
"KNOWLEDGE_ANSWER"
|
|
21
|
+
];
|
|
22
|
+
class MessageHandler extends base_handler_1.BaseHandler {
|
|
23
|
+
can_handle(message_type, output_type, input) {
|
|
24
|
+
// Handle Gemini message output_type (fallback when no message_type handlers match)
|
|
25
|
+
if (input.role !== 'model') {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// Check if content is an object with type property
|
|
29
|
+
if (typeof input.content === 'object' && input.content !== null && 'type' in input.content) {
|
|
30
|
+
return input.content.type === 'message';
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
async handle(input, context) {
|
|
35
|
+
this.logger.info('Message handler received result:', { result: input.content });
|
|
36
|
+
const result = input.content;
|
|
37
|
+
if (!result) {
|
|
38
|
+
this.logger.warn('⚠️ No AgentResponse in response');
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
result: [input],
|
|
42
|
+
should_continue: false
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Parse AgentResponse to read message_type
|
|
46
|
+
// Use base handler extraction method to handle markdown, escape sequences, etc.
|
|
47
|
+
// Note: result is AgentResponse, not GenerateContentResponse, so we need to extract from content
|
|
48
|
+
const content_str = typeof result === 'string' ? result : result.output_text || result.text || JSON.stringify(result);
|
|
49
|
+
const extracted = this.extract_agent_response(content_str);
|
|
50
|
+
if (!extracted) {
|
|
51
|
+
this.logger.error('❌ Failed to extract AgentResponse', {
|
|
52
|
+
content_preview: content_str.substring(0, 200)
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
result: [],
|
|
57
|
+
should_continue: false
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const agent_response = extracted;
|
|
61
|
+
// Read message_type from content to decide next step
|
|
62
|
+
const message_type = agent_response.message_type;
|
|
63
|
+
this.logger.info(`📋 Message type: ${message_type}`);
|
|
64
|
+
// Extract domain from orchestrator response (for domain identification)
|
|
65
|
+
// Domain can be at top level or in content
|
|
66
|
+
const extracted_domain = agent_response?.domain || agent_response?.content?.domain || null;
|
|
67
|
+
// Get available_domains from context (passed by UserInputHandler)
|
|
68
|
+
const available_domains = context?.available_domains || [];
|
|
69
|
+
// Log response structure for debugging
|
|
70
|
+
this.logger.debug('🔍 Agent response structure', {
|
|
71
|
+
agent_kind: agent_response?.agent_kind,
|
|
72
|
+
message_type: message_type,
|
|
73
|
+
has_domain_field: 'domain' in agent_response,
|
|
74
|
+
domain_value: agent_response?.domain,
|
|
75
|
+
has_content_domain: agent_response?.content && 'domain' in agent_response.content,
|
|
76
|
+
content_domain_value: agent_response?.content?.domain,
|
|
77
|
+
response_keys: Object.keys(agent_response),
|
|
78
|
+
available_domains: available_domains
|
|
79
|
+
});
|
|
80
|
+
// Log domain identification for orchestrator responses (excluding REQUEST_PLAN which is handled by RequestPlanHandler)
|
|
81
|
+
const is_orchestrator_response = agent_response?.agent_kind === 'orchestrator' &&
|
|
82
|
+
message_type !== 'REQUEST_PLAN'; // REQUEST_PLAN is handled by RequestPlanHandler
|
|
83
|
+
if (is_orchestrator_response) {
|
|
84
|
+
if (extracted_domain) {
|
|
85
|
+
this.logger.info('🎯 Orchestrator identified domain', {
|
|
86
|
+
domain: extracted_domain,
|
|
87
|
+
message_type: message_type,
|
|
88
|
+
available_domains: available_domains,
|
|
89
|
+
agent_kind: agent_response?.agent_kind
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.logger.info('⚠️ Orchestrator did not identify domain', {
|
|
94
|
+
message_type: message_type,
|
|
95
|
+
available_domains: available_domains,
|
|
96
|
+
agent_kind: agent_response?.agent_kind
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Note: REQUEST_PLAN is handled by RequestPlanHandler, not MessageHandler
|
|
101
|
+
// This validation is kept for other message types that might need domain validation in the future
|
|
102
|
+
// Handle NO_DOMAIN message type (already validated by orchestrator)
|
|
103
|
+
if (message_type === 'NO_DOMAIN') {
|
|
104
|
+
this.logger.info('⚠️ NO_DOMAIN response from orchestrator', {
|
|
105
|
+
available_domains: available_domains
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Append Gemini response to conversation history with role and parts
|
|
109
|
+
// In MessageHandler, result is already AgentResponse, so we create a ChatMessage from it
|
|
110
|
+
let updated_history = [];
|
|
111
|
+
updated_history.push({
|
|
112
|
+
role: 'model',
|
|
113
|
+
content: JSON.stringify(agent_response)
|
|
114
|
+
});
|
|
115
|
+
// Append context to conversation history
|
|
116
|
+
// Store domain in handler_context for later use (e.g., learning capture)
|
|
117
|
+
const handler_context = {
|
|
118
|
+
message_type: message_type,
|
|
119
|
+
agent_response: agent_response
|
|
120
|
+
};
|
|
121
|
+
// Store domain if identified
|
|
122
|
+
if (extracted_domain) {
|
|
123
|
+
handler_context.domain = extracted_domain;
|
|
124
|
+
this.logger.info('💾 Storing domain in handler context', { domain: extracted_domain });
|
|
125
|
+
}
|
|
126
|
+
updated_history = this.append_context_to_history(updated_history, handler_context);
|
|
127
|
+
// Determine if we should continue based on message_type
|
|
128
|
+
// Terminal types break the loop, others continue
|
|
129
|
+
const should_continue = !TERMINAL_RESPONSE_TYPES.includes(message_type);
|
|
130
|
+
this.logger.info(`🔄 Should continue: ${should_continue} (message_type: ${message_type})`);
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
result: updated_history,
|
|
134
|
+
should_continue: should_continue,
|
|
135
|
+
context: handler_context,
|
|
136
|
+
message_type: message_type // Return the message_type from the response
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Prepare input for KnowledgeAgent
|
|
141
|
+
* Formats the message as a question for the knowledge base
|
|
142
|
+
*/
|
|
143
|
+
prepare_input(last_message) {
|
|
144
|
+
if (!last_message) {
|
|
145
|
+
return [{
|
|
146
|
+
role: 'user',
|
|
147
|
+
content: 'Answer the following question using the knowledge base:'
|
|
148
|
+
}];
|
|
149
|
+
}
|
|
150
|
+
// Extract question from message
|
|
151
|
+
let question_text;
|
|
152
|
+
if (typeof last_message.content === 'string') {
|
|
153
|
+
question_text = last_message.content;
|
|
154
|
+
}
|
|
155
|
+
else if (last_message.content && typeof last_message.content === 'object') {
|
|
156
|
+
question_text = last_message.content.message || last_message.content.text || JSON.stringify(last_message.content);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
question_text = JSON.stringify(last_message);
|
|
160
|
+
}
|
|
161
|
+
// Format as knowledge base query
|
|
162
|
+
return [{
|
|
163
|
+
role: 'user',
|
|
164
|
+
content: `Answer the following question using the knowledge base: ${question_text}`
|
|
165
|
+
}];
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Extract JSON object from text that may contain natural language
|
|
169
|
+
* Looks for JSON objects in the text (starting with { and ending with })
|
|
170
|
+
*/
|
|
171
|
+
extract_json_from_text(text) {
|
|
172
|
+
// Remove leading/trailing whitespace
|
|
173
|
+
const trimmed = text.trim();
|
|
174
|
+
// Try to find JSON object in the text
|
|
175
|
+
// Look for the last occurrence of { ... } which is likely the JSON response
|
|
176
|
+
const last_brace_open = trimmed.lastIndexOf('{');
|
|
177
|
+
const last_brace_close = trimmed.lastIndexOf('}');
|
|
178
|
+
if (last_brace_open !== -1 && last_brace_close !== -1 && last_brace_close > last_brace_open) {
|
|
179
|
+
const json_candidate = trimmed.substring(last_brace_open, last_brace_close + 1);
|
|
180
|
+
try {
|
|
181
|
+
// Validate it's valid JSON
|
|
182
|
+
JSON.parse(json_candidate);
|
|
183
|
+
return json_candidate;
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
// Not valid JSON, continue
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.MessageHandler = MessageHandler;
|
|
193
|
+
//# sourceMappingURL=message-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../../src/ai/response_handlers/message-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Plan Ready Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles PLAN_READY message_type from AgentResponse.
|
|
5
|
+
* Saves plan to database and continues to executor.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseHandler, HandlerContext, HandlerResult } from "./base-handler";
|
|
8
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
9
|
+
export declare class PlanReadyHandler extends BaseHandler {
|
|
10
|
+
can_handle(message_type: string | null, output_type: string, result: ChatMessage): boolean;
|
|
11
|
+
handle(input: ChatMessage, context: HandlerContext): Promise<HandlerResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Create plan in database from planner response
|
|
14
|
+
* @param planner_response - The planner response containing plan data
|
|
15
|
+
* @param conversation_id - The conversation ID to associate the plan with
|
|
16
|
+
* @returns The plan_id of the created plan
|
|
17
|
+
*/
|
|
18
|
+
private create_plan;
|
|
19
|
+
/**
|
|
20
|
+
* Append steps to an existing plan
|
|
21
|
+
* @param planner_response - The planner response containing new steps
|
|
22
|
+
* @param plan_id - The existing plan ID to append steps to
|
|
23
|
+
*/
|
|
24
|
+
private append_steps_to_plan;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=plan-ready-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-ready-handler.d.ts","sourceRoot":"","sources":["../../../src/ai/response_handlers/plan-ready-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAkC,WAAW,EAAiB,MAAM,mBAAmB,CAAC;AAI/F,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO;IAUpF,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAgSjF;;;;;OAKG;YACW,WAAW;IA+DzB;;;;OAIG;YACW,oBAAoB;CA8DrC"}
|