crewly 1.6.4 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/roles/architect/prompt.md +68 -2
- package/config/roles/auditor/prompt.md +92 -0
- package/config/roles/backend-developer/prompt.md +68 -2
- package/config/roles/content-strategist/prompt.md +73 -5
- package/config/roles/designer/prompt.md +69 -4
- package/config/roles/developer/prompt.md +233 -5
- package/config/roles/frontend-developer/prompt.md +68 -2
- package/config/roles/fullstack-dev/prompt.md +68 -2
- package/config/roles/generalist/prompt.md +68 -2
- package/config/roles/ops/prompt.md +69 -3
- package/config/roles/orchestrator/fragments/communication.md +27 -0
- package/config/roles/orchestrator/fragments/role-boundary.md +1 -1
- package/config/roles/orchestrator/prompt.md +285 -70
- package/config/roles/product-manager/prompt.md +140 -7
- package/config/roles/qa/prompt.md +70 -5
- package/config/roles/qa-engineer/prompt.md +70 -5
- package/config/roles/researcher/prompt.md +68 -2
- package/config/roles/sales/prompt.md +70 -5
- package/config/roles/support/prompt.md +69 -4
- package/config/roles/team-leader/prompt.md +93 -6
- package/config/roles/team-leader/role-boundaries.md +26 -0
- package/config/roles/team-leader/tl-addon.md +153 -1
- package/config/roles/tpm/prompt.md +68 -2
- package/config/roles/ux-designer/prompt.md +70 -5
- package/config/skills/_common/complete-body-shape.test.sh +249 -0
- package/config/skills/agent/core/accept-task/execute.sh +18 -15
- package/config/skills/agent/core/block-task/execute.sh +27 -9
- package/config/skills/agent/core/cancel-followup/SKILL.md +18 -0
- package/config/skills/agent/core/complete-task/execute.sh +45 -7
- package/config/skills/agent/core/create-request/SKILL.md +1 -1
- package/config/skills/agent/core/create-request/execute.sh +29 -2
- package/config/skills/agent/core/create-request/execute.test.sh +168 -0
- package/config/skills/agent/core/create-task/execute.sh +40 -12
- package/config/skills/agent/core/get-my-active-work/SKILL.md +3 -1
- package/config/skills/agent/core/get-my-tasks/execute.sh +7 -5
- package/config/skills/agent/core/handoff-task/execute.sh +34 -48
- package/config/skills/agent/core/list-my-followups/SKILL.md +18 -0
- package/config/skills/agent/core/read-task/execute.sh +21 -8
- package/config/skills/agent/core/recall/SKILL.md +7 -0
- package/config/skills/agent/core/remember/SKILL.md +17 -1
- package/config/skills/agent/core/remember/execute.sh +5 -1
- package/config/skills/agent/core/reply-channel/SKILL.md +19 -0
- package/config/skills/agent/core/report-progress/execute.sh +39 -16
- package/config/skills/agent/core/report-status/SKILL.md +8 -1
- package/config/skills/agent/core/report-status/execute.sh +59 -13
- package/config/skills/agent/core/save-working-state/execute.sh +17 -6
- package/config/skills/agent/core/schedule-followup/SKILL.md +19 -0
- package/config/skills/agent/core/send-message/SKILL.md +6 -0
- package/config/skills/agent/core/supersede-memory/SKILL.md +76 -0
- package/config/skills/agent/core/supersede-memory/execute.sh +108 -0
- package/config/skills/agent/core/watch-for-event/SKILL.md +19 -0
- package/config/skills/agent/onboarding/materialize-team/SKILL.md +94 -0
- package/config/skills/agent/onboarding/materialize-team/execute.sh +98 -0
- package/config/skills/agent/onboarding/recommend-team/SKILL.md +90 -0
- package/config/skills/agent/onboarding/recommend-team/execute.sh +96 -0
- package/config/skills/agent/xhs-article-to-image/SKILL.md +20 -0
- package/config/skills/auditor/score-task/SKILL.md +15 -0
- package/config/skills/orchestrator/assign-task/execute.sh +28 -4
- package/config/skills/orchestrator/cancel-all-schedules/SKILL.md +15 -1
- package/config/skills/orchestrator/complete-task/execute.sh +45 -4
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +41 -2
- package/config/skills/orchestrator/get-tasks/execute.sh +22 -18
- package/config/skills/orchestrator/heartbeat/execute.sh +48 -6
- package/config/skills/orchestrator/list-schedules/SKILL.md +15 -1
- package/config/skills/orchestrator/update-team-member/SKILL.md +20 -0
- package/config/skills/team-leader/decompose-goal/execute.sh +51 -20
- package/config/skills/team-leader/delegate-task/execute.sh +67 -26
- package/config/skills/team-leader/delegate-task/execute.test.sh +117 -0
- package/config/skills/team-leader/verify-output/execute.sh +19 -20
- package/config/slack-app-manifest.json +2 -1
- package/config/sops/common/dev-process-tiers.md +181 -0
- package/config/sops/common/mid-flight-milestone-surface.md +128 -0
- package/config/sops/common/owner-facing-communication.md +175 -0
- package/config/sops/developer/git-workflow.md +33 -0
- package/config/souls/orchestrator.md +8 -0
- package/config/souls/team-leader.md +77 -0
- package/dist/backend/backend/src/constants.d.ts +12 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +12 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js +4 -1
- package/dist/backend/backend/src/controllers/active-work/active-work.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.d.ts +8 -1
- 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 +30 -26
- package/dist/backend/backend/src/controllers/agent-stream/agent-stream.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -9
- package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/api.controller.js +4 -32
- package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +2 -2
- package/dist/backend/backend/src/controllers/browser/browser.controller.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 +11 -2
- 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 +73 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +133 -2
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +3 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts +45 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.js +122 -0
- package/dist/backend/backend/src/controllers/checklist/checklist.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts +24 -0
- package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js +69 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/memory/memory.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.js +3 -1
- package/dist/backend/backend/src/controllers/memory/memory.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +80 -5
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js +30 -0
- package/dist/backend/backend/src/controllers/onboarding/onboarding.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts +41 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js +213 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts +21 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js +27 -0
- package/dist/backend/backend/src/controllers/orchestrator-onboarding/orchestrator-onboarding.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +50 -8
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +236 -18
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts +13 -3
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js +29 -24
- package/dist/backend/backend/src/controllers/task-management/in-progress-tasks.controller.js.map +1 -1
- 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 +61 -13
- package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +159 -7
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +421 -37
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +15 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.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 +221 -10
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts +22 -0
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js +92 -0
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js +6 -2
- package/dist/backend/backend/src/controllers/teams-backup/teams-backup.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/types.d.ts +1 -2
- package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
- package/dist/backend/backend/src/index.d.ts +5 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +476 -100
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/models/Project.d.ts +2 -0
- package/dist/backend/backend/src/models/Project.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Project.js +10 -1
- package/dist/backend/backend/src/models/Project.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 +15 -2
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts +15 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.js +23 -43
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts +87 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js +116 -0
- package/dist/backend/backend/src/scripts/cleanup-stale-pool.lib.js.map +1 -0
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +46 -6
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +56 -13
- package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +51 -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 +246 -9
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +31 -5
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +69 -29
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +61 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +230 -84
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +5 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +35 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +127 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +145 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +64 -9
- 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 +125 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +101 -33
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +76 -1
- 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 +73 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +33 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +108 -4
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +5 -5
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +22 -8
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +10 -0
- 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 +160 -4
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts +37 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +77 -3
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +4 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +4 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +45 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
- 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 +28 -0
- 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/soul.module.d.ts +38 -6
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js +73 -10
- package/dist/backend/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
- package/dist/backend/backend/src/services/autonomous/index.d.ts +7 -3
- package/dist/backend/backend/src/services/autonomous/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/autonomous/index.js +7 -3
- package/dist/backend/backend/src/services/autonomous/index.js.map +1 -1
- 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 +16 -22
- 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 +1 -1
- 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 +40 -2
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +48 -331
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +261 -712
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +82 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +120 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +114 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +182 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts +188 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +434 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +414 -5
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +634 -3
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +93 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +138 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +46 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +75 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +21 -2
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +229 -29
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +55 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +94 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.d.ts +33 -1
- package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.js +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +22 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +71 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +102 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +61 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +21 -3
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +47 -13
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/config.service.js +8 -1
- package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts +51 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.js +59 -0
- package/dist/backend/backend/src/services/core/crewly-home.utils.js.map +1 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.d.ts +53 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.js +61 -0
- package/dist/backend/backend/src/services/core/state-invariant.types.js.map +1 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts +20 -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 +96 -8
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/system-health.util.d.ts +25 -4
- package/dist/backend/backend/src/services/core/system-health.util.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/system-health.util.js +30 -5
- package/dist/backend/backend/src/services/core/system-health.util.js.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts +94 -4
- package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/teams-backup.service.js +172 -10
- package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -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 +22 -11
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/index.d.ts +0 -2
- package/dist/backend/backend/src/services/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/index.js +0 -2
- package/dist/backend/backend/src/services/index.js.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts +78 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.d.ts.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js +209 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.fixture.js.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts +331 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js +413 -0
- package/dist/backend/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
- package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js +13 -4
- package/dist/backend/backend/src/services/intent-task/intent-task.service.js.map +1 -1
- 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 -13
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.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 +11 -15
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts +20 -0
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.js +27 -2
- package/dist/backend/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts +104 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.js +127 -0
- package/dist/backend/backend/src/services/memory/memory-supersession.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/memory.service.d.ts +48 -17
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +97 -35
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/mission-context.service.d.ts +168 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.js +365 -0
- package/dist/backend/backend/src/services/memory/mission-context.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.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 +7 -11
- package/dist/backend/backend/src/services/memory/vector-store.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/working-memory.service.d.ts +232 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.js +417 -0
- package/dist/backend/backend/src/services/memory/working-memory.service.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +2 -4
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-replay.service.js +22 -12
- package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +48 -7
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +2 -2
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +13 -3
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts +27 -7
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js +66 -27
- package/dist/backend/backend/src/services/monitoring/team-activity-websocket.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js +2 -2
- package/dist/backend/backend/src/services/monitoring/teams-json-watcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts +99 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js +225 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js +284 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js +48 -0
- package/dist/backend/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
- package/dist/backend/backend/src/services/observability/observability-db.d.ts +84 -0
- package/dist/backend/backend/src/services/observability/observability-db.d.ts.map +1 -0
- package/dist/backend/backend/src/services/observability/observability-db.js +165 -0
- package/dist/backend/backend/src/services/observability/observability-db.js.map +1 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts +22 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js +36 -0
- package/dist/backend/backend/src/services/onboarding/onboarding.service.js.map +1 -1
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts +21 -2
- package/dist/backend/backend/src/services/onboarding/onboarding.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js +12 -3
- package/dist/backend/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts +108 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +165 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +114 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +299 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts +128 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js +195 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-bootstrap.service.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts +66 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js +145 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode-loader.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts +59 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js +68 -0
- package/dist/backend/backend/src/services/orchestrator/onboarding-mode.skill-allowlist.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts +67 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +290 -0
- package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts +23 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js +64 -1
- package/dist/backend/backend/src/services/orchestrator/state-persistence.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/active-projects.service.js +2 -2
- package/dist/backend/backend/src/services/project/active-projects.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +2 -2
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js +2 -2
- package/dist/backend/backend/src/services/prompt/prompt-generator.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +73 -6
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +200 -25
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +149 -2
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +569 -24
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +73 -7
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +31 -18
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.js +103 -84
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.js +15 -4
- package/dist/backend/backend/src/services/session/session-state-persistence.js.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/settings/settings.service.js +25 -0
- package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +14 -3
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +28 -3
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.js +13 -1
- package/dist/backend/backend/src/services/skill/skill-executor.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 +13 -18
- package/dist/backend/backend/src/services/slack/cross-machine-message.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +9 -6
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +66 -2
- 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 +318 -61
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +70 -0
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.js +31 -8
- package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +216 -2
- 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 +562 -14
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +14 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +128 -17
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts +95 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +200 -0
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +42 -0
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js +25 -5
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts +87 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js +152 -0
- package/dist/backend/backend/src/services/v3/request-cascade.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts +253 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +501 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +55 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +262 -22
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts +204 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +617 -0
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request.service.d.ts +107 -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 +155 -2
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +108 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +238 -4
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +50 -26
- 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 +126 -161
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/work-item-projection.d.ts +40 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.js +115 -0
- package/dist/backend/backend/src/services/v3/work-item-projection.js.map +1 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +137 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +287 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +26 -10
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js +11 -2
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -5
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +68 -14
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts +44 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js +57 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js.map +1 -0
- package/dist/backend/backend/src/types/credential.types.d.ts +17 -1
- package/dist/backend/backend/src/types/credential.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/credential.types.js +15 -5
- package/dist/backend/backend/src/types/credential.types.js.map +1 -1
- package/dist/backend/backend/src/types/cron-task.types.d.ts +17 -0
- package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -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 +24 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +11 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js +0 -2
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts +27 -11
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.js +204 -40
- package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
- package/dist/backend/backend/src/types/memory.types.d.ts +53 -0
- package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/memory.types.js.map +1 -1
- package/dist/backend/backend/src/types/orchestrator-state.types.d.ts +49 -0
- package/dist/backend/backend/src/types/orchestrator-state.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/orchestrator-state.types.js +27 -0
- package/dist/backend/backend/src/types/orchestrator-state.types.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +38 -2
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +16 -2
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts +5 -1
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js +2 -2
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +63 -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 +20 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +111 -0
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js +124 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js +212 -0
- package/dist/backend/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/native-binding.utils.d.ts +128 -0
- package/dist/backend/backend/src/utils/native-binding.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/native-binding.utils.js +206 -0
- package/dist/backend/backend/src/utils/native-binding.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/node-require.utils.d.ts +104 -0
- package/dist/backend/backend/src/utils/node-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/node-require.utils.js +111 -0
- package/dist/backend/backend/src/utils/node-require.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/team.utils.d.ts +3 -1
- package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/team.utils.js +26 -5
- package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +23 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js +56 -7
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts +19 -4
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js +78 -63
- package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +10 -2
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +12 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +12 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/Project.d.ts +2 -0
- package/dist/cli/backend/src/models/Project.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Project.js +10 -1
- package/dist/cli/backend/src/models/Project.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +16 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/config.service.js +8 -1
- package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts +51 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.js +59 -0
- package/dist/cli/backend/src/services/core/crewly-home.utils.js.map +1 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.d.ts +53 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.js +61 -0
- package/dist/cli/backend/src/services/core/state-invariant.types.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts +20 -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 +96 -8
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts +94 -4
- package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/teams-backup.service.js +172 -10
- package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts +245 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js +650 -0
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -0
- 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 -13
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +102 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js +118 -0
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js.map +1 -0
- 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 +11 -15
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +20 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.js +27 -2
- package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +48 -17
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +97 -35
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts +138 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js +183 -0
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +236 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.js +581 -0
- package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.js +2 -2
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/cli/backend/src/services/settings/settings.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/settings/settings.service.js +25 -0
- package/dist/cli/backend/src/services/settings/settings.service.js.map +1 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.js +13 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts +147 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.js +258 -0
- package/dist/cli/backend/src/services/slack/slack-thread-store.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.js +31 -8
- package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +490 -9
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +1197 -121
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/work-item-projection.d.ts +40 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.js +115 -0
- package/dist/cli/backend/src/services/v3/work-item-projection.js.map +1 -0
- package/dist/cli/backend/src/types/credential.types.d.ts +17 -1
- package/dist/cli/backend/src/types/credential.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/credential.types.js +15 -5
- package/dist/cli/backend/src/types/credential.types.js.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts +173 -0
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/event-bus.types.js +230 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -0
- package/dist/cli/backend/src/types/index.d.ts +11 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js +0 -2
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/memory.types.d.ts +53 -0
- package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/memory.types.js.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.d.ts +223 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/messaging.types.js +231 -0
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -0
- package/dist/cli/backend/src/types/settings.types.d.ts +38 -2
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +16 -2
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +356 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/slack.types.js +66 -0
- package/dist/cli/backend/src/types/slack.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/claim.types.d.ts +2 -5
- package/dist/cli/backend/src/types/v2/claim.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/claim.types.js +2 -5
- package/dist/cli/backend/src/types/v2/claim.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +63 -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 +20 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/format-error.d.ts +8 -0
- package/dist/cli/backend/src/utils/format-error.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/format-error.js +10 -0
- package/dist/cli/backend/src/utils/format-error.js.map +1 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts +119 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js +212 -0
- package/dist/cli/backend/src/utils/integrity-guarded-write.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/node-require.utils.d.ts +104 -0
- package/dist/cli/backend/src/utils/node-require.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/node-require.utils.js +111 -0
- package/dist/cli/backend/src/utils/node-require.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/start.js +73 -12
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/frontend/dist/assets/index-b279da34.js +4926 -0
- package/frontend/dist/assets/{index-b7e59b2b.css → index-c07e04c0.css} +2 -2
- package/frontend/dist/index.html +2 -2
- package/package.json +6 -2
- package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts +0 -63
- package/dist/backend/backend/src/controllers/eval/eval.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.controller.js +0 -228
- package/dist/backend/backend/src/controllers/eval/eval.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts +0 -23
- package/dist/backend/backend/src/controllers/eval/eval.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/eval/eval.routes.js +0 -37
- package/dist/backend/backend/src/controllers/eval/eval.routes.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts +0 -8
- package/dist/backend/backend/src/controllers/knowledge-v3/index.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/index.js +0 -8
- package/dist/backend/backend/src/controllers/knowledge-v3/index.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts +0 -63
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js +0 -179
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts +0 -22
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js +0 -34
- package/dist/backend/backend/src/controllers/knowledge-v3/knowledge-v3.routes.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts +0 -130
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js +0 -406
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/cli-adapter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts +0 -68
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js +0 -206
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/crewly-agent-adapter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts +0 -32
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js +0 -46
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/adapters/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts +0 -87
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js +0 -299
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/context-generator.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts +0 -59
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js +0 -218
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-runner.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts +0 -203
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js +0 -467
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-scorer.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts +0 -313
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js +0 -45
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/eval-types.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts +0 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js +0 -349
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-cli.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts +0 -97
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js +0 -414
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-l4.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts +0 -42
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js +0 -403
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/run-eval-standalone.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts +0 -41
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js +0 -58
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts +0 -15
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js +0 -396
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l1-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts +0 -14
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js +0 -564
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l2-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts +0 -13
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js +0 -634
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l3-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts +0 -21
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js +0 -1036
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tasks/l4-tasks.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts +0 -100
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js +0 -187
- package/dist/backend/backend/src/services/agent/crewly-agent/eval/tool-log-parser.js.map +0 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +0 -79
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +0 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +0 -118
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts +0 -113
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js +0 -179
- package/dist/backend/backend/src/services/cloud/cloud-event-bridge.service.js.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts +0 -131
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js +0 -227
- package/dist/backend/backend/src/services/cloud/cloud-event-forwarder.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
- package/dist/backend/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +0 -97
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +0 -1
- package/dist/backend/backend/src/services/memory/learning-format.validator.js +0 -209
- package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +0 -1
- package/frontend/dist/assets/index-7a4e7df5.js +0 -5228
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js +0 -0
- /package/dist/{backend → cli}/backend/src/services/knowledge/learnings-index.service.js.map +0 -0
|
@@ -13,7 +13,7 @@ import helmet from 'helmet';
|
|
|
13
13
|
import morgan from 'morgan';
|
|
14
14
|
import os from 'os';
|
|
15
15
|
import { fileURLToPath } from 'url';
|
|
16
|
-
import { StorageService, TmuxService, SchedulerService, MessageSchedulerService, ActivityMonitorService,
|
|
16
|
+
import { StorageService, TmuxService, SchedulerService, MessageSchedulerService, ActivityMonitorService, TeamActivityWebSocketService, TeamsJsonWatcherService, } from './services/index.js';
|
|
17
17
|
import { getSessionBackend, getSessionBackendSync, getSessionStatePersistence, destroySessionBackend, PtySessionBackend, } from './services/session/index.js';
|
|
18
18
|
import { ApiController } from './controllers/api.controller.js';
|
|
19
19
|
import { createApiRoutes } from './routes/api.routes.js';
|
|
@@ -25,6 +25,7 @@ import { getSettingsService } from './services/settings/index.js';
|
|
|
25
25
|
import { MemoryService } from './services/memory/memory.service.js';
|
|
26
26
|
import { getImprovementStartupService } from './services/orchestrator/improvement-startup.service.js';
|
|
27
27
|
import { initializeSlackIfConfigured, shutdownSlack } from './services/slack/index.js';
|
|
28
|
+
import { resolveTeamByIdOrSlug, slugifyTeamName } from './services/workflow/team-identifier-resolver.js';
|
|
28
29
|
import { initializeWhatsAppIfConfigured, shutdownWhatsApp } from './services/whatsapp/index.js';
|
|
29
30
|
import { initializeGoogleChatIfConfigured } from './services/messaging/google-chat-initializer.js';
|
|
30
31
|
import { initializeTelegramIfConfigured, shutdownTelegram } from './services/telegram/index.js';
|
|
@@ -34,7 +35,11 @@ import { ThreadStatusQueueService } from './services/messaging/thread-status-que
|
|
|
34
35
|
import { EventBusService } from './services/event-bus/index.js';
|
|
35
36
|
import { EventToWorkItemBridge } from './services/event-bus/event-to-workitem-bridge.service.js';
|
|
36
37
|
import { AutoLearningSubscriber } from './services/memory/auto-learning.subscriber.js';
|
|
38
|
+
import { MilestoneNotificationSubscriber } from './services/notification/milestone-notification.subscriber.js';
|
|
37
39
|
import { RequestSlaSubscriber, setRequestSlaSubscriber, } from './services/v3/request-sla.subscriber.js';
|
|
40
|
+
import { RequestDecomposeSubscriber, setRequestDecomposeSubscriber, } from './services/v3/request-decompose.subscriber.js';
|
|
41
|
+
import { RequestStatusUpdateSubscriber } from './services/v3/request-status-update.subscriber.js';
|
|
42
|
+
import { RequestCascadeSubscriber } from './services/v3/request-cascade.subscriber.js';
|
|
38
43
|
import { setRequestServiceEventBus, RequestService } from './services/v3/request.service.js';
|
|
39
44
|
import { getSlackService } from './services/slack/slack.service.js';
|
|
40
45
|
import { SlackThreadStoreService, setSlackThreadStore, getSlackThreadStore } from './services/slack/slack-thread-store.service.js';
|
|
@@ -42,7 +47,6 @@ import { GoogleChatThreadStoreService, setGchatThreadStore } from './services/me
|
|
|
42
47
|
import { SlackImageService, setSlackImageService } from './services/slack/slack-image.service.js';
|
|
43
48
|
import { NotifyReconciliationService } from './services/slack/notify-reconciliation.service.js';
|
|
44
49
|
import { setEventBusService as setEventBusControllerService } from './controllers/event-bus/event-bus.controller.js';
|
|
45
|
-
import { setEventBusServiceForTaskCleanup } from './controllers/task-management/task-management.controller.js';
|
|
46
50
|
import { setTeamControllerEventBusService } from './controllers/team/team.controller.js';
|
|
47
51
|
import { SkillCatalogService } from './services/skill/skill-catalog.service.js';
|
|
48
52
|
import { setMessageQueueService as setChatMessageQueueService, setThreadStatusQueueService as setChatThreadStatusQueueService } from './controllers/chat/chat.controller.js';
|
|
@@ -61,6 +65,7 @@ import { RuntimeExitMonitorService } from './services/agent/runtime-exit-monitor
|
|
|
61
65
|
import { ContextWindowMonitorService } from './services/agent/context-window-monitor.service.js';
|
|
62
66
|
import { OAuthReloginMonitorService } from './services/agent/oauth-relogin-monitor.service.js';
|
|
63
67
|
import { findPackageRoot } from './utils/package-root.js';
|
|
68
|
+
import { isNativeBindingFatalError } from './utils/native-binding.utils.js';
|
|
64
69
|
import { VersionCheckService } from './services/system/version-check.service.js';
|
|
65
70
|
import { LogRotationService } from './services/session/log-rotation.service.js';
|
|
66
71
|
import { AuditorSchedulerService } from './services/agent/auditor-scheduler.service.js';
|
|
@@ -123,7 +128,6 @@ export class CrewlyServer {
|
|
|
123
128
|
schedulerService;
|
|
124
129
|
messageSchedulerService;
|
|
125
130
|
activityMonitorService;
|
|
126
|
-
taskTrackingService;
|
|
127
131
|
teamActivityWebSocketService;
|
|
128
132
|
teamsJsonWatcherService;
|
|
129
133
|
apiController;
|
|
@@ -136,8 +140,15 @@ export class CrewlyServer {
|
|
|
136
140
|
eventToWorkItemBridge = null;
|
|
137
141
|
/** LEARN-1: subscribes to terminal task / mission:replanned events and auto-records learnings. */
|
|
138
142
|
autoLearningSubscriber = null;
|
|
143
|
+
// DF-1 #438 — symmetric to AutoLearningSubscriber; surfaces milestones
|
|
144
|
+
// to orc's chat queue.
|
|
145
|
+
milestoneNotificationSubscriber = null;
|
|
139
146
|
/** INBOUND-1: subscribes to request:created and tracks 5/10 min SLA on respond_to_user WIs. */
|
|
140
147
|
requestSlaSubscriber = null;
|
|
148
|
+
/** Pipeline-#4 follow-up: subscribes to request:created and auto-decomposes actionable L2 Requests via plan() → addToPool. */
|
|
149
|
+
requestDecomposeSubscriber = null;
|
|
150
|
+
requestStatusUpdateSubscriber = null;
|
|
151
|
+
requestCascadeSubscriber = null;
|
|
141
152
|
notifyReconciliationService;
|
|
142
153
|
systemResourceAlertService;
|
|
143
154
|
reconcilerService = null;
|
|
@@ -207,15 +218,16 @@ export class CrewlyServer {
|
|
|
207
218
|
this.schedulerService = new SchedulerService(this.storageService);
|
|
208
219
|
this.messageSchedulerService = new MessageSchedulerService(this.tmuxService, this.storageService);
|
|
209
220
|
this.activityMonitorService = ActivityMonitorService.getInstance();
|
|
210
|
-
|
|
211
|
-
|
|
221
|
+
// V3-only as of spec 2026-05-06-task-management-v1-deprecation.md.
|
|
222
|
+
// TaskTrackingService is deleted; in-progress task data and lifecycle
|
|
223
|
+
// events come from TaskPoolService + EventBusService respectively.
|
|
224
|
+
this.teamActivityWebSocketService = new TeamActivityWebSocketService(this.storageService, this.tmuxService);
|
|
212
225
|
this.teamsJsonWatcherService = new TeamsJsonWatcherService();
|
|
213
226
|
this.apiController = new ApiController(this.storageService, this.tmuxService, this.schedulerService, this.messageSchedulerService);
|
|
214
227
|
// Wire up reliable delivery: both schedulers use AgentRegistrationService
|
|
215
228
|
// for retry + progressive verification + background stuck-detection
|
|
216
229
|
this.messageSchedulerService.setAgentRegistrationService(this.apiController.agentRegistrationService);
|
|
217
230
|
this.schedulerService.setAgentRegistrationService(this.apiController.agentRegistrationService);
|
|
218
|
-
this.schedulerService.setTaskTrackingService(this.taskTrackingService);
|
|
219
231
|
// Initialize message queue services (with disk persistence)
|
|
220
232
|
// NOTE: Must be created before services that depend on them (scheduler, thread status queue)
|
|
221
233
|
this.messageQueueService = new MessageQueueService(this.config.crewlyHome);
|
|
@@ -255,6 +267,23 @@ export class CrewlyServer {
|
|
|
255
267
|
// triggers addToPool — the slack listener / TaskPool router below both
|
|
256
268
|
// depend on this for the auto-close path b chain. Idempotent.
|
|
257
269
|
TaskPoolService.getInstance().setEventBusService(this.eventBusService);
|
|
270
|
+
// P1 Bug B (Pool umbrella WI 72ca743a): Wire RequestService into the
|
|
271
|
+
// TaskPool singleton so addToPool intrinsically links new WIs into
|
|
272
|
+
// their parent Request.workItemIds[] — independent of the
|
|
273
|
+
// subscriber-driven path (request-sla.subscriber, V3DataService).
|
|
274
|
+
// Pre-fix, manual / programmatic / cron callers that bypassed the
|
|
275
|
+
// event chain left Requests with empty workItemIds[]. The linker is
|
|
276
|
+
// idempotent (request.service.ts:328 short-circuits on duplicate id)
|
|
277
|
+
// so subscriber-driven linking stays as belt-and-suspenders.
|
|
278
|
+
TaskPoolService.getInstance().setRequestService(RequestService.getInstance());
|
|
279
|
+
// P1 Bug C (Pool umbrella WI 72ca743a, sub-WI Bug C): Wire the inverse
|
|
280
|
+
// dependency — RequestService → TaskPool — so RequestService.update
|
|
281
|
+
// can refuse `Request → done` when any child WorkItem is still in a
|
|
282
|
+
// non-terminal state. Bug B (above) makes Request.workItemIds[]
|
|
283
|
+
// authoritative on every addToPool; Bug C makes the closure honor
|
|
284
|
+
// that data. The setter is duck-typed on IWorkItemQueryable so
|
|
285
|
+
// neither side needs a static import of the other.
|
|
286
|
+
RequestService.getInstance().setTaskPoolService(TaskPoolService.getInstance());
|
|
258
287
|
// Wire Task Pool router so [TASK]-prefixed messages route through the pool
|
|
259
288
|
this.queueProcessorService.setTaskPoolRouter(async (messageContent, targetSession) => {
|
|
260
289
|
const { createWorkItem } = await import('./types/v2/work-item.types.js');
|
|
@@ -283,24 +312,14 @@ export class CrewlyServer {
|
|
|
283
312
|
this.activityMonitorService.setEventBusService(this.eventBusService);
|
|
284
313
|
setEventBusControllerService(this.eventBusService);
|
|
285
314
|
setTeamControllerEventBusService(this.eventBusService);
|
|
286
|
-
|
|
287
|
-
//
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
teamName: '',
|
|
295
|
-
memberId: payload.ownerMemberId || '',
|
|
296
|
-
memberName: '',
|
|
297
|
-
sessionName: payload.assignedSessionName || '',
|
|
298
|
-
previousValue: '',
|
|
299
|
-
newValue: payload.taskStatus || payload.type,
|
|
300
|
-
changedField: 'taskStatus',
|
|
301
|
-
taskId: payload.taskId,
|
|
302
|
-
});
|
|
303
|
-
});
|
|
315
|
+
// Wire team-activity-websocket to EventBus so it reacts to V3
|
|
316
|
+
// WorkItem lifecycle events (replaces the legacy
|
|
317
|
+
// TaskTrackingService.on('task_workflow_event') bridge that was
|
|
318
|
+
// deleted with the v1 task-management subsystem).
|
|
319
|
+
this.teamActivityWebSocketService.setEventBus(this.eventBusService);
|
|
320
|
+
// V3-only autonomy: AgentAutoClaimService (started later in boot)
|
|
321
|
+
// is the single autonomy loop. The legacy AutoAssignService has
|
|
322
|
+
// been retired — see spec 2026-05-06-task-management-v1-deprecation.md.
|
|
304
323
|
// BRIDGE-1: subscribe to autonomy events (task:done_by_worker,
|
|
305
324
|
// task:rejected, task:blocked, team:all_tasks_done, mission:*) and
|
|
306
325
|
// create the appropriate WorkItem(s) — verification WI for TL on
|
|
@@ -316,24 +335,128 @@ export class CrewlyServer {
|
|
|
316
335
|
// contract (V1) and the V7/V9 self-checks in the co-located test.
|
|
317
336
|
this.autoLearningSubscriber = AutoLearningSubscriber.boot(this.eventBusService);
|
|
318
337
|
this.autoLearningSubscriber.start();
|
|
319
|
-
//
|
|
320
|
-
//
|
|
321
|
-
//
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
channelId,
|
|
331
|
-
threadTs,
|
|
332
|
-
text: messageText,
|
|
333
|
-
});
|
|
338
|
+
// DF-1 #438: symmetric notification subscriber. Same architectural
|
|
339
|
+
// pattern as AutoLearningSubscriber — listens to terminal lifecycle
|
|
340
|
+
// events (`task:verified`, `mission:replanned`) and enqueues a
|
|
341
|
+
// `[MILESTONE]` envelope into orc's chat queue. The QW-3 row in
|
|
342
|
+
// `config/roles/orchestrator/prompt.md` (#436) handles the
|
|
343
|
+
// always-forward-to-owner rule on the orc side; this subscriber
|
|
344
|
+
// closes the gap where an agent ships work but forgets to call
|
|
345
|
+
// `report-status --status milestone` (the agent-side QW-1 path).
|
|
346
|
+
this.milestoneNotificationSubscriber = new MilestoneNotificationSubscriber({
|
|
347
|
+
eventBus: this.eventBusService,
|
|
348
|
+
messageQueueService: this.messageQueueService,
|
|
334
349
|
});
|
|
335
|
-
this.
|
|
336
|
-
|
|
350
|
+
this.milestoneNotificationSubscriber.start();
|
|
351
|
+
// INBOUND-1 + Pipeline-#4 follow-up: wire RequestService → bus, then
|
|
352
|
+
// boot both v3 subscribers (SLA tracker + auto-decompose). Order
|
|
353
|
+
// matters within the block: setRequestServiceEventBus must run
|
|
354
|
+
// BEFORE any code path can call RequestService.create() — the slack
|
|
355
|
+
// listener at line ~370 is the first hot caller, but the slack
|
|
356
|
+
// service hasn't been initialised yet at this point in boot, so
|
|
357
|
+
// we're safe.
|
|
358
|
+
//
|
|
359
|
+
// Failure-isolated (issue #465): the entire v3 subscriber boot is
|
|
360
|
+
// wrapped in try/catch so a wiring failure logs + continues rather
|
|
361
|
+
// than crashing the whole backend. Neither subscriber is essential
|
|
362
|
+
// to API liveness — degrading them is preferable to losing the
|
|
363
|
+
// process. A single catch block treats both as a unit because the
|
|
364
|
+
// failure mode is "wiring is broken, fix the deploy" not
|
|
365
|
+
// "intermittently flaky"; partial recovery would be unnecessary
|
|
366
|
+
// complexity for v1. B0 broadcast (line ~2336) and TriggerEngine
|
|
367
|
+
// boot (line ~1464) already have equivalent isolation; this brings
|
|
368
|
+
// the v3 subscriber block in line with that pattern.
|
|
369
|
+
try {
|
|
370
|
+
setRequestServiceEventBus(this.eventBusService);
|
|
371
|
+
this.requestSlaSubscriber = RequestSlaSubscriber.boot(this.eventBusService, RequestService.getInstance(), TaskPoolService.getInstance(), async ({ channelId, threadTs, messageText }) => {
|
|
372
|
+
// Production wiring of the 10-min escalation hook: nudge the user
|
|
373
|
+
// in the same Slack thread so they're never blind to the miss.
|
|
374
|
+
const slack = getSlackService();
|
|
375
|
+
await slack.sendMessage({
|
|
376
|
+
channelId,
|
|
377
|
+
threadTs,
|
|
378
|
+
text: messageText,
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
this.requestSlaSubscriber.start();
|
|
382
|
+
setRequestSlaSubscriber(this.requestSlaSubscriber);
|
|
383
|
+
// Pipeline-#4 follow-up: auto-decompose actionable L2 Requests on
|
|
384
|
+
// request:created. Sequenced AFTER the SLA subscriber so the
|
|
385
|
+
// respond_to_user WI seeding still runs first when both fire on
|
|
386
|
+
// the same event (deterministic listener-attach order; both run
|
|
387
|
+
// via the same in-process bus). Side note: order is semantically
|
|
388
|
+
// irrelevant — the linkWorkItem path keys on workitem:queued, not
|
|
389
|
+
// on relative listener position — but predictable startup ordering
|
|
390
|
+
// helps debug.
|
|
391
|
+
this.requestDecomposeSubscriber = RequestDecomposeSubscriber.boot(this.eventBusService, RequestService.getInstance(), TaskPoolService.getInstance());
|
|
392
|
+
this.requestDecomposeSubscriber.start();
|
|
393
|
+
setRequestDecomposeSubscriber(this.requestDecomposeSubscriber);
|
|
394
|
+
// Status-update subscriber: posts progress on Slack-originated
|
|
395
|
+
// Requests as their child WIs reach milestones, plus a heartbeat
|
|
396
|
+
// while work is still in flight. Closes the "long silence after
|
|
397
|
+
// orc's first ack" UX gap. Idempotent — duplicate boots are no-ops.
|
|
398
|
+
this.requestStatusUpdateSubscriber = new RequestStatusUpdateSubscriber({
|
|
399
|
+
eventBus: this.eventBusService,
|
|
400
|
+
requestService: RequestService.getInstance(),
|
|
401
|
+
taskPool: TaskPoolService.getInstance(),
|
|
402
|
+
slackPoster: async ({ channelId, text, threadTs }) => {
|
|
403
|
+
// Post via the in-process SlackService to avoid a self-HTTP
|
|
404
|
+
// hop. The /api/slack/send route's other side-effects (chat
|
|
405
|
+
// persistence, thread-status replied marker) don't apply
|
|
406
|
+
// to mid-thread heartbeat updates — those are only for
|
|
407
|
+
// the user's direct reply, not for orc's progress pings.
|
|
408
|
+
const slack = getSlackService();
|
|
409
|
+
if (!slack.isConnected())
|
|
410
|
+
return;
|
|
411
|
+
await slack.sendMessage({ channelId, text, threadTs });
|
|
412
|
+
},
|
|
413
|
+
heartbeatMinutes: 30,
|
|
414
|
+
});
|
|
415
|
+
this.requestStatusUpdateSubscriber.start();
|
|
416
|
+
// Cascade subscriber: keeps Request.status in sync with the
|
|
417
|
+
// aggregate state of its child WIs by reacting to live task
|
|
418
|
+
// lifecycle events. Closes the gap left by V3DataService's
|
|
419
|
+
// retired `v3:task_*` subscriptions (see 2026-05-09 dogfood
|
|
420
|
+
// note in request-cascade.subscriber.ts).
|
|
421
|
+
this.requestCascadeSubscriber = new RequestCascadeSubscriber({
|
|
422
|
+
eventBus: this.eventBusService,
|
|
423
|
+
requestService: RequestService.getInstance(),
|
|
424
|
+
taskPool: TaskPoolService.getInstance(),
|
|
425
|
+
notifier: this.eventBusService,
|
|
426
|
+
});
|
|
427
|
+
this.requestCascadeSubscriber.start();
|
|
428
|
+
}
|
|
429
|
+
catch (subscriberBootErr) {
|
|
430
|
+
// Degraded mode: SLA tracking + auto-decompose are off, but the
|
|
431
|
+
// API surface and rest of the backend continue to serve. Ops can
|
|
432
|
+
// grep for `v3 subscriber boot failed` in logs to triage.
|
|
433
|
+
this.logger.error('v3 subscriber boot failed — degrading SLA + auto-decompose paths, continuing backend startup', {
|
|
434
|
+
error: subscriberBootErr instanceof Error
|
|
435
|
+
? subscriberBootErr.message
|
|
436
|
+
: String(subscriberBootErr),
|
|
437
|
+
});
|
|
438
|
+
// Best-effort cleanup of any partial wiring so a later restart
|
|
439
|
+
// doesn't see stale singletons. The setters are idempotent.
|
|
440
|
+
setRequestSlaSubscriber(null);
|
|
441
|
+
setRequestDecomposeSubscriber(null);
|
|
442
|
+
setRequestServiceEventBus(null);
|
|
443
|
+
this.requestSlaSubscriber = null;
|
|
444
|
+
this.requestDecomposeSubscriber = null;
|
|
445
|
+
if (this.requestStatusUpdateSubscriber) {
|
|
446
|
+
try {
|
|
447
|
+
this.requestStatusUpdateSubscriber.stop();
|
|
448
|
+
}
|
|
449
|
+
catch { /* best-effort */ }
|
|
450
|
+
this.requestStatusUpdateSubscriber = null;
|
|
451
|
+
}
|
|
452
|
+
if (this.requestCascadeSubscriber) {
|
|
453
|
+
try {
|
|
454
|
+
this.requestCascadeSubscriber.stop();
|
|
455
|
+
}
|
|
456
|
+
catch { /* best-effort */ }
|
|
457
|
+
this.requestCascadeSubscriber = null;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
337
460
|
// Initialize Slack thread store for persistent thread conversations
|
|
338
461
|
const slackThreadStore = new SlackThreadStoreService(this.config.crewlyHome);
|
|
339
462
|
setSlackThreadStore(slackThreadStore);
|
|
@@ -368,28 +491,45 @@ export class CrewlyServer {
|
|
|
368
491
|
}
|
|
369
492
|
}
|
|
370
493
|
});
|
|
494
|
+
// Shared LiveReconcilerDataProvider instance used by both the
|
|
495
|
+
// Reconciler service and the TeamHealthWatchdog data provider.
|
|
496
|
+
// Sharing is required so the memory-pressure broadcast state
|
|
497
|
+
// (`consecutivePressureSkips` / `lastPressureNotifiedAt`) is
|
|
498
|
+
// counted ONCE per sustained pressure episode. Two separate
|
|
499
|
+
// instances would each cross the 5-skip threshold around the same
|
|
500
|
+
// time and publish two `system:memory_pressure` events with
|
|
501
|
+
// distinct `event.id` values (no debounce match), so orc would
|
|
502
|
+
// receive duplicates. See follow-up #5 from PR #543 review.
|
|
503
|
+
const liveDataProvider = new LiveReconcilerDataProvider();
|
|
504
|
+
liveDataProvider.setEventBus(this.eventBusService);
|
|
505
|
+
// Wire AgentRegistrationService so the memory-pressure eviction
|
|
506
|
+
// path can terminate idle agents to free wake slots (issue surfaced
|
|
507
|
+
// 2026-05-16: queued WIs for inactive Atlas could not get woken
|
|
508
|
+
// because the floor was held by idle product/marketing agents).
|
|
509
|
+
liveDataProvider.setAgentRegistrationService(this.apiController.agentRegistrationService);
|
|
371
510
|
// Initialize Reconciler Service (V2 — system truth recomputation)
|
|
372
511
|
{
|
|
373
512
|
const reconcilerLogger = LoggerService.getInstance().createComponentLogger('ReconcilerInit');
|
|
374
513
|
// Live data provider — connects Reconciler to Task Pool, Claim Service,
|
|
375
514
|
// Storage Service, and Agent Suspend for real reconciliation including
|
|
376
515
|
// Hybrid Wake (auto-rehydrating suspended agents when tasks go unclaimed).
|
|
377
|
-
const liveDataProvider = new LiveReconcilerDataProvider();
|
|
378
516
|
this.reconcilerService = new ReconcilerService(liveDataProvider);
|
|
379
517
|
setReconcilerService(this.reconcilerService);
|
|
380
518
|
// Subscribe EventBus events for targeted reconciliation
|
|
381
519
|
if (this.reconcilerService) {
|
|
382
520
|
const reconciler = this.reconcilerService;
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
521
|
+
// 2026-05-15 Steve dogfood: the prior `subscribe({ subscriberSession:
|
|
522
|
+
// '__reconciler__' })` loop here was redundant AND wrong. The
|
|
523
|
+
// subscribe path routes critical events through
|
|
524
|
+
// `MessageQueueService.enqueue` keyed by `targetSession`, which
|
|
525
|
+
// then fails noisily because `__reconciler__` is not a PTY
|
|
526
|
+
// session ("Session '__reconciler__' does not exist", every
|
|
527
|
+
// reconciler tick). The in-process `event_published` listener
|
|
528
|
+
// below already drives the reconciler — no second wiring needed.
|
|
529
|
+
// Removed the subscribe-block; if a future change needs persistent
|
|
530
|
+
// metadata for the reconciler subscription, attach it as a real
|
|
531
|
+
// in-process subscriber via `onInProcess` rather than the
|
|
532
|
+
// session-targeted `subscribe` API.
|
|
393
533
|
// Listen for all published events and trigger targeted reconciliation
|
|
394
534
|
this.eventBusService.on('event_published', (payload) => {
|
|
395
535
|
const targetedEventTypes = ['task:completed', 'task:failed', 'agent:idle', 'agent:inactive'];
|
|
@@ -422,9 +562,11 @@ export class CrewlyServer {
|
|
|
422
562
|
thwLogger.warn('Reconciler not available; skipping TeamHealthWatchdog init.');
|
|
423
563
|
}
|
|
424
564
|
else {
|
|
425
|
-
|
|
565
|
+
// Reuse the shared LiveReconcilerDataProvider declared
|
|
566
|
+
// above (follow-up #5 from PR #543 review) — instantiating
|
|
567
|
+
// a second copy would double-broadcast memory-pressure.
|
|
426
568
|
const dataProvider = new LiveTeamHealthDataProvider({
|
|
427
|
-
reconcilerProvider,
|
|
569
|
+
reconcilerProvider: liveDataProvider,
|
|
428
570
|
getTeams: async () => StorageService.getInstance().getTeams(),
|
|
429
571
|
bootedAt: new Date(),
|
|
430
572
|
});
|
|
@@ -892,7 +1034,7 @@ export class CrewlyServer {
|
|
|
892
1034
|
const ctxSessionBackend = getSessionBackendSync();
|
|
893
1035
|
if (ctxSessionBackend) {
|
|
894
1036
|
const contextWindowMonitor = ContextWindowMonitorService.getInstance();
|
|
895
|
-
contextWindowMonitor.setDependencies(ctxSessionBackend, this.apiController.agentRegistrationService, this.storageService, this.
|
|
1037
|
+
contextWindowMonitor.setDependencies(ctxSessionBackend, this.apiController.agentRegistrationService, this.storageService, this.eventBusService);
|
|
896
1038
|
contextWindowMonitor.start();
|
|
897
1039
|
this.logger.info('ContextWindowMonitorService started');
|
|
898
1040
|
}
|
|
@@ -915,7 +1057,6 @@ export class CrewlyServer {
|
|
|
915
1057
|
try {
|
|
916
1058
|
const runtimeExitMonitor = RuntimeExitMonitorService.getInstance();
|
|
917
1059
|
runtimeExitMonitor.setAgentRegistrationService(this.apiController.agentRegistrationService);
|
|
918
|
-
runtimeExitMonitor.setTaskTrackingService(this.taskTrackingService);
|
|
919
1060
|
runtimeExitMonitor.setEventBusService(this.eventBusService);
|
|
920
1061
|
}
|
|
921
1062
|
catch (error) {
|
|
@@ -974,6 +1115,11 @@ export class CrewlyServer {
|
|
|
974
1115
|
const chatDispatcher = new ChatV2DispatcherService({
|
|
975
1116
|
agentSink: this.apiController.agentRegistrationService,
|
|
976
1117
|
mentionResolver: chatMentionResolver,
|
|
1118
|
+
// Phase B-2 — huddle roster lookup. ChatV2Service owns
|
|
1119
|
+
// the chat_channel_members table; the dispatcher just
|
|
1120
|
+
// needs the list of session names for a given channel
|
|
1121
|
+
// to fan-out a user message to every huddle member.
|
|
1122
|
+
huddleMembersFor: (channelId) => chatService.queryHuddleMembersForDispatch(channelId),
|
|
977
1123
|
});
|
|
978
1124
|
this.chatV2Gateway = chatGateway;
|
|
979
1125
|
this.chatV2Dispatcher = chatDispatcher;
|
|
@@ -985,8 +1131,73 @@ export class CrewlyServer {
|
|
|
985
1131
|
path: '/ws/chat',
|
|
986
1132
|
authMode: jwtSecret ? 'jwt' : 'dev-anonymous',
|
|
987
1133
|
});
|
|
1134
|
+
// Cloud Portal relay bridge — gives the Crewly Portal at
|
|
1135
|
+
// crewlyai.com the same /agents experience by tunnelling chat-v2
|
|
1136
|
+
// RPC calls through the Cloud relay queue + forwarding gateway
|
|
1137
|
+
// broadcasts as `chat_event` messages. Only wired when Cloud Sync
|
|
1138
|
+
// is running (BrowserRelayAdapter pattern).
|
|
1139
|
+
try {
|
|
1140
|
+
const { ChatV2RelayAdapter } = await import('./services/chat-v2/chat-v2.relay-adapter.service.js');
|
|
1141
|
+
const { CloudSyncService } = await import('./services/cloud/cloud-sync.service.js');
|
|
1142
|
+
const { createOssAgentDirectoryProvider, createOssAgentPresenceProvider, } = await import('./services/chat-v2/chat-v2.providers.js');
|
|
1143
|
+
const sync = CloudSyncService.getInstance();
|
|
1144
|
+
if (sync) {
|
|
1145
|
+
const chatRelayAdapter = new ChatV2RelayAdapter({
|
|
1146
|
+
service: chatService,
|
|
1147
|
+
gateway: chatGateway,
|
|
1148
|
+
cloudSync: sync,
|
|
1149
|
+
// Wire the dispatcher so Portal-sent user messages also fire the
|
|
1150
|
+
// agent-side prompt (parity with the HTTP controller path).
|
|
1151
|
+
// Without this, Portal user-messages persist but the bound agent
|
|
1152
|
+
// never receives the `[CHAT:<id>]` prompt — orc/etc. stay silent.
|
|
1153
|
+
dispatcher: chatDispatcher,
|
|
1154
|
+
directory: createOssAgentDirectoryProvider(this.storageService),
|
|
1155
|
+
presence: createOssAgentPresenceProvider(this.storageService),
|
|
1156
|
+
});
|
|
1157
|
+
chatRelayAdapter.start();
|
|
1158
|
+
this.logger.info('ChatV2RelayAdapter started — Cloud Portal can now drive chat-v2 via relay');
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
catch (err) {
|
|
1162
|
+
// Adapter wiring failure is non-fatal — local OSS UI still works.
|
|
1163
|
+
this.logger.warn('ChatV2RelayAdapter wiring skipped', {
|
|
1164
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
// Onboarding v3 (B1) — wire the cold-start detector with the
|
|
1168
|
+
// chat-v2 service we just stood up. The orc bootstrap path
|
|
1169
|
+
// (CrewlyAgentRuntimeService.detectOnboardingMode) probes this
|
|
1170
|
+
// singleton; null means "skip the cold-start probe", so this
|
|
1171
|
+
// wiring is what flips onboarding mode on for the demo path.
|
|
1172
|
+
try {
|
|
1173
|
+
const { OnboardingBootstrapService, setOnboardingBootstrapService } = await import('./services/orchestrator/onboarding-bootstrap.service.js');
|
|
1174
|
+
setOnboardingBootstrapService(new OnboardingBootstrapService({
|
|
1175
|
+
storage: this.storageService,
|
|
1176
|
+
chat: { countAllMessages: () => chatService.countAllMessages() },
|
|
1177
|
+
}));
|
|
1178
|
+
this.logger.info('OnboardingBootstrapService wired with storage + chat probes');
|
|
1179
|
+
}
|
|
1180
|
+
catch (wireErr) {
|
|
1181
|
+
this.logger.warn('Failed to wire OnboardingBootstrapService (non-critical)', {
|
|
1182
|
+
error: wireErr instanceof Error ? wireErr.message : String(wireErr),
|
|
1183
|
+
});
|
|
1184
|
+
}
|
|
988
1185
|
}
|
|
989
1186
|
catch (error) {
|
|
1187
|
+
// F-CYCLE7-1: a native-binding failure (e.g. better-sqlite3 built
|
|
1188
|
+
// for the wrong arch) MUST crash the boot rather than be downgraded
|
|
1189
|
+
// to a JSON-file fallback. The audit on 2026-05-07 caught this
|
|
1190
|
+
// exact path: chat.db went stale at 11:17Z because dlopen errors
|
|
1191
|
+
// were swallowed here as "non-critical", so operators had no signal
|
|
1192
|
+
// to run `npm rebuild better-sqlite3 --build-from-source`.
|
|
1193
|
+
//
|
|
1194
|
+
// `isNativeBindingFatalError` matches structurally (not just via
|
|
1195
|
+
// instanceof) so realm-boundary cases — same module loaded via
|
|
1196
|
+
// two require paths — still trip the rethrow.
|
|
1197
|
+
if (isNativeBindingFatalError(error)) {
|
|
1198
|
+
this.logger.error('FATAL native binding failed at chat-v2 boot — refusing to downgrade to JSON fallback. Run the printed remediation and restart.', { error: error.message });
|
|
1199
|
+
throw error;
|
|
1200
|
+
}
|
|
990
1201
|
this.logger.warn('Failed to start chat-v2 WS gateway (non-critical)', {
|
|
991
1202
|
error: error instanceof Error ? error.message : String(error),
|
|
992
1203
|
});
|
|
@@ -1073,6 +1284,7 @@ export class CrewlyServer {
|
|
|
1073
1284
|
// resume notification won't re-send already-answered conversations.
|
|
1074
1285
|
try {
|
|
1075
1286
|
const { RequestService } = await import('./services/v3/request.service.js');
|
|
1287
|
+
const { extractSlackChannelId, extractSlackThreadTs } = await import('./services/v3/request-sla.subscriber.js');
|
|
1076
1288
|
const reqSvc = RequestService.getInstance();
|
|
1077
1289
|
const allReqs = await reqSvc.listAll();
|
|
1078
1290
|
let backfilled = 0;
|
|
@@ -1080,13 +1292,17 @@ export class CrewlyServer {
|
|
|
1080
1292
|
if (req.status !== 'done')
|
|
1081
1293
|
continue;
|
|
1082
1294
|
const scid = req.sourceConversationItemId || '';
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1295
|
+
// `extractSlack*` strips the optional `-msg-{ts}` thread-reply
|
|
1296
|
+
// suffix before parsing, so both top-level and in-thread
|
|
1297
|
+
// Requests resolve to the canonical `{channelId}:{threadRoot}`.
|
|
1298
|
+
// Previously a local regex was used here and its greedy `.+`
|
|
1299
|
+
// swallowed the suffix, producing a malformed threadKey that
|
|
1300
|
+
// missed the dedup check and bloated the persistence file.
|
|
1301
|
+
const channelId = extractSlackChannelId(scid);
|
|
1302
|
+
const threadTs = extractSlackThreadTs(scid);
|
|
1303
|
+
if (!channelId || !threadTs)
|
|
1087
1304
|
continue;
|
|
1088
|
-
const
|
|
1089
|
-
const threadKey = `${channelId}:${t1}.${t2}`;
|
|
1305
|
+
const threadKey = `${channelId}:${threadTs}`;
|
|
1090
1306
|
if (this.threadStatusQueueService.get(threadKey))
|
|
1091
1307
|
continue;
|
|
1092
1308
|
this.threadStatusQueueService.trackInbound({
|
|
@@ -1112,9 +1328,7 @@ export class CrewlyServer {
|
|
|
1112
1328
|
// but before the queue processor starts (so replayed messages are ready for delivery).
|
|
1113
1329
|
try {
|
|
1114
1330
|
const { MessageReplayService } = await import('./services/messaging/message-replay.service.js');
|
|
1115
|
-
const
|
|
1116
|
-
const chatService = getChatService();
|
|
1117
|
-
const replayService = new MessageReplayService(this.messageQueueService, chatService, this.config.crewlyHome);
|
|
1331
|
+
const replayService = new MessageReplayService(this.messageQueueService, this.config.crewlyHome);
|
|
1118
1332
|
const replayResult = await replayService.replayPendingMessages();
|
|
1119
1333
|
if (replayResult.replayedCount > 0) {
|
|
1120
1334
|
this.logger.info('Replayed pending messages from offline period (#247)', {
|
|
@@ -1170,6 +1384,16 @@ export class CrewlyServer {
|
|
|
1170
1384
|
this.logger.info('Executing cron task', { id: task.id, target: task.targetAgent });
|
|
1171
1385
|
await registrationRef.sendMessageToAgent(task.targetAgent, `[CRON_TASK:${task.id}] ${task.taskDescription}`);
|
|
1172
1386
|
});
|
|
1387
|
+
// Issue #307: cron tasks created with `targetTeamId` set to a
|
|
1388
|
+
// name slug (e.g. "stock-ops-team") instead of the UUID would
|
|
1389
|
+
// silently 404 on every fire — `teams.find(t => t.id === teamId)`
|
|
1390
|
+
// returned undefined and both callbacks returned `false` with
|
|
1391
|
+
// no log surface. `resolveTeamByIdOrSlug` (imported statically
|
|
1392
|
+
// at the top of the file) tries UUID first, then falls back
|
|
1393
|
+
// to a slug match against `name`. Misses now surface a distinct
|
|
1394
|
+
// warn-log with the available slugs so the cause is visible
|
|
1395
|
+
// instead of hiding behind the generic "agent offline" warn
|
|
1396
|
+
// from cron-task.service.
|
|
1173
1397
|
cronTaskService.setAgentStatusCallback(async (sessionName, teamId) => {
|
|
1174
1398
|
// Handle orchestrator separately — it's not in regular teams
|
|
1175
1399
|
if (sessionName === CREWLY_CONSTANTS.SESSIONS.ORCHESTRATOR_NAME || teamId === 'orchestrator') {
|
|
@@ -1177,9 +1401,16 @@ export class CrewlyServer {
|
|
|
1177
1401
|
return orchStatus?.agentStatus === 'active' || orchStatus?.agentStatus === 'started';
|
|
1178
1402
|
}
|
|
1179
1403
|
const teams = await storageRef.getTeams();
|
|
1180
|
-
const team = teams
|
|
1181
|
-
if (!team)
|
|
1404
|
+
const team = resolveTeamByIdOrSlug(teams, teamId);
|
|
1405
|
+
if (!team) {
|
|
1406
|
+
this.logger.warn('CronTask: targetTeamId resolves to no team', {
|
|
1407
|
+
sessionName,
|
|
1408
|
+
targetTeamId: teamId,
|
|
1409
|
+
availableSlugs: teams.slice(0, 10).map((t) => slugifyTeamName(t.name)),
|
|
1410
|
+
hint: 'Set targetTeamId to either the team UUID or one of availableSlugs (lowercase, spaces→-)',
|
|
1411
|
+
});
|
|
1182
1412
|
return false;
|
|
1413
|
+
}
|
|
1183
1414
|
const member = team.members.find((m) => m.sessionName === sessionName);
|
|
1184
1415
|
if (!member)
|
|
1185
1416
|
return false;
|
|
@@ -1189,16 +1420,25 @@ export class CrewlyServer {
|
|
|
1189
1420
|
cronTaskService.setAgentStartCallback(async (sessionName, teamId) => {
|
|
1190
1421
|
try {
|
|
1191
1422
|
const teams = await storageRef.getTeams();
|
|
1192
|
-
const team = teams
|
|
1193
|
-
if (!team)
|
|
1423
|
+
const team = resolveTeamByIdOrSlug(teams, teamId);
|
|
1424
|
+
if (!team) {
|
|
1425
|
+
this.logger.warn('CronTask auto-start: targetTeamId resolves to no team', {
|
|
1426
|
+
sessionName,
|
|
1427
|
+
targetTeamId: teamId,
|
|
1428
|
+
availableSlugs: teams.slice(0, 10).map((t) => slugifyTeamName(t.name)),
|
|
1429
|
+
hint: 'Set targetTeamId to either the team UUID or one of availableSlugs (lowercase, spaces→-)',
|
|
1430
|
+
});
|
|
1194
1431
|
return false;
|
|
1432
|
+
}
|
|
1195
1433
|
const member = team.members.find((m) => m.sessionName === sessionName);
|
|
1196
1434
|
if (!member)
|
|
1197
1435
|
return false;
|
|
1198
1436
|
await registrationRef.createAgentSession({
|
|
1199
1437
|
sessionName: member.sessionName,
|
|
1200
1438
|
role: member.role,
|
|
1201
|
-
|
|
1439
|
+
// Use the resolved team's UUID — not the user-supplied identifier
|
|
1440
|
+
// — so downstream agent-registration always sees the canonical id.
|
|
1441
|
+
teamId: team.id,
|
|
1202
1442
|
memberId: member.id,
|
|
1203
1443
|
});
|
|
1204
1444
|
return true;
|
|
@@ -1392,12 +1632,27 @@ export class CrewlyServer {
|
|
|
1392
1632
|
error: v3Err instanceof Error ? v3Err.message : String(v3Err),
|
|
1393
1633
|
});
|
|
1394
1634
|
}
|
|
1635
|
+
// Start WorkItemDispatchSubscriber FIRST — AgentAutoClaim's recovery
|
|
1636
|
+
// path delegates to its dispatchTo() for the "active target session"
|
|
1637
|
+
// branch, so the singleton must be reachable when recovery fires.
|
|
1638
|
+
try {
|
|
1639
|
+
const { WorkItemDispatchSubscriber } = await import('./services/v3/workitem-dispatch.subscriber.js');
|
|
1640
|
+
const dispatchSubscriber = WorkItemDispatchSubscriber.getInstance();
|
|
1641
|
+
dispatchSubscriber.initialize(this.eventBusService);
|
|
1642
|
+
dispatchSubscriber.start();
|
|
1643
|
+
this.logger.info('WorkItemDispatchSubscriber started — workitem:queued events push to target sessions');
|
|
1644
|
+
}
|
|
1645
|
+
catch (dispatchErr) {
|
|
1646
|
+
this.logger.warn('WorkItemDispatchSubscriber initialization failed (non-critical)', {
|
|
1647
|
+
error: dispatchErr instanceof Error ? dispatchErr.message : String(dispatchErr),
|
|
1648
|
+
});
|
|
1649
|
+
}
|
|
1395
1650
|
// Start AgentAutoClaimService — auto-assign work to idle agents
|
|
1396
1651
|
try {
|
|
1397
1652
|
const { AgentAutoClaimService } = await import('./services/v3/agent-auto-claim.service.js');
|
|
1398
1653
|
const autoClaimService = AgentAutoClaimService.getInstance();
|
|
1399
1654
|
autoClaimService.initialize(this.eventBusService);
|
|
1400
|
-
autoClaimService.start();
|
|
1655
|
+
await autoClaimService.start();
|
|
1401
1656
|
this.logger.info('AgentAutoClaimService started — idle agents will auto-claim work');
|
|
1402
1657
|
}
|
|
1403
1658
|
catch (autoClaimErr) {
|
|
@@ -1474,8 +1729,9 @@ export class CrewlyServer {
|
|
|
1474
1729
|
VersionCheckService.getInstance().checkForUpdate().catch(() => {
|
|
1475
1730
|
// Silently ignore — version check is non-critical
|
|
1476
1731
|
});
|
|
1477
|
-
//
|
|
1478
|
-
|
|
1732
|
+
// V3-only as of spec 2026-05-06-task-management-v1-deprecation.md.
|
|
1733
|
+
// The legacy `TaskTrackingService.startAutoSync()` is gone — V3
|
|
1734
|
+
// task-pool reconciler owns lifecycle cleanup now.
|
|
1479
1735
|
// Initialize token usage tracking: load persisted data and start periodic flush
|
|
1480
1736
|
try {
|
|
1481
1737
|
const tokenUsageService = TokenUsageService.getInstance();
|
|
@@ -1511,6 +1767,25 @@ export class CrewlyServer {
|
|
|
1511
1767
|
});
|
|
1512
1768
|
}
|
|
1513
1769
|
}
|
|
1770
|
+
// C1 — boot-time state invariant check (Persistence P0 spec).
|
|
1771
|
+
// Refuses to start serving traffic if the live teams directory
|
|
1772
|
+
// is empty but a healthy backup snapshot exists. Override via
|
|
1773
|
+
// CREWLY_FORCE_EMPTY_BOOT=1 for legitimate fresh-install / reset.
|
|
1774
|
+
try {
|
|
1775
|
+
await this.storageService.verifyStateInvariantOnBoot();
|
|
1776
|
+
}
|
|
1777
|
+
catch (invariantErr) {
|
|
1778
|
+
const { StateInvariantViolation } = await import('./services/core/state-invariant.types.js');
|
|
1779
|
+
if (invariantErr instanceof StateInvariantViolation) {
|
|
1780
|
+
this.logger.error('Boot aborted by state invariant check — refusing to serve traffic with wiped state', {
|
|
1781
|
+
currentTeamCount: invariantErr.currentTeamCount,
|
|
1782
|
+
backupTeamCount: invariantErr.backupTeamCount,
|
|
1783
|
+
backupTimestamp: invariantErr.backupTimestamp,
|
|
1784
|
+
message: invariantErr.message,
|
|
1785
|
+
});
|
|
1786
|
+
}
|
|
1787
|
+
throw invariantErr;
|
|
1788
|
+
}
|
|
1514
1789
|
// Start HTTP server with enhanced error handling
|
|
1515
1790
|
await this.startHttpServer();
|
|
1516
1791
|
// Load addons from ~/.crewly/addons/ (Pro features, extensions, etc.)
|
|
@@ -1534,21 +1809,27 @@ export class CrewlyServer {
|
|
|
1534
1809
|
await this.autoStartOrchestratorIfEnabled();
|
|
1535
1810
|
// Auto-restore agent sessions that were running before the last shutdown
|
|
1536
1811
|
await this.autoRestoreAgentSessionsIfEnabled();
|
|
1537
|
-
// #166: Auto-recover in-progress tasks after restart
|
|
1538
|
-
// #196: Skip tasks older than 1 hour to avoid re-sending stale work
|
|
1812
|
+
// #166: Auto-recover in-progress tasks after restart.
|
|
1813
|
+
// #196: Skip tasks older than 1 hour to avoid re-sending stale work.
|
|
1814
|
+
// V3-only as of spec 2026-05-06-task-management-v1-deprecation.md —
|
|
1815
|
+
// reads WorkItems from TaskPoolService (replaces the prior
|
|
1816
|
+
// `TaskTrackingService.getAllInProgressTasks()` call).
|
|
1539
1817
|
try {
|
|
1540
1818
|
const TASK_RECOVERY_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
|
|
1541
|
-
const
|
|
1819
|
+
const { TaskPoolService } = await import('./services/task-pool/task-pool.service.js');
|
|
1820
|
+
const allItems = await TaskPoolService.getInstance().getAllItems();
|
|
1542
1821
|
const now = Date.now();
|
|
1543
|
-
const activeTasks =
|
|
1544
|
-
if (
|
|
1822
|
+
const activeTasks = allItems.filter(wi => {
|
|
1823
|
+
if (wi.status !== 'queued' && wi.status !== 'accepted' && wi.status !== 'running')
|
|
1545
1824
|
return false;
|
|
1546
|
-
|
|
1547
|
-
|
|
1825
|
+
if (!wi.target)
|
|
1826
|
+
return false;
|
|
1827
|
+
// Skip stale tasks — startedAt/createdAt older than threshold
|
|
1828
|
+
const taskTime = new Date(wi.startedAt || wi.createdAt || 0).getTime();
|
|
1548
1829
|
if (now - taskTime > TASK_RECOVERY_MAX_AGE_MS) {
|
|
1549
1830
|
this.logger.info('Skipping stale task recovery (older than 1 hour)', {
|
|
1550
|
-
|
|
1551
|
-
taskName:
|
|
1831
|
+
workItemId: wi.id,
|
|
1832
|
+
taskName: wi.title,
|
|
1552
1833
|
age: `${Math.round((now - taskTime) / 60000)} minutes`,
|
|
1553
1834
|
});
|
|
1554
1835
|
return false;
|
|
@@ -1556,24 +1837,24 @@ export class CrewlyServer {
|
|
|
1556
1837
|
return true;
|
|
1557
1838
|
});
|
|
1558
1839
|
if (activeTasks.length > 0) {
|
|
1559
|
-
this.logger.info('Found in-progress
|
|
1840
|
+
this.logger.info('Found in-progress WorkItems to recover after restart', {
|
|
1560
1841
|
count: activeTasks.length,
|
|
1561
1842
|
});
|
|
1562
|
-
for (const
|
|
1843
|
+
for (const wi of activeTasks) {
|
|
1563
1844
|
try {
|
|
1564
|
-
const recoveryMessage = `[SYSTEM — TASK RECOVERY] You were working on this task before the server restarted. Please continue:\n\nTask: ${
|
|
1565
|
-
await this.apiController.agentRegistrationService.sendMessageToAgent(
|
|
1845
|
+
const recoveryMessage = `[SYSTEM — TASK RECOVERY] You were working on this task before the server restarted. Please continue:\n\nTask: ${wi.title}\nWorkItem: ${wi.id}\n\nFetch full brief: bash config/skills/agent/core/read-task/execute.sh '{"workItemId":"${wi.id}"}'\n\nPlease check the current state and continue working.`;
|
|
1846
|
+
await this.apiController.agentRegistrationService.sendMessageToAgent(wi.target, recoveryMessage, undefined);
|
|
1566
1847
|
this.logger.info('Task recovery message sent', {
|
|
1567
|
-
|
|
1568
|
-
sessionName:
|
|
1569
|
-
taskName:
|
|
1848
|
+
workItemId: wi.id,
|
|
1849
|
+
sessionName: wi.target,
|
|
1850
|
+
taskName: wi.title,
|
|
1570
1851
|
});
|
|
1571
1852
|
}
|
|
1572
1853
|
catch (err) {
|
|
1573
1854
|
// Agent might not be online yet — DLQ in scheduler will handle it
|
|
1574
1855
|
this.logger.warn('Task recovery delivery deferred (agent may not be online yet)', {
|
|
1575
|
-
|
|
1576
|
-
sessionName:
|
|
1856
|
+
workItemId: wi.id,
|
|
1857
|
+
sessionName: wi.target,
|
|
1577
1858
|
error: err instanceof Error ? err.message : String(err),
|
|
1578
1859
|
});
|
|
1579
1860
|
}
|
|
@@ -1869,15 +2150,56 @@ export class CrewlyServer {
|
|
|
1869
2150
|
// and auditor sessions when auditor is disabled
|
|
1870
2151
|
const isAuditorEnabled = process.env[AUDITOR_CONSTANTS.ENV_VAR]?.toLowerCase() === 'true'
|
|
1871
2152
|
|| (process.env[AUDITOR_CONSTANTS.ENV_VAR] === undefined && AUDITOR_CONSTANTS.ENABLED_BY_DEFAULT);
|
|
1872
|
-
const
|
|
2153
|
+
const baselineSessions = state.sessions.filter((s) => {
|
|
1873
2154
|
if (s.role === ORCHESTRATOR_ROLE)
|
|
1874
2155
|
return false;
|
|
1875
2156
|
if (!isAuditorEnabled && s.name === AUDITOR_SCHEDULER_CONSTANTS.AUDITOR_SESSION_NAME)
|
|
1876
2157
|
return false;
|
|
1877
2158
|
return true;
|
|
1878
2159
|
});
|
|
2160
|
+
// 2026-05-17 — gate by task-pool work. Pre-fix the boot path
|
|
2161
|
+
// blindly resurrected every persisted session even when none had
|
|
2162
|
+
// pending work, defeating the wake-gate philosophy (PR #574/#585)
|
|
2163
|
+
// and bloating RAM until IdleDetection eventually drained them
|
|
2164
|
+
// back. Now: only restore a session if the pool has at least one
|
|
2165
|
+
// non-terminal WorkItem with `target === sessionName`. Idle
|
|
2166
|
+
// agents stay dead until orc dispatches new work, at which point
|
|
2167
|
+
// the dispatcher / wake path raises them on demand.
|
|
2168
|
+
//
|
|
2169
|
+
// Safety valve: if the pool lookup throws (e.g. SQLite not yet
|
|
2170
|
+
// open during early boot), preserve the legacy behaviour rather
|
|
2171
|
+
// than block all restores — better to over-restore than to
|
|
2172
|
+
// silently strand work.
|
|
2173
|
+
let agentSessions = baselineSessions;
|
|
2174
|
+
try {
|
|
2175
|
+
const pool = TaskPoolService.getInstance();
|
|
2176
|
+
const allItems = await pool.getAllItems();
|
|
2177
|
+
const targetedSessions = new Set();
|
|
2178
|
+
for (const wi of allItems) {
|
|
2179
|
+
if (wi.status === 'done' || wi.status === 'cancelled')
|
|
2180
|
+
continue;
|
|
2181
|
+
const t = wi.target;
|
|
2182
|
+
if (typeof t === 'string' && t.length > 0)
|
|
2183
|
+
targetedSessions.add(t);
|
|
2184
|
+
}
|
|
2185
|
+
const filtered = baselineSessions.filter((s) => targetedSessions.has(s.name));
|
|
2186
|
+
const skipped = baselineSessions
|
|
2187
|
+
.filter((s) => !targetedSessions.has(s.name))
|
|
2188
|
+
.map((s) => s.name);
|
|
2189
|
+
if (skipped.length > 0) {
|
|
2190
|
+
this.logger.info('Skipping auto-restore for sessions with no pending WorkItem (idle agents stay dead until dispatched work arrives)', {
|
|
2191
|
+
skippedCount: skipped.length,
|
|
2192
|
+
skipped: skipped.slice(0, 20),
|
|
2193
|
+
truncated: skipped.length > 20,
|
|
2194
|
+
});
|
|
2195
|
+
}
|
|
2196
|
+
agentSessions = filtered;
|
|
2197
|
+
}
|
|
2198
|
+
catch (poolErr) {
|
|
2199
|
+
this.logger.warn('Auto-restore could not query task pool; falling back to restoring every persisted session', { error: poolErr instanceof Error ? poolErr.message : String(poolErr) });
|
|
2200
|
+
}
|
|
1879
2201
|
if (agentSessions.length === 0) {
|
|
1880
|
-
this.logger.
|
|
2202
|
+
this.logger.info('No persisted agent sessions to restore (all idle, no pending WorkItems)');
|
|
1881
2203
|
return;
|
|
1882
2204
|
}
|
|
1883
2205
|
this.logger.info('Auto-restoring agent sessions from persisted state', {
|
|
@@ -2009,6 +2331,49 @@ export class CrewlyServer {
|
|
|
2009
2331
|
websocketUrl: `ws://localhost:${this.config.webPort}`,
|
|
2010
2332
|
home: this.config.crewlyHome
|
|
2011
2333
|
});
|
|
2334
|
+
// B0 (interim) per `.crewly/specs/2026-05-05-trigger-persistence-bug.md`:
|
|
2335
|
+
// Broadcast `system:backend_restarted` exactly once per boot. The
|
|
2336
|
+
// trigger engine (`backend/src/services/v3/trigger-engine.service.ts`)
|
|
2337
|
+
// stores all `schedule-followup` / `watch-for-event` triggers in an
|
|
2338
|
+
// in-memory `Map<string, Trigger>` that is wiped on every restart.
|
|
2339
|
+
// Subscribers (e.g. self-watch-scribe, any TL using §3.0 universal
|
|
2340
|
+
// delegator-rule) listen for this event as a freshness signal and
|
|
2341
|
+
// re-arm their watchdogs. Re-arm latency drops from "manual cycle"
|
|
2342
|
+
// to "next event tick" — closes the wipe-coverage-gap to seconds.
|
|
2343
|
+
// B1 (full fix) is disk-backed declarative trigger config per the
|
|
2344
|
+
// spec Path A; B0 is the unblock-first interim until B1 lands.
|
|
2345
|
+
try {
|
|
2346
|
+
// AgentEvent shape (`backend/src/types/event-bus.types.ts:198`)
|
|
2347
|
+
// requires a fixed set of string fields. For system-scoped
|
|
2348
|
+
// events we use 'system' for member/session and leave team
|
|
2349
|
+
// fields empty — subscribers MUST gate on `type` rather than
|
|
2350
|
+
// team/member identity. Boot diagnostics (port, duration) are
|
|
2351
|
+
// already in the preceding `Crewly server started` log;
|
|
2352
|
+
// callers needing them can correlate by `timestamp`.
|
|
2353
|
+
this.eventBusService.publish({
|
|
2354
|
+
id: `system-backend-restarted-${Date.now()}`,
|
|
2355
|
+
type: 'system:backend_restarted',
|
|
2356
|
+
timestamp: new Date().toISOString(),
|
|
2357
|
+
teamId: '',
|
|
2358
|
+
teamName: '',
|
|
2359
|
+
memberId: '',
|
|
2360
|
+
memberName: 'system',
|
|
2361
|
+
sessionName: 'system',
|
|
2362
|
+
previousValue: 'stopped',
|
|
2363
|
+
newValue: 'started',
|
|
2364
|
+
changedField: 'agentStatus'
|
|
2365
|
+
});
|
|
2366
|
+
this.logger.info('Broadcast system:backend_restarted event', {
|
|
2367
|
+
port: this.config.webPort,
|
|
2368
|
+
bootDurationMs: duration
|
|
2369
|
+
});
|
|
2370
|
+
}
|
|
2371
|
+
catch (emitError) {
|
|
2372
|
+
// Failure isolation — never block boot on this telemetry.
|
|
2373
|
+
this.logger.warn('Failed to broadcast system:backend_restarted (non-fatal)', {
|
|
2374
|
+
error: emitError instanceof Error ? emitError.message : String(emitError)
|
|
2375
|
+
});
|
|
2376
|
+
}
|
|
2012
2377
|
resolve();
|
|
2013
2378
|
});
|
|
2014
2379
|
this.httpServer.on('error', (error) => {
|
|
@@ -2260,14 +2625,13 @@ export class CrewlyServer {
|
|
|
2260
2625
|
if (req.sourceConversationItemId.startsWith('slack-')) {
|
|
2261
2626
|
try {
|
|
2262
2627
|
const { ThreadStatusQueueService } = await import('./services/messaging/thread-status-queue.service.js');
|
|
2628
|
+
const { extractSlackChannelId, extractSlackThreadTs } = await import('./services/v3/request-sla.subscriber.js');
|
|
2263
2629
|
const tsq = ThreadStatusQueueService.getInstance();
|
|
2264
|
-
//
|
|
2265
|
-
//
|
|
2266
|
-
|
|
2267
|
-
const
|
|
2268
|
-
if (
|
|
2269
|
-
const channelId = match[1];
|
|
2270
|
-
const threadTs = `${match[2]}.${match[3]}`;
|
|
2630
|
+
// Use the canonical parser (handles both `slack-{ch}-{ts}` and
|
|
2631
|
+
// the thread-reply `slack-{ch}-{root}-msg-{msgTs}` shapes).
|
|
2632
|
+
const channelId = extractSlackChannelId(req.sourceConversationItemId);
|
|
2633
|
+
const threadTs = extractSlackThreadTs(req.sourceConversationItemId);
|
|
2634
|
+
if (channelId && threadTs) {
|
|
2271
2635
|
const threadKey = `${channelId}:${threadTs}`;
|
|
2272
2636
|
// Create entry if not tracked, then mark terminal
|
|
2273
2637
|
if (!tsq.get(threadKey)) {
|
|
@@ -2464,6 +2828,11 @@ export class CrewlyServer {
|
|
|
2464
2828
|
this.autoLearningSubscriber.stop();
|
|
2465
2829
|
this.autoLearningSubscriber = null;
|
|
2466
2830
|
}
|
|
2831
|
+
// DF-1 #438: same shutdown window as auto-learning above.
|
|
2832
|
+
if (this.milestoneNotificationSubscriber) {
|
|
2833
|
+
this.milestoneNotificationSubscriber.stop();
|
|
2834
|
+
this.milestoneNotificationSubscriber = null;
|
|
2835
|
+
}
|
|
2467
2836
|
// INBOUND-1: stop the SLA subscriber and unset the module-level
|
|
2468
2837
|
// references so a follow-up start() doesn't see stale singletons.
|
|
2469
2838
|
if (this.requestSlaSubscriber) {
|
|
@@ -2471,6 +2840,13 @@ export class CrewlyServer {
|
|
|
2471
2840
|
this.requestSlaSubscriber = null;
|
|
2472
2841
|
}
|
|
2473
2842
|
setRequestSlaSubscriber(null);
|
|
2843
|
+
// Pipeline-#4 follow-up: stop the decompose subscriber and clear
|
|
2844
|
+
// its module-level reference on the same shutdown window as SLA.
|
|
2845
|
+
if (this.requestDecomposeSubscriber) {
|
|
2846
|
+
this.requestDecomposeSubscriber.stop();
|
|
2847
|
+
this.requestDecomposeSubscriber = null;
|
|
2848
|
+
}
|
|
2849
|
+
setRequestDecomposeSubscriber(null);
|
|
2474
2850
|
setRequestServiceEventBus(null);
|
|
2475
2851
|
// Clean up event bus service
|
|
2476
2852
|
this.eventBusService.cleanup();
|