crewly 1.0.6 → 1.0.8
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/LICENSE +1 -1
- package/README.md +146 -40
- package/config/roles/architect/prompt.md +11 -0
- package/config/roles/backend-developer/prompt.md +11 -0
- package/config/roles/designer/prompt.md +11 -0
- package/config/roles/developer/prompt.md +18 -4
- package/config/roles/frontend-developer/prompt.md +11 -0
- package/config/roles/fullstack-dev/prompt.md +11 -0
- package/config/roles/generalist/prompt.md +11 -0
- package/config/roles/orchestrator/prompt.md +53 -10
- package/config/roles/product-manager/prompt.md +18 -4
- package/config/roles/qa/prompt.md +11 -0
- package/config/roles/qa-engineer/prompt.md +11 -0
- package/config/roles/sales/prompt.md +11 -0
- package/config/roles/support/prompt.md +11 -0
- package/config/roles/tpm/prompt.md +11 -0
- package/config/skills/orchestrator/complete-task/execute.sh +1 -0
- package/config/templates/agent-claude-md.md +16 -0
- package/config/templates/research-team.json +22 -0
- package/config/templates/startup-team.json +22 -0
- package/config/templates/web-dev-team.json +22 -0
- package/dist/backend/backend/src/constants.d.ts +61 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +65 -7
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +7 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +7 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +174 -4
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +34 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.js +2 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +8 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +75 -17
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +222 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +621 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/index.d.ts +3 -0
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +5 -0
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/mcp-client.d.ts +233 -0
- package/dist/backend/backend/src/services/mcp-client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/mcp-client.js +297 -0
- package/dist/backend/backend/src/services/mcp-client.js.map +1 -0
- package/dist/backend/backend/src/services/mcp-server.d.ts +167 -0
- package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -0
- package/dist/backend/backend/src/services/mcp-server.js +586 -0
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +2 -0
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.js +6 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +10 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +94 -38
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/quality/index.d.ts +1 -0
- package/dist/backend/backend/src/services/quality/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/quality/index.js +1 -0
- package/dist/backend/backend/src/services/quality/index.js.map +1 -1
- package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts +84 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.js +163 -0
- package/dist/backend/backend/src/services/quality/task-output-validator.service.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +234 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-adapter.js +180 -0
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-credentials.service.d.ts +33 -0
- package/dist/backend/backend/src/services/slack/slack-credentials.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-credentials.service.js +103 -0
- package/dist/backend/backend/src/services/slack/slack-credentials.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +9 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +31 -2
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +2 -2
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +2 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +1 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js +2 -0
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.d.ts +9 -6
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js +10 -3
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-output.types.d.ts +78 -0
- package/dist/backend/backend/src/types/task-output.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/task-output.types.js +27 -0
- package/dist/backend/backend/src/types/task-output.types.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +13 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +12 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +751 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -0
- package/dist/cli/backend/src/constants.js +550 -0
- package/dist/cli/backend/src/constants.js.map +1 -0
- package/dist/cli/backend/src/models/Project.d.ts +18 -0
- package/dist/cli/backend/src/models/Project.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Project.js +70 -0
- package/dist/cli/backend/src/models/Project.js.map +1 -0
- package/dist/cli/backend/src/models/ScheduledMessage.d.ts +27 -0
- package/dist/cli/backend/src/models/ScheduledMessage.d.ts.map +1 -0
- package/dist/cli/backend/src/models/ScheduledMessage.js +50 -0
- package/dist/cli/backend/src/models/ScheduledMessage.js.map +1 -0
- package/dist/cli/backend/src/models/Team.d.ts +20 -0
- package/dist/cli/backend/src/models/Team.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Team.js +120 -0
- package/dist/cli/backend/src/models/Team.js.map +1 -0
- package/dist/cli/backend/src/models/Ticket.d.ts +24 -0
- package/dist/cli/backend/src/models/Ticket.d.ts.map +1 -0
- package/dist/cli/backend/src/models/Ticket.js +102 -0
- package/dist/cli/backend/src/models/Ticket.js.map +1 -0
- package/dist/cli/backend/src/models/index.d.ts +5 -0
- package/dist/cli/backend/src/models/index.d.ts.map +1 -0
- package/dist/cli/backend/src/models/index.js +5 -0
- package/dist/cli/backend/src/models/index.js.map +1 -0
- package/dist/cli/backend/src/services/core/config.service.d.ts +91 -0
- package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/config.service.js +246 -0
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts +70 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/logger.service.js +350 -0
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts +269 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.js +1406 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +92 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.js +120 -0
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +125 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +247 -0
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts +153 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js +409 -0
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js.map +1 -0
- package/dist/cli/backend/src/services/mcp-server.d.ts +167 -0
- package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -0
- package/dist/cli/backend/src/services/mcp-server.js +586 -0
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +259 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.js +539 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +306 -0
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/memory.service.js +517 -0
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +252 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.js +600 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -0
- package/dist/cli/backend/src/types/auto-assign.types.d.ts +271 -0
- package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/auto-assign.types.js +136 -0
- package/dist/cli/backend/src/types/auto-assign.types.js.map +1 -0
- package/dist/cli/backend/src/types/budget.types.d.ts +217 -0
- package/dist/cli/backend/src/types/budget.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/budget.types.js +82 -0
- package/dist/cli/backend/src/types/budget.types.js.map +1 -0
- package/dist/cli/backend/src/types/chat.types.d.ts +550 -0
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/chat.types.js +743 -0
- package/dist/cli/backend/src/types/chat.types.js.map +1 -0
- package/dist/cli/backend/src/types/continuation.types.d.ts +237 -0
- package/dist/cli/backend/src/types/continuation.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/continuation.types.js +10 -0
- package/dist/cli/backend/src/types/continuation.types.js.map +1 -0
- package/dist/cli/backend/src/types/index.d.ts +164 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -0
- package/dist/cli/backend/src/types/index.js +25 -0
- package/dist/cli/backend/src/types/index.js.map +1 -0
- package/dist/cli/backend/src/types/knowledge.types.d.ts +195 -0
- package/dist/cli/backend/src/types/knowledge.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/knowledge.types.js +38 -0
- package/dist/cli/backend/src/types/knowledge.types.js.map +1 -0
- package/dist/cli/backend/src/types/memory.types.d.ts +587 -0
- package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/memory.types.js +47 -0
- package/dist/cli/backend/src/types/memory.types.js.map +1 -0
- package/dist/cli/backend/src/types/quality-gate.types.d.ts +171 -0
- package/dist/cli/backend/src/types/quality-gate.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/quality-gate.types.js +42 -0
- package/dist/cli/backend/src/types/quality-gate.types.js.map +1 -0
- package/dist/cli/backend/src/types/role.types.d.ts +260 -0
- package/dist/cli/backend/src/types/role.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/role.types.js +238 -0
- package/dist/cli/backend/src/types/role.types.js.map +1 -0
- package/dist/cli/backend/src/types/scheduler.types.d.ts +254 -0
- package/dist/cli/backend/src/types/scheduler.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/scheduler.types.js +32 -0
- package/dist/cli/backend/src/types/scheduler.types.js.map +1 -0
- package/dist/cli/backend/src/types/settings.types.d.ts +178 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/settings.types.js +206 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -0
- package/dist/cli/backend/src/types/skill.types.d.ts +515 -0
- package/dist/cli/backend/src/types/skill.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/skill.types.js +481 -0
- package/dist/cli/backend/src/types/skill.types.js.map +1 -0
- package/dist/cli/backend/src/types/sop.types.d.ts +224 -0
- package/dist/cli/backend/src/types/sop.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/sop.types.js +85 -0
- package/dist/cli/backend/src/types/sop.types.js.map +1 -0
- package/dist/cli/backend/src/types/task-output.types.d.ts +78 -0
- package/dist/cli/backend/src/types/task-output.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/task-output.types.js +27 -0
- package/dist/cli/backend/src/types/task-output.types.js.map +1 -0
- package/dist/cli/backend/src/utils/file-io.utils.d.ts +102 -0
- package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/file-io.utils.js +214 -0
- package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.d.ts +54 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.js +97 -0
- package/dist/cli/backend/src/utils/terminal-output.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/mcp-server.d.ts +38 -0
- package/dist/cli/cli/src/commands/mcp-server.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/mcp-server.js +49 -0
- package/dist/cli/cli/src/commands/mcp-server.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +61 -7
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +192 -19
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts +27 -0
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/publish.js +69 -0
- package/dist/cli/cli/src/commands/publish.js.map +1 -0
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +12 -2
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/index.js +14 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/archive-creator.d.ts +82 -0
- package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/archive-creator.js +105 -0
- package/dist/cli/cli/src/utils/archive-creator.js.map +1 -0
- package/dist/cli/cli/src/utils/package-validator.d.ts +62 -0
- package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/package-validator.js +122 -0
- package/dist/cli/cli/src/utils/package-validator.js.map +1 -0
- package/dist/cli/cli/src/utils/process-cleanup.d.ts +15 -0
- package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/process-cleanup.js +76 -0
- package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -0
- package/dist/cli/cli/src/utils/templates.d.ts +71 -0
- package/dist/cli/cli/src/utils/templates.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/templates.js +91 -0
- package/dist/cli/cli/src/utils/templates.js.map +1 -0
- package/frontend/dist/assets/{index-523c7fce.js → index-68d1eb5a.js} +71 -71
- package/frontend/dist/assets/{index-4c050f52.css → index-c5043a83.css} +1 -1
- package/frontend/dist/assets/nunito-cyrillic-400-normal-e44e669f.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-400-normal-ff8e8bdd.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-500-normal-2159679b.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-500-normal-61a3b80e.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-600-normal-ac046097.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-600-normal-e61eb97b.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-700-normal-8fcefcc9.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-700-normal-b9684104.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-800-normal-40253beb.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-800-normal-d80292de.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-20d73ae7.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-400-normal-d48c37c9.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-16197abd.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-500-normal-9dcfe9b5.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-d53e9851.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-600-normal-e3d0201f.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-5936f6ac.woff2 +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-700-normal-c8c02775.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-217b8f51.woff +0 -0
- package/frontend/dist/assets/nunito-cyrillic-ext-800-normal-796cf7bd.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-400-normal-a5906e15.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-400-normal-b51e7635.woff +0 -0
- package/frontend/dist/assets/nunito-latin-500-normal-23ae3083.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-500-normal-be14dbc6.woff +0 -0
- package/frontend/dist/assets/nunito-latin-600-normal-06a9c8b3.woff +0 -0
- package/frontend/dist/assets/nunito-latin-600-normal-45f437de.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-700-normal-ce9107dc.woff +0 -0
- package/frontend/dist/assets/nunito-latin-700-normal-fa89300b.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-800-normal-0ca02785.woff +0 -0
- package/frontend/dist/assets/nunito-latin-800-normal-2363d3ed.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-400-normal-67250a41.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-400-normal-d7e2415e.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-500-normal-06f35d1c.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-500-normal-343e7adc.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-600-normal-5a8efd17.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-600-normal-a7ba5f4f.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-700-normal-0a4e4a02.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-700-normal-0c607961.woff +0 -0
- package/frontend/dist/assets/nunito-latin-ext-800-normal-39f54b55.woff2 +0 -0
- package/frontend/dist/assets/nunito-latin-ext-800-normal-466d0211.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-400-normal-2a755616.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-400-normal-9c01ea9f.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-500-normal-452e5e08.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-500-normal-dc98d965.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-600-normal-2ffbb85f.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-600-normal-cf95b95d.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-700-normal-0e29c28c.woff2 +0 -0
- package/frontend/dist/assets/nunito-vietnamese-700-normal-7793b75e.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-800-normal-5baf507e.woff +0 -0
- package/frontend/dist/assets/nunito-vietnamese-800-normal-fac6740e.woff2 +0 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +15 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../backend/src/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../backend/src/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export { CodexRuntimeService } from './agent/codex-runtime.service.js';
|
|
|
9
9
|
export { AgentRegistrationService } from './agent/agent-registration.service.js';
|
|
10
10
|
export { GitIntegrationService } from './agent/git-integration.service.js';
|
|
11
11
|
export { FileWatcherService } from './agent/file-watcher.service.js';
|
|
12
|
+
export { ContextWindowMonitorService } from './agent/context-window-monitor.service.js';
|
|
12
13
|
// Project Services
|
|
13
14
|
export { ActiveProjectsService } from './project/active-projects.service.js';
|
|
14
15
|
export { TaskService } from './project/task.service.js';
|
|
@@ -47,4 +48,8 @@ export { RoleService, getRoleService, resetRoleService, RoleNotFoundError, RoleV
|
|
|
47
48
|
export { SlackService, getSlackService, resetSlackService, SlackOrchestratorBridge, getSlackOrchestratorBridge, resetSlackOrchestratorBridge, initializeSlackIfConfigured, isSlackConfigured, getSlackConfigFromEnv, shutdownSlack, } from './slack/index.js';
|
|
48
49
|
// Orchestrator Services
|
|
49
50
|
export { StatePersistenceService, getStatePersistenceService, resetStatePersistenceService, SafeRestartService, getSafeRestartService, resetSafeRestartService, SelfImprovementService, getSelfImprovementService, resetSelfImprovementService, ImprovementMarkerService, getImprovementMarkerService, resetImprovementMarkerService, ImprovementStartupService, getImprovementStartupService, resetImprovementStartupService, } from './orchestrator/index.js';
|
|
51
|
+
// MCP Client Services
|
|
52
|
+
export { McpClientService, MCP_CLIENT_CONSTANTS, } from './mcp-client.js';
|
|
53
|
+
// MCP Server Services
|
|
54
|
+
export { CrewlyMcpServer, MCP_SERVER_CONSTANTS, } from './mcp-server.js';
|
|
50
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../backend/src/services/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAsB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAmB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../backend/src/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Service
|
|
3
|
+
*
|
|
4
|
+
* Enables Crewly agents to connect to external MCP (Model Context Protocol)
|
|
5
|
+
* servers and use their tools. This is the client-side counterpart to our
|
|
6
|
+
* existing MCP server — it lets agents consume tools from any MCP-compatible
|
|
7
|
+
* server (filesystem, GitHub, database, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Supports stdio-based MCP servers (child process spawning) which is the
|
|
10
|
+
* standard transport for local MCP servers.
|
|
11
|
+
*
|
|
12
|
+
* @module services/mcp-client
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* MCP Client configuration constants
|
|
16
|
+
*/
|
|
17
|
+
export declare const MCP_CLIENT_CONSTANTS: {
|
|
18
|
+
/** Client identification sent during MCP handshake */
|
|
19
|
+
readonly CLIENT_INFO: {
|
|
20
|
+
readonly NAME: "crewly-agent";
|
|
21
|
+
readonly VERSION: "1.0.0";
|
|
22
|
+
};
|
|
23
|
+
/** Default timeout for tool calls (30 seconds) */
|
|
24
|
+
readonly TOOL_CALL_TIMEOUT_MS: 30000;
|
|
25
|
+
/** Default timeout for server connection (15 seconds) */
|
|
26
|
+
readonly CONNECTION_TIMEOUT_MS: 15000;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for an external MCP server.
|
|
30
|
+
*
|
|
31
|
+
* Matches the format used in `crewly.config.ts`:
|
|
32
|
+
* ```typescript
|
|
33
|
+
* mcpServers: {
|
|
34
|
+
* filesystem: { command: 'npx', args: ['-y', '@anthropic/mcp-filesystem'] },
|
|
35
|
+
* github: { command: 'npx', args: ['-y', '@anthropic/mcp-github'] },
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export interface McpServerConfig {
|
|
40
|
+
/** The executable command to run (e.g., 'npx', 'node', 'python') */
|
|
41
|
+
command: string;
|
|
42
|
+
/** Command-line arguments for the executable */
|
|
43
|
+
args?: string[];
|
|
44
|
+
/** Environment variables to set for the server process */
|
|
45
|
+
env?: Record<string, string>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Normalized tool information from an MCP server.
|
|
49
|
+
*/
|
|
50
|
+
export interface McpToolInfo {
|
|
51
|
+
/** Tool name as registered on the MCP server */
|
|
52
|
+
name: string;
|
|
53
|
+
/** Human-readable description of the tool */
|
|
54
|
+
description?: string;
|
|
55
|
+
/** JSON Schema describing the tool's input parameters */
|
|
56
|
+
inputSchema: Record<string, unknown>;
|
|
57
|
+
/** Name of the MCP server that provides this tool */
|
|
58
|
+
serverName: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Result from calling an MCP tool.
|
|
62
|
+
*/
|
|
63
|
+
export interface McpToolResult {
|
|
64
|
+
/** Content blocks returned by the tool */
|
|
65
|
+
content: McpContentBlock[];
|
|
66
|
+
/** Whether the tool call resulted in an error */
|
|
67
|
+
isError: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A single content block in a tool result.
|
|
71
|
+
*/
|
|
72
|
+
export interface McpContentBlock {
|
|
73
|
+
/** Content type: 'text', 'image', or 'resource' */
|
|
74
|
+
type: string;
|
|
75
|
+
/** Text content (when type is 'text') */
|
|
76
|
+
text?: string;
|
|
77
|
+
/** Base64-encoded data (when type is 'image') */
|
|
78
|
+
data?: string;
|
|
79
|
+
/** MIME type (when type is 'image') */
|
|
80
|
+
mimeType?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Status information for a connected MCP server.
|
|
84
|
+
*/
|
|
85
|
+
export interface McpServerStatus {
|
|
86
|
+
/** Server identifier */
|
|
87
|
+
name: string;
|
|
88
|
+
/** Whether the server is currently connected */
|
|
89
|
+
connected: boolean;
|
|
90
|
+
/** Number of tools available from this server */
|
|
91
|
+
toolCount: number;
|
|
92
|
+
/** Server name reported during handshake */
|
|
93
|
+
serverName?: string;
|
|
94
|
+
/** Server version reported during handshake */
|
|
95
|
+
serverVersion?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Manages connections to external MCP servers and provides a unified
|
|
99
|
+
* interface for discovering and calling tools across all connected servers.
|
|
100
|
+
*
|
|
101
|
+
* Agents use this service to:
|
|
102
|
+
* 1. Connect to configured MCP servers at startup
|
|
103
|
+
* 2. Discover available tools across all servers
|
|
104
|
+
* 3. Call tools by name with type-safe arguments
|
|
105
|
+
* 4. Gracefully disconnect on shutdown
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const mcpClient = new McpClientService();
|
|
110
|
+
*
|
|
111
|
+
* // Connect to a filesystem MCP server
|
|
112
|
+
* await mcpClient.connectServer('filesystem', {
|
|
113
|
+
* command: 'npx',
|
|
114
|
+
* args: ['-y', '@anthropic/mcp-filesystem', '/home/user'],
|
|
115
|
+
* });
|
|
116
|
+
*
|
|
117
|
+
* // List all available tools
|
|
118
|
+
* const tools = mcpClient.listTools();
|
|
119
|
+
*
|
|
120
|
+
* // Call a tool
|
|
121
|
+
* const result = await mcpClient.callTool('filesystem', 'read_file', {
|
|
122
|
+
* path: '/home/user/file.txt',
|
|
123
|
+
* });
|
|
124
|
+
*
|
|
125
|
+
* // Disconnect all servers
|
|
126
|
+
* await mcpClient.disconnectAll();
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare class McpClientService {
|
|
130
|
+
/** Map of server name -> active connection */
|
|
131
|
+
private connections;
|
|
132
|
+
/**
|
|
133
|
+
* Connect to an external MCP server via stdio transport.
|
|
134
|
+
*
|
|
135
|
+
* Spawns the server as a child process, performs the MCP handshake,
|
|
136
|
+
* and caches the list of available tools.
|
|
137
|
+
*
|
|
138
|
+
* @param name - Unique identifier for this server connection
|
|
139
|
+
* @param config - Server configuration (command, args, env)
|
|
140
|
+
* @throws Error if already connected to a server with this name
|
|
141
|
+
* @throws Error if the connection or handshake fails
|
|
142
|
+
*/
|
|
143
|
+
connectServer(name: string, config: McpServerConfig): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Disconnect from a specific MCP server.
|
|
146
|
+
*
|
|
147
|
+
* Closes the transport and cleans up the child process.
|
|
148
|
+
*
|
|
149
|
+
* @param name - Name of the server to disconnect
|
|
150
|
+
* @throws Error if the server is not connected
|
|
151
|
+
*/
|
|
152
|
+
disconnectServer(name: string): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Disconnect from all connected MCP servers.
|
|
155
|
+
*
|
|
156
|
+
* Closes all transports and cleans up child processes. Errors from
|
|
157
|
+
* individual disconnections are caught and do not prevent other
|
|
158
|
+
* servers from being disconnected. Connections are always removed
|
|
159
|
+
* from the internal map, even if `close()` fails.
|
|
160
|
+
*/
|
|
161
|
+
disconnectAll(): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* List all available tools across connected MCP servers.
|
|
164
|
+
*
|
|
165
|
+
* @param serverName - Optional: filter tools to a specific server
|
|
166
|
+
* @returns Array of tool information objects
|
|
167
|
+
*/
|
|
168
|
+
listTools(serverName?: string): McpToolInfo[];
|
|
169
|
+
/**
|
|
170
|
+
* Call a tool on a specific MCP server.
|
|
171
|
+
*
|
|
172
|
+
* @param serverName - Name of the server that provides the tool
|
|
173
|
+
* @param toolName - Name of the tool to call
|
|
174
|
+
* @param args - Arguments to pass to the tool
|
|
175
|
+
* @returns The tool's result containing content blocks and error status
|
|
176
|
+
* @throws Error if the server is not connected
|
|
177
|
+
* @throws Error if the tool is not found on the server
|
|
178
|
+
* @throws Error if the tool call fails
|
|
179
|
+
*/
|
|
180
|
+
callTool(serverName: string, toolName: string, args?: Record<string, unknown>): Promise<McpToolResult>;
|
|
181
|
+
/**
|
|
182
|
+
* Refresh the tool list for a specific server.
|
|
183
|
+
*
|
|
184
|
+
* Useful when a server's tools may have changed since the initial connection.
|
|
185
|
+
*
|
|
186
|
+
* @param serverName - Name of the server to refresh
|
|
187
|
+
* @throws Error if the server is not connected
|
|
188
|
+
*/
|
|
189
|
+
refreshTools(serverName: string): Promise<void>;
|
|
190
|
+
/**
|
|
191
|
+
* Get the names of all currently connected MCP servers.
|
|
192
|
+
*
|
|
193
|
+
* @returns Array of server names
|
|
194
|
+
*/
|
|
195
|
+
getConnectedServers(): string[];
|
|
196
|
+
/**
|
|
197
|
+
* Check if a specific MCP server is currently connected.
|
|
198
|
+
*
|
|
199
|
+
* @param name - Server name to check
|
|
200
|
+
* @returns True if the server is connected
|
|
201
|
+
*/
|
|
202
|
+
isServerConnected(name: string): boolean;
|
|
203
|
+
/**
|
|
204
|
+
* Get status information for all connected servers.
|
|
205
|
+
*
|
|
206
|
+
* @returns Array of server status objects including tool counts
|
|
207
|
+
*/
|
|
208
|
+
getServerStatuses(): McpServerStatus[];
|
|
209
|
+
/**
|
|
210
|
+
* Connect to multiple MCP servers from a configuration map.
|
|
211
|
+
*
|
|
212
|
+
* This is the primary entrypoint for agent startup. Errors from
|
|
213
|
+
* individual connections are caught — failing servers do not prevent
|
|
214
|
+
* other servers from connecting.
|
|
215
|
+
*
|
|
216
|
+
* @param configs - Map of server name -> server config
|
|
217
|
+
* @returns Map of server name -> error (only for servers that failed to connect)
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const errors = await mcpClient.connectAll({
|
|
222
|
+
* filesystem: { command: 'npx', args: ['-y', '@anthropic/mcp-filesystem', '/tmp'] },
|
|
223
|
+
* github: { command: 'npx', args: ['-y', '@anthropic/mcp-github'] },
|
|
224
|
+
* });
|
|
225
|
+
*
|
|
226
|
+
* if (errors.size > 0) {
|
|
227
|
+
* console.warn('Some MCP servers failed to connect:', errors);
|
|
228
|
+
* }
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
connectAll(configs: Record<string, McpServerConfig>): Promise<Map<string, Error>>;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../../../../backend/src/services/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAChC,sDAAsD;;;;;IAKtD,kDAAkD;;IAElD,yDAAyD;;CAEhD,CAAC;AAIX;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC/B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,0CAA0C;IAC1C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,gBAAgB;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,WAAW,CAA+C;IAElE;;;;;;;;;;OAUG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CzE;;;;;;;OAOG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD;;;;;;;OAOG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAgB7C;;;;;;;;;;OAUG;IACG,QAAQ,CACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,OAAO,CAAC,aAAa,CAAC;IAqCzB;;;;;;;OAOG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;;;OAIG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;OAIG;IACH,iBAAiB,IAAI,eAAe,EAAE;IAiBtC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,UAAU,CACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACtC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAsB9B"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Service
|
|
3
|
+
*
|
|
4
|
+
* Enables Crewly agents to connect to external MCP (Model Context Protocol)
|
|
5
|
+
* servers and use their tools. This is the client-side counterpart to our
|
|
6
|
+
* existing MCP server — it lets agents consume tools from any MCP-compatible
|
|
7
|
+
* server (filesystem, GitHub, database, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Supports stdio-based MCP servers (child process spawning) which is the
|
|
10
|
+
* standard transport for local MCP servers.
|
|
11
|
+
*
|
|
12
|
+
* @module services/mcp-client
|
|
13
|
+
*/
|
|
14
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
15
|
+
import { StdioClientTransport, } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
16
|
+
// ========================= Constants =========================
|
|
17
|
+
/**
|
|
18
|
+
* MCP Client configuration constants
|
|
19
|
+
*/
|
|
20
|
+
export const MCP_CLIENT_CONSTANTS = {
|
|
21
|
+
/** Client identification sent during MCP handshake */
|
|
22
|
+
CLIENT_INFO: {
|
|
23
|
+
NAME: 'crewly-agent',
|
|
24
|
+
VERSION: '1.0.0',
|
|
25
|
+
},
|
|
26
|
+
/** Default timeout for tool calls (30 seconds) */
|
|
27
|
+
TOOL_CALL_TIMEOUT_MS: 30000,
|
|
28
|
+
/** Default timeout for server connection (15 seconds) */
|
|
29
|
+
CONNECTION_TIMEOUT_MS: 15000,
|
|
30
|
+
};
|
|
31
|
+
// ========================= Service =========================
|
|
32
|
+
/**
|
|
33
|
+
* Manages connections to external MCP servers and provides a unified
|
|
34
|
+
* interface for discovering and calling tools across all connected servers.
|
|
35
|
+
*
|
|
36
|
+
* Agents use this service to:
|
|
37
|
+
* 1. Connect to configured MCP servers at startup
|
|
38
|
+
* 2. Discover available tools across all servers
|
|
39
|
+
* 3. Call tools by name with type-safe arguments
|
|
40
|
+
* 4. Gracefully disconnect on shutdown
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const mcpClient = new McpClientService();
|
|
45
|
+
*
|
|
46
|
+
* // Connect to a filesystem MCP server
|
|
47
|
+
* await mcpClient.connectServer('filesystem', {
|
|
48
|
+
* command: 'npx',
|
|
49
|
+
* args: ['-y', '@anthropic/mcp-filesystem', '/home/user'],
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // List all available tools
|
|
53
|
+
* const tools = mcpClient.listTools();
|
|
54
|
+
*
|
|
55
|
+
* // Call a tool
|
|
56
|
+
* const result = await mcpClient.callTool('filesystem', 'read_file', {
|
|
57
|
+
* path: '/home/user/file.txt',
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* // Disconnect all servers
|
|
61
|
+
* await mcpClient.disconnectAll();
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export class McpClientService {
|
|
65
|
+
/** Map of server name -> active connection */
|
|
66
|
+
connections = new Map();
|
|
67
|
+
/**
|
|
68
|
+
* Connect to an external MCP server via stdio transport.
|
|
69
|
+
*
|
|
70
|
+
* Spawns the server as a child process, performs the MCP handshake,
|
|
71
|
+
* and caches the list of available tools.
|
|
72
|
+
*
|
|
73
|
+
* @param name - Unique identifier for this server connection
|
|
74
|
+
* @param config - Server configuration (command, args, env)
|
|
75
|
+
* @throws Error if already connected to a server with this name
|
|
76
|
+
* @throws Error if the connection or handshake fails
|
|
77
|
+
*/
|
|
78
|
+
async connectServer(name, config) {
|
|
79
|
+
if (this.connections.has(name)) {
|
|
80
|
+
throw new Error(`MCP server "${name}" is already connected. Disconnect first before reconnecting.`);
|
|
81
|
+
}
|
|
82
|
+
const serverParams = {
|
|
83
|
+
command: config.command,
|
|
84
|
+
args: config.args,
|
|
85
|
+
env: config.env,
|
|
86
|
+
stderr: 'ignore',
|
|
87
|
+
};
|
|
88
|
+
const transport = new StdioClientTransport(serverParams);
|
|
89
|
+
const client = new Client({
|
|
90
|
+
name: MCP_CLIENT_CONSTANTS.CLIENT_INFO.NAME,
|
|
91
|
+
version: MCP_CLIENT_CONSTANTS.CLIENT_INFO.VERSION,
|
|
92
|
+
}, { capabilities: {} });
|
|
93
|
+
await client.connect(transport);
|
|
94
|
+
// Discover available tools
|
|
95
|
+
const toolsResult = await client.listTools();
|
|
96
|
+
const tools = (toolsResult.tools || []).map((tool) => ({
|
|
97
|
+
name: tool.name,
|
|
98
|
+
description: tool.description,
|
|
99
|
+
inputSchema: tool.inputSchema,
|
|
100
|
+
serverName: name,
|
|
101
|
+
}));
|
|
102
|
+
this.connections.set(name, {
|
|
103
|
+
client,
|
|
104
|
+
transport,
|
|
105
|
+
tools,
|
|
106
|
+
config,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Disconnect from a specific MCP server.
|
|
111
|
+
*
|
|
112
|
+
* Closes the transport and cleans up the child process.
|
|
113
|
+
*
|
|
114
|
+
* @param name - Name of the server to disconnect
|
|
115
|
+
* @throws Error if the server is not connected
|
|
116
|
+
*/
|
|
117
|
+
async disconnectServer(name) {
|
|
118
|
+
const connection = this.connections.get(name);
|
|
119
|
+
if (!connection) {
|
|
120
|
+
throw new Error(`MCP server "${name}" is not connected.`);
|
|
121
|
+
}
|
|
122
|
+
await connection.client.close();
|
|
123
|
+
this.connections.delete(name);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Disconnect from all connected MCP servers.
|
|
127
|
+
*
|
|
128
|
+
* Closes all transports and cleans up child processes. Errors from
|
|
129
|
+
* individual disconnections are caught and do not prevent other
|
|
130
|
+
* servers from being disconnected. Connections are always removed
|
|
131
|
+
* from the internal map, even if `close()` fails.
|
|
132
|
+
*/
|
|
133
|
+
async disconnectAll() {
|
|
134
|
+
const entries = Array.from(this.connections.entries());
|
|
135
|
+
await Promise.allSettled(entries.map(async ([name, connection]) => {
|
|
136
|
+
try {
|
|
137
|
+
await connection.client.close();
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
this.connections.delete(name);
|
|
141
|
+
}
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* List all available tools across connected MCP servers.
|
|
146
|
+
*
|
|
147
|
+
* @param serverName - Optional: filter tools to a specific server
|
|
148
|
+
* @returns Array of tool information objects
|
|
149
|
+
*/
|
|
150
|
+
listTools(serverName) {
|
|
151
|
+
if (serverName) {
|
|
152
|
+
const connection = this.connections.get(serverName);
|
|
153
|
+
if (!connection) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
return [...connection.tools];
|
|
157
|
+
}
|
|
158
|
+
const allTools = [];
|
|
159
|
+
for (const connection of this.connections.values()) {
|
|
160
|
+
allTools.push(...connection.tools);
|
|
161
|
+
}
|
|
162
|
+
return allTools;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Call a tool on a specific MCP server.
|
|
166
|
+
*
|
|
167
|
+
* @param serverName - Name of the server that provides the tool
|
|
168
|
+
* @param toolName - Name of the tool to call
|
|
169
|
+
* @param args - Arguments to pass to the tool
|
|
170
|
+
* @returns The tool's result containing content blocks and error status
|
|
171
|
+
* @throws Error if the server is not connected
|
|
172
|
+
* @throws Error if the tool is not found on the server
|
|
173
|
+
* @throws Error if the tool call fails
|
|
174
|
+
*/
|
|
175
|
+
async callTool(serverName, toolName, args = {}) {
|
|
176
|
+
const connection = this.connections.get(serverName);
|
|
177
|
+
if (!connection) {
|
|
178
|
+
throw new Error(`MCP server "${serverName}" is not connected.`);
|
|
179
|
+
}
|
|
180
|
+
const toolExists = connection.tools.some((t) => t.name === toolName);
|
|
181
|
+
if (!toolExists) {
|
|
182
|
+
throw new Error(`Tool "${toolName}" not found on MCP server "${serverName}". ` +
|
|
183
|
+
`Available tools: ${connection.tools.map((t) => t.name).join(', ')}`);
|
|
184
|
+
}
|
|
185
|
+
const result = await connection.client.callTool({
|
|
186
|
+
name: toolName,
|
|
187
|
+
arguments: args,
|
|
188
|
+
});
|
|
189
|
+
// Normalize the result to our McpToolResult interface
|
|
190
|
+
const content = Array.isArray(result.content)
|
|
191
|
+
? result.content.map((block) => ({
|
|
192
|
+
type: block.type,
|
|
193
|
+
text: block.text,
|
|
194
|
+
data: block.data,
|
|
195
|
+
mimeType: block.mimeType,
|
|
196
|
+
}))
|
|
197
|
+
: [];
|
|
198
|
+
return {
|
|
199
|
+
content,
|
|
200
|
+
isError: result.isError === true,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Refresh the tool list for a specific server.
|
|
205
|
+
*
|
|
206
|
+
* Useful when a server's tools may have changed since the initial connection.
|
|
207
|
+
*
|
|
208
|
+
* @param serverName - Name of the server to refresh
|
|
209
|
+
* @throws Error if the server is not connected
|
|
210
|
+
*/
|
|
211
|
+
async refreshTools(serverName) {
|
|
212
|
+
const connection = this.connections.get(serverName);
|
|
213
|
+
if (!connection) {
|
|
214
|
+
throw new Error(`MCP server "${serverName}" is not connected.`);
|
|
215
|
+
}
|
|
216
|
+
const toolsResult = await connection.client.listTools();
|
|
217
|
+
connection.tools = (toolsResult.tools || []).map((tool) => ({
|
|
218
|
+
name: tool.name,
|
|
219
|
+
description: tool.description,
|
|
220
|
+
inputSchema: tool.inputSchema,
|
|
221
|
+
serverName,
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get the names of all currently connected MCP servers.
|
|
226
|
+
*
|
|
227
|
+
* @returns Array of server names
|
|
228
|
+
*/
|
|
229
|
+
getConnectedServers() {
|
|
230
|
+
return Array.from(this.connections.keys());
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Check if a specific MCP server is currently connected.
|
|
234
|
+
*
|
|
235
|
+
* @param name - Server name to check
|
|
236
|
+
* @returns True if the server is connected
|
|
237
|
+
*/
|
|
238
|
+
isServerConnected(name) {
|
|
239
|
+
return this.connections.has(name);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get status information for all connected servers.
|
|
243
|
+
*
|
|
244
|
+
* @returns Array of server status objects including tool counts
|
|
245
|
+
*/
|
|
246
|
+
getServerStatuses() {
|
|
247
|
+
const statuses = [];
|
|
248
|
+
for (const [name, connection] of this.connections.entries()) {
|
|
249
|
+
const serverVersion = connection.client.getServerVersion();
|
|
250
|
+
statuses.push({
|
|
251
|
+
name,
|
|
252
|
+
connected: true,
|
|
253
|
+
toolCount: connection.tools.length,
|
|
254
|
+
serverName: serverVersion?.name,
|
|
255
|
+
serverVersion: serverVersion?.version,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return statuses;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Connect to multiple MCP servers from a configuration map.
|
|
262
|
+
*
|
|
263
|
+
* This is the primary entrypoint for agent startup. Errors from
|
|
264
|
+
* individual connections are caught — failing servers do not prevent
|
|
265
|
+
* other servers from connecting.
|
|
266
|
+
*
|
|
267
|
+
* @param configs - Map of server name -> server config
|
|
268
|
+
* @returns Map of server name -> error (only for servers that failed to connect)
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* const errors = await mcpClient.connectAll({
|
|
273
|
+
* filesystem: { command: 'npx', args: ['-y', '@anthropic/mcp-filesystem', '/tmp'] },
|
|
274
|
+
* github: { command: 'npx', args: ['-y', '@anthropic/mcp-github'] },
|
|
275
|
+
* });
|
|
276
|
+
*
|
|
277
|
+
* if (errors.size > 0) {
|
|
278
|
+
* console.warn('Some MCP servers failed to connect:', errors);
|
|
279
|
+
* }
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
async connectAll(configs) {
|
|
283
|
+
const errors = new Map();
|
|
284
|
+
const entries = Object.entries(configs);
|
|
285
|
+
const results = await Promise.allSettled(entries.map(([name, config]) => this.connectServer(name, config)));
|
|
286
|
+
results.forEach((result, index) => {
|
|
287
|
+
if (result.status === 'rejected') {
|
|
288
|
+
const [name] = entries[index];
|
|
289
|
+
errors.set(name, result.reason instanceof Error
|
|
290
|
+
? result.reason
|
|
291
|
+
: new Error(String(result.reason)));
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
return errors;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=mcp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../../../backend/src/services/mcp-client.ts"],"names":[],"mappings":"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"}
|