@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,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Base Controller Class - Shared across MeasureOne Services
|
|
4
|
+
*
|
|
5
|
+
* Parent Controller class to be extended by all controllers to use common controller methods.
|
|
6
|
+
* Provides standardized error handling, response formatting, and API response management.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne, Inc.
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseController = void 0;
|
|
13
|
+
const app_constants_1 = require("../lib/app-constants");
|
|
14
|
+
const app_exceptions_1 = require("../lib/exceptions/app-exceptions");
|
|
15
|
+
const logger_1 = require("../lib/utils/logger");
|
|
16
|
+
/**
|
|
17
|
+
* Base Controller Class
|
|
18
|
+
*
|
|
19
|
+
* Provides common controller functionality including error handling,
|
|
20
|
+
* response formatting, and standardized API responses.
|
|
21
|
+
*/
|
|
22
|
+
class BaseController {
|
|
23
|
+
constructor(service_name = 'BaseService', version = '1.0.0') {
|
|
24
|
+
this.service_name = service_name;
|
|
25
|
+
this.version = version;
|
|
26
|
+
this.logger = (0, logger_1.create_default_logger)(service_name, version);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Helper function to be used as controller route catch blocks.
|
|
30
|
+
* Performs an instanceof check to see if error is of type BaseAppException.
|
|
31
|
+
* If matched, sends HTTP response with information contained in error object.
|
|
32
|
+
* If not found, calls next and lets error proceed to next middleware.
|
|
33
|
+
*
|
|
34
|
+
* @param err - Error object to handle
|
|
35
|
+
* @param res - Express HTTP response object
|
|
36
|
+
* @param next - Express next callback function
|
|
37
|
+
*/
|
|
38
|
+
handle_error_response(err, res, next) {
|
|
39
|
+
if (err instanceof app_exceptions_1.BaseAppException) {
|
|
40
|
+
const response_obj = {
|
|
41
|
+
success: false,
|
|
42
|
+
message: err.message,
|
|
43
|
+
data: null,
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
version: this.version,
|
|
46
|
+
error: {
|
|
47
|
+
code: err.error_code,
|
|
48
|
+
message: err.message,
|
|
49
|
+
details: err.details,
|
|
50
|
+
timestamp: new Date().toISOString(),
|
|
51
|
+
service: this.service_name
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
return res.status(err.http_status).json(response_obj);
|
|
55
|
+
}
|
|
56
|
+
// If not of type BaseAppException, pass error to next middleware
|
|
57
|
+
next(err);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a standardized success response
|
|
61
|
+
*
|
|
62
|
+
* @param res - Express response object
|
|
63
|
+
* @param data - Data to include in response
|
|
64
|
+
* @param message - Success message (optional)
|
|
65
|
+
* @param status - HTTP status code (default: 200)
|
|
66
|
+
* @returns HTTP response
|
|
67
|
+
*/
|
|
68
|
+
static send_success_response(res, data, message, status = app_constants_1.HTTP_STATUS.OK) {
|
|
69
|
+
const response_obj = {
|
|
70
|
+
success: true,
|
|
71
|
+
message: message || 'Request completed successfully',
|
|
72
|
+
data: data || null,
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
version: '1.0.0'
|
|
75
|
+
};
|
|
76
|
+
return res.status(status).json(response_obj);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Instance method for success response
|
|
80
|
+
*/
|
|
81
|
+
send_success_response(res, data, message, status = app_constants_1.HTTP_STATUS.OK) {
|
|
82
|
+
return BaseController.send_success_response(res, data, message, status);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a standardized error response
|
|
86
|
+
*
|
|
87
|
+
* @param res - Express response object
|
|
88
|
+
* @param error - Error object or message
|
|
89
|
+
* @param status - HTTP status code (default: 500)
|
|
90
|
+
* @returns HTTP response
|
|
91
|
+
*/
|
|
92
|
+
static send_error_response(res, error, status = app_constants_1.HTTP_STATUS.INTERNAL_SERVER_ERROR) {
|
|
93
|
+
let error_code = app_constants_1.ERROR_CODES.INTERNAL_ERROR;
|
|
94
|
+
let error_message = 'Internal server error occurred';
|
|
95
|
+
let error_status = status;
|
|
96
|
+
let error_details = {};
|
|
97
|
+
if (error instanceof app_exceptions_1.BaseAppException) {
|
|
98
|
+
error_code = error.error_code;
|
|
99
|
+
error_message = error.message;
|
|
100
|
+
error_status = error.http_status;
|
|
101
|
+
error_details = error.details;
|
|
102
|
+
}
|
|
103
|
+
else if (error instanceof Error) {
|
|
104
|
+
error_message = error.message;
|
|
105
|
+
}
|
|
106
|
+
else if (typeof error === 'string') {
|
|
107
|
+
error_message = error;
|
|
108
|
+
}
|
|
109
|
+
const error_info = {
|
|
110
|
+
success: false,
|
|
111
|
+
error: {
|
|
112
|
+
code: error_code,
|
|
113
|
+
message: error_message,
|
|
114
|
+
details: error_details,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
service: 'MeasureOne'
|
|
117
|
+
},
|
|
118
|
+
message: error_message,
|
|
119
|
+
timestamp: new Date().toISOString(),
|
|
120
|
+
version: '1.0.0'
|
|
121
|
+
};
|
|
122
|
+
const response_obj = {
|
|
123
|
+
success: false,
|
|
124
|
+
message: error_message,
|
|
125
|
+
data: null,
|
|
126
|
+
timestamp: new Date().toISOString(),
|
|
127
|
+
version: '1.0.0',
|
|
128
|
+
error: error_info.error
|
|
129
|
+
};
|
|
130
|
+
return res.status(error_status).json(response_obj);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Instance method for error response
|
|
134
|
+
*/
|
|
135
|
+
send_error_response(res, error, status = app_constants_1.HTTP_STATUS.INTERNAL_SERVER_ERROR) {
|
|
136
|
+
return BaseController.send_error_response(res, error, status);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a validation error response
|
|
140
|
+
*
|
|
141
|
+
* @param res - Express response object
|
|
142
|
+
* @param validation_errors - Array of validation error messages
|
|
143
|
+
* @returns HTTP response
|
|
144
|
+
*/
|
|
145
|
+
static send_validation_error_response(res, validation_errors) {
|
|
146
|
+
const error_info = {
|
|
147
|
+
success: false,
|
|
148
|
+
error: {
|
|
149
|
+
code: app_constants_1.ERROR_CODES.VALIDATION_FAILED,
|
|
150
|
+
message: 'Request validation failed',
|
|
151
|
+
details: { validation_errors },
|
|
152
|
+
timestamp: new Date().toISOString(),
|
|
153
|
+
service: 'MeasureOne'
|
|
154
|
+
},
|
|
155
|
+
message: 'Request validation failed',
|
|
156
|
+
timestamp: new Date().toISOString(),
|
|
157
|
+
version: '1.0.0'
|
|
158
|
+
};
|
|
159
|
+
const response_obj = {
|
|
160
|
+
success: false,
|
|
161
|
+
message: 'Request validation failed',
|
|
162
|
+
data: null,
|
|
163
|
+
timestamp: new Date().toISOString(),
|
|
164
|
+
version: '1.0.0',
|
|
165
|
+
error: error_info.error
|
|
166
|
+
};
|
|
167
|
+
return res.status(app_constants_1.HTTP_STATUS.BAD_REQUEST).json(response_obj);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Instance method for validation error response
|
|
171
|
+
*/
|
|
172
|
+
send_validation_error_response(res, validation_errors) {
|
|
173
|
+
return BaseController.send_validation_error_response(res, validation_errors);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Create a paginated response
|
|
177
|
+
*
|
|
178
|
+
* @param res - Express response object
|
|
179
|
+
* @param data - Array of data items
|
|
180
|
+
* @param pagination - Pagination information
|
|
181
|
+
* @param message - Success message (optional)
|
|
182
|
+
* @returns HTTP response
|
|
183
|
+
*/
|
|
184
|
+
static send_paginated_response(res, data, pagination, message) {
|
|
185
|
+
const response_obj = {
|
|
186
|
+
success: true,
|
|
187
|
+
message: message || 'Request completed successfully',
|
|
188
|
+
data,
|
|
189
|
+
timestamp: new Date().toISOString(),
|
|
190
|
+
version: '1.0.0',
|
|
191
|
+
pagination
|
|
192
|
+
};
|
|
193
|
+
return res.status(app_constants_1.HTTP_STATUS.OK).json(response_obj);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Instance method for paginated response
|
|
197
|
+
*/
|
|
198
|
+
send_paginated_response(res, data, pagination, message) {
|
|
199
|
+
return BaseController.send_paginated_response(res, data, pagination, message);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Execute an operation with automatic error handling
|
|
203
|
+
*
|
|
204
|
+
* @param res - Express response object
|
|
205
|
+
* @param operation - Async operation to execute
|
|
206
|
+
* @param success_message - Message for successful response
|
|
207
|
+
* @param success_status - HTTP status for successful response
|
|
208
|
+
*/
|
|
209
|
+
async execute_with_error_handling(res, operation, success_message, success_status = app_constants_1.HTTP_STATUS.OK) {
|
|
210
|
+
try {
|
|
211
|
+
const result = await operation();
|
|
212
|
+
this.send_success_response(res, result, success_message, success_status);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (error instanceof app_exceptions_1.BaseAppException) {
|
|
216
|
+
this.send_error_response(res, error);
|
|
217
|
+
}
|
|
218
|
+
else if (error instanceof Error) {
|
|
219
|
+
this.send_error_response(res, error, app_constants_1.HTTP_STATUS.INTERNAL_SERVER_ERROR);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this.send_error_response(res, 'An unexpected error occurred', app_constants_1.HTTP_STATUS.INTERNAL_SERVER_ERROR);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Validate request body exists and is not empty
|
|
228
|
+
*
|
|
229
|
+
* @param req - Express request object
|
|
230
|
+
* @throws ValidationException if body is missing or empty
|
|
231
|
+
*/
|
|
232
|
+
validate_request_body(req) {
|
|
233
|
+
if (!req.body || Object.keys(req.body).length === 0) {
|
|
234
|
+
throw new app_exceptions_1.ValidationException('Request body is required', {
|
|
235
|
+
field: 'body',
|
|
236
|
+
received: req.body
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Extract pagination parameters from request
|
|
242
|
+
*
|
|
243
|
+
* @param req - Express request object
|
|
244
|
+
* @returns Pagination parameters with defaults
|
|
245
|
+
*/
|
|
246
|
+
extract_pagination_params(req) {
|
|
247
|
+
const page = Math.max(1, parseInt(req.query['page']) || 1);
|
|
248
|
+
const limit = Math.min(1000, Math.max(1, parseInt(req.query['limit']) || 50));
|
|
249
|
+
const offset = (page - 1) * limit;
|
|
250
|
+
return { page, limit, offset };
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Extract sorting parameters from request
|
|
254
|
+
*
|
|
255
|
+
* @param req - Express request object
|
|
256
|
+
* @param allowed_fields - Array of allowed sort fields
|
|
257
|
+
* @returns Sorting parameters
|
|
258
|
+
*/
|
|
259
|
+
extract_sorting_params(req, allowed_fields = []) {
|
|
260
|
+
const sort_by = req.query['sort_by'];
|
|
261
|
+
const sort_order = req.query['sort_order']?.toLowerCase() === 'desc' ? 'desc' : 'asc';
|
|
262
|
+
if (sort_by && allowed_fields.length > 0 && !allowed_fields.includes(sort_by)) {
|
|
263
|
+
throw new app_exceptions_1.ValidationException(`Invalid sort field: ${sort_by}`, {
|
|
264
|
+
field: 'sort_by',
|
|
265
|
+
allowed_values: allowed_fields,
|
|
266
|
+
received: sort_by
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
return { sort_by, sort_order };
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Calculate pagination metadata
|
|
273
|
+
*
|
|
274
|
+
* @param total - Total number of items
|
|
275
|
+
* @param page - Current page number
|
|
276
|
+
* @param limit - Items per page
|
|
277
|
+
* @returns Pagination metadata
|
|
278
|
+
*/
|
|
279
|
+
calculate_pagination_metadata(total, page, limit) {
|
|
280
|
+
const total_pages = Math.ceil(total / limit);
|
|
281
|
+
const has_next = page < total_pages;
|
|
282
|
+
const has_prev = page > 1;
|
|
283
|
+
const offset = (page - 1) * limit;
|
|
284
|
+
return {
|
|
285
|
+
page,
|
|
286
|
+
limit,
|
|
287
|
+
offset,
|
|
288
|
+
total,
|
|
289
|
+
total_pages,
|
|
290
|
+
has_next,
|
|
291
|
+
has_prev
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
// ============================================================================
|
|
295
|
+
// LOGGING METHODS
|
|
296
|
+
// ============================================================================
|
|
297
|
+
/**
|
|
298
|
+
* Log incoming request details
|
|
299
|
+
*
|
|
300
|
+
* @param req - Express request object
|
|
301
|
+
* @param method_name - Name of the controller method being called
|
|
302
|
+
*/
|
|
303
|
+
log_request(req, method_name) {
|
|
304
|
+
this.logger.info(`${method_name} - Request received`, {
|
|
305
|
+
method: req.method,
|
|
306
|
+
url: req.url,
|
|
307
|
+
user_agent: req.get('User-Agent'),
|
|
308
|
+
ip: req.ip,
|
|
309
|
+
body_size: req.body ? JSON.stringify(req.body).length : 0,
|
|
310
|
+
query_params: Object.keys(req.query).length > 0 ? req.query : undefined,
|
|
311
|
+
headers: {
|
|
312
|
+
content_type: req.get('Content-Type'),
|
|
313
|
+
authorization: req.get('Authorization') ? '[REDACTED]' : undefined
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Log request and response details
|
|
319
|
+
*
|
|
320
|
+
* @param req - Express request object
|
|
321
|
+
* @param res - Express response object
|
|
322
|
+
* @param method_name - Name of the controller method being called
|
|
323
|
+
*/
|
|
324
|
+
log_request_response(req, res, method_name) {
|
|
325
|
+
const start_time = Date.now();
|
|
326
|
+
const logger = this.logger;
|
|
327
|
+
// Log request
|
|
328
|
+
this.log_request(req, method_name);
|
|
329
|
+
// Hook into response finish event to log response
|
|
330
|
+
const original_send = res.send;
|
|
331
|
+
res.send = function (body) {
|
|
332
|
+
const end_time = Date.now();
|
|
333
|
+
const duration = end_time - start_time;
|
|
334
|
+
// Log response details
|
|
335
|
+
logger.info(`${method_name} - Response sent`, {
|
|
336
|
+
status_code: res.statusCode,
|
|
337
|
+
duration_ms: duration,
|
|
338
|
+
response_size: body ? JSON.stringify(body).length : 0,
|
|
339
|
+
headers: {
|
|
340
|
+
content_type: res.get('Content-Type')
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
return original_send.call(this, body);
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Log error details
|
|
348
|
+
*
|
|
349
|
+
* @param error - Error object
|
|
350
|
+
* @param method_name - Name of the controller method where error occurred
|
|
351
|
+
* @param req - Express request object (optional)
|
|
352
|
+
*/
|
|
353
|
+
log_error(error, method_name, req) {
|
|
354
|
+
const error_details = {
|
|
355
|
+
method: method_name,
|
|
356
|
+
error_message: error instanceof Error ? error.message : String(error),
|
|
357
|
+
error_type: error.constructor.name,
|
|
358
|
+
stack: error instanceof Error ? error.stack : undefined
|
|
359
|
+
};
|
|
360
|
+
if (req) {
|
|
361
|
+
error_details.request = {
|
|
362
|
+
method: req.method,
|
|
363
|
+
url: req.url,
|
|
364
|
+
ip: req.ip,
|
|
365
|
+
user_agent: req.get('User-Agent')
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
if (error instanceof app_exceptions_1.BaseAppException) {
|
|
369
|
+
error_details.error_code = error.error_code;
|
|
370
|
+
error_details.http_status = error.http_status;
|
|
371
|
+
error_details.details = error.details;
|
|
372
|
+
}
|
|
373
|
+
this.logger.error(`${method_name} - Error occurred`, error_details);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
exports.BaseController = BaseController;
|
|
377
|
+
exports.default = BaseController;
|
|
378
|
+
//# sourceMappingURL=base.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.controller.js","sourceRoot":"","sources":["../../src/controllers/base.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent Controller
|
|
3
|
+
*
|
|
4
|
+
* Controller for handling agent request operations.
|
|
5
|
+
* Follows pixie validation pattern.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne, Inc.
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { Request, Response, NextFunction } from "express";
|
|
11
|
+
import { BaseController } from "./base.controller";
|
|
12
|
+
export declare class ConversationController extends BaseController {
|
|
13
|
+
private conversation_service;
|
|
14
|
+
private sdk;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Submit a message to a conversation. Loads conversation history from database and appends new message
|
|
18
|
+
* Always uses streaming response (NDJSON format)
|
|
19
|
+
* Follows pixie validation pattern
|
|
20
|
+
*/
|
|
21
|
+
submit_message(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Validate submit message request data
|
|
24
|
+
* Checks that agent_request_id, conversation_id exist in DB
|
|
25
|
+
* Validates conversation belongs to agent_request
|
|
26
|
+
* If step_id is provided, validates it exists in DB
|
|
27
|
+
* Returns validation result with error message if validation fails
|
|
28
|
+
*/
|
|
29
|
+
private validate_incoming_message;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=conversations.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/conversations.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnD,qBAAa,sBAAuB,SAAQ,cAAc;IACtD,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,GAAG,CAAY;;IAQvB;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DpF;;;;;;OAMG;YACW,yBAAyB;CAiE1C"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Agent Controller
|
|
4
|
+
*
|
|
5
|
+
* Controller for handling agent request operations.
|
|
6
|
+
* Follows pixie validation pattern.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne, Inc.
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ConversationController = void 0;
|
|
16
|
+
const express_validator_1 = require("express-validator");
|
|
17
|
+
const base_controller_1 = require("./base.controller");
|
|
18
|
+
const logger_1 = require("../lib/utils/logger");
|
|
19
|
+
const conversation_service_1 = __importDefault(require("../services/conversation.service"));
|
|
20
|
+
const streaming_utils_1 = require("../lib/streaming-utils");
|
|
21
|
+
const controller_utils_1 = require("../lib/controller-utils");
|
|
22
|
+
const savant_sdk_1 = require("../sdk/savant.sdk");
|
|
23
|
+
const logger = (0, logger_1.create_compact_logger)("agents:conversation-controller");
|
|
24
|
+
class ConversationController extends base_controller_1.BaseController {
|
|
25
|
+
constructor() {
|
|
26
|
+
super();
|
|
27
|
+
this.conversation_service = new conversation_service_1.default();
|
|
28
|
+
this.sdk = new savant_sdk_1.SavantSDK();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Submit a message to a conversation. Loads conversation history from database and appends new message
|
|
32
|
+
* Always uses streaming response (NDJSON format)
|
|
33
|
+
* Follows pixie validation pattern
|
|
34
|
+
*/
|
|
35
|
+
async submit_message(req, res, next) {
|
|
36
|
+
try {
|
|
37
|
+
// Check if there's any validation error (pixie pattern)
|
|
38
|
+
let err = (0, express_validator_1.validationResult)(req);
|
|
39
|
+
if (!err.isEmpty()) {
|
|
40
|
+
return (0, controller_utils_1.handle_error_response)((0, controller_utils_1.get_error)("general", "badRequest", undefined, err.array()), res, next);
|
|
41
|
+
}
|
|
42
|
+
this.logger.info('Submitting message to conversation', { request: req.body });
|
|
43
|
+
// Request body uses conversation_id (maps to Conversation.id) and message (singular)
|
|
44
|
+
// We adapt it to Conversation structure for type safety
|
|
45
|
+
const { agent_request_id, conversation_id, message, step_id } = req.body;
|
|
46
|
+
// Validate request data (agent_request_id, conversation_id, step_id)
|
|
47
|
+
const validation_result = await this.validate_incoming_message({
|
|
48
|
+
agent_request_id,
|
|
49
|
+
conversation_id,
|
|
50
|
+
step_id
|
|
51
|
+
});
|
|
52
|
+
if (!validation_result.isValid) {
|
|
53
|
+
// Return error response in pixie format
|
|
54
|
+
return (0, controller_utils_1.handle_error_response)((0, controller_utils_1.get_error)("general", "badRequest", validation_result.errorMessage, validation_result.errorDetails), res, next);
|
|
55
|
+
}
|
|
56
|
+
// Always use streaming for submit_message endpoint
|
|
57
|
+
const streaming_utils = new streaming_utils_1.StreamingUtils(res, req);
|
|
58
|
+
// Pass the conversation data to the service
|
|
59
|
+
// Service will load full conversation history from database and append the new message
|
|
60
|
+
await this.sdk.submit_message({
|
|
61
|
+
agent_request_id,
|
|
62
|
+
conversation_id,
|
|
63
|
+
message,
|
|
64
|
+
step_id,
|
|
65
|
+
}, streaming_utils);
|
|
66
|
+
// The service will emit 'final_response' and then 'end'. Cleanup happens in the callback.
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// Handle streaming errors
|
|
70
|
+
(0, streaming_utils_1.handle_stream_error)(res, error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate submit message request data
|
|
75
|
+
* Checks that agent_request_id, conversation_id exist in DB
|
|
76
|
+
* Validates conversation belongs to agent_request
|
|
77
|
+
* If step_id is provided, validates it exists in DB
|
|
78
|
+
* Returns validation result with error message if validation fails
|
|
79
|
+
*/
|
|
80
|
+
async validate_incoming_message(data) {
|
|
81
|
+
this.logger.info('🔍 Validating submit message data', {
|
|
82
|
+
agent_request_id: data.agent_request_id,
|
|
83
|
+
conversation_id: data.conversation_id,
|
|
84
|
+
step_id: data.step_id
|
|
85
|
+
});
|
|
86
|
+
// Validate that agent_request_id exists in DB
|
|
87
|
+
const agent_request = await this.conversation_service.find_agent_request(data.agent_request_id);
|
|
88
|
+
if (!agent_request) {
|
|
89
|
+
this.logger.warn('❌ Agent request not found', { agent_request_id: data.agent_request_id });
|
|
90
|
+
return {
|
|
91
|
+
isValid: false,
|
|
92
|
+
errorMessage: `Agent request not found: ${data.agent_request_id}`,
|
|
93
|
+
errorDetails: { agent_request_id: data.agent_request_id, field: 'agent_request_id' }
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Validate that conversation_id exists in DB
|
|
97
|
+
const conversation = await this.conversation_service.find_conversation(data.conversation_id);
|
|
98
|
+
if (!conversation) {
|
|
99
|
+
this.logger.warn('❌ Conversation not found', { conversation_id: data.conversation_id });
|
|
100
|
+
return {
|
|
101
|
+
isValid: false,
|
|
102
|
+
errorMessage: `Conversation not found: ${data.conversation_id}`,
|
|
103
|
+
errorDetails: { conversation_id: data.conversation_id, field: 'conversation_id' }
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// Validate that conversation belongs to the agent_request
|
|
107
|
+
if (conversation.agent_request_id !== data.agent_request_id) {
|
|
108
|
+
this.logger.warn('❌ Conversation does not belong to agent request', {
|
|
109
|
+
conversation_id: data.conversation_id,
|
|
110
|
+
agent_request_id: data.agent_request_id
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
isValid: false,
|
|
114
|
+
errorMessage: `Conversation ${data.conversation_id} does not belong to agent request ${data.agent_request_id}`,
|
|
115
|
+
errorDetails: {
|
|
116
|
+
conversation_id: data.conversation_id,
|
|
117
|
+
agent_request_id: data.agent_request_id,
|
|
118
|
+
field: 'conversation_id'
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// If step_id is provided, validate that it exists in DB
|
|
123
|
+
if (data.step_id) {
|
|
124
|
+
const plan_step = await this.conversation_service.find_plan_step(data.step_id);
|
|
125
|
+
if (!plan_step) {
|
|
126
|
+
this.logger.warn('❌ Plan step not found', { step_id: data.step_id });
|
|
127
|
+
return {
|
|
128
|
+
isValid: false,
|
|
129
|
+
errorMessage: `Plan step not found: ${data.step_id}`,
|
|
130
|
+
errorDetails: { step_id: data.step_id, field: 'step_id' }
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return { isValid: true };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.ConversationController = ConversationController;
|
|
138
|
+
//# sourceMappingURL=conversations.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.controller.js","sourceRoot":"","sources":["../../src/controllers/conversations.controller.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;AAGH,yDAAqD;AACrD,uDAAmD;AAEnD,gDAA4D;AAC5D,4FAAmE;AACnE,4DAA6E;AAC7E,8DAA2E;AAC3E,kDAA8C;AAC9C,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,gCAAgC,CAAC,CAAC;AAEvE,MAAa,sBAAuB,SAAQ,gCAAc;IAGtD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,oBAAoB,GAAG,IAAI,8BAAmB,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,GAAG,IAAI,sBAAS,EAAE,CAAC;IAC/B,CAAC;IAGD;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAChE,IAAI,CAAC;YACD,wDAAwD;YACxD,IAAI,GAAG,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAA,wCAAqB,EACxB,IAAA,4BAAS,EAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAC1D,GAAG,EACH,IAAI,CACP,CAAC;YACN,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9E,qFAAqF;YACrF,wDAAwD;YACxD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAKnE,CAAC;YAEF,qEAAqE;YACrE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC;gBAC3D,gBAAgB;gBAChB,eAAe;gBACf,OAAO;aACV,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBAC7B,wCAAwC;gBACxC,OAAO,IAAA,wCAAqB,EACxB,IAAA,4BAAS,EAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAClG,GAAG,EACH,IAAI,CACP,CAAC;YACN,CAAC;YAED,mDAAmD;YACnD,MAAM,eAAe,GAAG,IAAI,gCAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAErD,4CAA4C;YAC5C,uFAAuF;YACvF,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CACzB;gBACI,gBAAgB;gBAChB,eAAe;gBACf,OAAO;gBACP,OAAO;aACV,EACD,eAAe,CAClB,CAAC;YACF,0FAA0F;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,0BAA0B;YAC1B,IAAA,qCAAmB,EAAC,GAAG,EAAE,KAAc,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,yBAAyB,CAAC,IAIvC;QACG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;YAClD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,8CAA8C;QAC9C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC3F,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,4BAA4B,IAAI,CAAC,gBAAgB,EAAE;gBACjE,YAAY,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE;aACvF,CAAC;QACN,CAAC;QAED,6CAA6C;QAC7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACxF,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,2BAA2B,IAAI,CAAC,eAAe,EAAE;gBAC/D,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;aACpF,CAAC;QACN,CAAC;QAED,0DAA0D;QAC1D,IAAI,YAAY,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE;gBAChE,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aAC1C,CAAC,CAAC;YACH,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,gBAAgB,IAAI,CAAC,eAAe,qCAAqC,IAAI,CAAC,gBAAgB,EAAE;gBAC9G,YAAY,EAAE;oBACV,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,KAAK,EAAE,iBAAiB;iBAC3B;aACJ,CAAC;QACN,CAAC;QAED,wDAAwD;QACxD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,wBAAwB,IAAI,CAAC,OAAO,EAAE;oBACpD,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;iBAC5D,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;CACJ;AAnJD,wDAmJC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Knowledge Controller
|
|
3
|
+
*
|
|
4
|
+
* Controller for handling Knowledge HTTP requests.
|
|
5
|
+
* Extends BaseController from shared-utils for consistent API patterns.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne, Inc.
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { Request, Response, NextFunction } from "express";
|
|
11
|
+
import { BaseController } from "./base.controller";
|
|
12
|
+
export declare class KnowledgeController extends BaseController {
|
|
13
|
+
private knowledge_service;
|
|
14
|
+
private file_upload_service;
|
|
15
|
+
private embedding_service;
|
|
16
|
+
private audit_log_service;
|
|
17
|
+
private sdk;
|
|
18
|
+
constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Upload file and return file_id
|
|
21
|
+
* POST /knowledge/upload
|
|
22
|
+
*/
|
|
23
|
+
upload_file(req: Request, res: Response): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Create a new knowledge
|
|
26
|
+
* POST /v3/knowledge/new
|
|
27
|
+
*
|
|
28
|
+
* Now accepts source_data with array of file IDs:
|
|
29
|
+
* { source_data: [{ id: "file_id_1" }, { id: "file_id_2" }] }
|
|
30
|
+
*
|
|
31
|
+
* IMPORTANT: Domain is NEVER accepted from request body.
|
|
32
|
+
* Domain is ALWAYS identified using AI (DomainIdentifierService) from the seed content.
|
|
33
|
+
*/
|
|
34
|
+
create_knowledge(req: Request, res: Response): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get knowledge by ID
|
|
37
|
+
* POST /v3/knowledge/get_by_id
|
|
38
|
+
*/
|
|
39
|
+
get_knowledge_by_id(req: Request, res: Response): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Set content for knowledge
|
|
42
|
+
* POST /v3/knowledge/set_content
|
|
43
|
+
*/
|
|
44
|
+
set_content(req: Request, res: Response): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* List knowledge
|
|
47
|
+
* POST /v3/knowledge/list
|
|
48
|
+
*/
|
|
49
|
+
list_knowledge(req: Request, res: Response): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Update knowledge with revision tracking
|
|
52
|
+
* POST /knowledge/update
|
|
53
|
+
* Follows pixie validation pattern
|
|
54
|
+
*/
|
|
55
|
+
update_knowledge(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Search embeddings by query text
|
|
58
|
+
* POST /knowledge/search
|
|
59
|
+
* POST /embeddings/search (alias for MCP server compatibility)
|
|
60
|
+
*/
|
|
61
|
+
search_knowledge(req: Request, res: Response): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=knowledge.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/knowledge.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnD,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,GAAG,CAAY;;IAevB;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC7D;;;;;;;;;OASG;IACG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ClE;;;OAGG;IACG,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrE;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7D;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChE;;;;OAIG;IACG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAuHtF;;;;UAIM;IACA,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAoCnE"}
|