crewly 1.6.1 → 1.6.2
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/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/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 +46 -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 +193 -57
- 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 +7 -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 +15 -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 +7 -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 +15 -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
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active Work Briefing Service
|
|
3
|
+
*
|
|
4
|
+
* Generates an authoritative-state briefing for an agent at session startup
|
|
5
|
+
* (and on-demand mid-session via the `core/get-my-active-work` skill).
|
|
6
|
+
*
|
|
7
|
+
* Today the agent recovery prompt is memory-only — `SessionMemoryService`
|
|
8
|
+
* dumps the last session summary, agent/project knowledge, daily logs, and
|
|
9
|
+
* recent learning files. That is supplementary; it does NOT capture
|
|
10
|
+
* authoritative runtime state. Symptom: an agent restarts amnesiac about
|
|
11
|
+
* Requests it owes a reply on, queued WorkItems that survived the restart,
|
|
12
|
+
* and in-flight delegations.
|
|
13
|
+
*
|
|
14
|
+
* This service mirrors `SessionMemoryService` (`generate*` + `format*`
|
|
15
|
+
* methods, singleton, soft-fail wrapping at the call site) and produces a
|
|
16
|
+
* per-agent slice of the live Request + WorkItem state. The briefing is
|
|
17
|
+
* prepended ABOVE the memory briefing in the agent's startup prompt so the
|
|
18
|
+
* first thing the agent reads is "what am I on the hook for RIGHT NOW".
|
|
19
|
+
*
|
|
20
|
+
* Sources:
|
|
21
|
+
* - {@link RequestService.listAll} — all Requests on disk
|
|
22
|
+
* - {@link TaskPoolService.getAllItems} — all WorkItems in the pool
|
|
23
|
+
*
|
|
24
|
+
* Design doc: `/tmp/agent-state-recovery-design.md` (architect output)
|
|
25
|
+
* GitHub issue: stevehuang0115/crewly#395
|
|
26
|
+
*
|
|
27
|
+
* @module services/agent/active-work-briefing.service
|
|
28
|
+
*/
|
|
29
|
+
import type { Request, RequestStatus } from '../../types/v2/request.types.js';
|
|
30
|
+
import type { WorkItem, WorkItemStatus } from '../../types/v2/work-item.types.js';
|
|
31
|
+
/**
|
|
32
|
+
* Narrow projection of `RequestService` used by the briefing — only
|
|
33
|
+
* `listAll` is needed. Defining the contract here lets the test inject a
|
|
34
|
+
* fake without dragging in the full RequestService surface.
|
|
35
|
+
*/
|
|
36
|
+
interface RequestProvider {
|
|
37
|
+
listAll(): Promise<Request[]>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Narrow projection of `TaskPoolService` used by the briefing — only
|
|
41
|
+
* `getAllItems` is needed.
|
|
42
|
+
*/
|
|
43
|
+
interface TaskPoolProvider {
|
|
44
|
+
getAllItems(): Promise<WorkItem[]>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Per-section item cap shape used both for {@link DEFAULT_CAPS} and for
|
|
48
|
+
* {@link GenerateOptions.caps} overrides. Kept as a plain `number` so the
|
|
49
|
+
* orchestrator multiplier path can return the multiplied value without
|
|
50
|
+
* confusing TypeScript with literal types.
|
|
51
|
+
*/
|
|
52
|
+
export interface BriefingCaps {
|
|
53
|
+
openRequests: number;
|
|
54
|
+
activeWorkItems: number;
|
|
55
|
+
pendingReviews: number;
|
|
56
|
+
outboundDelegations: number;
|
|
57
|
+
recentlyAutoResolved: number;
|
|
58
|
+
}
|
|
59
|
+
/** Priority value used for sorting briefing rows. */
|
|
60
|
+
export type BriefingPriority = 'high' | 'normal' | 'low';
|
|
61
|
+
/**
|
|
62
|
+
* One Request row in the briefing.
|
|
63
|
+
*/
|
|
64
|
+
export interface OpenRequestRow {
|
|
65
|
+
id: string;
|
|
66
|
+
title: string;
|
|
67
|
+
status: RequestStatus;
|
|
68
|
+
priority: BriefingPriority;
|
|
69
|
+
ageHours: number;
|
|
70
|
+
source?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* One WorkItem row in the briefing.
|
|
74
|
+
*/
|
|
75
|
+
export interface ActiveWorkItemRow {
|
|
76
|
+
id: string;
|
|
77
|
+
title: string;
|
|
78
|
+
status: WorkItemStatus;
|
|
79
|
+
ageHours: number;
|
|
80
|
+
priority: BriefingPriority;
|
|
81
|
+
requestId?: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Pending review row — a WorkItem in `done_by_worker` awaiting this agent's
|
|
86
|
+
* verification.
|
|
87
|
+
*/
|
|
88
|
+
export interface PendingReviewRow {
|
|
89
|
+
id: string;
|
|
90
|
+
title: string;
|
|
91
|
+
ageHours: number;
|
|
92
|
+
claimedBy?: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Outbound delegation row — a WorkItem this agent delegated, still in-flight.
|
|
96
|
+
*/
|
|
97
|
+
export interface OutboundDelegationRow {
|
|
98
|
+
id: string;
|
|
99
|
+
title: string;
|
|
100
|
+
status: WorkItemStatus;
|
|
101
|
+
ageHours: number;
|
|
102
|
+
target?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Recently auto-resolved row — closed by an SLA / system action within the
|
|
106
|
+
* configured window. Surfaces "this just closed while you were down".
|
|
107
|
+
*/
|
|
108
|
+
export interface RecentlyResolvedRow {
|
|
109
|
+
id: string;
|
|
110
|
+
title: string;
|
|
111
|
+
resolvedAt: string;
|
|
112
|
+
resolvedReason?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Per-section truncation marker. When a section exceeds its cap, the
|
|
116
|
+
* service emits the top N rows + a marker telling the agent how many were
|
|
117
|
+
* dropped and how to fetch the rest.
|
|
118
|
+
*/
|
|
119
|
+
export interface SectionTruncation {
|
|
120
|
+
/** Total candidate items before the cap was applied. */
|
|
121
|
+
totalCandidates: number;
|
|
122
|
+
/** Per-section cap that was applied. */
|
|
123
|
+
cap: number;
|
|
124
|
+
/** True if any rows were dropped. */
|
|
125
|
+
truncated: boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Briefing payload. Pure state, no formatting.
|
|
129
|
+
*/
|
|
130
|
+
export interface ActiveWorkBriefing {
|
|
131
|
+
openRequests: OpenRequestRow[];
|
|
132
|
+
activeWorkItems: ActiveWorkItemRow[];
|
|
133
|
+
pendingReviews: PendingReviewRow[];
|
|
134
|
+
outboundDelegations: OutboundDelegationRow[];
|
|
135
|
+
recentlyAutoResolved: RecentlyResolvedRow[];
|
|
136
|
+
/** Per-section truncation metadata. */
|
|
137
|
+
truncation: {
|
|
138
|
+
openRequests: SectionTruncation;
|
|
139
|
+
activeWorkItems: SectionTruncation;
|
|
140
|
+
pendingReviews: SectionTruncation;
|
|
141
|
+
outboundDelegations: SectionTruncation;
|
|
142
|
+
recentlyAutoResolved: SectionTruncation;
|
|
143
|
+
};
|
|
144
|
+
/** Aggregate truncation flag (any section truncated). */
|
|
145
|
+
truncated: boolean;
|
|
146
|
+
/** Snapshot timestamp. */
|
|
147
|
+
generatedAt: string;
|
|
148
|
+
/**
|
|
149
|
+
* Raw counts before per-section caps. Useful for the agent to know
|
|
150
|
+
* the system-wide load.
|
|
151
|
+
*/
|
|
152
|
+
totalCounts: {
|
|
153
|
+
requests: number;
|
|
154
|
+
workItems: number;
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Optional generation overrides — used by tests and by the skill endpoint
|
|
159
|
+
* for fine-grained control.
|
|
160
|
+
*/
|
|
161
|
+
export interface GenerateOptions {
|
|
162
|
+
/** Override the per-section caps. Useful for tests. */
|
|
163
|
+
caps?: Partial<BriefingCaps>;
|
|
164
|
+
/** Override the recently-resolved window in milliseconds. */
|
|
165
|
+
recentlyResolvedWindowMs?: number;
|
|
166
|
+
/** Override "now" for deterministic tests. */
|
|
167
|
+
nowMs?: number;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Memory hints map — caller passes keys like `wi:<id>` or `req:<id>`
|
|
171
|
+
* mapped to a short note string. The formatter cross-references this map
|
|
172
|
+
* when emitting each row and appends `(memory: <note>)` to the row line.
|
|
173
|
+
*
|
|
174
|
+
* Keys are namespaced so `req:` and `wi:` cannot collide.
|
|
175
|
+
*/
|
|
176
|
+
export type MemoryHints = ReadonlyMap<string, string>;
|
|
177
|
+
/**
|
|
178
|
+
* Singleton service producing per-agent active-work briefings.
|
|
179
|
+
*
|
|
180
|
+
* Mirrors the `SessionMemoryService.generate* + format*` shape so the
|
|
181
|
+
* `agent-registration.service.ts` glue can call them in parallel and
|
|
182
|
+
* concatenate the markdown.
|
|
183
|
+
*
|
|
184
|
+
* Stateless beyond singleton bookkeeping — every call hits the live
|
|
185
|
+
* `RequestService` + `TaskPoolService` instances.
|
|
186
|
+
*/
|
|
187
|
+
export declare class ActiveWorkBriefingService {
|
|
188
|
+
private readonly requestServiceFactory;
|
|
189
|
+
private readonly taskPoolFactory;
|
|
190
|
+
private static instance;
|
|
191
|
+
private readonly logger;
|
|
192
|
+
/**
|
|
193
|
+
* Private constructor — use {@link getInstance}. The `requestServiceFactory`
|
|
194
|
+
* and `taskPoolFactory` are dependency seams for tests; production code
|
|
195
|
+
* lets {@link getInstance} provide the live singletons.
|
|
196
|
+
*/
|
|
197
|
+
private constructor();
|
|
198
|
+
/**
|
|
199
|
+
* Returns the singleton instance.
|
|
200
|
+
*
|
|
201
|
+
* The `RequestService` and `TaskPoolService` modules are loaded LAZILY here
|
|
202
|
+
* (CommonJS `require` rather than top-of-file `import`) so that consumers
|
|
203
|
+
* of this module do not pay the import cost — and more importantly, do not
|
|
204
|
+
* transitively load `chokidar` via `v3-data.service.ts` — until they
|
|
205
|
+
* actually call `getInstance()`. This keeps the agent-registration test
|
|
206
|
+
* suite mockable without forcing every caller to mock the v3 pipeline.
|
|
207
|
+
*/
|
|
208
|
+
static getInstance(): ActiveWorkBriefingService;
|
|
209
|
+
/**
|
|
210
|
+
* Resets the singleton — for tests only.
|
|
211
|
+
*/
|
|
212
|
+
static resetInstance(): void;
|
|
213
|
+
/**
|
|
214
|
+
* Test-only escape hatch to swap the underlying service factories.
|
|
215
|
+
* Production code never calls this; the public surface is the singleton.
|
|
216
|
+
*
|
|
217
|
+
* @param requestServiceFactory - Returns a `listAll` provider
|
|
218
|
+
* @param taskPoolFactory - Returns a `getAllItems` provider
|
|
219
|
+
*/
|
|
220
|
+
static createForTest(requestServiceFactory: () => RequestProvider, taskPoolFactory: () => TaskPoolProvider): ActiveWorkBriefingService;
|
|
221
|
+
/**
|
|
222
|
+
* Compute the effective per-section caps for the requested role. Orchestrator
|
|
223
|
+
* gets caps × 3 for system-wide visibility; everyone else uses the defaults
|
|
224
|
+
* (with optional overrides from {@link GenerateOptions.caps}).
|
|
225
|
+
*
|
|
226
|
+
* @param role - Agent role (orchestrator gets the multiplier)
|
|
227
|
+
* @param overrides - Optional explicit caps that win over both defaults and
|
|
228
|
+
* the role multiplier.
|
|
229
|
+
* @returns Effective caps for each section
|
|
230
|
+
*/
|
|
231
|
+
private resolveCaps;
|
|
232
|
+
/**
|
|
233
|
+
* Convert a 'low' | 'normal' | 'high' priority to a sort key.
|
|
234
|
+
* Higher number = higher priority (sorted DESC).
|
|
235
|
+
*
|
|
236
|
+
* @param p - Priority value
|
|
237
|
+
* @returns Numeric sort key
|
|
238
|
+
*/
|
|
239
|
+
private priorityRank;
|
|
240
|
+
/**
|
|
241
|
+
* Compute age in hours since `createdAt`. Negative or NaN inputs are
|
|
242
|
+
* coerced to 0 — defensive against malformed timestamps.
|
|
243
|
+
*
|
|
244
|
+
* @param createdAt - ISO8601 timestamp
|
|
245
|
+
* @param nowMs - Current time in milliseconds
|
|
246
|
+
* @returns Age in hours (>= 0)
|
|
247
|
+
*/
|
|
248
|
+
private ageHours;
|
|
249
|
+
/**
|
|
250
|
+
* Read a string-typed field from a `metadata` blob, or null if missing /
|
|
251
|
+
* not a string. WorkItem.metadata is typed as `Record<string, unknown>` so
|
|
252
|
+
* every read needs this guard.
|
|
253
|
+
*
|
|
254
|
+
* @param metadata - WorkItem.metadata or undefined
|
|
255
|
+
* @param key - Field name to read
|
|
256
|
+
* @returns Trimmed string value or null
|
|
257
|
+
*/
|
|
258
|
+
private readMetadataString;
|
|
259
|
+
/**
|
|
260
|
+
* Apply the per-section cap. Returns the slice + a {@link SectionTruncation}
|
|
261
|
+
* object that the formatter renders as a "... and X more" marker.
|
|
262
|
+
*
|
|
263
|
+
* @param items - Sorted candidate rows
|
|
264
|
+
* @param cap - Per-section cap
|
|
265
|
+
* @returns Truncation metadata + the kept rows
|
|
266
|
+
*/
|
|
267
|
+
private applyCap;
|
|
268
|
+
/**
|
|
269
|
+
* Project Requests visible to this agent. Non-orchestrator agents only see
|
|
270
|
+
* Requests where they are the `ownerAgent`; the orchestrator sees all open
|
|
271
|
+
* Requests system-wide.
|
|
272
|
+
*
|
|
273
|
+
* @param requests - All Requests from {@link RequestService.listAll}
|
|
274
|
+
* @param sessionName - Agent session name
|
|
275
|
+
* @param role - Agent role
|
|
276
|
+
* @param nowMs - "Now" for age computation
|
|
277
|
+
* @returns Sorted candidate rows (priority DESC, then age DESC — older first)
|
|
278
|
+
*/
|
|
279
|
+
private projectRequests;
|
|
280
|
+
/**
|
|
281
|
+
* Project active WorkItems for this agent: items the agent is on the hook
|
|
282
|
+
* to execute (target=me) OR items the agent has actively claimed
|
|
283
|
+
* (claimedBy=me, surfaced via `metadata.claimedBy`). Items targeted at this
|
|
284
|
+
* agent but already claimed by *another* agent are excluded — they are
|
|
285
|
+
* not actionable for the current session.
|
|
286
|
+
*
|
|
287
|
+
* Orchestrator override: include ALL active work items.
|
|
288
|
+
*
|
|
289
|
+
* @param items - All WorkItems from {@link TaskPoolService.getAllItems}
|
|
290
|
+
* @param sessionName - Agent session name
|
|
291
|
+
* @param role - Agent role
|
|
292
|
+
* @param nowMs - "Now" for age computation
|
|
293
|
+
* @returns Sorted candidate rows
|
|
294
|
+
*/
|
|
295
|
+
private projectActiveWorkItems;
|
|
296
|
+
/**
|
|
297
|
+
* Pending review rows — WorkItems in `done_by_worker` where this agent
|
|
298
|
+
* is the verifier. Verifier signal = `metadata.verifier === sessionName`
|
|
299
|
+
* (TL/orchestrator pattern). For the orchestrator role we surface ALL
|
|
300
|
+
* `done_by_worker` items system-wide.
|
|
301
|
+
*
|
|
302
|
+
* @param items - All WorkItems from the pool
|
|
303
|
+
* @param sessionName - Agent session name
|
|
304
|
+
* @param role - Agent role
|
|
305
|
+
* @param nowMs - "Now" for age computation
|
|
306
|
+
* @returns Sorted candidate rows (oldest first — review backlog)
|
|
307
|
+
*/
|
|
308
|
+
private projectPendingReviews;
|
|
309
|
+
/**
|
|
310
|
+
* Outbound delegations — WorkItems this agent delegated and that haven't
|
|
311
|
+
* resolved yet. Identified by `metadata.delegatedBy === sessionName`.
|
|
312
|
+
* Forward-compatible: if upstream code does not yet populate
|
|
313
|
+
* `metadata.delegatedBy`, this section is empty.
|
|
314
|
+
*
|
|
315
|
+
* @param items - All WorkItems from the pool
|
|
316
|
+
* @param sessionName - Agent session name
|
|
317
|
+
* @param nowMs - "Now" for age computation
|
|
318
|
+
* @returns Sorted candidate rows
|
|
319
|
+
*/
|
|
320
|
+
private projectOutboundDelegations;
|
|
321
|
+
/**
|
|
322
|
+
* Recently auto-resolved WorkItems within the configured window
|
|
323
|
+
* (default 30 minutes). Surfaced so the agent knows what closed
|
|
324
|
+
* automatically while it was down. Identified by
|
|
325
|
+
* `metadata.slaResolvedAt` falling inside the window.
|
|
326
|
+
*
|
|
327
|
+
* @param items - All WorkItems from the pool
|
|
328
|
+
* @param sessionName - Agent session name (filters to items relevant to this agent)
|
|
329
|
+
* @param role - Agent role
|
|
330
|
+
* @param nowMs - "Now" for age computation
|
|
331
|
+
* @param windowMs - Window size in milliseconds
|
|
332
|
+
* @returns Sorted candidate rows (most recent first)
|
|
333
|
+
*/
|
|
334
|
+
private projectRecentlyResolved;
|
|
335
|
+
/**
|
|
336
|
+
* Read a priority hint from WorkItem.metadata. Falls back to `'normal'`.
|
|
337
|
+
*
|
|
338
|
+
* @param metadata - WorkItem metadata blob
|
|
339
|
+
* @returns Briefing priority
|
|
340
|
+
*/
|
|
341
|
+
private readPriorityFromMetadata;
|
|
342
|
+
/**
|
|
343
|
+
* Truncate a row title to {@link MAX_TITLE_CHARS}.
|
|
344
|
+
*
|
|
345
|
+
* @param title - Raw title
|
|
346
|
+
* @returns Truncated title (with ellipsis suffix if cut)
|
|
347
|
+
*/
|
|
348
|
+
private truncateTitle;
|
|
349
|
+
/**
|
|
350
|
+
* Truncate a row description to {@link MAX_DESCRIPTION_CHARS}. Replaces
|
|
351
|
+
* newlines with spaces so a description never wraps the briefing layout.
|
|
352
|
+
*
|
|
353
|
+
* @param desc - Raw description
|
|
354
|
+
* @returns Truncated description
|
|
355
|
+
*/
|
|
356
|
+
private truncateDescription;
|
|
357
|
+
/**
|
|
358
|
+
* Generates an active-work briefing for the given agent.
|
|
359
|
+
*
|
|
360
|
+
* Pulls from {@link RequestService} + {@link TaskPoolService}, filters
|
|
361
|
+
* to the agent's slice (orchestrator gets system-wide), applies per-section
|
|
362
|
+
* caps, and returns the structured payload. The caller renders it via
|
|
363
|
+
* {@link formatBriefingAsMarkdown}.
|
|
364
|
+
*
|
|
365
|
+
* Soft-fail policy: any error from the underlying services bubbles up.
|
|
366
|
+
* The CALL SITE in `agent-registration.service.ts` wraps this in a try/catch
|
|
367
|
+
* with WARN-level logging — we deliberately do NOT swallow errors here so
|
|
368
|
+
* test scenarios can assert that the rejection occurs, and so the optional
|
|
369
|
+
* skill endpoint can return a structured 500 response.
|
|
370
|
+
*
|
|
371
|
+
* @param sessionName - Agent session name (e.g. `crewly-product-sam-dd2b46f7`)
|
|
372
|
+
* @param role - Agent role (`developer`, `orchestrator`, etc.)
|
|
373
|
+
* @param options - Optional caps + window overrides for testing
|
|
374
|
+
* @returns The structured briefing
|
|
375
|
+
*
|
|
376
|
+
* @throws Rethrows any error from {@link RequestService.listAll} or
|
|
377
|
+
* {@link TaskPoolService.getAllItems}.
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```typescript
|
|
381
|
+
* const briefing = await ActiveWorkBriefingService.getInstance()
|
|
382
|
+
* .generateActiveWorkBriefing('dev-001', 'developer');
|
|
383
|
+
* const md = ActiveWorkBriefingService.getInstance()
|
|
384
|
+
* .formatBriefingAsMarkdown(briefing);
|
|
385
|
+
* ```
|
|
386
|
+
*/
|
|
387
|
+
generateActiveWorkBriefing(sessionName: string, role: string, options?: GenerateOptions): Promise<ActiveWorkBriefing>;
|
|
388
|
+
/**
|
|
389
|
+
* Format a briefing as markdown suitable for prompt injection.
|
|
390
|
+
*
|
|
391
|
+
* Output structure:
|
|
392
|
+
*
|
|
393
|
+
* ```
|
|
394
|
+
* ## Your Active Work
|
|
395
|
+
*
|
|
396
|
+
* ### Open Requests
|
|
397
|
+
* - **request-abc** — Slack inbound — _open · 2h_ *(memory: marked done — verify)*
|
|
398
|
+
* ...
|
|
399
|
+
* ### Active WorkItems
|
|
400
|
+
* - **wi-123** — Implement feature X — _running · 1h_
|
|
401
|
+
* - desc here
|
|
402
|
+
* ...
|
|
403
|
+
* ```
|
|
404
|
+
*
|
|
405
|
+
* If a {@link MemoryHints} map is provided, contradicting memory notes are
|
|
406
|
+
* appended INLINE on each row, per design Q5/decision #2.
|
|
407
|
+
*
|
|
408
|
+
* Soft-formatting policy: empty briefing collapses to "(No active work —
|
|
409
|
+
* fresh start)". Sections with zero rows are omitted (no empty headings).
|
|
410
|
+
*
|
|
411
|
+
* @param briefing - Structured briefing payload
|
|
412
|
+
* @param memoryHints - Optional namespaced map of `req:<id>` / `wi:<id>` →
|
|
413
|
+
* short note string
|
|
414
|
+
* @returns Markdown string
|
|
415
|
+
*/
|
|
416
|
+
formatBriefingAsMarkdown(briefing: ActiveWorkBriefing, memoryHints?: MemoryHints): string;
|
|
417
|
+
/**
|
|
418
|
+
* Render the five briefing sub-sections to markdown lines. Pulled out of
|
|
419
|
+
* {@link formatBriefingAsMarkdown} so the overflow-recover path can reuse
|
|
420
|
+
* the same renderer with `compact=true` (drops descriptions to bound
|
|
421
|
+
* the orchestrator briefing).
|
|
422
|
+
*
|
|
423
|
+
* @param briefing - Briefing payload
|
|
424
|
+
* @param memoryHints - Optional contradiction notes
|
|
425
|
+
* @param compact - If true, drop description lines under WorkItem rows
|
|
426
|
+
* @returns Array of markdown blocks (joined by blank lines by caller)
|
|
427
|
+
*/
|
|
428
|
+
private renderSections;
|
|
429
|
+
/**
|
|
430
|
+
* Render the truncation marker line for a section. No-op when the section
|
|
431
|
+
* was not truncated.
|
|
432
|
+
*
|
|
433
|
+
* @param truncation - Section truncation metadata
|
|
434
|
+
* @returns Marker line (empty string if not truncated)
|
|
435
|
+
*/
|
|
436
|
+
private renderTruncationMarker;
|
|
437
|
+
/**
|
|
438
|
+
* Append a memory-hint annotation to a row line, if a hint exists for the
|
|
439
|
+
* given key. Renders the annotation italicized so it visually subordinates
|
|
440
|
+
* to the actionable state row.
|
|
441
|
+
*
|
|
442
|
+
* @param line - Row line so far
|
|
443
|
+
* @param key - Hint lookup key (e.g. `req:abc-123`)
|
|
444
|
+
* @param hints - Memory hints map (optional)
|
|
445
|
+
* @returns The line with annotation appended, or unchanged
|
|
446
|
+
*/
|
|
447
|
+
private appendMemoryHint;
|
|
448
|
+
/** Format hours into a compact "Nh" / "Nm" string for row metadata. */
|
|
449
|
+
private formatAge;
|
|
450
|
+
/**
|
|
451
|
+
* Render the Open Requests section.
|
|
452
|
+
*
|
|
453
|
+
* @param rows - Capped rows
|
|
454
|
+
* @param truncation - Section truncation metadata
|
|
455
|
+
* @param hints - Memory hints
|
|
456
|
+
* @returns Markdown block
|
|
457
|
+
*/
|
|
458
|
+
private renderOpenRequests;
|
|
459
|
+
/**
|
|
460
|
+
* Render the Active WorkItems section.
|
|
461
|
+
*
|
|
462
|
+
* @param rows - Capped rows
|
|
463
|
+
* @param truncation - Section truncation metadata
|
|
464
|
+
* @param hints - Memory hints
|
|
465
|
+
* @param compact - If true, drop description lines (orchestrator overflow)
|
|
466
|
+
* @returns Markdown block
|
|
467
|
+
*/
|
|
468
|
+
private renderActiveWorkItems;
|
|
469
|
+
/**
|
|
470
|
+
* Render the Pending Reviews section.
|
|
471
|
+
*
|
|
472
|
+
* @param rows - Capped rows
|
|
473
|
+
* @param truncation - Section truncation metadata
|
|
474
|
+
* @param hints - Memory hints
|
|
475
|
+
* @returns Markdown block
|
|
476
|
+
*/
|
|
477
|
+
private renderPendingReviews;
|
|
478
|
+
/**
|
|
479
|
+
* Render the Outbound Delegations section.
|
|
480
|
+
*
|
|
481
|
+
* @param rows - Capped rows
|
|
482
|
+
* @param truncation - Section truncation metadata
|
|
483
|
+
* @param hints - Memory hints
|
|
484
|
+
* @returns Markdown block
|
|
485
|
+
*/
|
|
486
|
+
private renderOutboundDelegations;
|
|
487
|
+
/**
|
|
488
|
+
* Render the Recently Auto-Resolved section.
|
|
489
|
+
*
|
|
490
|
+
* @param rows - Capped rows
|
|
491
|
+
* @param truncation - Section truncation metadata
|
|
492
|
+
* @param hints - Memory hints
|
|
493
|
+
* @returns Markdown block
|
|
494
|
+
*/
|
|
495
|
+
private renderRecentlyResolved;
|
|
496
|
+
}
|
|
497
|
+
export {};
|
|
498
|
+
//# sourceMappingURL=active-work-briefing.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-work-briefing.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/active-work-briefing.service.ts"],"names":[],"mappings":"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"}
|