@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,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Agent exports - Centralized agent management
|
|
4
|
+
*
|
|
5
|
+
* This module provides centralized access to all specialized agents
|
|
6
|
+
* in the savant-orchestration system.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 2.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DomainIdentifierAgent = exports.LearningAgent = exports.KnowledgeAgent = exports.ExecutorAgent = exports.PlannerAgent = exports.OrchestratorAgent = exports.DynamicAgent = void 0;
|
|
13
|
+
// Re-export the base DynamicAgent for direct use
|
|
14
|
+
var dynamic_agent_1 = require("./dynamic-agent");
|
|
15
|
+
Object.defineProperty(exports, "DynamicAgent", { enumerable: true, get: function () { return dynamic_agent_1.DynamicAgent; } });
|
|
16
|
+
// Export the four role agents
|
|
17
|
+
var orchestrator_agent_1 = require("./orchestrator.agent");
|
|
18
|
+
Object.defineProperty(exports, "OrchestratorAgent", { enumerable: true, get: function () { return orchestrator_agent_1.OrchestratorAgent; } });
|
|
19
|
+
var planner_agent_1 = require("./planner.agent");
|
|
20
|
+
Object.defineProperty(exports, "PlannerAgent", { enumerable: true, get: function () { return planner_agent_1.PlannerAgent; } });
|
|
21
|
+
var executor_agent_1 = require("./executor.agent");
|
|
22
|
+
Object.defineProperty(exports, "ExecutorAgent", { enumerable: true, get: function () { return executor_agent_1.ExecutorAgent; } });
|
|
23
|
+
var knowledge_agent_1 = require("./knowledge.agent");
|
|
24
|
+
Object.defineProperty(exports, "KnowledgeAgent", { enumerable: true, get: function () { return knowledge_agent_1.KnowledgeAgent; } });
|
|
25
|
+
var learning_agent_1 = require("./learning.agent");
|
|
26
|
+
Object.defineProperty(exports, "LearningAgent", { enumerable: true, get: function () { return learning_agent_1.LearningAgent; } });
|
|
27
|
+
var domain_identifier_agent_1 = require("./domain-identifier.agent");
|
|
28
|
+
Object.defineProperty(exports, "DomainIdentifierAgent", { enumerable: true, get: function () { return domain_identifier_agent_1.DomainIdentifierAgent; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,iDAAiD;AACjD,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Knowledge Agent
|
|
3
|
+
*
|
|
4
|
+
* Provides RAG/Q&A responses using the knowledge base.
|
|
5
|
+
* Pure knowledge retrieval and synthesis with proper citations.
|
|
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
|
+
* Knowledge Agent - Provides RAG/Q&A responses using knowledge base
|
|
15
|
+
*
|
|
16
|
+
* Responsibilities:
|
|
17
|
+
* - Answer questions using knowledge base MCP tools
|
|
18
|
+
* - Provide accurate, well-cited responses
|
|
19
|
+
* - Synthesize information from multiple sources
|
|
20
|
+
* - Never execute tools beyond knowledge base operations
|
|
21
|
+
*/
|
|
22
|
+
export declare class KnowledgeAgent 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=knowledge.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/knowledge.agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAA8C,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI7F;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAExC,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;CAyB5B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Knowledge Agent
|
|
4
|
+
*
|
|
5
|
+
* Provides RAG/Q&A responses using the knowledge base.
|
|
6
|
+
* Pure knowledge retrieval and synthesis with proper citations.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.KnowledgeAgent = void 0;
|
|
13
|
+
const dynamic_agent_1 = require("./dynamic-agent");
|
|
14
|
+
const knowledge_instructions_1 = require("../instructions/knowledge.instructions");
|
|
15
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
16
|
+
const schemas_1 = require("../../lib/schemas/");
|
|
17
|
+
const logger = (0, logger_1.create_default_logger)("knowledge-agent");
|
|
18
|
+
/**
|
|
19
|
+
* Knowledge Agent - Provides RAG/Q&A responses using knowledge base
|
|
20
|
+
*
|
|
21
|
+
* Responsibilities:
|
|
22
|
+
* - Answer questions using knowledge base MCP tools
|
|
23
|
+
* - Provide accurate, well-cited responses
|
|
24
|
+
* - Synthesize information from multiple sources
|
|
25
|
+
* - Never execute tools beyond knowledge base operations
|
|
26
|
+
*/
|
|
27
|
+
class KnowledgeAgent 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
|
+
// Let DynamicAgent automatically load tools from MCP servers
|
|
30
|
+
super(gemini_client, mcp_servers, "KnowledgeAgent", knowledge_instructions_1.KNOWLEDGE_INSTRUCTIONS, [], // No hardcoded tools - use MCP tools dynamically
|
|
31
|
+
model, schemas_1.KnowledgeResponseSchema, // Pass the Zod schema for structured validation
|
|
32
|
+
conversation_summary, context_summary, recent_messages, current_context);
|
|
33
|
+
logger.info("KnowledgeAgent initialized with structured schema", {
|
|
34
|
+
model,
|
|
35
|
+
mcp_servers_count: mcp_servers.length,
|
|
36
|
+
mcp_server_names: mcp_servers.map(s => s.name || 'unnamed'),
|
|
37
|
+
has_schema: true
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.KnowledgeAgent = KnowledgeAgent;
|
|
42
|
+
//# sourceMappingURL=knowledge.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/knowledge.agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,mDAA+C;AAC/C,mFAAgF;AAChF,mDAA+D;AAC/D,gDAA6F;AAE7F,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,iBAAiB,CAAC,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAa,cAAe,SAAQ,4BAAY;IAC5C,YACI,aAA0B,EAC1B,cAAqB,EAAE,EACvB,QAAgB,kBAAkB,EAClC,oBAAoC,EACpC,eAA+B,EAC/B,eAA+B,EAC/B,eAAqB;QAErB,6DAA6D;QAC7D,KAAK,CACD,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,+CAAsB,EACtB,EAAE,EAAE,iDAAiD;QACrD,KAAK,EACL,iCAA8B,EAAE,gDAAgD;QAChF,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,CAClB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE;YAC7D,KAAK;YACL,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;YAC3D,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;CAEJ;AAjCD,wCAiCC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Learning Agent
|
|
3
|
+
*
|
|
4
|
+
* Extracts learnings from execution data using LLM.
|
|
5
|
+
* Compares new execution data with existing learnings to determine if revisions are needed.
|
|
6
|
+
* Converts raw execution data into searchable knowledge for the knowledge base.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import { GoogleGenAI } from "@google/genai";
|
|
12
|
+
import { DynamicAgent } from "./dynamic-agent";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import { EmbeddingService } from "../../services/embedding.service";
|
|
15
|
+
/**
|
|
16
|
+
* Schema for learning extraction - returns null if no new learning
|
|
17
|
+
* The learning field should be natural language text matching the knowledge base format:
|
|
18
|
+
*
|
|
19
|
+
* Website: [domain]
|
|
20
|
+
* Navigation:
|
|
21
|
+
* - How to navigate: [natural language description]
|
|
22
|
+
* - Start URL: [url]
|
|
23
|
+
* - End URL: [url]
|
|
24
|
+
* - Actions taken: [natural language description]
|
|
25
|
+
* - What works: [success patterns in natural language]
|
|
26
|
+
* - What doesn't work: [failure patterns in natural language]
|
|
27
|
+
* Authentication:
|
|
28
|
+
* [Similar natural language structure]
|
|
29
|
+
* Post-Authentication:
|
|
30
|
+
* [Similar natural language structure]
|
|
31
|
+
*/
|
|
32
|
+
declare const LearningExtractionSchema: z.ZodObject<{
|
|
33
|
+
learning: z.ZodNullable<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type LearningExtraction = z.infer<typeof LearningExtractionSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Learning Agent - Extracts learnings from execution data
|
|
38
|
+
*/
|
|
39
|
+
export declare class LearningAgent extends DynamicAgent {
|
|
40
|
+
private embedding_service;
|
|
41
|
+
constructor(gemini_client: GoogleGenAI, mcp_servers?: any[], model?: string, embedding_service?: EmbeddingService);
|
|
42
|
+
/**
|
|
43
|
+
* Extract learning from execution data and existing learning chunks
|
|
44
|
+
* Returns null if there's no difference between existing learning and current execution
|
|
45
|
+
* Returns new summarized learning if there's a difference
|
|
46
|
+
*
|
|
47
|
+
* @param execution_data - Raw execution data containing context, agent_response, tool_results, etc.
|
|
48
|
+
* @param existing_learning_text - Combined text from all chunks of existing learning embeddings (if any)
|
|
49
|
+
*/
|
|
50
|
+
extract_learning(execution_data: any, existing_learning_text: string | null): Promise<string | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Sanitize PII from learning text
|
|
53
|
+
* Removes email addresses, phone numbers, and other sensitive patterns
|
|
54
|
+
* Handles both JSON structures and plain text
|
|
55
|
+
*/
|
|
56
|
+
private sanitize_pii;
|
|
57
|
+
/**
|
|
58
|
+
* Recursively sanitize JSON object to remove PII
|
|
59
|
+
*/
|
|
60
|
+
private sanitize_json_object;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=learning.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/learning.agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKpE;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,wBAAwB;;iBAW5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC3C,OAAO,CAAC,iBAAiB,CAAmB;gBAGxC,aAAa,EAAE,WAAW,EAC1B,WAAW,GAAE,GAAG,EAAO,EACvB,KAAK,GAAE,MAA2B,EAClC,iBAAiB,CAAC,EAAE,gBAAgB;IA6BxC;;;;;;;OAOG;IACG,gBAAgB,CAClB,cAAc,EAAE,GAAG,EACnB,sBAAsB,EAAE,MAAM,GAAG,IAAI,GACtC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuHzB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkEpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAwC3B"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Learning Agent
|
|
4
|
+
*
|
|
5
|
+
* Extracts learnings from execution data using LLM.
|
|
6
|
+
* Compares new execution data with existing learnings to determine if revisions are needed.
|
|
7
|
+
* Converts raw execution data into searchable knowledge for the knowledge base.
|
|
8
|
+
*
|
|
9
|
+
* @author MeasureOne
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.LearningAgent = void 0;
|
|
14
|
+
const dynamic_agent_1 = require("./dynamic-agent");
|
|
15
|
+
const learning_instructions_1 = require("../instructions/learning.instructions");
|
|
16
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
const embedding_service_1 = require("../../services/embedding.service");
|
|
19
|
+
const logger = (0, logger_1.create_default_logger)("learning-agent");
|
|
20
|
+
/**
|
|
21
|
+
* Schema for learning extraction - returns null if no new learning
|
|
22
|
+
* The learning field should be natural language text matching the knowledge base format:
|
|
23
|
+
*
|
|
24
|
+
* Website: [domain]
|
|
25
|
+
* Navigation:
|
|
26
|
+
* - How to navigate: [natural language description]
|
|
27
|
+
* - Start URL: [url]
|
|
28
|
+
* - End URL: [url]
|
|
29
|
+
* - Actions taken: [natural language description]
|
|
30
|
+
* - What works: [success patterns in natural language]
|
|
31
|
+
* - What doesn't work: [failure patterns in natural language]
|
|
32
|
+
* Authentication:
|
|
33
|
+
* [Similar natural language structure]
|
|
34
|
+
* Post-Authentication:
|
|
35
|
+
* [Similar natural language structure]
|
|
36
|
+
*/
|
|
37
|
+
const LearningExtractionSchema = zod_1.z.object({
|
|
38
|
+
learning: zod_1.z.string().nullable().describe("New learning in natural language format combining existing learning and current execution context. " +
|
|
39
|
+
"Must follow the natural language format specified in the navigation knowledge base. " +
|
|
40
|
+
"Write as if explaining to someone how to use the website. " +
|
|
41
|
+
"Include website/domain, navigation patterns, authentication methods, selectors, and what works/doesn't work. " +
|
|
42
|
+
"Use natural language that matches how users would ask questions. " +
|
|
43
|
+
"CRITICAL: MUST NOT include any sensitive information: no usernames, passwords, credentials, PII (names, emails, phone numbers, SSN, account numbers, addresses, DOB), or actual user input values. " +
|
|
44
|
+
"Only include patterns, selectors, URLs (sanitized), and structural information. " +
|
|
45
|
+
"Return null if there is no difference between existing learning and current execution."),
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Learning Agent - Extracts learnings from execution data
|
|
49
|
+
*/
|
|
50
|
+
class LearningAgent extends dynamic_agent_1.DynamicAgent {
|
|
51
|
+
constructor(gemini_client, mcp_servers = [], model = "gemini-2.5-flash", embedding_service) {
|
|
52
|
+
// Convert MCP Client[] to any[] for DynamicAgent
|
|
53
|
+
const mcp_servers_array = Array.isArray(mcp_servers) ? mcp_servers : [];
|
|
54
|
+
super(gemini_client, mcp_servers_array, "LearningAgent", learning_instructions_1.LEARNING_INSTRUCTIONS, [], // No hardcoded tools - use MCP tools dynamically
|
|
55
|
+
model, LearningExtractionSchema, // Pass the Zod schema for structured validation
|
|
56
|
+
undefined, // No conversation summary for learning agent
|
|
57
|
+
undefined, // No context summary for learning agent
|
|
58
|
+
undefined, // No recent messages for learning agent
|
|
59
|
+
undefined // No current context for learning agent
|
|
60
|
+
);
|
|
61
|
+
this.embedding_service = embedding_service || new embedding_service_1.EmbeddingService();
|
|
62
|
+
logger.info("LearningAgent initialized", {
|
|
63
|
+
model,
|
|
64
|
+
has_schema: true,
|
|
65
|
+
has_embedding_service: true,
|
|
66
|
+
mcp_servers_count: mcp_servers_array.length
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract learning from execution data and existing learning chunks
|
|
71
|
+
* Returns null if there's no difference between existing learning and current execution
|
|
72
|
+
* Returns new summarized learning if there's a difference
|
|
73
|
+
*
|
|
74
|
+
* @param execution_data - Raw execution data containing context, agent_response, tool_results, etc.
|
|
75
|
+
* @param existing_learning_text - Combined text from all chunks of existing learning embeddings (if any)
|
|
76
|
+
*/
|
|
77
|
+
async extract_learning(execution_data, existing_learning_text) {
|
|
78
|
+
try {
|
|
79
|
+
logger.info("Extracting learning from execution data", {
|
|
80
|
+
has_existing_learning: !!existing_learning_text,
|
|
81
|
+
existing_learning_length: existing_learning_text?.length || 0,
|
|
82
|
+
mcp_servers_count: this.mcp_servers.length
|
|
83
|
+
});
|
|
84
|
+
// Build the user message with execution data
|
|
85
|
+
const user_content = {
|
|
86
|
+
execution_data: execution_data,
|
|
87
|
+
existing_learning: existing_learning_text || null,
|
|
88
|
+
task: "Compare existing learning with current execution. If there's a meaningful difference, return a new summarized learning that combines both. If no meaningful difference, return null."
|
|
89
|
+
};
|
|
90
|
+
const user_message = {
|
|
91
|
+
role: 'user',
|
|
92
|
+
content: JSON.stringify(user_content, null, 2)
|
|
93
|
+
};
|
|
94
|
+
// Use execute_with_retries for consistency with other agents
|
|
95
|
+
const response = await this.execute_with_retries([user_message], {
|
|
96
|
+
streaming: false // Learning extraction doesn't need streaming
|
|
97
|
+
});
|
|
98
|
+
// Parse the response
|
|
99
|
+
// When MCP tools are used, responseSchema is disabled, so response.text might be null
|
|
100
|
+
// Try to extract text from response.text first, then from candidates if needed
|
|
101
|
+
let content = null;
|
|
102
|
+
if (response.text) {
|
|
103
|
+
content = response.text;
|
|
104
|
+
}
|
|
105
|
+
else if (response.candidates && response.candidates.length > 0) {
|
|
106
|
+
// Extract text from candidates if response.text is null
|
|
107
|
+
const candidate = response.candidates[0];
|
|
108
|
+
if (candidate.content && candidate.content.parts) {
|
|
109
|
+
const text_parts = candidate.content.parts
|
|
110
|
+
.filter((part) => part.text)
|
|
111
|
+
.map((part) => part.text);
|
|
112
|
+
if (text_parts.length > 0) {
|
|
113
|
+
content = text_parts.join('\n');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!content || content.trim().length === 0) {
|
|
118
|
+
logger.warn("LearningAgent returned no text content, checking if function calls were made", {
|
|
119
|
+
has_function_calls: !!(response.automaticFunctionCallingHistory && response.automaticFunctionCallingHistory.length > 0)
|
|
120
|
+
});
|
|
121
|
+
// If only function calls were made and no text was returned, return null (no learning to extract)
|
|
122
|
+
if (response.automaticFunctionCallingHistory && response.automaticFunctionCallingHistory.length > 0) {
|
|
123
|
+
logger.info("LearningAgent made function calls but returned no text - returning null");
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
throw new Error("LearningAgent returned no content");
|
|
127
|
+
}
|
|
128
|
+
let parsed_content;
|
|
129
|
+
if (typeof content === 'string') {
|
|
130
|
+
// Try to parse JSON from response
|
|
131
|
+
try {
|
|
132
|
+
// First try direct JSON parse
|
|
133
|
+
parsed_content = JSON.parse(content);
|
|
134
|
+
}
|
|
135
|
+
catch (parse_error) {
|
|
136
|
+
// If that fails, try to extract JSON from markdown code blocks
|
|
137
|
+
const json_match = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
138
|
+
if (json_match) {
|
|
139
|
+
parsed_content = JSON.parse(json_match[1].trim());
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Try to find JSON object in the text
|
|
143
|
+
const json_object_match = content.match(/\{[\s\S]*"learning"[\s\S]*\}/);
|
|
144
|
+
if (json_object_match) {
|
|
145
|
+
parsed_content = JSON.parse(json_object_match[0]);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// If no JSON found, the response might be natural language learning text
|
|
149
|
+
// Return it directly as the learning (since we're using natural language format)
|
|
150
|
+
logger.info("LearningAgent returned natural language text (no JSON), using as learning directly");
|
|
151
|
+
return this.sanitize_pii(content.trim());
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else if (typeof content === 'object' && content !== null) {
|
|
157
|
+
parsed_content = content;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
throw new Error(`LearningAgent returned unexpected content type: ${typeof content}`);
|
|
161
|
+
}
|
|
162
|
+
// Validate against schema - handle case where parsed_content might be null
|
|
163
|
+
if (!parsed_content || (typeof parsed_content === 'object' && Object.keys(parsed_content).length === 0)) {
|
|
164
|
+
logger.warn("LearningAgent returned empty or null parsed content");
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const extraction = LearningExtractionSchema.parse(parsed_content);
|
|
168
|
+
// Post-process to sanitize any PII that might have slipped through
|
|
169
|
+
let sanitized_learning = extraction.learning;
|
|
170
|
+
if (sanitized_learning) {
|
|
171
|
+
sanitized_learning = this.sanitize_pii(sanitized_learning);
|
|
172
|
+
}
|
|
173
|
+
logger.info("Learning extraction completed", {
|
|
174
|
+
has_learning: sanitized_learning !== null,
|
|
175
|
+
learning_length: sanitized_learning?.length || 0
|
|
176
|
+
});
|
|
177
|
+
return sanitized_learning;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
logger.error("Failed to extract learning", {
|
|
181
|
+
error: error instanceof Error ? error.message : String(error)
|
|
182
|
+
});
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Sanitize PII from learning text
|
|
188
|
+
* Removes email addresses, phone numbers, and other sensitive patterns
|
|
189
|
+
* Handles both JSON structures and plain text
|
|
190
|
+
*/
|
|
191
|
+
sanitize_pii(learning_text) {
|
|
192
|
+
let sanitized = learning_text;
|
|
193
|
+
// First, try to parse as JSON and sanitize the structure
|
|
194
|
+
try {
|
|
195
|
+
const parsed = JSON.parse(sanitized);
|
|
196
|
+
const sanitized_obj = this.sanitize_json_object(parsed);
|
|
197
|
+
sanitized = JSON.stringify(sanitized_obj);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Not JSON, sanitize as plain text
|
|
201
|
+
}
|
|
202
|
+
// Remove email addresses (pattern: text@domain.com) - catch any that slipped through
|
|
203
|
+
sanitized = sanitized.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, '[email_removed]');
|
|
204
|
+
// Remove phone numbers (various formats)
|
|
205
|
+
sanitized = sanitized.replace(/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g, '[phone_removed]');
|
|
206
|
+
sanitized = sanitized.replace(/\b\(\d{3}\)\s?\d{3}[-.]?\d{4}\b/g, '[phone_removed]');
|
|
207
|
+
// Remove SSN patterns (XXX-XX-XXXX)
|
|
208
|
+
sanitized = sanitized.replace(/\b\d{3}-\d{2}-\d{4}\b/g, '[ssn_removed]');
|
|
209
|
+
// Remove patterns like "EmailAddress": "value" or "email": "value" in text
|
|
210
|
+
sanitized = sanitized.replace(/["']?(?:EmailAddress|email|Email|emailAddress|email_address)["']?\s*[:=]\s*["']?[^"',}\]]+["']?/gi, (match) => {
|
|
211
|
+
const key_match = match.match(/["']?([^"':=]+)["']?\s*[:=]/i);
|
|
212
|
+
if (key_match) {
|
|
213
|
+
return `"${key_match[1]}": "[removed]"`;
|
|
214
|
+
}
|
|
215
|
+
return match.replace(/[:=]\s*["']?[^"',}\]]+["']?/i, ': "[removed]"');
|
|
216
|
+
});
|
|
217
|
+
// Remove patterns like "Password": "value" or "password": "value"
|
|
218
|
+
sanitized = sanitized.replace(/["']?(?:Password|password|PasswordValue|password_value)["']?\s*[:=]\s*["']?[^"',}\]]+["']?/gi, (match) => {
|
|
219
|
+
const key_match = match.match(/["']?([^"':=]+)["']?\s*[:=]/i);
|
|
220
|
+
if (key_match) {
|
|
221
|
+
return `"${key_match[1]}": "[removed]"`;
|
|
222
|
+
}
|
|
223
|
+
return match.replace(/[:=]\s*["']?[^"',}\]]+["']?/i, ': "[removed]"');
|
|
224
|
+
});
|
|
225
|
+
// Remove patterns like "Username": "value" or "username": "value"
|
|
226
|
+
sanitized = sanitized.replace(/["']?(?:Username|username|UserName|user_name)["']?\s*[:=]\s*["']?[^"',}\]]+["']?/gi, (match) => {
|
|
227
|
+
const key_match = match.match(/["']?([^"':=]+)["']?\s*[:=]/i);
|
|
228
|
+
if (key_match) {
|
|
229
|
+
return `"${key_match[1]}": "[removed]"`;
|
|
230
|
+
}
|
|
231
|
+
return match.replace(/[:=]\s*["']?[^"',}\]]+["']?/i, ': "[removed]"');
|
|
232
|
+
});
|
|
233
|
+
// Remove account numbers (long numeric strings)
|
|
234
|
+
sanitized = sanitized.replace(/\b\d{10,}\b/g, '[account_number_removed]');
|
|
235
|
+
// Log if any sanitization occurred
|
|
236
|
+
if (sanitized !== learning_text) {
|
|
237
|
+
logger.warn("PII sanitization applied to learning", {
|
|
238
|
+
original_length: learning_text.length,
|
|
239
|
+
sanitized_length: sanitized.length
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return sanitized;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Recursively sanitize JSON object to remove PII
|
|
246
|
+
*/
|
|
247
|
+
sanitize_json_object(obj) {
|
|
248
|
+
if (obj === null || obj === undefined) {
|
|
249
|
+
return obj;
|
|
250
|
+
}
|
|
251
|
+
if (Array.isArray(obj)) {
|
|
252
|
+
return obj.map(item => this.sanitize_json_object(item));
|
|
253
|
+
}
|
|
254
|
+
if (typeof obj === 'object') {
|
|
255
|
+
const sanitized = {};
|
|
256
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
257
|
+
const lower_key = key.toLowerCase();
|
|
258
|
+
// Check if key indicates sensitive data
|
|
259
|
+
if (lower_key.includes('email') ||
|
|
260
|
+
lower_key.includes('password') ||
|
|
261
|
+
lower_key.includes('username') ||
|
|
262
|
+
lower_key.includes('phone') ||
|
|
263
|
+
lower_key.includes('ssn') ||
|
|
264
|
+
lower_key.includes('account') ||
|
|
265
|
+
lower_key.includes('pii')) {
|
|
266
|
+
// Remove the value
|
|
267
|
+
sanitized[key] = '[removed]';
|
|
268
|
+
}
|
|
269
|
+
else if (typeof value === 'string') {
|
|
270
|
+
// Check if value looks like an email
|
|
271
|
+
if (/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/.test(value)) {
|
|
272
|
+
sanitized[key] = '[email_removed]';
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
sanitized[key] = this.sanitize_json_object(value);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
sanitized[key] = this.sanitize_json_object(value);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return sanitized;
|
|
283
|
+
}
|
|
284
|
+
return obj;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.LearningAgent = LearningAgent;
|
|
288
|
+
//# sourceMappingURL=learning.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/learning.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Orchestrator Agent
|
|
3
|
+
*
|
|
4
|
+
* The main entry point agent that classifies incoming requests and routes them
|
|
5
|
+
* to appropriate specialized agents. Handles greetings, clarifications, and
|
|
6
|
+
* initial request routing.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import { GoogleGenAI } from "@google/genai";
|
|
12
|
+
import { DynamicAgent } from "./dynamic-agent";
|
|
13
|
+
import { ChatMessage } from "../../lib/schemas";
|
|
14
|
+
/**
|
|
15
|
+
* Orchestrator Agent - Main entry point for all user requests
|
|
16
|
+
*
|
|
17
|
+
* Classifies incoming requests and routes them to appropriate specialized agents:
|
|
18
|
+
* - greeting_or_smalltalk: Simple greetings, casual conversation
|
|
19
|
+
* - clarification_needed: When more information is needed from the user
|
|
20
|
+
* - task_request: Complex tasks requiring planning and execution
|
|
21
|
+
* - knowledge_question: Questions that can be answered from the knowledge base
|
|
22
|
+
*/
|
|
23
|
+
export declare class OrchestratorAgent extends DynamicAgent {
|
|
24
|
+
constructor(gemini_client: GoogleGenAI, mcp_servers?: any[], model?: string, conversation_summary?: string | null, context_summary?: string | null, recent_messages?: ChatMessage[], current_context?: any);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=orchestrator.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/orchestrator.agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAuC,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrF;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;gBAE3C,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;CAwB5B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Orchestrator Agent
|
|
4
|
+
*
|
|
5
|
+
* The main entry point agent that classifies incoming requests and routes them
|
|
6
|
+
* to appropriate specialized agents. Handles greetings, clarifications, and
|
|
7
|
+
* initial request routing.
|
|
8
|
+
*
|
|
9
|
+
* @author MeasureOne
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.OrchestratorAgent = void 0;
|
|
14
|
+
const dynamic_agent_1 = require("./dynamic-agent");
|
|
15
|
+
const orchestrator_instructions_1 = require("../instructions/orchestrator.instructions");
|
|
16
|
+
const logger_1 = require("../../lib/utils/logger");
|
|
17
|
+
const schemas_1 = require("../../lib/schemas");
|
|
18
|
+
const logger = (0, logger_1.create_default_logger)("orchestrator-agent");
|
|
19
|
+
/**
|
|
20
|
+
* Orchestrator Agent - Main entry point for all user requests
|
|
21
|
+
*
|
|
22
|
+
* Classifies incoming requests and routes them to appropriate specialized agents:
|
|
23
|
+
* - greeting_or_smalltalk: Simple greetings, casual conversation
|
|
24
|
+
* - clarification_needed: When more information is needed from the user
|
|
25
|
+
* - task_request: Complex tasks requiring planning and execution
|
|
26
|
+
* - knowledge_question: Questions that can be answered from the knowledge base
|
|
27
|
+
*/
|
|
28
|
+
class OrchestratorAgent extends dynamic_agent_1.DynamicAgent {
|
|
29
|
+
constructor(gemini_client, mcp_servers = [], model = "gemini-2.5-flash", conversation_summary, context_summary, recent_messages, current_context) {
|
|
30
|
+
super(gemini_client, mcp_servers, "OrchestratorAgent", orchestrator_instructions_1.ORCHESTRATOR_INSTRUCTIONS, [], // No tools - pure routing agent
|
|
31
|
+
model, schemas_1.OrchestratorResponseSchema, // Pass the Zod schema for structured validation
|
|
32
|
+
conversation_summary, context_summary, recent_messages, current_context);
|
|
33
|
+
logger.info("OrchestratorAgent initialized with structured schema", {
|
|
34
|
+
model,
|
|
35
|
+
mcp_servers_count: mcp_servers.length,
|
|
36
|
+
tools_count: 0,
|
|
37
|
+
has_schema: true
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.OrchestratorAgent = OrchestratorAgent;
|
|
42
|
+
//# sourceMappingURL=orchestrator.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/orchestrator.agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAGH,mDAA+C;AAC/C,yFAAsF;AACtF,mDAA+D;AAE/D,+CAAqF;AAErF,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,oBAAoB,CAAC,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAa,iBAAkB,SAAQ,4BAAY;IAC/C,YACI,aAA0B,EAC1B,cAAqB,EAAE,EACvB,QAAgB,kBAAkB,EAClC,oBAAoC,EACpC,eAA+B,EAC/B,eAA+B,EAC/B,eAAqB;QAErB,KAAK,CACD,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,qDAAyB,EACzB,EAAE,EAAE,gCAAgC;QACpC,KAAK,EACL,oCAAiC,EAAE,gDAAgD;QACnF,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,CAClB,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE;YAChE,KAAK;YACL,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;CAEJ;AAhCD,8CAgCC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Planner Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates detailed execution plans for complex tasks using knowledge base
|
|
5
|
+
* to understand domains and create structured, executable plans.
|
|
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
|
+
* Planner Agent - Creates detailed execution plans for complex tasks
|
|
15
|
+
*
|
|
16
|
+
* Responsibilities:
|
|
17
|
+
* 1. Resolve domain via Knowledge MCP (domain cards)
|
|
18
|
+
* 2. Produce multi-step plans with dependencies
|
|
19
|
+
* 3. Never invent site-specific selectors/URLs - use discovery steps
|
|
20
|
+
* 4. Include citations from knowledge base
|
|
21
|
+
*/
|
|
22
|
+
export declare class PlannerAgent 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=planner.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/planner.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,YAAa,SAAQ,YAAY;gBAEtC,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;CAoB5B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Planner Agent
|
|
4
|
+
*
|
|
5
|
+
* Creates detailed execution plans for complex tasks using knowledge base
|
|
6
|
+
* to understand domains and create structured, executable plans.
|
|
7
|
+
*
|
|
8
|
+
* @author MeasureOne
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PlannerAgent = void 0;
|
|
13
|
+
const dynamic_agent_1 = require("./dynamic-agent");
|
|
14
|
+
const planner_instructions_1 = require("../instructions/planner.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)("planner-agent");
|
|
18
|
+
/**
|
|
19
|
+
* Planner Agent - Creates detailed execution plans for complex tasks
|
|
20
|
+
*
|
|
21
|
+
* Responsibilities:
|
|
22
|
+
* 1. Resolve domain via Knowledge MCP (domain cards)
|
|
23
|
+
* 2. Produce multi-step plans with dependencies
|
|
24
|
+
* 3. Never invent site-specific selectors/URLs - use discovery steps
|
|
25
|
+
* 4. Include citations from knowledge base
|
|
26
|
+
*/
|
|
27
|
+
class PlannerAgent 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
|
+
// Let DynamicAgent automatically load tools from MCP servers
|
|
30
|
+
super(gemini_client, mcp_servers, "PlannerAgent", planner_instructions_1.PLANNER_INSTRUCTIONS, [], // No hardcoded tools - use MCP tools dynamically
|
|
31
|
+
model, schemas_1.PlannerResponseSchema, // Pass the Zod schema for structured validation
|
|
32
|
+
conversation_summary, context_summary, recent_messages, current_context);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.PlannerAgent = PlannerAgent;
|
|
36
|
+
//# sourceMappingURL=planner.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.agent.js","sourceRoot":"","sources":["../../../src/ai/agents/planner.agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,mDAA+C;AAC/C,+EAA4E;AAC5E,+CAA0D;AAC1D,mDAA+D;AAG/D,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,eAAe,CAAC,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAa,YAAa,SAAQ,4BAAY;IAC1C,YACI,aAA0B,EAC1B,cAAqB,EAAE,EACvB,QAAgB,kBAAkB,EAClC,oBAAoC,EACpC,eAA+B,EAC/B,eAA+B,EAC/B,eAAqB;QAErB,6DAA6D;QAC7D,KAAK,CACD,aAAa,EACb,WAAW,EACX,cAAc,EACd,2CAAoB,EACpB,EAAE,EAAE,iDAAiD;QACrD,KAAK,EACL,+BAA4B,EAAE,gDAAgD;QAC9E,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,CAClB,CAAC;IAGN,CAAC;CAEJ;AA5BD,oCA4BC"}
|