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
|
@@ -12,6 +12,22 @@
|
|
|
12
12
|
import { EventEmitter } from 'events';
|
|
13
13
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
14
|
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
15
|
+
import { createRequire } from 'module';
|
|
16
|
+
import { pathToFileURL } from 'url';
|
|
17
|
+
/**
|
|
18
|
+
* CJS-style `require` for the lazy CloudSync lookup below. Keeps the
|
|
19
|
+
* load deferred (CloudSync may not be available in all builds) without
|
|
20
|
+
* tripping `ReferenceError: require is not defined` under ESM.
|
|
21
|
+
*
|
|
22
|
+
* Anchor `createRequire` to `process.argv[1]` (entry script) instead of
|
|
23
|
+
* `import.meta.url`. The previous `new Function('return import.meta.url')()`
|
|
24
|
+
* trick parsed clean under ts-jest's CJS but failed at runtime because
|
|
25
|
+
* `new Function(...)` runs in non-module scope where `import.meta` is a
|
|
26
|
+
* SyntaxError.
|
|
27
|
+
*/
|
|
28
|
+
const nodeRequire = typeof require === 'function'
|
|
29
|
+
? require
|
|
30
|
+
: createRequire(pathToFileURL(process.argv[1] || process.cwd()).href);
|
|
15
31
|
import { existsSync } from 'fs';
|
|
16
32
|
import { join } from 'path';
|
|
17
33
|
import { homedir } from 'os';
|
|
@@ -108,7 +124,7 @@ export class CrossMachineMessageService extends EventEmitter {
|
|
|
108
124
|
}
|
|
109
125
|
// Cloud transport path: CloudSync is running
|
|
110
126
|
try {
|
|
111
|
-
const { CloudSyncService } =
|
|
127
|
+
const { CloudSyncService } = nodeRequire('../cloud/cloud-sync.service.js');
|
|
112
128
|
return CloudSyncService.getInstance().isStarted();
|
|
113
129
|
}
|
|
114
130
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-machine-message.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/cross-machine-message.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAuB,MAAM,qCAAqC,CAAC;AAEjG,OAAO,EAKL,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAchF,8CAA8C;AAC9C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,yBAAyB;AACzB,IAAI,eAAe,GAAsC,IAAI,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,0BAA2B,SAAQ,YAAY;IACzC,MAAM,CAAkB;IACjC,cAAc,CAAwB;IACtC,MAAM,GAA8B,IAAI,CAAC;IACzC,QAAQ,GAA0B,IAAI,CAAC;IACvC,WAAW,GAAG,KAAK,CAAC;IAE5B,gEAAgE;IACxD,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,2DAA2D;IAC1C,kBAAkB,CAAS;IAE5C;;;;OAIG;IACH,YAAY,cAAsC;QAChD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACnF,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,qBAAqB,CAAC,WAAW,EAAE,CAAC;QAC5E,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,uBAAuB,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YACpC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK;YACtC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,gBAAgB;SACtD,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"cross-machine-message.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/cross-machine-message.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -191,6 +191,17 @@ export declare class SlackOrchestratorBridge extends EventEmitter {
|
|
|
191
191
|
* delivers it to the Auditor PTY instead of the orchestrator. Includes Slack
|
|
192
192
|
* context (channel, thread) so the Auditor can respond.
|
|
193
193
|
*
|
|
194
|
+
* **Thread file enrichment (parity with `sendToOrchestrator` ~line 712):**
|
|
195
|
+
* When a `threadStore` and Slack `context` are available, the enriched
|
|
196
|
+
* message also carries a `[Thread context file: <path>]` line. Without
|
|
197
|
+
* this, the Auditor receives only the bare `[SLACK_CONTEXT:...]` prefix
|
|
198
|
+
* and cannot read prior thread history, causing context-blind replies.
|
|
199
|
+
* This is the bug Steve hit on 2026-04-25 (StevesPrompt deploy thread):
|
|
200
|
+
* orchestrator dropped, Slack fell through here, Auditor responded with
|
|
201
|
+
* "I cannot see the rest of the conversation" because the thread file
|
|
202
|
+
* pointer was missing. Bringing the enrichment in line with the
|
|
203
|
+
* orchestrator path closes the gap.
|
|
204
|
+
*
|
|
194
205
|
* @param message - Original user message
|
|
195
206
|
* @param context - Slack conversation context
|
|
196
207
|
* @returns Acknowledgement message to the user
|
|
@@ -254,12 +265,39 @@ export declare class SlackOrchestratorBridge extends EventEmitter {
|
|
|
254
265
|
* @param message - Message to mark complete
|
|
255
266
|
*/
|
|
256
267
|
private markComplete;
|
|
268
|
+
/**
|
|
269
|
+
* Add a completion reaction (✅) to a message that was previously
|
|
270
|
+
* stored as a pending reaction. Consumes the pending reaction.
|
|
271
|
+
*
|
|
272
|
+
* @param channelId - Slack channel ID
|
|
273
|
+
* @param threadTs - Thread timestamp (key for lookup)
|
|
274
|
+
*/
|
|
275
|
+
addCompletionReaction(channelId: string, threadTs: string): Promise<void>;
|
|
257
276
|
/**
|
|
258
277
|
* Record response to thread store. Slack delivery is handled exclusively
|
|
259
278
|
* by the reply-slack skill via the API — no terminal output fallback needed.
|
|
260
279
|
*
|
|
280
|
+
* The `fromOrcReply` flag gates the V3 SLA auto-resolve hook
|
|
281
|
+
* (`markResolvedByThread`). Only real orc replies (delivered via the
|
|
282
|
+
* orc's reply-slack skill → `slackResolve` callback) may auto-resolve
|
|
283
|
+
* the SLA tracker. Placeholder / timeout / offline / fallback responses
|
|
284
|
+
* must NOT trigger the cascade — doing so closes the parent Request to
|
|
285
|
+
* `done` even though the orc never actually replied (Steve 2026-04-30
|
|
286
|
+
* incident: false-done Request, paired with Bug 1 silent-drop in
|
|
287
|
+
* agent-registration.service.ts).
|
|
288
|
+
*
|
|
289
|
+
* Default `fromOrcReply = true` preserves the legacy behaviour for the
|
|
290
|
+
* mention-routing call site (line ~327) which currently has no
|
|
291
|
+
* placeholder semantics — its `sendToAgent` path delivers a direct
|
|
292
|
+
* agent reply when reachable. If that path later grows a timeout
|
|
293
|
+
* fallback, the call site should pass `false` explicitly.
|
|
294
|
+
*
|
|
261
295
|
* @param originalMessage - Original incoming message
|
|
262
|
-
* @param response
|
|
296
|
+
* @param response - Response content (real reply or placeholder)
|
|
297
|
+
* @param fromOrcReply - `true` only when the response came from a
|
|
298
|
+
* real agent/orc reply path. `false` for any timeout / fallback /
|
|
299
|
+
* offline acknowledgement. Drives whether the SLA tracker is
|
|
300
|
+
* auto-resolved for the matching Slack thread.
|
|
263
301
|
*/
|
|
264
302
|
private sendSlackResponse;
|
|
265
303
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-orchestrator-bridge.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-orchestrator-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AActC,OAAO,EAEL,iBAAiB,EAQjB,kBAAkB,EAEnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAK/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6BAA6B;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"slack-orchestrator-bridge.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-orchestrator-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -272,25 +272,39 @@ export class SlackOrchestratorBridge extends EventEmitter {
|
|
|
272
272
|
if (this.config.showTypingIndicator) {
|
|
273
273
|
await this.addTypingIndicator(message);
|
|
274
274
|
}
|
|
275
|
-
// Handle based on intent
|
|
275
|
+
// Handle based on intent.
|
|
276
|
+
// `response` is the user-visible text; `fromOrcReply` tracks whether
|
|
277
|
+
// the response came from the orc's reply-slack callback (true) or a
|
|
278
|
+
// local string / fallback / placeholder (false). Only true responses
|
|
279
|
+
// may auto-resolve the V3 SLA tracker downstream.
|
|
276
280
|
let response;
|
|
281
|
+
let fromOrcReply = false;
|
|
277
282
|
let isOrchestratorRoute = false;
|
|
278
283
|
switch (command.intent) {
|
|
279
284
|
case 'help':
|
|
280
285
|
response = this.getHelpMessage();
|
|
281
286
|
break;
|
|
282
|
-
case 'status':
|
|
283
|
-
|
|
287
|
+
case 'status': {
|
|
288
|
+
const r = await this.handleStatusCommand(command, context);
|
|
289
|
+
response = r.response;
|
|
290
|
+
fromOrcReply = r.fromOrcReply;
|
|
284
291
|
break;
|
|
292
|
+
}
|
|
285
293
|
case 'list_projects':
|
|
286
294
|
case 'list_teams':
|
|
287
|
-
case 'list_agents':
|
|
288
|
-
|
|
295
|
+
case 'list_agents': {
|
|
296
|
+
const r = await this.handleListCommand(command, context);
|
|
297
|
+
response = r.response;
|
|
298
|
+
fromOrcReply = r.fromOrcReply;
|
|
289
299
|
break;
|
|
300
|
+
}
|
|
290
301
|
case 'pause':
|
|
291
|
-
case 'resume':
|
|
292
|
-
|
|
302
|
+
case 'resume': {
|
|
303
|
+
const r = await this.handleControlCommand(command, context);
|
|
304
|
+
response = r.response;
|
|
305
|
+
fromOrcReply = r.fromOrcReply;
|
|
293
306
|
break;
|
|
307
|
+
}
|
|
294
308
|
default:
|
|
295
309
|
// V3 Request creation for Slack user messages — fire-and-forget
|
|
296
310
|
setImmediate(async () => {
|
|
@@ -309,10 +323,10 @@ export class SlackOrchestratorBridge extends EventEmitter {
|
|
|
309
323
|
priority: 'normal',
|
|
310
324
|
tags: ['slack'],
|
|
311
325
|
});
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
|
|
326
|
+
// P2-2: RequestTracker.setActiveRequest write removed. The
|
|
327
|
+
// companion read in v3-data.service.ts no longer falls back
|
|
328
|
+
// to time-window correlation; downstream delegate-task
|
|
329
|
+
// skills must now pass requestId explicitly.
|
|
316
330
|
this.logger.debug('V3 Request created from Slack message', { msgId, requestId: request.id });
|
|
317
331
|
}
|
|
318
332
|
}
|
|
@@ -323,11 +337,17 @@ export class SlackOrchestratorBridge extends EventEmitter {
|
|
|
323
337
|
}
|
|
324
338
|
});
|
|
325
339
|
// Send to orchestrator for processing
|
|
326
|
-
|
|
340
|
+
{
|
|
341
|
+
const r = await this.sendToOrchestrator(message.text, context);
|
|
342
|
+
response = r.response;
|
|
343
|
+
fromOrcReply = r.fromOrcReply;
|
|
344
|
+
}
|
|
327
345
|
isOrchestratorRoute = true;
|
|
328
346
|
}
|
|
329
|
-
// Send response back to Slack
|
|
330
|
-
|
|
347
|
+
// Send response back to Slack. The `fromOrcReply` flag gates the V3
|
|
348
|
+
// SLA auto-resolve hook inside sendSlackResponse — placeholders and
|
|
349
|
+
// fallbacks must NOT mark the respond_to_user WI as resolved.
|
|
350
|
+
await this.sendSlackResponse(message, response, fromOrcReply);
|
|
331
351
|
// For orchestrator-routed messages, defer ✅ until reply-slack delivers
|
|
332
352
|
// the actual response. Store pending reaction keyed by channel+thread
|
|
333
353
|
// so addCompletionReaction() can find it when the reply arrives.
|
|
@@ -521,11 +541,15 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
521
541
|
const auditorActive = await isAgentActive(auditorSession);
|
|
522
542
|
if (auditorActive) {
|
|
523
543
|
this.logger.info('Orchestrator offline — routing message to Auditor agent');
|
|
524
|
-
|
|
544
|
+
// Auditor fallback is NOT an orc reply — caller must not auto-resolve SLA.
|
|
545
|
+
const fallback = await this.sendToAuditorFallback(message, context);
|
|
546
|
+
return { response: fallback, fromOrcReply: false };
|
|
525
547
|
}
|
|
526
548
|
// #247: Queue the message for replay when orchestrator comes back online,
|
|
527
549
|
// instead of silently dropping it. The queue processor defers delivery
|
|
528
550
|
// until the orchestrator registers (agentStatus === 'active').
|
|
551
|
+
// NOTE: This is an offline-path acknowledgement, NOT a real orc reply —
|
|
552
|
+
// every return from this branch must set `fromOrcReply: false`.
|
|
529
553
|
if (this.messageQueueService) {
|
|
530
554
|
this.logger.info('Orchestrator offline — queuing message for replay when it comes back online');
|
|
531
555
|
// Enrich message with thread file path hint for orchestrator context
|
|
@@ -579,7 +603,10 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
579
603
|
});
|
|
580
604
|
}
|
|
581
605
|
}
|
|
582
|
-
return
|
|
606
|
+
return {
|
|
607
|
+
response: 'The orchestrator is currently offline. Your message has been queued and will be processed when it comes back online.',
|
|
608
|
+
fromOrcReply: false,
|
|
609
|
+
};
|
|
583
610
|
}
|
|
584
611
|
catch (enqueueErr) {
|
|
585
612
|
this.logger.warn('Failed to queue message for offline orchestrator', {
|
|
@@ -588,12 +615,15 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
588
615
|
}
|
|
589
616
|
}
|
|
590
617
|
this.logger.info('Orchestrator is not active, returning offline message');
|
|
591
|
-
return getOrchestratorOfflineMessage(true);
|
|
618
|
+
return { response: getOrchestratorOfflineMessage(true), fromOrcReply: false };
|
|
592
619
|
}
|
|
593
620
|
// Check if message queue service is available
|
|
594
621
|
if (!this.messageQueueService) {
|
|
595
622
|
this.logger.error('Message queue service not configured');
|
|
596
|
-
return
|
|
623
|
+
return {
|
|
624
|
+
response: 'The Slack bridge is not properly configured. Please restart the server.',
|
|
625
|
+
fromOrcReply: false,
|
|
626
|
+
};
|
|
597
627
|
}
|
|
598
628
|
// Enrich message with thread file path hint for orchestrator context
|
|
599
629
|
let enrichedMessage = message;
|
|
@@ -614,12 +644,21 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
614
644
|
// Enqueue the message with a resolve callback for response routing.
|
|
615
645
|
// The QueueProcessorService will call slackResolve() when the
|
|
616
646
|
// orchestrator responds, unblocking this promise.
|
|
617
|
-
|
|
647
|
+
//
|
|
648
|
+
// The promise resolves with `{response, fromOrcReply}`. `fromOrcReply`
|
|
649
|
+
// is `true` ONLY when slackResolve fires (orc's reply-slack skill
|
|
650
|
+
// delivered an actual reply). On responseTimeoutMs or enqueue failure
|
|
651
|
+
// it is `false` — the placeholder must NOT auto-resolve the SLA
|
|
652
|
+
// tracker (Steve 2026-04-30 incident: false-done Request cascade).
|
|
653
|
+
const orcResponse = await new Promise((resolve) => {
|
|
618
654
|
let resolved = false;
|
|
619
655
|
const timeoutId = setTimeout(() => {
|
|
620
656
|
if (!resolved) {
|
|
621
657
|
resolved = true;
|
|
622
|
-
resolve(
|
|
658
|
+
resolve({
|
|
659
|
+
response: 'The orchestrator is still processing your request. It will reply here when ready — no need to resend.',
|
|
660
|
+
fromOrcReply: false,
|
|
661
|
+
});
|
|
623
662
|
}
|
|
624
663
|
}, this.config.responseTimeoutMs);
|
|
625
664
|
try {
|
|
@@ -632,7 +671,8 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
632
671
|
if (!resolved) {
|
|
633
672
|
resolved = true;
|
|
634
673
|
clearTimeout(timeoutId);
|
|
635
|
-
resolve
|
|
674
|
+
// Real orc reply path — safe to auto-resolve the SLA tracker.
|
|
675
|
+
resolve({ response: resp, fromOrcReply: true });
|
|
636
676
|
}
|
|
637
677
|
},
|
|
638
678
|
userId: context?.userId,
|
|
@@ -669,11 +709,14 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
669
709
|
if (!resolved) {
|
|
670
710
|
resolved = true;
|
|
671
711
|
clearTimeout(timeoutId);
|
|
672
|
-
resolve(
|
|
712
|
+
resolve({
|
|
713
|
+
response: `Failed to enqueue message: ${enqueueErr instanceof Error ? enqueueErr.message : String(enqueueErr)}`,
|
|
714
|
+
fromOrcReply: false,
|
|
715
|
+
});
|
|
673
716
|
}
|
|
674
717
|
}
|
|
675
718
|
});
|
|
676
|
-
return
|
|
719
|
+
return orcResponse;
|
|
677
720
|
}
|
|
678
721
|
catch (error) {
|
|
679
722
|
this.logger.error('Error sending to orchestrator', { error: error instanceof Error ? error.message : String(error) });
|
|
@@ -687,6 +730,17 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
687
730
|
* delivers it to the Auditor PTY instead of the orchestrator. Includes Slack
|
|
688
731
|
* context (channel, thread) so the Auditor can respond.
|
|
689
732
|
*
|
|
733
|
+
* **Thread file enrichment (parity with `sendToOrchestrator` ~line 712):**
|
|
734
|
+
* When a `threadStore` and Slack `context` are available, the enriched
|
|
735
|
+
* message also carries a `[Thread context file: <path>]` line. Without
|
|
736
|
+
* this, the Auditor receives only the bare `[SLACK_CONTEXT:...]` prefix
|
|
737
|
+
* and cannot read prior thread history, causing context-blind replies.
|
|
738
|
+
* This is the bug Steve hit on 2026-04-25 (StevesPrompt deploy thread):
|
|
739
|
+
* orchestrator dropped, Slack fell through here, Auditor responded with
|
|
740
|
+
* "I cannot see the rest of the conversation" because the thread file
|
|
741
|
+
* pointer was missing. Bringing the enrichment in line with the
|
|
742
|
+
* orchestrator path closes the gap.
|
|
743
|
+
*
|
|
690
744
|
* @param message - Original user message
|
|
691
745
|
* @param context - Slack conversation context
|
|
692
746
|
* @returns Acknowledgement message to the user
|
|
@@ -697,7 +751,11 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
697
751
|
const slackPrefix = context
|
|
698
752
|
? `[SLACK_CONTEXT:channelId=${context.channelId},threadTs=${context.threadTs || ''}]`
|
|
699
753
|
: '';
|
|
700
|
-
|
|
754
|
+
let enrichedMessage = `${slackPrefix} [FALLBACK] Orchestrator is offline. User message:\n${message}`;
|
|
755
|
+
if (this.threadStore && context) {
|
|
756
|
+
const threadFilePath = this.threadStore.getThreadFilePath(context.channelId, context.threadTs);
|
|
757
|
+
enrichedMessage += `\n\n[Thread context file: ${threadFilePath}]`;
|
|
758
|
+
}
|
|
701
759
|
// Try to enqueue via the message queue (same path as orchestrator delivery)
|
|
702
760
|
if (this.messageQueueService) {
|
|
703
761
|
try {
|
|
@@ -1075,15 +1133,89 @@ Just type naturally to chat with the orchestrator!`;
|
|
|
1075
1133
|
// Silent fail for missing_scope since we already logged about it
|
|
1076
1134
|
}
|
|
1077
1135
|
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Add a completion reaction (✅) to a message that was previously
|
|
1138
|
+
* stored as a pending reaction. Consumes the pending reaction.
|
|
1139
|
+
*
|
|
1140
|
+
* @param channelId - Slack channel ID
|
|
1141
|
+
* @param threadTs - Thread timestamp (key for lookup)
|
|
1142
|
+
*/
|
|
1143
|
+
async addCompletionReaction(channelId, threadTs) {
|
|
1144
|
+
const key = `${channelId}:${threadTs}`;
|
|
1145
|
+
const messageTs = this.pendingReactions.get(key);
|
|
1146
|
+
if (messageTs) {
|
|
1147
|
+
// Consume the pending reaction
|
|
1148
|
+
this.pendingReactions.delete(key);
|
|
1149
|
+
try {
|
|
1150
|
+
await this.slackService.addReaction(channelId, messageTs, 'white_check_mark');
|
|
1151
|
+
}
|
|
1152
|
+
catch (error) {
|
|
1153
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
1154
|
+
// Suppress "already_reacted" errors as they are common and non-fatal
|
|
1155
|
+
if (errMsg.includes('already_reacted')) {
|
|
1156
|
+
return;
|
|
1157
|
+
}
|
|
1158
|
+
// Suppress "missing_scope" since we already log/warn about that elsewhere
|
|
1159
|
+
if (!errMsg.includes('missing_scope')) {
|
|
1160
|
+
this.logger.warn('Failed to add completion reaction', { channelId, messageTs, error: errMsg });
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1078
1165
|
/**
|
|
1079
1166
|
* Record response to thread store. Slack delivery is handled exclusively
|
|
1080
1167
|
* by the reply-slack skill via the API — no terminal output fallback needed.
|
|
1081
1168
|
*
|
|
1169
|
+
* The `fromOrcReply` flag gates the V3 SLA auto-resolve hook
|
|
1170
|
+
* (`markResolvedByThread`). Only real orc replies (delivered via the
|
|
1171
|
+
* orc's reply-slack skill → `slackResolve` callback) may auto-resolve
|
|
1172
|
+
* the SLA tracker. Placeholder / timeout / offline / fallback responses
|
|
1173
|
+
* must NOT trigger the cascade — doing so closes the parent Request to
|
|
1174
|
+
* `done` even though the orc never actually replied (Steve 2026-04-30
|
|
1175
|
+
* incident: false-done Request, paired with Bug 1 silent-drop in
|
|
1176
|
+
* agent-registration.service.ts).
|
|
1177
|
+
*
|
|
1178
|
+
* Default `fromOrcReply = true` preserves the legacy behaviour for the
|
|
1179
|
+
* mention-routing call site (line ~327) which currently has no
|
|
1180
|
+
* placeholder semantics — its `sendToAgent` path delivers a direct
|
|
1181
|
+
* agent reply when reachable. If that path later grows a timeout
|
|
1182
|
+
* fallback, the call site should pass `false` explicitly.
|
|
1183
|
+
*
|
|
1082
1184
|
* @param originalMessage - Original incoming message
|
|
1083
|
-
* @param response
|
|
1185
|
+
* @param response - Response content (real reply or placeholder)
|
|
1186
|
+
* @param fromOrcReply - `true` only when the response came from a
|
|
1187
|
+
* real agent/orc reply path. `false` for any timeout / fallback /
|
|
1188
|
+
* offline acknowledgement. Drives whether the SLA tracker is
|
|
1189
|
+
* auto-resolved for the matching Slack thread.
|
|
1084
1190
|
*/
|
|
1085
|
-
async sendSlackResponse(originalMessage, response) {
|
|
1191
|
+
async sendSlackResponse(originalMessage, response, fromOrcReply = true) {
|
|
1086
1192
|
await this.recordThreadReply(originalMessage, response);
|
|
1193
|
+
// INBOUND-1.4: notify the RequestSlaSubscriber that the orc replied to
|
|
1194
|
+
// this Slack thread so any tracked respond_to_user WorkItem can
|
|
1195
|
+
// auto-transition and the SLA timers no-op. Lazy import breaks the
|
|
1196
|
+
// static cycle (subscriber boot wires this bridge).
|
|
1197
|
+
if (!fromOrcReply) {
|
|
1198
|
+
this.logger.debug('Skipping SLA auto-resolve — response is not a real orc reply', {
|
|
1199
|
+
threadTs: originalMessage.ts,
|
|
1200
|
+
responsePreview: response.slice(0, 60),
|
|
1201
|
+
});
|
|
1202
|
+
return;
|
|
1203
|
+
}
|
|
1204
|
+
try {
|
|
1205
|
+
const { getRequestSlaSubscriber } = await import('../v3/request-sla.subscriber.js');
|
|
1206
|
+
const sub = getRequestSlaSubscriber();
|
|
1207
|
+
if (sub) {
|
|
1208
|
+
// sourceConversationItemId for slack messages is `slack-${channelId}-${ts}`
|
|
1209
|
+
// (see line ~372 above); the threadTs we index on is the original
|
|
1210
|
+
// user message ts. originalMessage.ts is exactly that.
|
|
1211
|
+
await sub.markResolvedByThread(originalMessage.ts);
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
catch (err) {
|
|
1215
|
+
this.logger.debug('SLA auto-resolve hook failed (non-critical)', {
|
|
1216
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1217
|
+
});
|
|
1218
|
+
}
|
|
1087
1219
|
}
|
|
1088
1220
|
/**
|
|
1089
1221
|
* Send error response
|