@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,505 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Dynamic Agent - Chat Completions Implementation
|
|
4
|
+
*
|
|
5
|
+
* This module provides a streamlined agent implementation using OpenAI chat completions
|
|
6
|
+
* instead of the agent framework for faster execution without handoffs.
|
|
7
|
+
*
|
|
8
|
+
* Key Features:
|
|
9
|
+
* - Direct OpenAI chat completions API usage
|
|
10
|
+
* - MCP server str
|
|
11
|
+
* - Streaming support
|
|
12
|
+
* - Retry mechanisms
|
|
13
|
+
* - Type-safe agent responses
|
|
14
|
+
*
|
|
15
|
+
* @author MeasureOne
|
|
16
|
+
* @version 2.0.0
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.DynamicAgent = exports.DEFAULT_AGENT_OPTIONS = void 0;
|
|
20
|
+
const genai_1 = require("@google/genai");
|
|
21
|
+
const zod_to_json_schema_1 = require("../../lib/utils/zod-to-json-schema");
|
|
22
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
23
|
+
const mcp_utils_1 = require("../../lib/utils/mcp-utils");
|
|
24
|
+
const conversation_builder_1 = require("../../lib/utils/conversation-builder");
|
|
25
|
+
/**
|
|
26
|
+
* Default execution options for agents.
|
|
27
|
+
*
|
|
28
|
+
* max_attempts: Number of times to retry if ENTIRE execution crashes (catastrophic failures)
|
|
29
|
+
* retry_delay_ms: Delay between retry attempts
|
|
30
|
+
* streaming: Enable real-time NDJSON streaming
|
|
31
|
+
*
|
|
32
|
+
* Note: max_iterations (inside execute_single_attempt) controls the OpenAI tool calling loop
|
|
33
|
+
*/
|
|
34
|
+
exports.DEFAULT_AGENT_OPTIONS = {
|
|
35
|
+
max_attempts: 10, // Retry up to 10 times if entire execution throws exception
|
|
36
|
+
retry_delay_ms: 1000, // 1 second
|
|
37
|
+
streaming: true, // Enable streaming output by default
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Dynamic Agent class - streamlined implementation using Google Gemini Chat API.
|
|
41
|
+
* Provides common functionality and execution patterns without agent framework overhead.
|
|
42
|
+
*/
|
|
43
|
+
class DynamicAgent {
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new dynamic agent instance.
|
|
46
|
+
*
|
|
47
|
+
* @param client - Google Gemini client instance
|
|
48
|
+
* @param mcp_servers - Array of MCP server instances
|
|
49
|
+
* @param agent_name - Name of the agent for identification
|
|
50
|
+
* @param instructions - Agent instructions for behavior
|
|
51
|
+
* @param tools - Array of tools available to the agent
|
|
52
|
+
* @param model - Model to use (e.g., "gemini-2.5-flash", "gemini-2.5-flash")
|
|
53
|
+
* @param response_schema - Optional Zod schema for structured response validation
|
|
54
|
+
* @param conversation_summary - Optional LLM-generated summary of conversation messages
|
|
55
|
+
* @param context_summary - Optional LLM-generated summary of execution context
|
|
56
|
+
* @param recent_messages - Optional recent messages for immediate context (last 3 messages)
|
|
57
|
+
* @param current_context - Optional current context object (plan_id, current_step, tool_results, etc.)
|
|
58
|
+
*/
|
|
59
|
+
constructor(client, mcp_servers = [], agent_name, instructions, tools = [], model = "gemini-2.5-flash", response_schema, conversation_summary, context_summary, recent_messages, current_context, history_strategy = 'SUMMARY' // Default to the optimized summary strategy
|
|
60
|
+
) {
|
|
61
|
+
this.client = client;
|
|
62
|
+
this.mcp_servers = mcp_servers;
|
|
63
|
+
this.name = agent_name;
|
|
64
|
+
this.instructions = instructions.trim();
|
|
65
|
+
this.model = model;
|
|
66
|
+
this.system_prompt = instructions.trim();
|
|
67
|
+
this.response_schema = response_schema;
|
|
68
|
+
// Initialize properties
|
|
69
|
+
this.debug_logged = false;
|
|
70
|
+
this.verbose_reasoning = true;
|
|
71
|
+
this.logger = (0, logger_1.create_default_logger)(`dynamic-agent:${agent_name}`);
|
|
72
|
+
let condensed_history;
|
|
73
|
+
switch (history_strategy) {
|
|
74
|
+
case 'FULL':
|
|
75
|
+
this.logger.info('Using FULL conversation history strategy.');
|
|
76
|
+
condensed_history = recent_messages || []; // Assuming recent_messages would contain the full history in this case
|
|
77
|
+
break;
|
|
78
|
+
case 'RECENT_ONLY':
|
|
79
|
+
this.logger.info('Using RECENT_ONLY conversation history strategy.');
|
|
80
|
+
condensed_history = recent_messages?.slice(-10) || []; // Example: last 10 messages
|
|
81
|
+
break;
|
|
82
|
+
case 'SUMMARY':
|
|
83
|
+
default:
|
|
84
|
+
this.logger.info('Using SUMMARY (default) conversation history strategy.');
|
|
85
|
+
// Build condensed conversation from summaries and recent messages
|
|
86
|
+
condensed_history = (0, conversation_builder_1.build_condensed_conversation)(conversation_summary, context_summary, recent_messages || [], current_context);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
// Create chat instance if we have any history
|
|
90
|
+
if (condensed_history.length > 0) {
|
|
91
|
+
// Convert ChatMessage[] to Content[] format
|
|
92
|
+
const ai_history = condensed_history.map((msg) => {
|
|
93
|
+
const role = msg.role === 'model' ? 'model' : 'user';
|
|
94
|
+
const content_text = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
95
|
+
return { role: role, parts: [{ text: content_text }] };
|
|
96
|
+
});
|
|
97
|
+
this.chat_instance = this.client.chats.create({ model: this.model, history: ai_history });
|
|
98
|
+
this.logger.info(`✅ Created chat instance with condensed history: ${condensed_history.length} messages (summary-based)`);
|
|
99
|
+
}
|
|
100
|
+
if (mcp_servers.length == 0) {
|
|
101
|
+
this.logger.warn(`⚠️ No MCP servers available for ${agent_name}`);
|
|
102
|
+
}
|
|
103
|
+
// MCP tools are now provided directly via mcpToTool in call_gemini_once
|
|
104
|
+
// No need to cache tools anymore
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Executes the agent with a single attempt using Google Gemini Chat API.
|
|
108
|
+
*
|
|
109
|
+
* @param input - Input data for the agent (conversation history)
|
|
110
|
+
* @param streaming - Whether to use streaming output
|
|
111
|
+
* @param streaming_utils - Optional callback function for streaming chunks
|
|
112
|
+
* @returns Promise<GenerateContentResponse> - Gemini SDK response (contains AgentResponse in text property)
|
|
113
|
+
*/
|
|
114
|
+
async execute_single_attempt(input, streaming = true, streaming_utils) {
|
|
115
|
+
let ai_response = null;
|
|
116
|
+
try {
|
|
117
|
+
// Convert Zod schema to JSON Schema for Gemini
|
|
118
|
+
let response_schema = null;
|
|
119
|
+
if (this.response_schema) {
|
|
120
|
+
response_schema = (0, zod_to_json_schema_1.convertZodToJsonSchema)(this.response_schema, `${this.name.toLowerCase()}_response`);
|
|
121
|
+
}
|
|
122
|
+
this.logger.info(`🚀 Starting ${this.name}`, { model: this.model || "gemini-2.5-flash", structured: !!response_schema });
|
|
123
|
+
if (input.length === 0) {
|
|
124
|
+
throw new Error("No input messages provided");
|
|
125
|
+
}
|
|
126
|
+
// Extract the last message as the new message to send to Gemini
|
|
127
|
+
const new_message = input[input.length - 1];
|
|
128
|
+
// If chat_instance exists (created with summaries), use it directly - history is already in chat_instance
|
|
129
|
+
// Otherwise, use the rest of the conversation as history (backward compatibility)
|
|
130
|
+
const conversation_history = this.chat_instance ? [] : input.slice(0, -1);
|
|
131
|
+
// Call Gemini Chat API
|
|
132
|
+
// Note: If chat_instance exists, it already contains condensed history from summaries
|
|
133
|
+
// We only pass the new message, and chat_instance provides the history
|
|
134
|
+
ai_response = await this.call_gemini_once(this.client, {
|
|
135
|
+
model: this.model || "gemini-2.5-flash", instructions: this.system_prompt, history: conversation_history,
|
|
136
|
+
new_message: new_message, tool_choice: "auto", streaming: streaming, streaming_utils: streaming_utils,
|
|
137
|
+
response_schema: response_schema, mcp_servers: this.mcp_servers, chat: this.chat_instance
|
|
138
|
+
});
|
|
139
|
+
this.logger.info(`🔍 AI response:`, { response: ai_response });
|
|
140
|
+
// Check if text contains an ERROR message_type
|
|
141
|
+
if (ai_response.text) {
|
|
142
|
+
try {
|
|
143
|
+
const parsed_output = JSON.parse(ai_response.text);
|
|
144
|
+
if (parsed_output.message_type === "ERROR") {
|
|
145
|
+
throw new Error(parsed_output.error_message || parsed_output.error || "Error in agent response");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (parse_error) {
|
|
149
|
+
// If it's already an Error from message_type check, re-throw it
|
|
150
|
+
if (parse_error instanceof Error && parse_error.message.includes("Error in agent response")) {
|
|
151
|
+
throw parse_error;
|
|
152
|
+
}
|
|
153
|
+
// Otherwise, it's a JSON parse error - log and continue
|
|
154
|
+
this.logger.warn("Error parsing the response: " + (parse_error.message || String(parse_error)));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return ai_response;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.logger.error(`[ERROR] AI API execution failed for ${this.name}`, { error: error instanceof Error ? error.stack : error });
|
|
161
|
+
// Re-throw the error since GenerateContentResponse doesn't support error wrapping
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Executes the agent with retry mechanism for improved reliability.
|
|
167
|
+
* SIMPLIFIED: Just retries on exceptions, returns raw Gemini Response.
|
|
168
|
+
* All response handling is done by the service layer.
|
|
169
|
+
*
|
|
170
|
+
* @param input - Input data for the agent (conversation history)
|
|
171
|
+
* @param options - Execution options
|
|
172
|
+
* @param streaming_utils - Optional callback function for streaming chunks
|
|
173
|
+
* @returns Promise<GenerateContentResponse> - Raw AI Response (contains AgentResponse in output_text)
|
|
174
|
+
*/
|
|
175
|
+
async execute_with_retries(input, options, streaming_utils) {
|
|
176
|
+
const opts = { ...exports.DEFAULT_AGENT_OPTIONS, ...options };
|
|
177
|
+
const max_attempts = opts.max_attempts || exports.DEFAULT_AGENT_OPTIONS.max_attempts;
|
|
178
|
+
const streaming = opts.streaming || exports.DEFAULT_AGENT_OPTIONS.streaming;
|
|
179
|
+
// Simple retry loop - just retry on exceptions
|
|
180
|
+
for (let i = 0; i < max_attempts; i++) {
|
|
181
|
+
try {
|
|
182
|
+
this.logger.info(`Attempt ${i + 1}/${max_attempts} - Starting agent ${this.name} execution...`);
|
|
183
|
+
const result = await this.execute_single_attempt(input, streaming, streaming_utils);
|
|
184
|
+
// Check if response text contains an error message_type
|
|
185
|
+
if (result.text) {
|
|
186
|
+
try {
|
|
187
|
+
const parsed = JSON.parse(result.text);
|
|
188
|
+
if (parsed.message_type === "ERROR") {
|
|
189
|
+
// Add error to input for next attempt
|
|
190
|
+
input.push({
|
|
191
|
+
role: 'model',
|
|
192
|
+
content: `Error: ${parsed.error_message || parsed.error || "Unknown error"}`
|
|
193
|
+
});
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch (e) {
|
|
198
|
+
// Not JSON or no error - continue normally
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return result; // Return raw Response - service will handle it
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
this.logger.warn(`❌ Agent execution attempt ${i + 1} failed:`, error instanceof Error ? error.message : String(error));
|
|
205
|
+
// If this is the last attempt, throw the error
|
|
206
|
+
if (i === max_attempts - 1) {
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
// Add error to input for next attempt
|
|
210
|
+
input.push({
|
|
211
|
+
role: 'user',
|
|
212
|
+
content: JSON.stringify({ error_message: error instanceof Error ? error.message : "Unknown error", error_stack: error instanceof Error ? error.stack : "Unknown stack" })
|
|
213
|
+
});
|
|
214
|
+
// Wait before retrying
|
|
215
|
+
await this.delay(opts.retry_delay_ms || 1000);
|
|
216
|
+
continue; //ideally not required, since it is the end of the loop. But this is a safety measure.
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
throw new Error("Agent execution failed after all retry attempts");
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Utility method to create a delay.
|
|
223
|
+
*
|
|
224
|
+
* @param ms - Delay duration in milliseconds
|
|
225
|
+
*/
|
|
226
|
+
delay(ms) {
|
|
227
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Gets the MCP servers used by this agent.
|
|
231
|
+
*
|
|
232
|
+
* @returns Array of MCP servers
|
|
233
|
+
*/
|
|
234
|
+
get_mcp_servers() {
|
|
235
|
+
return this.mcp_servers;
|
|
236
|
+
}
|
|
237
|
+
async call_gemini_once(client, options) {
|
|
238
|
+
const { model = 'gemini-2.5-flash', instructions, history, new_message, tools = [], tool_choice = 'auto', streaming = false, streaming_utils, response_schema, mcp_servers = [], chat } = options;
|
|
239
|
+
// Helper function to convert ChatMessage to Content
|
|
240
|
+
// AI always responds in JSON using the response schema, so we simplify content conversion
|
|
241
|
+
const convert_to_content = (item) => {
|
|
242
|
+
const role = item.role === 'model' ? 'model' : 'user';
|
|
243
|
+
// Convert content to text - always stringify if object, otherwise use as string
|
|
244
|
+
const content_text = typeof item.content === 'string'
|
|
245
|
+
? item.content
|
|
246
|
+
: JSON.stringify(item.content);
|
|
247
|
+
return {
|
|
248
|
+
role: role,
|
|
249
|
+
parts: [{ text: content_text }]
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
// Convert history to Content format
|
|
253
|
+
const ai_history = history.map(convert_to_content);
|
|
254
|
+
// Convert new message for sendMessage
|
|
255
|
+
// sendMessage can accept: string, parts array, or Content object
|
|
256
|
+
// Simplest: pass the text content directly as a string
|
|
257
|
+
const message_content = typeof new_message.content === 'string'
|
|
258
|
+
? new_message.content
|
|
259
|
+
: JSON.stringify(new_message.content);
|
|
260
|
+
// Build tools array
|
|
261
|
+
const ai_tools = [];
|
|
262
|
+
// Add regular tools (convert to Gemini FunctionDeclaration format)
|
|
263
|
+
for (const tool of tools) {
|
|
264
|
+
if (tool.functionDeclarations) {
|
|
265
|
+
ai_tools.push({
|
|
266
|
+
functionDeclarations: tool.functionDeclarations.map((declaration) => ({
|
|
267
|
+
name: declaration.name,
|
|
268
|
+
description: declaration.description || '',
|
|
269
|
+
parametersJsonSchema: declaration.parametersJsonSchema || {}
|
|
270
|
+
}))
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Add MCP tools using mcpToTool from Gemini SDK
|
|
275
|
+
// Gemini internally supports MCP calls - we should use the CallableTool directly
|
|
276
|
+
// NOT convert it to function declarations, as that causes incompatibility
|
|
277
|
+
let mcp_callable_tool = null;
|
|
278
|
+
if (mcp_servers.length > 0) {
|
|
279
|
+
try {
|
|
280
|
+
// Get connected MCP servers (these are Client instances from MCP SDK)
|
|
281
|
+
const mcp_manager = mcp_utils_1.MCPServerManager.get_instance();
|
|
282
|
+
const connected_servers = mcp_manager.get_connected_servers();
|
|
283
|
+
this.logger.info(`🔍 Using mcpToTool with ${connected_servers.size} MCP clients`);
|
|
284
|
+
// Get all Client instances as an array
|
|
285
|
+
const mcp_clients = Array.from(connected_servers.values());
|
|
286
|
+
if (mcp_clients.length > 0) {
|
|
287
|
+
// Use mcpToTool to create a callable tool from MCP clients
|
|
288
|
+
// mcpToTool accepts Client instances and returns a CallableTool
|
|
289
|
+
// The CallableTool automatically handles schema conversion AND tool execution
|
|
290
|
+
// Spread the clients array as individual arguments
|
|
291
|
+
mcp_callable_tool = (0, genai_1.mcpToTool)(...mcp_clients);
|
|
292
|
+
this.logger.info(`✅ Created MCP CallableTool - Gemini will handle MCP calls directly`);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
this.logger.warn(`⚠️ No MCP clients available despite mcp_servers.length > 0`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
this.logger.error(`❌ Failed to load MCP tools using mcpToTool:`, error instanceof Error ? error.stack : String(error));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this.logger.info(`ℹ️ No MCP servers provided (mcp_servers.length = 0)`);
|
|
304
|
+
}
|
|
305
|
+
// Build config
|
|
306
|
+
const config = {
|
|
307
|
+
temperature: 0.1, maxOutputTokens: 128000, systemInstruction: instructions
|
|
308
|
+
};
|
|
309
|
+
// Add structured output schema if provided
|
|
310
|
+
if (response_schema) {
|
|
311
|
+
// The schema should already be inlined by convertZodToJsonSchema
|
|
312
|
+
// But we still need to clean it for Gemini compatibility
|
|
313
|
+
let processed_schema = response_schema;
|
|
314
|
+
// Clean schema for Gemini compatibility - remove unsupported fields
|
|
315
|
+
const clean_schema_for_gemini = (obj) => {
|
|
316
|
+
if (!obj || typeof obj !== 'object')
|
|
317
|
+
return obj;
|
|
318
|
+
if (Array.isArray(obj)) {
|
|
319
|
+
return obj.map(clean_schema_for_gemini);
|
|
320
|
+
}
|
|
321
|
+
// Handle anyOf/oneOf structures first (before processing properties)
|
|
322
|
+
// For nullable arrays like plan: z.array(...).nullable(), simplify to just array
|
|
323
|
+
if (obj.anyOf && Array.isArray(obj.anyOf)) {
|
|
324
|
+
// If anyOf has [array, null], prefer the array type (remove null option)
|
|
325
|
+
// This is because Gemini has trouble with nullable arrays - it interprets them as array of nulls
|
|
326
|
+
const array_option = obj.anyOf.find((opt) => opt.type === 'array');
|
|
327
|
+
const null_option = obj.anyOf.find((opt) => opt.type === 'null');
|
|
328
|
+
if (array_option && null_option && obj.anyOf.length === 2) {
|
|
329
|
+
// For nullable arrays, just use the array type
|
|
330
|
+
// The default value will handle the null case
|
|
331
|
+
return clean_schema_for_gemini({ ...array_option, default: obj.default });
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// For other anyOf structures, process each option
|
|
335
|
+
return { ...obj, anyOf: obj.anyOf.map((option) => clean_schema_for_gemini(option)) };
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (obj.oneOf && Array.isArray(obj.oneOf)) {
|
|
339
|
+
return { ...obj, oneOf: obj.oneOf.map((option) => clean_schema_for_gemini(option)) };
|
|
340
|
+
}
|
|
341
|
+
const result = {};
|
|
342
|
+
let has_const = false;
|
|
343
|
+
let const_value = null;
|
|
344
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
345
|
+
// Remove $schema field (not supported by Gemini)
|
|
346
|
+
if (key === '$schema') {
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
// Remove $ref if it somehow still exists (shouldn't happen with $refStrategy: 'root')
|
|
350
|
+
if (key === '$ref') {
|
|
351
|
+
this.logger.warn(`⚠️ Found unresolved $ref after conversion, removing: ${value}`);
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
// Remove definitions - they should already be inlined
|
|
355
|
+
if (key === 'definitions') {
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
// Track 'const' to convert to 'enum' later (preserve other properties)
|
|
359
|
+
if (key === 'const') {
|
|
360
|
+
has_const = true;
|
|
361
|
+
const_value = value;
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
// Recursively clean nested objects
|
|
365
|
+
if (value && typeof value === 'object') {
|
|
366
|
+
result[key] = clean_schema_for_gemini(value);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
result[key] = value;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Convert 'const' to 'enum' with single value (Gemini doesn't support 'const')
|
|
373
|
+
// Only add enum if const was present and enum doesn't already exist
|
|
374
|
+
if (has_const && !result.enum) {
|
|
375
|
+
result.enum = [const_value];
|
|
376
|
+
}
|
|
377
|
+
// Fix empty object properties - Gemini requires non-empty properties for object types
|
|
378
|
+
// If type="object" and no properties, remove type and use additionalProperties only
|
|
379
|
+
if (result.type === 'object') {
|
|
380
|
+
// Properties are already cleaned recursively above, so just check if empty
|
|
381
|
+
if (!result.properties || Object.keys(result.properties).length === 0) {
|
|
382
|
+
// Remove type: "object" when we have no properties - Gemini doesn't allow type="object" without properties
|
|
383
|
+
delete result.type;
|
|
384
|
+
delete result.properties;
|
|
385
|
+
result.additionalProperties = true;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// Fix array items that are objects with empty properties
|
|
389
|
+
// This must be done AFTER recursive cleaning to catch all nested cases
|
|
390
|
+
if (result.type === 'array' && result.items) {
|
|
391
|
+
// Recursively check and fix items (could be nested anyOf/oneOf structures)
|
|
392
|
+
const fix_items = (items) => {
|
|
393
|
+
if (!items || typeof items !== 'object')
|
|
394
|
+
return items;
|
|
395
|
+
// If items is an anyOf/oneOf, process each option
|
|
396
|
+
if (items.anyOf && Array.isArray(items.anyOf)) {
|
|
397
|
+
return {
|
|
398
|
+
...items,
|
|
399
|
+
anyOf: items.anyOf.map((option) => fix_items(option))
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
if (items.oneOf && Array.isArray(items.oneOf)) {
|
|
403
|
+
return {
|
|
404
|
+
...items,
|
|
405
|
+
oneOf: items.oneOf.map((option) => fix_items(option))
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
// If items is an object type with empty properties, fix it
|
|
409
|
+
// Gemini requires: if type="object", properties must be non-empty OR type must be removed
|
|
410
|
+
if (items.type === 'object') {
|
|
411
|
+
if (!items.properties || Object.keys(items.properties).length === 0) {
|
|
412
|
+
const fixed = { ...items };
|
|
413
|
+
delete fixed.type;
|
|
414
|
+
delete fixed.properties;
|
|
415
|
+
fixed.additionalProperties = true;
|
|
416
|
+
return fixed;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return items;
|
|
420
|
+
};
|
|
421
|
+
result.items = fix_items(result.items);
|
|
422
|
+
}
|
|
423
|
+
return result;
|
|
424
|
+
};
|
|
425
|
+
const cleaned_schema = clean_schema_for_gemini(processed_schema);
|
|
426
|
+
// Debug: Check for empty properties in requested_inputs.items
|
|
427
|
+
if (cleaned_schema.properties?.content?.properties?.requested_inputs) {
|
|
428
|
+
const requested_inputs = cleaned_schema.properties.content.properties.requested_inputs;
|
|
429
|
+
if (requested_inputs.items) {
|
|
430
|
+
// Final fix: Ensure items.properties is not empty
|
|
431
|
+
// Gemini requires: if type="object", properties must be non-empty OR type must be removed
|
|
432
|
+
if (requested_inputs.items.type === 'object' && (!requested_inputs.items.properties || Object.keys(requested_inputs.items.properties).length === 0)) {
|
|
433
|
+
this.logger.warn(`⚠️ Fixing empty properties in requested_inputs.items`);
|
|
434
|
+
// Remove type: "object" when we have no properties - just use additionalProperties
|
|
435
|
+
delete requested_inputs.items.type;
|
|
436
|
+
delete requested_inputs.items.properties;
|
|
437
|
+
requested_inputs.items.additionalProperties = true;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// IMPORTANT: When using mcpToTool (function calling), we CANNOT use responseSchema
|
|
442
|
+
// Gemini API does not support structured JSON output when function calling is enabled
|
|
443
|
+
// So we only set responseSchema if we're NOT using mcpToTool
|
|
444
|
+
if (!mcp_callable_tool) {
|
|
445
|
+
config.responseSchema = cleaned_schema;
|
|
446
|
+
config.responseMimeType = 'application/json';
|
|
447
|
+
this.logger.info(`📋 Added response schema for structured output (mcpToTool not in use)`);
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
this.logger.warn(`⚠️ Skipping response schema - incompatible with mcpToTool (function calling). Agent will return natural text.`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
// Add tools if available - allow automatic function calling
|
|
454
|
+
// IMPORTANT: Cannot mix CallableTools (MCP) with FunctionDeclarations
|
|
455
|
+
// IMPORTANT: Cannot use responseSchema with function calling (mcpToTool)
|
|
456
|
+
// If we have MCP callable tool, use ONLY that (Gemini handles MCP calls internally)
|
|
457
|
+
// If we have regular tools, use ONLY those (as FunctionDeclarations)
|
|
458
|
+
if (mcp_callable_tool) {
|
|
459
|
+
// Use ONLY the MCP callable tool - Gemini internally supports MCP calls
|
|
460
|
+
// Do NOT mix with regular FunctionDeclarations as that causes incompatibility
|
|
461
|
+
// Do NOT use responseSchema - it's incompatible with function calling
|
|
462
|
+
config.tools = [mcp_callable_tool];
|
|
463
|
+
config.toolConfig = { functionCallingConfig: { mode: tool_choice === 'auto' ? genai_1.FunctionCallingConfigMode.AUTO : tool_choice === 'none' ? genai_1.FunctionCallingConfigMode.NONE : genai_1.FunctionCallingConfigMode.ANY } };
|
|
464
|
+
this.logger.info(`🔧 Added MCP CallableTool only - AI will handle MCP calls directly (${ai_tools.length} regular tools skipped, responseSchema disabled due to incompatibility)`);
|
|
465
|
+
}
|
|
466
|
+
else if (ai_tools.length > 0) {
|
|
467
|
+
// No MCP tools - use regular FunctionDeclarations
|
|
468
|
+
config.tools = ai_tools;
|
|
469
|
+
config.toolConfig = { functionCallingConfig: { mode: tool_choice === 'auto' ? genai_1.FunctionCallingConfigMode.AUTO : tool_choice === 'none' ? genai_1.FunctionCallingConfigMode.NONE : genai_1.FunctionCallingConfigMode.ANY } };
|
|
470
|
+
this.logger.info(`🔧 Added ${ai_tools.length} tool(s) to config with automatic function calling enabled`);
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
this.logger.info(`ℹ️ No tools added to config (ai_tools.length = 0, mcp_callable_tool = null)`);
|
|
474
|
+
}
|
|
475
|
+
// Use provided chat instance (rehydrated from conversation service)
|
|
476
|
+
// OR create a new chat instance if none is provided (for standalone agents like SummarizerAgent)
|
|
477
|
+
let chat_instance = chat;
|
|
478
|
+
if (!chat_instance) {
|
|
479
|
+
// Create a new chat instance for standalone agents
|
|
480
|
+
// This allows agents like SummarizerAgent to work independently
|
|
481
|
+
// Note: chats.create only accepts model and history, config is passed to sendMessage
|
|
482
|
+
chat_instance = client.chats.create({
|
|
483
|
+
model: model,
|
|
484
|
+
history: ai_history
|
|
485
|
+
});
|
|
486
|
+
this.logger.info(`✅ Created new chat instance for standalone agent (history: ${ai_history.length} messages)`);
|
|
487
|
+
}
|
|
488
|
+
// Note: Chat config (tools, response schema) is set when creating the chat
|
|
489
|
+
// If agents need different configs, the chat should be created/recreated with the appropriate config
|
|
490
|
+
// For now, we use the chat as-is - config should be set at creation time in conversation.service
|
|
491
|
+
// sendMessage expects an object with 'message' property and optional 'config'
|
|
492
|
+
// When using mcpToTool, the CallableTool should handle automatic execution
|
|
493
|
+
// But we need to pass it correctly - the callable tool should be in the tools array
|
|
494
|
+
// However, chat.sendMessage may need the callable tool to be passed differently
|
|
495
|
+
// For now, we'll use the tool definitions and handle function calls manually
|
|
496
|
+
// The mcp_callable_tool is stored but not used yet - we'll handle function calls via FunctionCallHandler
|
|
497
|
+
const response = await chat_instance.sendMessage({ message: message_content, config: config });
|
|
498
|
+
// Return the Gemini SDK response directly
|
|
499
|
+
// The response.text contains the AgentResponse JSON
|
|
500
|
+
// Note: Function calls are handled by the AI provider (Gemini) internally when using mcpToTool
|
|
501
|
+
return response;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
exports.DynamicAgent = DynamicAgent;
|
|
505
|
+
//# sourceMappingURL=dynamic-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-agent.js","sourceRoot":"","sources":["../../../src/ai/agents/dynamic-agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,yCAAsK;AAGtK,2EAA4E;AAG5E,mDAA+D;AAM/D,yDAA6D;AAQ7D,+EAAoF;AAYpF;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAyE;IAC1G,YAAY,EAAE,EAAE,EAAE,4DAA4D;IAC9E,cAAc,EAAE,IAAI,EAAE,WAAW;IACjC,SAAS,EAAE,IAAI,EAAE,qCAAqC;CACtD,CAAC;AAEF;;;GAGG;AACH,MAAa,YAAY;IAkBxB;;;;;;;;;;;;;;OAcG;IACH,YACC,MAAmB,EACnB,cAAqB,EAAE,EACvB,UAAkB,EAClB,YAAoB,EACpB,QAAe,EAAE,EACjB,QAAgB,kBAAkB,EAClC,eAA0C,EAC1C,oBAAoC,EACpC,eAA+B,EAC/B,eAA+B,EAC/B,eAAqB,EACrB,mBAAoC,SAAS,CAAC,4CAA4C;;QAE1F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,wBAAwB;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,IAAA,8BAAqB,EAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;QAEnE,IAAI,iBAAgC,CAAC;QAErC,QAAQ,gBAAgB,EAAE,CAAC;YAC1B,KAAK,MAAM;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;gBAC9D,iBAAiB,GAAG,eAAe,IAAI,EAAE,CAAC,CAAC,uEAAuE;gBAClH,MAAM;YACP,KAAK,aAAa;gBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;gBACrE,iBAAiB,GAAG,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,4BAA4B;gBACnF,MAAM;YACP,KAAK,SAAS,CAAC;YACf;gBACC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBAC3E,kEAAkE;gBAClE,iBAAiB,GAAG,IAAA,mDAA4B,EAC/C,oBAAoB,EAAE,eAAe,EAAE,eAAe,IAAI,EAAE,EAAE,eAAe,CAC7E,CAAC;gBACF,MAAM;QACR,CAAC;QAED,8CAA8C;QAC9C,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,4CAA4C;YAC5C,MAAM,UAAU,GAAc,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAgB,EAAE,EAAE;gBACxE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,MAAM,YAAY,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,iBAAiB,CAAC,MAAM,2BAA2B,CAAC,CAAC;QAC1H,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;QAEnE,CAAC;QACD,wEAAwE;QACxE,iCAAiC;IAClC,CAAC;IAkBD;;;;;;;OAOG;IACI,KAAK,CAAC,sBAAsB,CAClC,KAAoB,EACpB,YAAqB,IAAI,EACzB,eAAgC;QAEhC,IAAI,WAAW,GAAmC,IAAI,CAAC;QACvD,IAAI,CAAC;YACJ,+CAA+C;YAC/C,IAAI,eAAe,GAAQ,IAAI,CAAC;YAEhC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,eAAe,GAAG,IAAA,2CAAsB,EAAC,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACvG,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,kBAAkB,EAAE,UAAU,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAEzH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC/C,CAAC;YACD,gEAAgE;YAChE,MAAM,WAAW,GAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEzD,0GAA0G;YAC1G,kFAAkF;YAClF,MAAM,oBAAoB,GAAkB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzF,uBAAuB;YACvB,sFAAsF;YACtF,uEAAuE;YACvE,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;gBACtD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,kBAAkB,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,oBAAoB;gBACxG,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe;gBACrG,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa;aACzF,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;YAG/D,+CAA+C;YAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACJ,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,aAAa,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;wBAC5C,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;oBAClG,CAAC;gBACF,CAAC;gBAAC,OAAO,WAAgB,EAAE,CAAC;oBAC3B,gEAAgE;oBAChE,IAAI,WAAW,YAAY,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;wBAC7F,MAAM,WAAW,CAAC;oBACnB,CAAC;oBACD,wDAAwD;oBACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjG,CAAC;YACF,CAAC;YAED,OAAO,WAAW,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/H,kFAAkF;YAClF,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAUD;;;;;;;;;OASG;IACI,KAAK,CAAC,oBAAoB,CAChC,KAAoB,EACpB,OAAW,EACX,eAAgC;QAGhC,MAAM,IAAI,GAAG,EAAE,GAAG,6BAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,6BAAqB,CAAC,YAAa,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,6BAAqB,CAAC,SAAU,CAAC;QAErE,+CAA+C;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,qBAAqB,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;gBAChG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;gBACpF,wDAAwD;gBACxD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBACvC,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;4BACrC,sCAAsC;4BACtC,KAAK,CAAC,IAAI,CAAC;gCACV,IAAI,EAAE,OAAgB;gCACtB,OAAO,EAAE,UAAU,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE;6BAC5E,CAAC,CAAC;4BACH,SAAS;wBACV,CAAC;oBACF,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACZ,2CAA2C;oBAC5C,CAAC;gBACF,CAAC;gBACD,OAAO,MAAM,CAAC,CAAC,+CAA+C;YAE/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEvH,+CAA+C;gBAC/C,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,KAAK,CAAC;gBACb,CAAC;gBAED,sCAAsC;gBACtC,KAAK,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;iBACzK,CAAC,CAAC;gBAEH,uBAAuB;gBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;gBAC9C,SAAS,CAAC,sFAAsF;YACjG,CAAC;QACF,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IAKD;;;;OAIG;IACK,KAAK,CAAC,EAAU;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,eAAe;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAQD,KAAK,CAAC,gBAAgB,CAAC,MAAmB,EAAE,OAA8B;QACzE,MAAM,EAAE,KAAK,GAAG,kBAAkB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,GAAG,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAElM,oDAAoD;QACpD,0FAA0F;QAC1F,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAW,EAAE;YACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAEtD,gFAAgF;YAChF,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBACpD,CAAC,CAAC,IAAI,CAAC,OAAO;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEhC,OAAO;gBACN,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;aAC/B,CAAC;QACH,CAAC,CAAC;QAEF,oCAAoC;QACpC,MAAM,UAAU,GAAc,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAE9D,sCAAsC;QACtC,iEAAiE;QACjE,uDAAuD;QACvD,MAAM,eAAe,GAAG,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;YAC9D,CAAC,CAAC,WAAW,CAAC,OAAO;YACrB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEvC,oBAAoB;QACpB,MAAM,QAAQ,GAAW,EAAE,CAAC;QAE5B,mEAAmE;QACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC;oBACb,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,WAAgC,EAAE,EAAE,CAAC,CAAC;wBAC1F,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;wBAC1C,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,IAAI,EAAE;qBAC5D,CAAC,CAAC;iBACH,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,gDAAgD;QAChD,iFAAiF;QACjF,0EAA0E;QAC1E,IAAI,iBAAiB,GAAQ,IAAI,CAAC;QAClC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACJ,sEAAsE;gBACtE,MAAM,WAAW,GAAG,4BAAgB,CAAC,YAAY,EAAE,CAAC;gBACpD,MAAM,iBAAiB,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBAE9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,iBAAiB,CAAC,IAAI,cAAc,CAAC,CAAC;gBAElF,uCAAuC;gBACvC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE3D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,2DAA2D;oBAC3D,gEAAgE;oBAChE,8EAA8E;oBAC9E,mDAAmD;oBACnD,iBAAiB,GAAG,IAAA,iBAAS,EAAC,GAAI,WAAmB,CAAC,CAAC;oBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;gBACxF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBAChF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxH,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,eAAe;QACf,MAAM,MAAM,GAA0B;YACrC,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY;SAC1E,CAAC;QAEF,2CAA2C;QAC3C,IAAI,eAAe,EAAE,CAAC;YACrB,iEAAiE;YACjE,yDAAyD;YACzD,IAAI,gBAAgB,GAAG,eAAe,CAAC;YAEvC,oEAAoE;YACpE,MAAM,uBAAuB,GAAG,CAAC,GAAQ,EAAO,EAAE;gBACjD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,GAAG,CAAC;gBAChD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACzC,CAAC;gBAED,qEAAqE;gBACrE,iFAAiF;gBACjF,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,yEAAyE;oBACzE,iGAAiG;oBACjG,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBACxE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;oBAEtE,IAAI,YAAY,IAAI,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3D,+CAA+C;wBAC/C,8CAA8C;wBAC9C,OAAO,uBAAuB,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3E,CAAC;yBAAM,CAAC;wBACP,kDAAkD;wBAClD,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAC3F,CAAC;gBACF,CAAC;gBACD,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC3F,CAAC;gBAED,MAAM,MAAM,GAAQ,EAAE,CAAC;gBACvB,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,WAAW,GAAQ,IAAI,CAAC;gBAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,iDAAiD;oBACjD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACvB,SAAS;oBACV,CAAC;oBACD,sFAAsF;oBACtF,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;wBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,KAAK,EAAE,CAAC,CAAC;wBAClF,SAAS;oBACV,CAAC;oBACD,sDAAsD;oBACtD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;wBAC3B,SAAS;oBACV,CAAC;oBACD,uEAAuE;oBACvE,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;wBACrB,SAAS,GAAG,IAAI,CAAC;wBACjB,WAAW,GAAG,KAAK,CAAC;wBACpB,SAAS;oBACV,CAAC;oBACD,mCAAmC;oBACnC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACxC,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACP,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACrB,CAAC;gBACF,CAAC;gBAED,+EAA+E;gBAC/E,oEAAoE;gBACpE,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;gBAED,sFAAsF;gBACtF,oFAAoF;gBACpF,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9B,2EAA2E;oBAC3E,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvE,2GAA2G;wBAC3G,OAAO,MAAM,CAAC,IAAI,CAAC;wBACnB,OAAO,MAAM,CAAC,UAAU,CAAC;wBACzB,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACpC,CAAC;gBACF,CAAC;gBAED,yDAAyD;gBACzD,uEAAuE;gBACvE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC7C,2EAA2E;oBAC3E,MAAM,SAAS,GAAG,CAAC,KAAU,EAAO,EAAE;wBACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;4BAAE,OAAO,KAAK,CAAC;wBAEtD,kDAAkD;wBAClD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/C,OAAO;gCACN,GAAG,KAAK;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;6BAC1D,CAAC;wBACH,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/C,OAAO;gCACN,GAAG,KAAK;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;6BAC1D,CAAC;wBACH,CAAC;wBAED,2DAA2D;wBAC3D,0FAA0F;wBAC1F,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC7B,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gCACrE,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;gCAC3B,OAAO,KAAK,CAAC,IAAI,CAAC;gCAAC,OAAO,KAAK,CAAC,UAAU,CAAC;gCAC3C,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;gCAClC,OAAO,KAAK,CAAC;4BACd,CAAC;wBACF,CAAC;wBAED,OAAO,KAAK,CAAC;oBACd,CAAC,CAAC;oBAEF,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC;gBAED,OAAO,MAAM,CAAC;YACf,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YAEjE,8DAA8D;YAC9D,IAAI,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;gBACtE,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACvF,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAG5B,kDAAkD;oBAClD,0FAA0F;oBAC1F,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;wBACrJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;wBACzE,mFAAmF;wBACnF,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;wBACnC,OAAO,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;wBACzC,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACpD,CAAC;gBACF,CAAC;YACF,CAAC;YAED,mFAAmF;YACnF,sFAAsF;YACtF,6DAA6D;YAC7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;gBACvC,MAAM,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;YACnI,CAAC;QACF,CAAC;QAED,4DAA4D;QAC5D,sEAAsE;QACtE,yEAAyE;QACzE,oFAAoF;QACpF,qEAAqE;QACrE,IAAI,iBAAiB,EAAE,CAAC;YACvB,wEAAwE;YACxE,8EAA8E;YAC9E,sEAAsE;YACtE,MAAM,CAAC,KAAK,GAAG,CAAC,iBAAwB,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,GAAG,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,iCAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,iCAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAyB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3M,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,QAAQ,CAAC,MAAM,yEAAyE,CAAC,CAAC;QACnL,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,kDAAkD;YAClD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;YACxB,MAAM,CAAC,UAAU,GAAG,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,iCAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,iCAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAyB,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3M,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,MAAM,4DAA4D,CAAC,CAAC;QAC3G,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QACjG,CAAC;QAED,oEAAoE;QACpE,iGAAiG;QACjG,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,mDAAmD;YACnD,gEAAgE;YAChE,qFAAqF;YACrF,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnC,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;QAC/G,CAAC;QAED,2EAA2E;QAC3E,qGAAqG;QACrG,iGAAiG;QAGjG,8EAA8E;QAC9E,2EAA2E;QAC3E,oFAAoF;QACpF,gFAAgF;QAChF,6EAA6E;QAC7E,yGAAyG;QACzG,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/F,0CAA0C;QAC1C,oDAAoD;QACpD,+FAA+F;QAE/F,OAAO,QAAQ,CAAC;IACjB,CAAC;CAYD;AAnlBD,oCAmlBC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Executor Agent
|
|
3
|
+
*
|
|
4
|
+
* Executes plans step-by-step using MCP tools for web automation,
|
|
5
|
+
* data extraction, and user interactions.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import { GoogleGenAI } from "@google/genai";
|
|
11
|
+
import { DynamicAgent } from "./dynamic-agent";
|
|
12
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
13
|
+
/**
|
|
14
|
+
* Executor Agent - Executes plans step-by-step using MCP tools
|
|
15
|
+
*
|
|
16
|
+
* Responsibilities:
|
|
17
|
+
* - Execute validated plans in strict order
|
|
18
|
+
* - Use appropriate MCP tools for each operation type
|
|
19
|
+
* - Handle missing inputs and errors gracefully
|
|
20
|
+
* - Report progress and results clearly
|
|
21
|
+
*/
|
|
22
|
+
export declare class ExecutorAgent extends DynamicAgent {
|
|
23
|
+
constructor(gemini_client: GoogleGenAI, mcp_servers?: any[], model?: string, conversation_summary?: string | null, context_summary?: string | null, recent_messages?: ChatMessage[], current_context?: any);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=executor.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/executor.agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,YAAY;gBAEvC,aAAa,EAAE,WAAW,EAC1B,WAAW,GAAE,GAAG,EAAO,EACvB,KAAK,GAAE,MAA2B,EAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,EACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,eAAe,CAAC,EAAE,WAAW,EAAE,EAC/B,eAAe,CAAC,EAAE,GAAG;CA0B5B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Executor Agent
|
|
4
|
+
*
|
|
5
|
+
* Executes plans step-by-step using MCP tools for web automation,
|
|
6
|
+
* data extraction, and user interactions.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ExecutorAgent = void 0;
|
|
13
|
+
const dynamic_agent_1 = require("./dynamic-agent");
|
|
14
|
+
const executor_instructions_1 = require("../instructions/executor.instructions");
|
|
15
|
+
const schemas_1 = require("../../lib/schemas/");
|
|
16
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
17
|
+
const logger = (0, logger_1.create_default_logger)("executor-agent");
|
|
18
|
+
/**
|
|
19
|
+
* Executor Agent - Executes plans step-by-step using MCP tools
|
|
20
|
+
*
|
|
21
|
+
* Responsibilities:
|
|
22
|
+
* - Execute validated plans in strict order
|
|
23
|
+
* - Use appropriate MCP tools for each operation type
|
|
24
|
+
* - Handle missing inputs and errors gracefully
|
|
25
|
+
* - Report progress and results clearly
|
|
26
|
+
*/
|
|
27
|
+
class ExecutorAgent extends dynamic_agent_1.DynamicAgent {
|
|
28
|
+
constructor(gemini_client, mcp_servers = [], model = "gemini-2.5-flash", conversation_summary, context_summary, recent_messages, current_context) {
|
|
29
|
+
// ExecutorAgent SEES available tools but does NOT execute them
|
|
30
|
+
// It returns TOOL_CALL_READY via structured outputs, and the service executes tools
|
|
31
|
+
super(gemini_client, mcp_servers, // Pass MCP servers so agent can see available tools
|
|
32
|
+
"ExecutorAgent", executor_instructions_1.EXECUTOR_INSTRUCTIONS, [], // No hardcoded tools - dynamically loaded from MCP servers
|
|
33
|
+
model, schemas_1.ExecutorResponseSchema, // Pass the Zod schema for structured validation
|
|
34
|
+
conversation_summary, context_summary, recent_messages, current_context);
|
|
35
|
+
logger.info("ExecutorAgent initialized with structured schema (sees tools, service executes)", {
|
|
36
|
+
model,
|
|
37
|
+
mcp_servers_count: mcp_servers.length,
|
|
38
|
+
service_will_execute: true,
|
|
39
|
+
has_schema: true
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.ExecutorAgent = ExecutorAgent;
|
|
44
|
+
//# sourceMappingURL=executor.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/executor.agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,mDAA+C;AAC/C,iFAA8E;AAC9E,gDAA4D;AAC5D,mDAA+D;AAG/D,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,gBAAgB,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAa,aAAc,SAAQ,4BAAY;IAC3C,YACI,aAA0B,EAC1B,cAAqB,EAAE,EACvB,QAAgB,kBAAkB,EAClC,oBAAoC,EACpC,eAA+B,EAC/B,eAA+B,EAC/B,eAAqB;QAErB,+DAA+D;QAC/D,oFAAoF;QACpF,KAAK,CACD,aAAa,EACb,WAAW,EAAE,oDAAoD;QACjE,eAAe,EACf,6CAAqB,EACrB,EAAE,EAAE,2DAA2D;QAC/D,KAAK,EACL,gCAA6B,EAAE,gDAAgD;QAC/E,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,CAClB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,iFAAiF,EAAE;YAC3F,KAAK;YACL,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;CAEJ;AAlCD,sCAkCC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent exports - Centralized agent management
|
|
3
|
+
*
|
|
4
|
+
* This module provides centralized access to all specialized agents
|
|
5
|
+
* in the savant-orchestration system.
|
|
6
|
+
*
|
|
7
|
+
* @author MeasureOne
|
|
8
|
+
* @version 2.0.0
|
|
9
|
+
*/
|
|
10
|
+
export { DynamicAgent } from './dynamic-agent';
|
|
11
|
+
export { OrchestratorAgent } from './orchestrator.agent';
|
|
12
|
+
export { PlannerAgent } from './planner.agent';
|
|
13
|
+
export { ExecutorAgent } from './executor.agent';
|
|
14
|
+
export { KnowledgeAgent } from './knowledge.agent';
|
|
15
|
+
export { LearningAgent } from './learning.agent';
|
|
16
|
+
export { DomainIdentifierAgent } from './domain-identifier.agent';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|