@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,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Shared Sequelize Service and Configuration
|
|
4
|
+
*
|
|
5
|
+
* Comprehensive Sequelize ORM service with configuration management,
|
|
6
|
+
* connection pooling, performance monitoring, and singleton pattern.
|
|
7
|
+
* This service can be used across all microservices for consistent database access.
|
|
8
|
+
*
|
|
9
|
+
* @author MeasureOne, Inc.
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.SequelizeService = void 0;
|
|
14
|
+
exports.create_default_database_config = create_default_database_config;
|
|
15
|
+
exports.create_sequelize_service = create_sequelize_service;
|
|
16
|
+
const sequelize_1 = require("sequelize");
|
|
17
|
+
const logger_1 = require("./logger");
|
|
18
|
+
const logger = (0, logger_1.create_default_logger)("sequelize-service");
|
|
19
|
+
/**
|
|
20
|
+
* Shared Sequelize Service for all microservices
|
|
21
|
+
*/
|
|
22
|
+
class SequelizeService {
|
|
23
|
+
constructor(service_name, options) {
|
|
24
|
+
this.is_connected = false;
|
|
25
|
+
this.query_stats = {
|
|
26
|
+
total_queries: 0,
|
|
27
|
+
slow_queries: 0,
|
|
28
|
+
total_response_time: 0,
|
|
29
|
+
};
|
|
30
|
+
this.service_name = service_name;
|
|
31
|
+
this.options = options;
|
|
32
|
+
this.sequelize = this.create_sequelize_instance();
|
|
33
|
+
this.setup_event_handlers();
|
|
34
|
+
this.setup_performance_monitoring();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get singleton instance of SequelizeService for a specific service
|
|
38
|
+
*/
|
|
39
|
+
static get_instance(service_name, options) {
|
|
40
|
+
if (!SequelizeService.instances.has(service_name)) {
|
|
41
|
+
SequelizeService.instances.set(service_name, new SequelizeService(service_name, options));
|
|
42
|
+
}
|
|
43
|
+
return SequelizeService.instances.get(service_name);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get Sequelize instance
|
|
47
|
+
*/
|
|
48
|
+
get client() {
|
|
49
|
+
return this.sequelize;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if database is connected
|
|
53
|
+
*/
|
|
54
|
+
get connected() {
|
|
55
|
+
return this.is_connected;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get service name
|
|
59
|
+
*/
|
|
60
|
+
get name() {
|
|
61
|
+
return this.service_name;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create Sequelize instance with comprehensive configuration
|
|
65
|
+
*/
|
|
66
|
+
create_sequelize_instance() {
|
|
67
|
+
const config = this.options.database_config;
|
|
68
|
+
// Parse database URL to extract connection details
|
|
69
|
+
const is_sqlite = config.url.startsWith("file:") || config.url.endsWith(".db");
|
|
70
|
+
let sequelize_options;
|
|
71
|
+
if (is_sqlite) {
|
|
72
|
+
// SQLite configuration
|
|
73
|
+
const db_path = config.url.replace("file:", "");
|
|
74
|
+
sequelize_options = {
|
|
75
|
+
dialect: "sqlite",
|
|
76
|
+
storage: db_path,
|
|
77
|
+
logging: config.log_queries
|
|
78
|
+
? (sql, timing) => {
|
|
79
|
+
logger.info(`[${this.service_name}] [SQL] ${sql}${timing ? ` (${timing}ms)` : ""}`);
|
|
80
|
+
}
|
|
81
|
+
: false,
|
|
82
|
+
pool: config.pool,
|
|
83
|
+
define: {
|
|
84
|
+
timestamps: true,
|
|
85
|
+
underscored: true, // Use snake_case for timestamps
|
|
86
|
+
freezeTableName: true,
|
|
87
|
+
paranoid: true, // Enable soft deletes
|
|
88
|
+
},
|
|
89
|
+
// SQLite specific options
|
|
90
|
+
dialectOptions: {
|
|
91
|
+
// Enable foreign key constraints
|
|
92
|
+
foreignKeys: "ON",
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// PostgreSQL/MySQL configuration
|
|
98
|
+
const url = new URL(config.url);
|
|
99
|
+
sequelize_options = {
|
|
100
|
+
dialect: config.provider,
|
|
101
|
+
host: url.hostname,
|
|
102
|
+
port: parseInt(url.port) || (config.provider === "postgresql" ? 5432 : 3306),
|
|
103
|
+
database: url.pathname.slice(1),
|
|
104
|
+
username: url.username,
|
|
105
|
+
password: url.password,
|
|
106
|
+
logging: config.log_queries
|
|
107
|
+
? (sql, timing) => {
|
|
108
|
+
logger.info(`[${this.service_name}] [SQL] ${sql}${timing ? ` (${timing}ms)` : ""}`);
|
|
109
|
+
}
|
|
110
|
+
: false,
|
|
111
|
+
pool: config.pool,
|
|
112
|
+
define: {
|
|
113
|
+
timestamps: true,
|
|
114
|
+
underscored: true, // Use snake_case for timestamps
|
|
115
|
+
freezeTableName: true,
|
|
116
|
+
paranoid: true, // Enable soft deletes
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return new sequelize_1.Sequelize(sequelize_options);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Setup performance monitoring hooks
|
|
124
|
+
*/
|
|
125
|
+
setup_performance_monitoring() {
|
|
126
|
+
if (!this.options.enable_performance_monitoring)
|
|
127
|
+
return;
|
|
128
|
+
const slow_query_threshold = this.options.slow_query_threshold_ms || 1000;
|
|
129
|
+
this.sequelize.addHook("beforeQuery", (options) => {
|
|
130
|
+
options.start_time = Date.now();
|
|
131
|
+
});
|
|
132
|
+
this.sequelize.addHook("afterQuery", (options) => {
|
|
133
|
+
const duration = Date.now() - (options.start_time || 0);
|
|
134
|
+
this.query_stats.total_queries++;
|
|
135
|
+
this.query_stats.total_response_time += duration;
|
|
136
|
+
if (duration > slow_query_threshold) {
|
|
137
|
+
this.query_stats.slow_queries++;
|
|
138
|
+
logger.warn(`[${this.service_name}] [SLOW QUERY] ${options.sql} (${duration}ms)`);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Setup event handlers for database connection
|
|
144
|
+
*/
|
|
145
|
+
setup_event_handlers() {
|
|
146
|
+
// Handle process termination
|
|
147
|
+
process.on("SIGINT", () => this.disconnect());
|
|
148
|
+
process.on("SIGTERM", () => this.disconnect());
|
|
149
|
+
process.on("beforeExit", () => this.disconnect());
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Connect to database
|
|
153
|
+
*/
|
|
154
|
+
async connect() {
|
|
155
|
+
try {
|
|
156
|
+
await this.sequelize.authenticate();
|
|
157
|
+
// Setup model associations if provided
|
|
158
|
+
// Note: This should be called after models are initialized with the Sequelize instance
|
|
159
|
+
if (this.options.setup_associations) {
|
|
160
|
+
// Don't call setup_associations here as models may not be initialized yet
|
|
161
|
+
// The app should call this after models are properly initialized
|
|
162
|
+
// We'll just store the function for later use
|
|
163
|
+
this.setup_associations = this.options.setup_associations;
|
|
164
|
+
}
|
|
165
|
+
this.is_connected = true;
|
|
166
|
+
logger.info(`[${this.service_name}] Database connected successfully`);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
this.is_connected = false;
|
|
170
|
+
logger.error(`[${this.service_name}] Failed to connect to database:`, error);
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Disconnect from database
|
|
176
|
+
*/
|
|
177
|
+
async disconnect() {
|
|
178
|
+
try {
|
|
179
|
+
await this.sequelize.close();
|
|
180
|
+
this.is_connected = false;
|
|
181
|
+
logger.info(`[${this.service_name}] Database disconnected successfully`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
logger.error(`[${this.service_name}] Error disconnecting from database:`, error);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check database health
|
|
190
|
+
*/
|
|
191
|
+
async health_check() {
|
|
192
|
+
try {
|
|
193
|
+
const start_time = Date.now();
|
|
194
|
+
await this.sequelize.query("SELECT 1");
|
|
195
|
+
const response_time = Date.now() - start_time;
|
|
196
|
+
return {
|
|
197
|
+
status: "healthy",
|
|
198
|
+
timestamp: new Date().toISOString(),
|
|
199
|
+
details: {
|
|
200
|
+
response_time_ms: response_time,
|
|
201
|
+
dialect: this.sequelize.getDialect(),
|
|
202
|
+
database_name: this.sequelize.getDatabaseName(),
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
logger.error(`[${this.service_name}] Database health check failed:`, error);
|
|
208
|
+
return {
|
|
209
|
+
status: "unhealthy",
|
|
210
|
+
timestamp: new Date().toISOString(),
|
|
211
|
+
details: {
|
|
212
|
+
error: error.message,
|
|
213
|
+
dialect: this.sequelize.getDialect(),
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Execute database transaction
|
|
220
|
+
*/
|
|
221
|
+
async transaction(callback) {
|
|
222
|
+
return this.sequelize.transaction(callback);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Execute raw SQL query with logging
|
|
226
|
+
*/
|
|
227
|
+
async query(sql, options) {
|
|
228
|
+
const start_time = Date.now();
|
|
229
|
+
try {
|
|
230
|
+
const result = await this.sequelize.query(sql, options);
|
|
231
|
+
const duration = Date.now() - start_time;
|
|
232
|
+
if (duration > (this.options.slow_query_threshold_ms || 1000)) {
|
|
233
|
+
logger.warn(`[${this.service_name}] [SLOW QUERY] ${sql} (${duration}ms)`);
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
const duration = Date.now() - start_time;
|
|
239
|
+
logger.error(`[${this.service_name}] [QUERY ERROR] ${sql} (${duration}ms)`, error);
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get query statistics
|
|
245
|
+
*/
|
|
246
|
+
get_query_stats() {
|
|
247
|
+
const average_response_time = this.query_stats.total_queries > 0 ? this.query_stats.total_response_time / this.query_stats.total_queries : 0;
|
|
248
|
+
return {
|
|
249
|
+
dialect: this.sequelize.getDialect(),
|
|
250
|
+
database_name: this.sequelize.getDatabaseName(),
|
|
251
|
+
is_connected: this.is_connected,
|
|
252
|
+
total_queries: this.query_stats.total_queries,
|
|
253
|
+
slow_queries: this.query_stats.slow_queries,
|
|
254
|
+
average_response_time: Math.round(average_response_time),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Setup model associations (call this after models are initialized)
|
|
259
|
+
*/
|
|
260
|
+
setup_model_associations() {
|
|
261
|
+
if (this.setup_associations) {
|
|
262
|
+
this.setup_associations();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Sync database schema (for development)
|
|
267
|
+
*/
|
|
268
|
+
async sync_schema(options) {
|
|
269
|
+
try {
|
|
270
|
+
await this.sequelize.sync(options);
|
|
271
|
+
logger.info(`[${this.service_name}] Database schema synchronized successfully`);
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
logger.error(`[${this.service_name}] Failed to sync database schema:`, error);
|
|
275
|
+
throw error;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Drop all tables (for testing)
|
|
280
|
+
*/
|
|
281
|
+
async drop_all_tables() {
|
|
282
|
+
try {
|
|
283
|
+
await this.sequelize.dropAllSchemas({ logging: false });
|
|
284
|
+
logger.info(`[${this.service_name}] All database tables dropped successfully`);
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
logger.error(`[${this.service_name}] Failed to drop database tables:`, error);
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get all active instances (for monitoring)
|
|
293
|
+
*/
|
|
294
|
+
static get_all_instances() {
|
|
295
|
+
return new Map(SequelizeService.instances);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Close all instances (for cleanup)
|
|
299
|
+
*/
|
|
300
|
+
static async close_all_instances() {
|
|
301
|
+
const promises = Array.from(SequelizeService.instances.values()).map((instance) => instance.disconnect());
|
|
302
|
+
await Promise.all(promises);
|
|
303
|
+
SequelizeService.instances.clear();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
exports.SequelizeService = SequelizeService;
|
|
307
|
+
SequelizeService.instances = new Map();
|
|
308
|
+
/**
|
|
309
|
+
* Default database configuration factory
|
|
310
|
+
*/
|
|
311
|
+
function create_default_database_config(url, provider = "sqlite", log_queries = false) {
|
|
312
|
+
return {
|
|
313
|
+
url,
|
|
314
|
+
provider,
|
|
315
|
+
log_queries,
|
|
316
|
+
connection_timeout: 30000,
|
|
317
|
+
query_timeout: 10000,
|
|
318
|
+
pool: {
|
|
319
|
+
max: 10,
|
|
320
|
+
min: 0,
|
|
321
|
+
acquire: 30000,
|
|
322
|
+
idle: 10000,
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Create Sequelize service with default configuration
|
|
328
|
+
*/
|
|
329
|
+
function create_sequelize_service(service_name, database_url, options = {}) {
|
|
330
|
+
const default_config = create_default_database_config(database_url);
|
|
331
|
+
const service_options = {
|
|
332
|
+
database_config: default_config,
|
|
333
|
+
enable_performance_monitoring: true,
|
|
334
|
+
slow_query_threshold_ms: 1000,
|
|
335
|
+
...options,
|
|
336
|
+
};
|
|
337
|
+
return SequelizeService.get_instance(service_name, service_options);
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=sequelize-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequelize-service.js","sourceRoot":"","sources":["../../../src/lib/utils/sequelize-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tool Call Extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts tool call results from GenerateContentResponse.automaticFunctionCallingHistory
|
|
5
|
+
* Matches function calls with their responses and formats them for context storage.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne, Inc.
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import type { GenerateContentResponse } from "@google/genai";
|
|
11
|
+
/**
|
|
12
|
+
* Tool result entry extracted from automaticFunctionCallingHistory
|
|
13
|
+
*/
|
|
14
|
+
export interface ExtractedToolResult {
|
|
15
|
+
call_id: string;
|
|
16
|
+
tool_name: string;
|
|
17
|
+
result: any;
|
|
18
|
+
execution_time_ms: number;
|
|
19
|
+
success: boolean;
|
|
20
|
+
error?: {
|
|
21
|
+
message: string;
|
|
22
|
+
type?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract tool call results from GenerateContentResponse.automaticFunctionCallingHistory
|
|
27
|
+
*
|
|
28
|
+
* The history alternates between function calls and their responses:
|
|
29
|
+
* - functionCall: Contains the tool name and arguments
|
|
30
|
+
* - functionResponse: Contains the tool result
|
|
31
|
+
*
|
|
32
|
+
* @param response - GenerateContentResponse from Gemini API
|
|
33
|
+
* @returns Array of extracted tool results
|
|
34
|
+
*/
|
|
35
|
+
export declare function extract_tool_results_from_history(response: GenerateContentResponse): ExtractedToolResult[];
|
|
36
|
+
//# sourceMappingURL=tool-call-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-extractor.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/tool-call-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAiB,MAAM,eAAe,CAAC;AAK5E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAChD,QAAQ,EAAE,uBAAuB,GAC/B,mBAAmB,EAAE,CA+GvB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Tool Call Extractor
|
|
4
|
+
*
|
|
5
|
+
* Extracts tool call results from GenerateContentResponse.automaticFunctionCallingHistory
|
|
6
|
+
* Matches function calls with their responses and formats them for context storage.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne, Inc.
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.extract_tool_results_from_history = extract_tool_results_from_history;
|
|
13
|
+
const logger_1 = require("./logger");
|
|
14
|
+
const logger = (0, logger_1.create_compact_logger)('tool-call-extractor');
|
|
15
|
+
/**
|
|
16
|
+
* Extract tool call results from GenerateContentResponse.automaticFunctionCallingHistory
|
|
17
|
+
*
|
|
18
|
+
* The history alternates between function calls and their responses:
|
|
19
|
+
* - functionCall: Contains the tool name and arguments
|
|
20
|
+
* - functionResponse: Contains the tool result
|
|
21
|
+
*
|
|
22
|
+
* @param response - GenerateContentResponse from Gemini API
|
|
23
|
+
* @returns Array of extracted tool results
|
|
24
|
+
*/
|
|
25
|
+
function extract_tool_results_from_history(response) {
|
|
26
|
+
const results = [];
|
|
27
|
+
if (!response.automaticFunctionCallingHistory || response.automaticFunctionCallingHistory.length === 0) {
|
|
28
|
+
logger.debug('No automaticFunctionCallingHistory found in response');
|
|
29
|
+
return results;
|
|
30
|
+
}
|
|
31
|
+
const history = response.automaticFunctionCallingHistory;
|
|
32
|
+
logger.debug(`Extracting tool results from ${history.length} history entries`);
|
|
33
|
+
// Track function calls and match them with responses
|
|
34
|
+
const pending_calls = new Map();
|
|
35
|
+
for (let i = 0; i < history.length; i++) {
|
|
36
|
+
const content = history[i];
|
|
37
|
+
if (!content.parts || content.parts.length === 0) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
for (const part of content.parts) {
|
|
41
|
+
// Check for function call (request)
|
|
42
|
+
if (part.functionCall) {
|
|
43
|
+
const call = part.functionCall;
|
|
44
|
+
const call_id = call.id || `call_${i}_${Date.now()}`;
|
|
45
|
+
const tool_name = call.name || 'unknown';
|
|
46
|
+
const args = call.args || {};
|
|
47
|
+
pending_calls.set(call_id, {
|
|
48
|
+
name: tool_name,
|
|
49
|
+
args: args,
|
|
50
|
+
timestamp: Date.now()
|
|
51
|
+
});
|
|
52
|
+
logger.debug(`Found function call: ${tool_name} (id: ${call_id})`);
|
|
53
|
+
}
|
|
54
|
+
// Check for function response (result)
|
|
55
|
+
if (part.functionResponse) {
|
|
56
|
+
const response_data = part.functionResponse;
|
|
57
|
+
const tool_name = response_data.name || 'unknown';
|
|
58
|
+
const response_result = response_data.response || {};
|
|
59
|
+
const response_id = response_data.id; // FunctionResponse may have id
|
|
60
|
+
// Try to match by id first, then by name
|
|
61
|
+
let matched_call = null;
|
|
62
|
+
let call_id = response_id;
|
|
63
|
+
if (response_id && pending_calls.has(response_id)) {
|
|
64
|
+
matched_call = pending_calls.get(response_id);
|
|
65
|
+
pending_calls.delete(response_id);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Match by name (find the most recent pending call with matching name)
|
|
69
|
+
for (const [id, call] of pending_calls.entries()) {
|
|
70
|
+
if (call.name === tool_name) {
|
|
71
|
+
matched_call = call;
|
|
72
|
+
call_id = id;
|
|
73
|
+
pending_calls.delete(id);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (matched_call) {
|
|
79
|
+
const execution_time_ms = Date.now() - matched_call.timestamp;
|
|
80
|
+
// Determine success based on response structure
|
|
81
|
+
// If response has an error field, it's a failure
|
|
82
|
+
const has_error = response_result && (response_result.error ||
|
|
83
|
+
response_result.error_message ||
|
|
84
|
+
response_result.success === false);
|
|
85
|
+
const tool_result = {
|
|
86
|
+
call_id: call_id, // Store the call ID
|
|
87
|
+
tool_name: tool_name,
|
|
88
|
+
result: response_result,
|
|
89
|
+
execution_time_ms: execution_time_ms,
|
|
90
|
+
success: !has_error,
|
|
91
|
+
error: has_error ? {
|
|
92
|
+
message: response_result.error_message || response_result.error || 'Unknown error',
|
|
93
|
+
type: 'execution_error'
|
|
94
|
+
} : undefined
|
|
95
|
+
};
|
|
96
|
+
results.push(tool_result);
|
|
97
|
+
logger.debug(`Extracted tool result: ${tool_name} (id: ${call_id}, ${execution_time_ms}ms, success: ${!has_error})`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
logger.warn(`Could not match function response for ${tool_name} - no pending call found`);
|
|
101
|
+
// Still add the result even if we can't match the call
|
|
102
|
+
const fallback_id = `fallback_${i}_${Date.now()}`;
|
|
103
|
+
results.push({
|
|
104
|
+
call_id: fallback_id,
|
|
105
|
+
tool_name: tool_name,
|
|
106
|
+
result: response_result,
|
|
107
|
+
execution_time_ms: 0, // Unknown execution time
|
|
108
|
+
success: true, // Assume success if we can't determine
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Log any unmatched calls
|
|
115
|
+
if (pending_calls.size > 0) {
|
|
116
|
+
logger.warn(`Found ${pending_calls.size} unmatched function call(s): ${Array.from(pending_calls.values()).map(c => c.name).join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
logger.info(`Extracted ${results.length} tool result(s) from automaticFunctionCallingHistory`);
|
|
119
|
+
return results;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=tool-call-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-extractor.js","sourceRoot":"","sources":["../../../src/lib/utils/tool-call-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Zod to JSON Schema Converter
|
|
3
|
+
*
|
|
4
|
+
* Uses native Zod v4 z.toJSONSchema() for converting Zod schemas
|
|
5
|
+
* to JSON Schema format for use with Gemini API.
|
|
6
|
+
*
|
|
7
|
+
* Reference: https://zod.dev/json-schema
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
/**
|
|
11
|
+
* Convert a Zod schema to JSON Schema format for Gemini API
|
|
12
|
+
* @param schema - Zod schema to convert
|
|
13
|
+
* @param name - Optional name for the schema (unused with native method)
|
|
14
|
+
* @returns JSON Schema object compatible with Gemini API
|
|
15
|
+
*/
|
|
16
|
+
export declare function convertZodToJsonSchema(schema: z.ZodTypeAny, name?: string): any;
|
|
17
|
+
//# sourceMappingURL=zod-to-json-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-to-json-schema.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/zod-to-json-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CA+B/E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Zod to JSON Schema Converter
|
|
4
|
+
*
|
|
5
|
+
* Uses native Zod v4 z.toJSONSchema() for converting Zod schemas
|
|
6
|
+
* to JSON Schema format for use with Gemini API.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://zod.dev/json-schema
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.convertZodToJsonSchema = convertZodToJsonSchema;
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
/**
|
|
14
|
+
* Convert a Zod schema to JSON Schema format for Gemini API
|
|
15
|
+
* @param schema - Zod schema to convert
|
|
16
|
+
* @param name - Optional name for the schema (unused with native method)
|
|
17
|
+
* @returns JSON Schema object compatible with Gemini API
|
|
18
|
+
*/
|
|
19
|
+
function convertZodToJsonSchema(schema, name) {
|
|
20
|
+
// Use native Zod v4 toJSONSchema method
|
|
21
|
+
// Reference: https://zod.dev/json-schema
|
|
22
|
+
const json_schema = zod_1.z.toJSONSchema(schema, {
|
|
23
|
+
target: 'draft-07', // JSON Schema Draft 7
|
|
24
|
+
reused: 'inline', // Inline reused schemas (no $defs)
|
|
25
|
+
cycles: 'ref', // Handle cycles with $ref (shouldn't occur in our schemas)
|
|
26
|
+
unrepresentable: 'throw', // Throw error for unrepresentable types
|
|
27
|
+
});
|
|
28
|
+
// Clean up for Gemini API compatibility
|
|
29
|
+
// Gemini doesn't accept certain fields: $schema, $defs, definitions, additionalProperties
|
|
30
|
+
const clean_for_gemini = (obj) => {
|
|
31
|
+
if (!obj || typeof obj !== 'object')
|
|
32
|
+
return obj;
|
|
33
|
+
if (Array.isArray(obj))
|
|
34
|
+
return obj.map(clean_for_gemini);
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
37
|
+
// Skip fields Gemini doesn't accept
|
|
38
|
+
if (key === '$schema')
|
|
39
|
+
continue;
|
|
40
|
+
if (key === '$defs')
|
|
41
|
+
continue;
|
|
42
|
+
if (key === 'definitions')
|
|
43
|
+
continue;
|
|
44
|
+
if (key === 'additionalProperties')
|
|
45
|
+
continue; // ← Gemini rejects this field
|
|
46
|
+
// Recursively clean nested objects
|
|
47
|
+
result[key] = (value && typeof value === 'object') ? clean_for_gemini(value) : value;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
return clean_for_gemini(json_schema);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=zod-to-json-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-to-json-schema.js","sourceRoot":"","sources":["../../../src/lib/utils/zod-to-json-schema.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAUH,wDA+BC;AAvCD,6BAAwB;AAExB;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAAoB,EAAE,IAAa;IACzE,wCAAwC;IACxC,yCAAyC;IACzC,MAAM,WAAW,GAAG,OAAC,CAAC,YAAY,CAAC,MAAM,EAAE;QAC1C,MAAM,EAAE,UAAU,EAAS,sBAAsB;QACjD,MAAM,EAAE,QAAQ,EAAY,mCAAmC;QAC/D,MAAM,EAAE,KAAK,EAAe,2DAA2D;QACvF,eAAe,EAAE,OAAO,EAAI,wCAAwC;KACpE,CAAC,CAAC;IAEH,wCAAwC;IACxC,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,CAAC,GAAQ,EAAO,EAAE;QAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,oCAAoC;YACpC,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YAChC,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS;YAC9B,IAAI,GAAG,KAAK,aAAa;gBAAE,SAAS;YACpC,IAAI,GAAG,KAAK,sBAAsB;gBAAE,SAAS,CAAE,8BAA8B;YAE7E,mCAAmC;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AgentRequest Sequelize Model
|
|
3
|
+
*
|
|
4
|
+
* Sequelize model definition for AgentRequest based on shared types.
|
|
5
|
+
* Provides database mapping for agent request entities with comprehensive logging.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne, Inc.
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { Model, Optional } from "sequelize";
|
|
11
|
+
import { AgentRequest } from "../lib/schemas";
|
|
12
|
+
interface AgentRequestAttributes {
|
|
13
|
+
id: string;
|
|
14
|
+
application_id: string;
|
|
15
|
+
type: "CHAT" | "TASK" | "ANALYSIS" | "PROCESSING";
|
|
16
|
+
policy?: string;
|
|
17
|
+
created_at: Date;
|
|
18
|
+
updated_at: Date;
|
|
19
|
+
}
|
|
20
|
+
interface AgentRequestCreationAttributes extends Optional<AgentRequestAttributes, "id" | "created_at" | "updated_at"> {
|
|
21
|
+
}
|
|
22
|
+
export declare class AgentRequestModel extends Model<AgentRequestAttributes, AgentRequestCreationAttributes> implements AgentRequestAttributes {
|
|
23
|
+
id: string;
|
|
24
|
+
application_id: string;
|
|
25
|
+
type: "CHAT" | "TASK" | "ANALYSIS" | "PROCESSING";
|
|
26
|
+
policy?: string;
|
|
27
|
+
created_at: Date;
|
|
28
|
+
updated_at: Date;
|
|
29
|
+
to_shared_type(): AgentRequest;
|
|
30
|
+
static from_shared_type(agent_request: any): Partial<AgentRequestAttributes>;
|
|
31
|
+
}
|
|
32
|
+
export default AgentRequestModel;
|
|
33
|
+
//# sourceMappingURL=AgentRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentRequest.d.ts","sourceRoot":"","sources":["../../src/models/AgentRequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,KAAK,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,UAAU,sBAAsB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB;AAGD,UAAU,8BAA+B,SAAQ,QAAQ,CAAC,sBAAsB,EAAE,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC;CAAI;AAGzH,qBAAa,iBACX,SAAQ,KAAK,CAAC,sBAAsB,EAAE,8BAA8B,CACpE,YAAW,sBAAsB;IAC1B,EAAE,EAAG,MAAM,CAAC;IACZ,cAAc,EAAG,MAAM,CAAC;IACxB,IAAI,EAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAG,IAAI,CAAC;IAClB,UAAU,EAAG,IAAI,CAAC;IAGlB,cAAc,IAAI,YAAY;WAoBvB,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAQpF;AAKD,eAAe,iBAAiB,CAAC"}
|