crewly 1.6.1 → 1.6.3
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/config/roles/orchestrator/prompt.md +16 -0
- package/config/skills/agent/core/get-my-active-work/SKILL.md +101 -0
- package/config/skills/agent/core/get-my-active-work/execute.sh +122 -0
- package/config/skills/agent/core/record-learning/SKILL.md +29 -0
- package/config/skills/agent/core/reply-channel/SKILL.md +41 -0
- package/config/skills/agent/core/reply-channel/execute.sh +165 -0
- package/config/skills/agent/core/reply-channel/execute.test.sh +148 -0
- package/config/skills/agent/remote-browser/execute.sh +296 -14
- package/config/skills/agent/remote-browser/execute.test.sh +482 -0
- package/config/skills/orchestrator/send-message/SKILL.md +30 -7
- package/config/skills/orchestrator/team-health-scan/SKILL.md +98 -0
- package/config/skills/orchestrator/team-health-scan/execute.sh +44 -0
- package/config/skills/registry.json +62 -1
- package/config/slack-app-manifest.json +2 -1
- package/config/sops/developer/git-workflow.md +38 -3
- package/dist/backend/backend/src/constants.d.ts +69 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +69 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts +53 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +92 -0
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js +18 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +68 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +233 -5
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +10 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +8 -3
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +132 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +401 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +29 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +39 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.d.ts +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.js +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +13 -13
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +74 -234
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +76 -15
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.js +4 -6
- package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts +43 -0
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js +200 -72
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +49 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts +59 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.js +127 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts +13 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.js +20 -0
- package/dist/backend/backend/src/controllers/team-health/team-health.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +9 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +233 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +40 -6
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +498 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +759 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +25 -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 +221 -58
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +9 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +35 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +8 -2
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js +2 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js +2 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +148 -3
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +241 -2
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js +26 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +161 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +382 -2
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +105 -0
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js +232 -13
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +178 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +254 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts +25 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js +23 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.realtime-holder.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +254 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +467 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts +43 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js +54 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.team-membership.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/config.d.ts +100 -0
- package/dist/backend/backend/src/services/chat-v2/config.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/config.js +174 -0
- package/dist/backend/backend/src/services/chat-v2/config.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/index.d.ts +11 -0
- package/dist/backend/backend/src/services/chat-v2/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/index.js +12 -0
- package/dist/backend/backend/src/services/chat-v2/index.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +114 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +194 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +100 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +351 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +132 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +281 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts +295 -0
- package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/types.js +61 -0
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +113 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +179 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +131 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +227 -0
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +1 -0
- package/dist/backend/backend/src/services/core/config.service.js +3 -3
- package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +22 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +57 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +69 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +118 -0
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +275 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +736 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +18 -2
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +123 -29
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.js +304 -0
- package/dist/backend/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js +24 -4
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts +174 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js +375 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
- package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/vector-store.service.js +19 -4
- package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts +16 -5
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js +32 -5
- package/dist/backend/backend/src/services/onboarding/onboarding-provision.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +157 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js +229 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +141 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.js +18 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.types.js.map +1 -0
- package/dist/backend/backend/src/services/pr-review/pr-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js +1 -1
- package/dist/backend/backend/src/services/pr-review/pr-review.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js +17 -1
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +39 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +158 -26
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +248 -6
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +531 -51
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/team-health/index.d.ts +16 -0
- package/dist/backend/backend/src/services/team-health/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/index.js +16 -0
- package/dist/backend/backend/src/services/team-health/index.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts +52 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js +161 -0
- package/dist/backend/backend/src/services/team-health/live-team-health-data-provider.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts +53 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js +88 -0
- package/dist/backend/backend/src/services/team-health/lost-dispatch-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts +44 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js +83 -0
- package/dist/backend/backend/src/services/team-health/stale-trigger-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts +92 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.js +328 -0
- package/dist/backend/backend/src/services/team-health/team-health-alert-router.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.d.ts +41 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.js +213 -0
- package/dist/backend/backend/src/services/team-health/team-health-config.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts +46 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.js +347 -0
- package/dist/backend/backend/src/services/team-health/team-health-detector.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.d.ts +154 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.js +94 -0
- package/dist/backend/backend/src/services/team-health/team-health-types.js.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts +111 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js +226 -0
- package/dist/backend/backend/src/services/team-health/team-health-watchdog.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +148 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js +545 -0
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +499 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +1105 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts +22 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +71 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +1 -0
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +22 -6
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +19 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +43 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +22 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/review-reason.types.d.ts +63 -0
- package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/review-reason.types.js +50 -0
- package/dist/backend/backend/src/types/review-reason.types.js.map +1 -0
- package/dist/backend/backend/src/types/slack.types.d.ts +4 -1
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.d.ts +18 -0
- package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.js +1 -0
- package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +25 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/team.utils.d.ts +38 -0
- package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/team.utils.js +45 -0
- package/dist/backend/backend/src/utils/team.utils.js.map +1 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +195 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js +401 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +37 -2
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +106 -5
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +69 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +69 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.js +3 -3
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +22 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +57 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +18 -2
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +49 -13
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +123 -29
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js +24 -4
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +22 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +25 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/frontend/dist/assets/{index-70356616.js → index-7a4e7df5.js} +328 -326
- package/frontend/dist/assets/index-b7e59b2b.css +33 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -1
- package/config/skills/orchestrator/recall/SKILL.md +0 -47
- package/config/skills/orchestrator/recall/execute.sh +0 -13
- package/config/skills/orchestrator/record-learning/SKILL.md +0 -47
- package/config/skills/orchestrator/record-learning/execute.sh +0 -13
- package/config/skills/orchestrator/remember/SKILL.md +0 -55
- package/config/skills/orchestrator/remember/execute.sh +0 -15
- package/frontend/dist/assets/index-6aaa0630.css +0 -33
|
@@ -82,9 +82,9 @@ export async function sendMessage(req, res, next) {
|
|
|
82
82
|
priority: 'normal',
|
|
83
83
|
tags: ['chat-ui'],
|
|
84
84
|
});
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
// P2-2: RequestTracker.setActiveRequest write removed. The
|
|
86
|
+
// companion read in v3-data.service.ts no longer falls back to
|
|
87
|
+
// time-window correlation, so writing here would be dead code.
|
|
88
88
|
logger.debug('V3 Request created from chat message', { messageId: result.message.id, requestId: request.id });
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -375,6 +375,11 @@ export async function agentResponse(req, res, next) {
|
|
|
375
375
|
channelId: threads[0].channelId,
|
|
376
376
|
threadTs: threads[0].threadTs,
|
|
377
377
|
});
|
|
378
|
+
// If a pending reaction was stored when the message arrived
|
|
379
|
+
// (orchestrator-routed path sets a 👀 on the trigger message),
|
|
380
|
+
// flip it to ✅ now that the agent reply has been delivered.
|
|
381
|
+
// No-op when there's no pending entry for this thread.
|
|
382
|
+
await bridge.addCompletionReaction(threads[0].channelId, threads[0].threadTs);
|
|
378
383
|
}
|
|
379
384
|
}
|
|
380
385
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP controller for Phase 1 Chat endpoints.
|
|
3
|
+
*
|
|
4
|
+
* Thin layer: parses + validates requests, delegates to `ChatV2Service`,
|
|
5
|
+
* and maps `ChatError` to HTTP responses. All routes are owner-scoped via
|
|
6
|
+
* `requireAuth` middleware; the principal is lifted from `req.user`.
|
|
7
|
+
*
|
|
8
|
+
* Wiring hooks (all optional — omit for tests that only need REST):
|
|
9
|
+
* - `gateway.broadcast(channelId, frame)` — after successful persist,
|
|
10
|
+
* the controller fans a `message` frame out to WS subscribers so the
|
|
11
|
+
* sending client's WS re-broadcasts reconcile with its HTTP-201 echo.
|
|
12
|
+
* - `dispatcher.dispatchToAgent(channel, message)` — fires when a USER
|
|
13
|
+
* message lands, pushing the text into the bound agent's runtime. The
|
|
14
|
+
* agent replies via the `reply-channel` skill, which re-enters this
|
|
15
|
+
* same endpoint with an `X-Crewly-Agent-Session` header.
|
|
16
|
+
*
|
|
17
|
+
* @module controllers/chat-v2/chat-v2.controller
|
|
18
|
+
*/
|
|
19
|
+
import type { Request, Response } from 'express';
|
|
20
|
+
import type { ChatV2Service } from '../../services/chat-v2/chat-v2.service.js';
|
|
21
|
+
import type { ChatV2DispatcherService } from '../../services/chat-v2/chat-v2.dispatcher.service.js';
|
|
22
|
+
import type { ChatV2Gateway } from '../../websocket/chat-v2.gateway.js';
|
|
23
|
+
import { ChatError, type ChatChannelDTO, type ChatMessageDTO, type ChatPrincipal } from '../../services/chat-v2/types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Build the service-level principal from the authenticated request.
|
|
26
|
+
*
|
|
27
|
+
* Honors an optional `X-Crewly-Agent-Session` header — the `reply-channel`
|
|
28
|
+
* skill sets this so the service-layer `resolveSender` returns senderType
|
|
29
|
+
* `agent` instead of `user`. The header is only honored when the request
|
|
30
|
+
* has already passed `requireAuth` (i.e. a trusted bearer), because the
|
|
31
|
+
* service still verifies that `principal.agentSession` matches the
|
|
32
|
+
* channel's bound `agent_session` before marking a message as an agent
|
|
33
|
+
* reply.
|
|
34
|
+
*
|
|
35
|
+
* For Phase 1 the bearer used by the skill is the same OSS session token
|
|
36
|
+
* the owner uses — the agent runs locally on the user's machine. Signed
|
|
37
|
+
* per-agent tokens arrive in Phase 2.
|
|
38
|
+
*/
|
|
39
|
+
export declare function principalFromRequest(req: Request): ChatPrincipal;
|
|
40
|
+
/** Serialize a `ChatError` into the canonical wire shape. */
|
|
41
|
+
export declare function sendChatError(res: Response, err: ChatError): void;
|
|
42
|
+
/** Fallback 500 responder for unknown failures. */
|
|
43
|
+
export declare function sendInternalError(res: Response, err: unknown): void;
|
|
44
|
+
/** Thin wrapper that catches ChatError → 4xx and anything else → 500. */
|
|
45
|
+
export declare function runHandler<T>(res: Response, run: () => T): T | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Build the canonical chat-v2 sourceConversationItemId so the
|
|
48
|
+
* `RequestSlaSubscriber` can dedupe + extract channel/message ids the
|
|
49
|
+
* same way it does for Slack (`slack-${channelId}-${ts}`).
|
|
50
|
+
*
|
|
51
|
+
* Shape: `chatv2-${channelId}__${messageId}`. The inter-field delimiter
|
|
52
|
+
* is the double underscore `__` rather than a single dash because
|
|
53
|
+
* `channel.store.ts:86` and `message.store.ts:165` mint ids via
|
|
54
|
+
* `randomUUID()` (4 dashes embedded in each id). A single-dash
|
|
55
|
+
* delimiter collides with the embedded UUID dashes and corrupts the
|
|
56
|
+
* round-trip — see Arch's review on PR #364 / INBOUND-2.f1.
|
|
57
|
+
* UUIDs are hex digits + dashes only and cannot contain `_`, so `__`
|
|
58
|
+
* is collision-free against any current or future hex-shaped id.
|
|
59
|
+
*
|
|
60
|
+
* @param channelId - Persisted chat-v2 channel id (UUIDv4 in production)
|
|
61
|
+
* @param messageId - Persisted chat-v2 message id (UUIDv4 in production)
|
|
62
|
+
* @returns The composite source id, e.g.
|
|
63
|
+
* `chatv2-8b3c9a4e-5a02-4d51-9e7a-6f8c4d2e8a1b__fa1e2c3d-4567-89ab-cdef-0123456789ab`
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildChatV2SourceId(channelId: string, messageId: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* INBOUND-2: decide whether a chat-v2 channel routes user messages to the
|
|
68
|
+
* orchestrator. v1 scope = `type='dm'` channels whose `agentSession`
|
|
69
|
+
* field is the orchestrator session. `type='channel'` (team-scoped) is
|
|
70
|
+
* excluded — the SLA path expects the WI target to be the orchestrator
|
|
71
|
+
* and team-channels haven't yet defined an orc-tagged routing concept
|
|
72
|
+
* (see INBOUND-2 task spec, escalation note "no orc-tagged channels yet").
|
|
73
|
+
*
|
|
74
|
+
* Exported so tests can lock the scope without relying on private state.
|
|
75
|
+
*
|
|
76
|
+
* @param channel - The channel DTO returned by `service.getChannel`.
|
|
77
|
+
* @returns True iff the channel routes to the orchestrator.
|
|
78
|
+
*/
|
|
79
|
+
export declare function isOrchestratorRoutedChatV2Channel(channel: ChatChannelDTO): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Fire-and-forget: if a USER-origin chat-v2 message lands in a channel
|
|
82
|
+
* routed to the orc, register a V3 Request so the
|
|
83
|
+
* `RequestSlaSubscriber` (INBOUND-1) can attach a respond_to_user
|
|
84
|
+
* WorkItem with the 5/10min SLA timers.
|
|
85
|
+
*
|
|
86
|
+
* Mirrors the Slack pattern at
|
|
87
|
+
* `slack-orchestrator-bridge.ts:367-395`. Errors are swallowed and
|
|
88
|
+
* logged at warn-level inside the lazy import — Request creation is
|
|
89
|
+
* non-critical to the chat ack.
|
|
90
|
+
*
|
|
91
|
+
* @param channel - The persisted channel (provides type + agentSession)
|
|
92
|
+
* @param message - The persisted user message (provides id + content)
|
|
93
|
+
*/
|
|
94
|
+
export declare function emitChatV2RequestCreated(channel: ChatChannelDTO, message: ChatMessageDTO): void;
|
|
95
|
+
/**
|
|
96
|
+
* Fire-and-forget: when an AGENT-origin chat-v2 message lands in a
|
|
97
|
+
* channel that may have an outstanding `respond_to_user` WI tracked by
|
|
98
|
+
* the SLA subscriber, mark it resolved (transitions the WI to `done`,
|
|
99
|
+
* silences the breach + escalation timers).
|
|
100
|
+
*
|
|
101
|
+
* Safe to call for any agent-origin message — `markResolvedByChatV2` is
|
|
102
|
+
* a no-op when the channel isn't tracked.
|
|
103
|
+
*
|
|
104
|
+
* @param message - The persisted message (only agent-origin is acted on)
|
|
105
|
+
*/
|
|
106
|
+
export declare function notifyChatV2AgentReply(message: ChatMessageDTO): void;
|
|
107
|
+
/** Express handlers returned by `createChatV2Controller`. */
|
|
108
|
+
export interface ChatV2ControllerHandlers {
|
|
109
|
+
listChannels: (req: Request, res: Response) => void;
|
|
110
|
+
createChannel: (req: Request, res: Response) => void;
|
|
111
|
+
getChannel: (req: Request, res: Response) => void;
|
|
112
|
+
archiveChannel: (req: Request, res: Response) => void;
|
|
113
|
+
listMessages: (req: Request, res: Response) => void;
|
|
114
|
+
sendMessage: (req: Request, res: Response) => void | Promise<void>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Optional wiring for real-time fan-out + agent dispatch. Leave undefined
|
|
118
|
+
* in REST-only tests; supply both in the live server.
|
|
119
|
+
*/
|
|
120
|
+
export interface ChatV2ControllerDeps {
|
|
121
|
+
gateway?: ChatV2Gateway;
|
|
122
|
+
dispatcher?: ChatV2DispatcherService;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Build Express-compatible handlers for the chat-v2 endpoints.
|
|
126
|
+
*
|
|
127
|
+
* @param service - A configured ChatV2Service
|
|
128
|
+
* @param deps - Optional gateway/dispatcher for realtime wiring
|
|
129
|
+
* @returns One handler per endpoint; wire into an Express Router
|
|
130
|
+
*/
|
|
131
|
+
export declare function createChatV2Controller(service: ChatV2Service, deps?: ChatV2ControllerDeps): ChatV2ControllerHandlers;
|
|
132
|
+
//# sourceMappingURL=chat-v2.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-v2.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat-v2/chat-v2.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAIxE,OAAO,EAEL,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAMzC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAiBhE;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CASjE;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CASnE;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAWxE;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAIlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,GACtB,IAAI,CAyBN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAepE;AAMD,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClD,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,oBAAyB,GAC9B,wBAAwB,CA2M1B"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP controller for Phase 1 Chat endpoints.
|
|
3
|
+
*
|
|
4
|
+
* Thin layer: parses + validates requests, delegates to `ChatV2Service`,
|
|
5
|
+
* and maps `ChatError` to HTTP responses. All routes are owner-scoped via
|
|
6
|
+
* `requireAuth` middleware; the principal is lifted from `req.user`.
|
|
7
|
+
*
|
|
8
|
+
* Wiring hooks (all optional — omit for tests that only need REST):
|
|
9
|
+
* - `gateway.broadcast(channelId, frame)` — after successful persist,
|
|
10
|
+
* the controller fans a `message` frame out to WS subscribers so the
|
|
11
|
+
* sending client's WS re-broadcasts reconcile with its HTTP-201 echo.
|
|
12
|
+
* - `dispatcher.dispatchToAgent(channel, message)` — fires when a USER
|
|
13
|
+
* message lands, pushing the text into the bound agent's runtime. The
|
|
14
|
+
* agent replies via the `reply-channel` skill, which re-enters this
|
|
15
|
+
* same endpoint with an `X-Crewly-Agent-Session` header.
|
|
16
|
+
*
|
|
17
|
+
* @module controllers/chat-v2/chat-v2.controller
|
|
18
|
+
*/
|
|
19
|
+
import { buildMessageEvent } from '../../websocket/chat-v2.gateway.js';
|
|
20
|
+
import { getChatV2RealtimeDeps } from '../../services/chat-v2/chat-v2.realtime-holder.js';
|
|
21
|
+
import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
|
|
22
|
+
import { CHAT_ERROR_CODES, ChatError, } from '../../services/chat-v2/types.js';
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Helpers
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* Build the service-level principal from the authenticated request.
|
|
28
|
+
*
|
|
29
|
+
* Honors an optional `X-Crewly-Agent-Session` header — the `reply-channel`
|
|
30
|
+
* skill sets this so the service-layer `resolveSender` returns senderType
|
|
31
|
+
* `agent` instead of `user`. The header is only honored when the request
|
|
32
|
+
* has already passed `requireAuth` (i.e. a trusted bearer), because the
|
|
33
|
+
* service still verifies that `principal.agentSession` matches the
|
|
34
|
+
* channel's bound `agent_session` before marking a message as an agent
|
|
35
|
+
* reply.
|
|
36
|
+
*
|
|
37
|
+
* For Phase 1 the bearer used by the skill is the same OSS session token
|
|
38
|
+
* the owner uses — the agent runs locally on the user's machine. Signed
|
|
39
|
+
* per-agent tokens arrive in Phase 2.
|
|
40
|
+
*/
|
|
41
|
+
export function principalFromRequest(req) {
|
|
42
|
+
const user = req.user;
|
|
43
|
+
if (!user?.userId) {
|
|
44
|
+
throw new ChatError(CHAT_ERROR_CODES.FORBIDDEN, 401, 'Authentication required');
|
|
45
|
+
}
|
|
46
|
+
// `X-Agent-Session` is the header the shared skills `_common/lib.sh`
|
|
47
|
+
// already attaches to every API call (`CREWLY_SESSION_NAME`). Reusing it
|
|
48
|
+
// means the `reply-channel` skill works with no extra wiring — it just
|
|
49
|
+
// calls `api_call POST /chat/channels/:id/messages ...`.
|
|
50
|
+
const hdr = req.headers['x-agent-session'] ?? req.headers['x-crewly-agent-session'];
|
|
51
|
+
const agentSession = typeof hdr === 'string' && hdr.length > 0 ? hdr : undefined;
|
|
52
|
+
return {
|
|
53
|
+
userId: user.userId,
|
|
54
|
+
agentSession,
|
|
55
|
+
source: 'oss',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Serialize a `ChatError` into the canonical wire shape. */
|
|
59
|
+
export function sendChatError(res, err) {
|
|
60
|
+
res.status(err.httpStatus).json({
|
|
61
|
+
success: false,
|
|
62
|
+
error: {
|
|
63
|
+
code: err.code,
|
|
64
|
+
message: err.message,
|
|
65
|
+
details: err.details,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Fallback 500 responder for unknown failures. */
|
|
70
|
+
export function sendInternalError(res, err) {
|
|
71
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
72
|
+
res.status(500).json({
|
|
73
|
+
success: false,
|
|
74
|
+
error: {
|
|
75
|
+
code: CHAT_ERROR_CODES.INTERNAL,
|
|
76
|
+
message: `Internal error: ${msg}`,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** Thin wrapper that catches ChatError → 4xx and anything else → 500. */
|
|
81
|
+
export function runHandler(res, run) {
|
|
82
|
+
try {
|
|
83
|
+
return run();
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (err instanceof ChatError) {
|
|
87
|
+
sendChatError(res, err);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
sendInternalError(res, err);
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// INBOUND-2 helpers — V3 Request + SLA hooks for chat-v2 ingress
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
/**
|
|
99
|
+
* Build the canonical chat-v2 sourceConversationItemId so the
|
|
100
|
+
* `RequestSlaSubscriber` can dedupe + extract channel/message ids the
|
|
101
|
+
* same way it does for Slack (`slack-${channelId}-${ts}`).
|
|
102
|
+
*
|
|
103
|
+
* Shape: `chatv2-${channelId}__${messageId}`. The inter-field delimiter
|
|
104
|
+
* is the double underscore `__` rather than a single dash because
|
|
105
|
+
* `channel.store.ts:86` and `message.store.ts:165` mint ids via
|
|
106
|
+
* `randomUUID()` (4 dashes embedded in each id). A single-dash
|
|
107
|
+
* delimiter collides with the embedded UUID dashes and corrupts the
|
|
108
|
+
* round-trip — see Arch's review on PR #364 / INBOUND-2.f1.
|
|
109
|
+
* UUIDs are hex digits + dashes only and cannot contain `_`, so `__`
|
|
110
|
+
* is collision-free against any current or future hex-shaped id.
|
|
111
|
+
*
|
|
112
|
+
* @param channelId - Persisted chat-v2 channel id (UUIDv4 in production)
|
|
113
|
+
* @param messageId - Persisted chat-v2 message id (UUIDv4 in production)
|
|
114
|
+
* @returns The composite source id, e.g.
|
|
115
|
+
* `chatv2-8b3c9a4e-5a02-4d51-9e7a-6f8c4d2e8a1b__fa1e2c3d-4567-89ab-cdef-0123456789ab`
|
|
116
|
+
*/
|
|
117
|
+
export function buildChatV2SourceId(channelId, messageId) {
|
|
118
|
+
return `chatv2-${channelId}__${messageId}`;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* INBOUND-2: decide whether a chat-v2 channel routes user messages to the
|
|
122
|
+
* orchestrator. v1 scope = `type='dm'` channels whose `agentSession`
|
|
123
|
+
* field is the orchestrator session. `type='channel'` (team-scoped) is
|
|
124
|
+
* excluded — the SLA path expects the WI target to be the orchestrator
|
|
125
|
+
* and team-channels haven't yet defined an orc-tagged routing concept
|
|
126
|
+
* (see INBOUND-2 task spec, escalation note "no orc-tagged channels yet").
|
|
127
|
+
*
|
|
128
|
+
* Exported so tests can lock the scope without relying on private state.
|
|
129
|
+
*
|
|
130
|
+
* @param channel - The channel DTO returned by `service.getChannel`.
|
|
131
|
+
* @returns True iff the channel routes to the orchestrator.
|
|
132
|
+
*/
|
|
133
|
+
export function isOrchestratorRoutedChatV2Channel(channel) {
|
|
134
|
+
if (channel.type !== 'dm')
|
|
135
|
+
return false;
|
|
136
|
+
if (!channel.agentSession)
|
|
137
|
+
return false;
|
|
138
|
+
return channel.agentSession === ORCHESTRATOR_SESSION_NAME;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Fire-and-forget: if a USER-origin chat-v2 message lands in a channel
|
|
142
|
+
* routed to the orc, register a V3 Request so the
|
|
143
|
+
* `RequestSlaSubscriber` (INBOUND-1) can attach a respond_to_user
|
|
144
|
+
* WorkItem with the 5/10min SLA timers.
|
|
145
|
+
*
|
|
146
|
+
* Mirrors the Slack pattern at
|
|
147
|
+
* `slack-orchestrator-bridge.ts:367-395`. Errors are swallowed and
|
|
148
|
+
* logged at warn-level inside the lazy import — Request creation is
|
|
149
|
+
* non-critical to the chat ack.
|
|
150
|
+
*
|
|
151
|
+
* @param channel - The persisted channel (provides type + agentSession)
|
|
152
|
+
* @param message - The persisted user message (provides id + content)
|
|
153
|
+
*/
|
|
154
|
+
export function emitChatV2RequestCreated(channel, message) {
|
|
155
|
+
if (message.senderType !== 'user')
|
|
156
|
+
return;
|
|
157
|
+
if (!isOrchestratorRoutedChatV2Channel(channel))
|
|
158
|
+
return;
|
|
159
|
+
setImmediate(async () => {
|
|
160
|
+
try {
|
|
161
|
+
const { RequestService } = await import('../../services/v3/request.service.js');
|
|
162
|
+
const svc = RequestService.getInstance();
|
|
163
|
+
const sourceId = buildChatV2SourceId(channel.id, message.id);
|
|
164
|
+
const existing = await svc.findBySourceConversationItemId(sourceId);
|
|
165
|
+
if (existing)
|
|
166
|
+
return;
|
|
167
|
+
const { generateRequestTitle } = await import('../../services/v3/v3-data.service.js');
|
|
168
|
+
const rawText = message.content || '';
|
|
169
|
+
await svc.create({
|
|
170
|
+
title: generateRequestTitle(rawText, 'other'),
|
|
171
|
+
description: rawText,
|
|
172
|
+
sourceConversationItemId: sourceId,
|
|
173
|
+
priority: 'normal',
|
|
174
|
+
tags: ['chat-v2'],
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Non-critical — Request creation failure must not break chat send.
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Fire-and-forget: when an AGENT-origin chat-v2 message lands in a
|
|
184
|
+
* channel that may have an outstanding `respond_to_user` WI tracked by
|
|
185
|
+
* the SLA subscriber, mark it resolved (transitions the WI to `done`,
|
|
186
|
+
* silences the breach + escalation timers).
|
|
187
|
+
*
|
|
188
|
+
* Safe to call for any agent-origin message — `markResolvedByChatV2` is
|
|
189
|
+
* a no-op when the channel isn't tracked.
|
|
190
|
+
*
|
|
191
|
+
* @param message - The persisted message (only agent-origin is acted on)
|
|
192
|
+
*/
|
|
193
|
+
export function notifyChatV2AgentReply(message) {
|
|
194
|
+
if (message.senderType !== 'agent')
|
|
195
|
+
return;
|
|
196
|
+
setImmediate(async () => {
|
|
197
|
+
try {
|
|
198
|
+
const { getRequestSlaSubscriber } = await import('../../services/v3/request-sla.subscriber.js');
|
|
199
|
+
const sub = getRequestSlaSubscriber();
|
|
200
|
+
if (!sub)
|
|
201
|
+
return;
|
|
202
|
+
await sub.markResolvedByChatV2(message.channelId);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// Non-critical — auto-resolve failure must not break chat send.
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Build Express-compatible handlers for the chat-v2 endpoints.
|
|
211
|
+
*
|
|
212
|
+
* @param service - A configured ChatV2Service
|
|
213
|
+
* @param deps - Optional gateway/dispatcher for realtime wiring
|
|
214
|
+
* @returns One handler per endpoint; wire into an Express Router
|
|
215
|
+
*/
|
|
216
|
+
export function createChatV2Controller(service, deps = {}) {
|
|
217
|
+
// Deps resolve in this order:
|
|
218
|
+
// 1. explicit argument (tests + the realtime-aware router)
|
|
219
|
+
// 2. process-wide realtime holder (populated by server start-up)
|
|
220
|
+
// Falling back to the holder means the router can be mounted before the
|
|
221
|
+
// gateway is live, and picks up realtime deps once they register.
|
|
222
|
+
const resolveDeps = () => {
|
|
223
|
+
if (deps.gateway || deps.dispatcher)
|
|
224
|
+
return deps;
|
|
225
|
+
const live = getChatV2RealtimeDeps();
|
|
226
|
+
return {
|
|
227
|
+
gateway: live.gateway ?? deps.gateway,
|
|
228
|
+
dispatcher: live.dispatcher ?? deps.dispatcher,
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
return {
|
|
232
|
+
listChannels: (req, res) => runHandler(res, () => {
|
|
233
|
+
const principal = principalFromRequest(req);
|
|
234
|
+
const includeArchived = req.query.includeArchived === 'true';
|
|
235
|
+
const limitRaw = req.query.limit;
|
|
236
|
+
const limit = typeof limitRaw === 'string' ? Number.parseInt(limitRaw, 10) : undefined;
|
|
237
|
+
// Phase C — channel-rail listing refinements.
|
|
238
|
+
// `type` and `teamId` query params let the rail fetch a focused
|
|
239
|
+
// slice (e.g. only DMs, or only channels in the active workspace)
|
|
240
|
+
// without shipping the full owner-scoped list. Both are optional
|
|
241
|
+
// and compose with AND. Service-layer rejects unknown `type`
|
|
242
|
+
// values with `validation_error`; we forward as-is so the caller
|
|
243
|
+
// gets a precise error message.
|
|
244
|
+
const typeRaw = req.query.type;
|
|
245
|
+
const type = typeof typeRaw === 'string' && typeRaw.length > 0 ? typeRaw : undefined;
|
|
246
|
+
const teamIdRaw = req.query.teamId;
|
|
247
|
+
const teamId = typeof teamIdRaw === 'string' && teamIdRaw.length > 0 ? teamIdRaw : undefined;
|
|
248
|
+
const channels = service.listChannels({
|
|
249
|
+
principal,
|
|
250
|
+
includeArchived,
|
|
251
|
+
limit: Number.isFinite(limit) ? limit : undefined,
|
|
252
|
+
type: type,
|
|
253
|
+
teamId,
|
|
254
|
+
});
|
|
255
|
+
res.json({ success: true, data: { channels, nextCursor: null } });
|
|
256
|
+
}),
|
|
257
|
+
createChannel: (req, res) => runHandler(res, () => {
|
|
258
|
+
const principal = principalFromRequest(req);
|
|
259
|
+
const body = req.body ?? {};
|
|
260
|
+
const channel = service.createChannel({
|
|
261
|
+
agentSession: body.agentSession,
|
|
262
|
+
name: body.name,
|
|
263
|
+
purpose: body.purpose,
|
|
264
|
+
principal,
|
|
265
|
+
// Phase A (SEALED §3.1) — Slack-like channel surfaces. Service
|
|
266
|
+
// layer validates the type↔teamId↔targetMemberId combinations.
|
|
267
|
+
type: body.type,
|
|
268
|
+
teamId: body.teamId,
|
|
269
|
+
projectId: body.projectId,
|
|
270
|
+
targetMemberId: body.targetMemberId,
|
|
271
|
+
});
|
|
272
|
+
res.status(201).json({ success: true, data: channel });
|
|
273
|
+
}),
|
|
274
|
+
getChannel: (req, res) => runHandler(res, () => {
|
|
275
|
+
const principal = principalFromRequest(req);
|
|
276
|
+
const channel = service.getChannel(req.params.id, principal);
|
|
277
|
+
res.json({ success: true, data: channel });
|
|
278
|
+
}),
|
|
279
|
+
archiveChannel: (req, res) => runHandler(res, () => {
|
|
280
|
+
const principal = principalFromRequest(req);
|
|
281
|
+
service.archiveChannel(req.params.id, principal);
|
|
282
|
+
res.status(204).end();
|
|
283
|
+
}),
|
|
284
|
+
listMessages: (req, res) => runHandler(res, () => {
|
|
285
|
+
const principal = principalFromRequest(req);
|
|
286
|
+
const cursor = typeof req.query.cursor === 'string' ? req.query.cursor : null;
|
|
287
|
+
const limitRaw = req.query.limit;
|
|
288
|
+
const limit = typeof limitRaw === 'string' ? Number.parseInt(limitRaw, 10) : undefined;
|
|
289
|
+
const directionRaw = req.query.direction;
|
|
290
|
+
const direction = directionRaw === 'forward' ? 'forward' : 'backward';
|
|
291
|
+
const result = service.listMessages({
|
|
292
|
+
channelId: req.params.id,
|
|
293
|
+
principal,
|
|
294
|
+
cursor,
|
|
295
|
+
limit: Number.isFinite(limit) ? limit : undefined,
|
|
296
|
+
direction,
|
|
297
|
+
});
|
|
298
|
+
res.json({ success: true, data: result });
|
|
299
|
+
}),
|
|
300
|
+
/**
|
|
301
|
+
* POST /channels/:id/messages
|
|
302
|
+
*
|
|
303
|
+
* Order of operations:
|
|
304
|
+
* 1. Persist via `ChatV2Service.sendMessage` (resolves senderType from
|
|
305
|
+
* `principal.agentSession` — set by the `X-Crewly-Agent-Session`
|
|
306
|
+
* header when the agent's `reply-channel` skill is the caller).
|
|
307
|
+
* 2. Send HTTP 201 with the DTO (the contract-locked ack — clients
|
|
308
|
+
* reconcile optimistic pending bubbles by `clientMessageId`).
|
|
309
|
+
* 3. Broadcast a WS `message` frame so peer subscribers of the same
|
|
310
|
+
* channel see the row. Idempotent on the client — reconciliation
|
|
311
|
+
* dedupes by `clientMessageId` first, then by `id`.
|
|
312
|
+
* 4. If the message is USER-origin, kick the dispatcher to push the
|
|
313
|
+
* text into the agent session. Agent-origin messages skip this
|
|
314
|
+
* step to avoid self-loopback.
|
|
315
|
+
*
|
|
316
|
+
* Steps 3 + 4 are fire-and-forget: they run after `res.status(201)` so
|
|
317
|
+
* a broken WS / missing agent never blocks the HTTP ack.
|
|
318
|
+
*/
|
|
319
|
+
sendMessage: async (req, res) => {
|
|
320
|
+
// Persist + 201 — on error, runHandler serializes it and we bail
|
|
321
|
+
// without running any post-ack side-effects. On success, the
|
|
322
|
+
// closure populates `persisted` + `channelForDispatch`.
|
|
323
|
+
let persisted;
|
|
324
|
+
let channelForDispatch = null;
|
|
325
|
+
runHandler(res, () => {
|
|
326
|
+
const principal = principalFromRequest(req);
|
|
327
|
+
const body = req.body ?? {};
|
|
328
|
+
if (Array.isArray(body.attachments) && body.attachments.length > 0) {
|
|
329
|
+
throw new ChatError(CHAT_ERROR_CODES.VALIDATION, 400, 'attachments are not yet supported on this endpoint');
|
|
330
|
+
}
|
|
331
|
+
const message = service.sendMessage({
|
|
332
|
+
channelId: req.params.id,
|
|
333
|
+
principal,
|
|
334
|
+
content: body.content,
|
|
335
|
+
contentType: body.contentType,
|
|
336
|
+
clientMessageId: body.clientMessageId,
|
|
337
|
+
attachments: [],
|
|
338
|
+
// Phase A (SEALED §3.2) — mentions + threadId are forwarded to
|
|
339
|
+
// the service which validates and persists them.
|
|
340
|
+
mentions: body.mentions,
|
|
341
|
+
threadId: body.threadId,
|
|
342
|
+
});
|
|
343
|
+
res.status(201).json({ success: true, data: message });
|
|
344
|
+
persisted = message;
|
|
345
|
+
// Look up channel for gateway + dispatcher wiring. `getChannel`
|
|
346
|
+
// requires `principal.userId === channel.owner_user_id` — which
|
|
347
|
+
// matches both the normal user case and the agent-reply case
|
|
348
|
+
// (the agent's principal inherits the owner's userId in Phase 1).
|
|
349
|
+
try {
|
|
350
|
+
channelForDispatch = service.getChannel(message.channelId, {
|
|
351
|
+
userId: principal.userId,
|
|
352
|
+
source: principal.source,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
channelForDispatch = null;
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
// If `persisted` is still undefined, runHandler already serialized an
|
|
360
|
+
// error response — skip the realtime fan-out.
|
|
361
|
+
if (!persisted)
|
|
362
|
+
return;
|
|
363
|
+
// -------- post-ack realtime side-effects --------
|
|
364
|
+
const { gateway, dispatcher } = resolveDeps();
|
|
365
|
+
try {
|
|
366
|
+
if (gateway && channelForDispatch) {
|
|
367
|
+
gateway.broadcast(persisted.channelId, buildMessageEvent(persisted.channelId, persisted));
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
// broadcast must never break the ack
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
if (dispatcher && channelForDispatch && persisted.senderType === 'user') {
|
|
375
|
+
// Phase C BE.3 — single high-level entry point that branches
|
|
376
|
+
// on `channel.type` internally:
|
|
377
|
+
// `type='dm'` → 1:1 dispatch via dispatchToAgent (legacy)
|
|
378
|
+
// `type='channel'`→ resolve `mentions[]` → fan-out per target
|
|
379
|
+
// Fire-and-forget — already past the HTTP ack at this point.
|
|
380
|
+
void dispatcher.dispatchMessage(channelForDispatch, persisted);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
// dispatcher must never break the ack
|
|
385
|
+
}
|
|
386
|
+
// INBOUND-2 — V3 Request + SLA-tracking hooks. Mirrors the Slack
|
|
387
|
+
// ingress pattern at slack-orchestrator-bridge.ts:367-395.
|
|
388
|
+
// Fire-and-forget; failures are isolated inside the helpers.
|
|
389
|
+
try {
|
|
390
|
+
if (channelForDispatch) {
|
|
391
|
+
emitChatV2RequestCreated(channelForDispatch, persisted);
|
|
392
|
+
}
|
|
393
|
+
notifyChatV2AgentReply(persisted);
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
// INBOUND-2 hooks must never break the ack
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=chat-v2.controller.js.map
|