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
|
@@ -17,11 +17,100 @@ import { AgentSuspendService } from '../agent/agent-suspend.service.js';
|
|
|
17
17
|
import { LoggerService } from '../core/logger.service.js';
|
|
18
18
|
import { TokenUsageService } from '../monitoring/token-usage.service.js';
|
|
19
19
|
import { isUnderMemoryPressure, getMemoryStats } from '../core/system-health.util.js';
|
|
20
|
+
import { WEB_CONSTANTS, AGENT_SUSPEND_CONSTANTS } from '../../constants.js';
|
|
20
21
|
// ---------------------------------------------------------------------------
|
|
21
22
|
// Constants
|
|
22
23
|
// ---------------------------------------------------------------------------
|
|
23
24
|
/** How long an agent can be unseen before we consider it stale (5 min). */
|
|
24
25
|
const AGENT_STALE_THRESHOLD_MS = 5 * 60 * 1000;
|
|
26
|
+
/**
|
|
27
|
+
* Heuristic: detect "storage not yet hydrated" errors so the data
|
|
28
|
+
* provider can demote them from `error` to `debug` log level.
|
|
29
|
+
*
|
|
30
|
+
* Symptom in production (F-CYCLE7-3, 2026-05-07 11:19→11:21Z): when
|
|
31
|
+
* the Reconciler's 10s fast-loop runs before the Task Pool's
|
|
32
|
+
* `pool.json` finishes loading after a SQLite-related restart, an
|
|
33
|
+
* inner method calls `.filter()` on a still-undefined array slot. The
|
|
34
|
+
* thrown TypeError carries the canonical V8 message
|
|
35
|
+
* "Cannot read properties of undefined (reading 'filter')". The catch
|
|
36
|
+
* already returns `[]`, but it logs at `error` — every 10s for ~110s
|
|
37
|
+
* — flooding logs and hiding real errors.
|
|
38
|
+
*
|
|
39
|
+
* **F-CYCLE7-3-FU (2026-05-07, PR review #511 follow-up):** The original
|
|
40
|
+
* implementation enumerated `'filter'|'find'|'map'|'forEach'|'length'`
|
|
41
|
+
* in the message. That whitelist was brittle — adjacent reconciler /
|
|
42
|
+
* future-consumer code reaches for `.some()` / `.every()` / `.reduce()` /
|
|
43
|
+
* `.includes()` / `.indexOf()` / `.slice()` / property accesses that
|
|
44
|
+
* throw the SAME V8 TypeError shape during the same hydration window
|
|
45
|
+
* but are silently dropped from this classifier, re-introducing the
|
|
46
|
+
* noise pattern this PR is trying to silence.
|
|
47
|
+
*
|
|
48
|
+
* The fix mirrors the discipline used in
|
|
49
|
+
* `backend/src/utils/native-binding.utils.ts#isNativeArchMismatchError`
|
|
50
|
+
* (F-CYCLE7-1): match the **structural** error shape, not enumerated
|
|
51
|
+
* call sites.
|
|
52
|
+
*
|
|
53
|
+
* Contract:
|
|
54
|
+
* 1. Must be a real `TypeError` (not just any thrown value with a
|
|
55
|
+
* matching string — that narrows the false-positive surface).
|
|
56
|
+
* 2. Message must carry both readonly anchors of the V8 shape:
|
|
57
|
+
* `"Cannot read"` AND `"of undefined"`. The middle (`property` /
|
|
58
|
+
* `properties of undefined (reading 'X')` / older `property 'X'
|
|
59
|
+
* of undefined`) varies between Node versions; we don't anchor
|
|
60
|
+
* on it.
|
|
61
|
+
*
|
|
62
|
+
* Negative cases this MUST reject (all tested):
|
|
63
|
+
* - `Cannot read properties of null (reading 'filter')` — a null
|
|
64
|
+
* pointer is a different bug class from hydration-not-ready.
|
|
65
|
+
* - `TypeError: foo is not a function` — symptom of a missing API.
|
|
66
|
+
* - Non-TypeError throws (`new Error('Cannot read … of undefined')`)
|
|
67
|
+
* — strings can match by accident; the type narrow guards.
|
|
68
|
+
* - `'Database connection refused'` — genuine downstream failure.
|
|
69
|
+
*
|
|
70
|
+
* @param error - The thrown value to classify. Anything not a
|
|
71
|
+
* TypeError fails immediately, so callers can pass `error: unknown`
|
|
72
|
+
* without pre-checks.
|
|
73
|
+
* @returns True iff the error is the V8 hydration-not-ready shape.
|
|
74
|
+
*/
|
|
75
|
+
function isStorageNotReadyError(error) {
|
|
76
|
+
if (!(error instanceof TypeError))
|
|
77
|
+
return false;
|
|
78
|
+
const lower = error.message.toLowerCase();
|
|
79
|
+
// The two readonly anchors of the V8 / Node error shape, present
|
|
80
|
+
// across all engine versions and all property/method accesses on
|
|
81
|
+
// an undefined value:
|
|
82
|
+
// modern V8: "Cannot read properties of undefined (reading 'X')"
|
|
83
|
+
// older V8: "Cannot read property 'X' of undefined"
|
|
84
|
+
return lower.includes('cannot read') && lower.includes('of undefined');
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Tunables
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
/**
|
|
90
|
+
* Cap on concurrent active agents while the system is under memory
|
|
91
|
+
* pressure. Named `WAKE_FLOOR` for historical reasons — the value
|
|
92
|
+
* acts as a CEILING on wake actions under pressure, not a guaranteed
|
|
93
|
+
* floor. The reconciler does not proactively bring the active count
|
|
94
|
+
* up to this value; it only permits wakes when `activeCount < N` and
|
|
95
|
+
* blocks them otherwise.
|
|
96
|
+
*
|
|
97
|
+
* Behaviour:
|
|
98
|
+
* - `activeCount < N` AND memory pressure → wake allowed (keeps the
|
|
99
|
+
* system minimally productive instead of fully wedged).
|
|
100
|
+
* - `activeCount >= N` AND memory pressure → wake blocked (prevents
|
|
101
|
+
* an OOM cascade by capping additional spawns during a crisis).
|
|
102
|
+
* - No memory pressure → this gate is not consulted.
|
|
103
|
+
*
|
|
104
|
+
* History: an earlier implementation blocked EVERY wake under memory
|
|
105
|
+
* pressure, which wedged the system on 2026-05-13 (6+ hours, free RAM
|
|
106
|
+
* 16-33 MB, queued WIs piling up). On 2026-05-14 the system stalled
|
|
107
|
+
* again — this gate worked as designed, but `IdleDetectionService`
|
|
108
|
+
* silently stopped releasing idle agents, so `activeCount` stayed
|
|
109
|
+
* above N for ~20 hours. The cap itself is not the bug; the absence
|
|
110
|
+
* of forward progress when the cap is held is. See the heartbeat
|
|
111
|
+
* additions in `idle-detection.service.ts`.
|
|
112
|
+
*/
|
|
113
|
+
export const WAKE_FLOOR_UNDER_PRESSURE = 3;
|
|
25
114
|
// ---------------------------------------------------------------------------
|
|
26
115
|
// LiveReconcilerDataProvider
|
|
27
116
|
// ---------------------------------------------------------------------------
|
|
@@ -42,10 +131,46 @@ const AGENT_STALE_THRESHOLD_MS = 5 * 60 * 1000;
|
|
|
42
131
|
export class LiveReconcilerDataProvider {
|
|
43
132
|
logger;
|
|
44
133
|
storage;
|
|
134
|
+
eventBus = null;
|
|
135
|
+
// Injected at boot time by `index.ts` so eviction can terminate an
|
|
136
|
+
// agent's full session (monitors + tmux + in-process runtime). The
|
|
137
|
+
// dep is optional — tests that don't exercise the pressure path leave
|
|
138
|
+
// it null, which makes `evictIdleAgent` fall back to "no candidate"
|
|
139
|
+
// and the wake-pressure path skips as before.
|
|
140
|
+
agentRegistration = null;
|
|
141
|
+
// Memory-pressure broadcast state. Per-instance to keep counters
|
|
142
|
+
// isolated, but the publish throttle ensures we don't flood orc even
|
|
143
|
+
// if multiple providers exist (each will throttle independently and
|
|
144
|
+
// EventBus deduplicates on event id).
|
|
145
|
+
consecutivePressureSkips = 0;
|
|
146
|
+
lastPressureNotifiedAt = 0;
|
|
45
147
|
constructor() {
|
|
46
148
|
this.logger = LoggerService.getInstance().createComponentLogger('ReconcilerDataProvider');
|
|
47
149
|
this.storage = StorageService.getInstance();
|
|
48
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Inject the EventBus used to broadcast `system:memory_pressure` to
|
|
153
|
+
* orc. Optional — when not set, the reconciler still functions but
|
|
154
|
+
* no user-facing notification is emitted. Called once from the
|
|
155
|
+
* server bootstrap after both services are constructed.
|
|
156
|
+
*
|
|
157
|
+
* @param eventBus - The EventBusService singleton wired in `index.ts`
|
|
158
|
+
*/
|
|
159
|
+
setEventBus(eventBus) {
|
|
160
|
+
this.eventBus = eventBus;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Inject the AgentRegistrationService so the memory-pressure eviction
|
|
164
|
+
* path can terminate idle agents (the same primitive
|
|
165
|
+
* `IdleDetectionService` uses). Optional — when not wired, eviction
|
|
166
|
+
* is disabled and the reconciler falls back to the prior skip-on-floor
|
|
167
|
+
* behaviour.
|
|
168
|
+
*
|
|
169
|
+
* @param svc - AgentRegistrationService instance from the bootstrap
|
|
170
|
+
*/
|
|
171
|
+
setAgentRegistrationService(svc) {
|
|
172
|
+
this.agentRegistration = svc;
|
|
173
|
+
}
|
|
49
174
|
/**
|
|
50
175
|
* Returns all non-terminal WorkItems from the Task Pool.
|
|
51
176
|
* Non-terminal means items that are not 'done' or 'cancelled'.
|
|
@@ -111,17 +236,41 @@ export class LiveReconcilerDataProvider {
|
|
|
111
236
|
/**
|
|
112
237
|
* Returns all active/expiring TaskClaims.
|
|
113
238
|
*
|
|
114
|
-
*
|
|
239
|
+
* **F-CYCLE7-3 (2026-05-07):** Returns `[]` defensively if the pool
|
|
240
|
+
* returns a non-array (e.g. partial post-restart hydration where
|
|
241
|
+
* `pool.json` is missing the `claims` field). Storage-not-ready is
|
|
242
|
+
* logged at `debug`, not `error`, to avoid the post-restart error
|
|
243
|
+
* storm seen at 11:19→11:21Z. Genuine failures (thrown errors) keep
|
|
244
|
+
* their `error`-level log.
|
|
245
|
+
*
|
|
246
|
+
* @returns Active claims (always an array)
|
|
115
247
|
*/
|
|
116
248
|
async getActiveClaims() {
|
|
117
249
|
try {
|
|
118
250
|
const pool = TaskPoolService.getInstance();
|
|
119
|
-
|
|
251
|
+
const claims = await pool.getActiveClaims();
|
|
252
|
+
if (!Array.isArray(claims)) {
|
|
253
|
+
this.logger.debug('Active claims unavailable (storage not yet hydrated)', {
|
|
254
|
+
received: typeof claims,
|
|
255
|
+
});
|
|
256
|
+
return [];
|
|
257
|
+
}
|
|
258
|
+
return claims;
|
|
120
259
|
}
|
|
121
260
|
catch (error) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
261
|
+
// Storage-not-ready manifests as ".filter() / .some() / etc. on
|
|
262
|
+
// undefined" during the post-restart hydration window. The
|
|
263
|
+
// classifier checks `instanceof TypeError` + the V8 message
|
|
264
|
+
// shape — see the doc-comment on `isStorageNotReadyError` for
|
|
265
|
+
// why we no longer enumerate method names.
|
|
266
|
+
if (isStorageNotReadyError(error)) {
|
|
267
|
+
this.logger.debug('Active claims unavailable (storage not yet hydrated)', {
|
|
268
|
+
error: error.message,
|
|
269
|
+
});
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
273
|
+
this.logger.error('Failed to get active claims', { error: msg });
|
|
125
274
|
return [];
|
|
126
275
|
}
|
|
127
276
|
}
|
|
@@ -156,6 +305,40 @@ export class LiveReconcilerDataProvider {
|
|
|
156
305
|
healthMap.set(member.sessionName, health);
|
|
157
306
|
}
|
|
158
307
|
}
|
|
308
|
+
// Add the orchestrator. orc is a virtual team member — it does NOT
|
|
309
|
+
// appear in `storage.getTeams()`, so the loop above misses it. Without
|
|
310
|
+
// this entry, any WorkItem with `target=crewly-orc` that transitions
|
|
311
|
+
// to `running` is mis-identified by `detectStuckWorkItems` as having
|
|
312
|
+
// a "missing agent", and gets force-demoted back to `blocked`. The
|
|
313
|
+
// dogfood symptom (2026-05-09): a Plan WI auto-claimed by orc bounced
|
|
314
|
+
// running → blocked → running → blocked in a wedged loop, the chained
|
|
315
|
+
// Execute + Review never unlocked, and the parent Slack Request
|
|
316
|
+
// emitted hours of identical "still 3 blocked" heartbeats.
|
|
317
|
+
//
|
|
318
|
+
// We treat any orchestrator status persisted via OrchestratorStatus
|
|
319
|
+
// as `active` for health-map purposes — the reconciler only needs
|
|
320
|
+
// "exists / does not exist" granularity here. If the orc isn't
|
|
321
|
+
// running we'd rather skip the entry than fabricate a stale one,
|
|
322
|
+
// so we honour the persisted agentStatus when available.
|
|
323
|
+
try {
|
|
324
|
+
const orcStatus = await this.storage.getOrchestratorStatus();
|
|
325
|
+
if (orcStatus?.sessionName) {
|
|
326
|
+
healthMap.set(orcStatus.sessionName, {
|
|
327
|
+
sessionName: orcStatus.sessionName,
|
|
328
|
+
status: this.mapAgentStatus(orcStatus.agentStatus),
|
|
329
|
+
lastSeenAt: orcStatus.updatedAt,
|
|
330
|
+
role: 'orchestrator',
|
|
331
|
+
tags: [],
|
|
332
|
+
activeWorkItemCount: 0,
|
|
333
|
+
// teamId/memberId intentionally undefined — orc is virtual.
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (orcErr) {
|
|
338
|
+
this.logger.debug('Failed to add orchestrator to health map (non-fatal)', {
|
|
339
|
+
error: orcErr instanceof Error ? orcErr.message : String(orcErr),
|
|
340
|
+
});
|
|
341
|
+
}
|
|
159
342
|
// Enrich with active claim counts from the pool
|
|
160
343
|
try {
|
|
161
344
|
const pool = TaskPoolService.getInstance();
|
|
@@ -187,7 +370,11 @@ export class LiveReconcilerDataProvider {
|
|
|
187
370
|
try {
|
|
188
371
|
if (correction.entityType === 'work_item') {
|
|
189
372
|
const pool = TaskPoolService.getInstance();
|
|
190
|
-
|
|
373
|
+
// Forward the reconciler's reason (e.g. "queued for 61 minutes
|
|
374
|
+
// without pickup", "Cascade cancel: ancestor failed") through
|
|
375
|
+
// to the WorkItem so it persists alongside the status flip.
|
|
376
|
+
// The activity timeline reads this field for cancelled items.
|
|
377
|
+
await pool.updateItemStatus(correction.entityId, correction.newState, 'system', correction.reason);
|
|
191
378
|
this.logger.info('Applied work item correction', {
|
|
192
379
|
workItemId: correction.entityId,
|
|
193
380
|
from: correction.previousState,
|
|
@@ -295,17 +482,35 @@ export class LiveReconcilerDataProvider {
|
|
|
295
482
|
* Returns all available (queued, unclaimed) WorkItems from the Task Pool.
|
|
296
483
|
* Used by Hybrid Wake to find items that need agents.
|
|
297
484
|
*
|
|
298
|
-
*
|
|
485
|
+
* **F-CYCLE7-3 (2026-05-07):** Returns `[]` defensively if the pool
|
|
486
|
+
* returns a non-array (e.g. partial post-restart hydration where
|
|
487
|
+
* `pool.json` is missing the `workItems` field). Storage-not-ready is
|
|
488
|
+
* logged at `debug`, not `error`, to avoid the post-restart error
|
|
489
|
+
* storm seen at 11:19→11:21Z.
|
|
490
|
+
*
|
|
491
|
+
* @returns Available pool items (always an array)
|
|
299
492
|
*/
|
|
300
493
|
async getAvailablePoolItems() {
|
|
301
494
|
try {
|
|
302
495
|
const pool = TaskPoolService.getInstance();
|
|
303
|
-
|
|
496
|
+
const items = await pool.getAvailableItems();
|
|
497
|
+
if (!Array.isArray(items)) {
|
|
498
|
+
this.logger.debug('Available pool items unavailable (storage not yet hydrated)', {
|
|
499
|
+
received: typeof items,
|
|
500
|
+
});
|
|
501
|
+
return [];
|
|
502
|
+
}
|
|
503
|
+
return items;
|
|
304
504
|
}
|
|
305
505
|
catch (error) {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
506
|
+
if (isStorageNotReadyError(error)) {
|
|
507
|
+
this.logger.debug('Available pool items unavailable (storage not yet hydrated)', {
|
|
508
|
+
error: error.message,
|
|
509
|
+
});
|
|
510
|
+
return [];
|
|
511
|
+
}
|
|
512
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
513
|
+
this.logger.error('Failed to get available pool items', { error: msg });
|
|
309
514
|
return [];
|
|
310
515
|
}
|
|
311
516
|
}
|
|
@@ -319,21 +524,350 @@ export class LiveReconcilerDataProvider {
|
|
|
319
524
|
* @param action - The wake action to execute
|
|
320
525
|
* @returns True if the wake was initiated successfully
|
|
321
526
|
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
527
|
+
/**
|
|
528
|
+
* Count agent sessions currently in an alive state. Used by the
|
|
529
|
+
* memory-pressure gate in {@link executeWakeAction} to decide whether
|
|
530
|
+
* a new wake would push us past the concurrency floor.
|
|
531
|
+
*
|
|
532
|
+
* Counts `'active'`, `'started'`, and `'starting'` — anything that
|
|
533
|
+
* has a live process consuming RAM. `started` and `starting` cover
|
|
534
|
+
* in-flight wakes from prior reconciler ticks that haven't fully
|
|
535
|
+
* promoted to active yet. `suspended` / `inactive` are NOT alive and
|
|
536
|
+
* don't contribute (suspended drops the runtime; inactive never had
|
|
537
|
+
* one).
|
|
538
|
+
*
|
|
539
|
+
* @returns The number of agent sessions currently alive
|
|
540
|
+
*/
|
|
541
|
+
async countActiveAgentSessions() {
|
|
542
|
+
try {
|
|
543
|
+
const teams = await this.storage.getTeams();
|
|
544
|
+
let count = 0;
|
|
545
|
+
for (const team of teams) {
|
|
546
|
+
for (const member of team.members || []) {
|
|
547
|
+
const s = member.agentStatus;
|
|
548
|
+
if (s === 'active' || s === 'started' || s === 'starting') {
|
|
549
|
+
count += 1;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
return count;
|
|
554
|
+
}
|
|
555
|
+
catch (err) {
|
|
556
|
+
// Storage hiccup → fail closed (assume floor reached, skip wake).
|
|
557
|
+
// Better to defer a wake than to overshoot under crisis pressure.
|
|
558
|
+
this.logger.debug('countActiveAgentSessions failed — assuming floor reached', {
|
|
559
|
+
error: err instanceof Error ? err.message : String(err),
|
|
560
|
+
});
|
|
561
|
+
return WAKE_FLOOR_UNDER_PRESSURE;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Broadcast `system:memory_pressure` to the EventBus when wake actions
|
|
566
|
+
* have been skipped enough consecutive times to indicate a sustained
|
|
567
|
+
* stall. Throttled so a long pressure episode emits at most one event
|
|
568
|
+
* per `MEMORY_PRESSURE_REFIRE_MS` window — orc only needs to surface
|
|
569
|
+
* the condition once per stuck period, not on every reconciler tick.
|
|
570
|
+
*
|
|
571
|
+
* The 2026-05-14 incident skipped wakes ~4,200 times across 20 hours
|
|
572
|
+
* with zero user-visible signal. After this change, orc receives a
|
|
573
|
+
* critical event within ~50 seconds of the stall starting and every
|
|
574
|
+
* ~5 minutes thereafter until pressure clears.
|
|
575
|
+
*
|
|
576
|
+
* @param stats - Snapshot of memory stats at the skip moment
|
|
577
|
+
* @param activeCount - Current active agent count (already computed)
|
|
578
|
+
*/
|
|
579
|
+
maybeBroadcastMemoryPressure(stats, activeCount) {
|
|
580
|
+
this.consecutivePressureSkips += 1;
|
|
581
|
+
if (!this.eventBus) {
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
// First-fire threshold: 5 consecutive skips (~50s at 10s reconciler
|
|
585
|
+
// tick). Picked so a transient pressure spike that resolves on its
|
|
586
|
+
// own doesn't page orc; sustained pressure does.
|
|
587
|
+
const FIRST_FIRE_THRESHOLD = 5;
|
|
588
|
+
// Re-fire window: don't re-broadcast more often than once per 5min
|
|
589
|
+
// while pressure persists. Matches the EventBus dedup window order
|
|
590
|
+
// of magnitude and avoids spamming orc's terminal.
|
|
591
|
+
const MEMORY_PRESSURE_REFIRE_MS = 5 * 60 * 1000;
|
|
592
|
+
if (this.consecutivePressureSkips < FIRST_FIRE_THRESHOLD) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
const now = Date.now();
|
|
596
|
+
if (this.lastPressureNotifiedAt > 0 && now - this.lastPressureNotifiedAt < MEMORY_PRESSURE_REFIRE_MS) {
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
599
|
+
try {
|
|
600
|
+
this.eventBus.publish({
|
|
601
|
+
id: `system-memory-pressure-${now}`,
|
|
602
|
+
type: 'system:memory_pressure',
|
|
603
|
+
timestamp: new Date(now).toISOString(),
|
|
604
|
+
teamId: '',
|
|
605
|
+
teamName: '',
|
|
606
|
+
memberId: '',
|
|
607
|
+
memberName: 'system',
|
|
608
|
+
sessionName: 'system',
|
|
609
|
+
previousValue: 'ok',
|
|
610
|
+
newValue: 'critical',
|
|
611
|
+
changedField: 'agentStatus',
|
|
612
|
+
});
|
|
613
|
+
this.lastPressureNotifiedAt = now;
|
|
614
|
+
this.logger.warn('Broadcast system:memory_pressure to EventBus', {
|
|
332
615
|
memoryUsedPercent: stats.usedPercent,
|
|
333
616
|
freeMemMB: stats.freeMB,
|
|
617
|
+
activeAgents: activeCount,
|
|
618
|
+
consecutiveSkips: this.consecutivePressureSkips,
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
catch (err) {
|
|
622
|
+
// Failure isolation — never let a telemetry failure break the
|
|
623
|
+
// reconciler's primary control flow.
|
|
624
|
+
this.logger.warn('Failed to broadcast system:memory_pressure (non-fatal)', {
|
|
625
|
+
error: err instanceof Error ? err.message : String(err),
|
|
334
626
|
});
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* Reset the memory-pressure broadcast state. Called on every wake
|
|
631
|
+
* that runs without pressure so the next sustained episode re-fires
|
|
632
|
+
* the first-time threshold instead of being silenced by stale state.
|
|
633
|
+
*/
|
|
634
|
+
resetMemoryPressureBroadcast() {
|
|
635
|
+
if (this.consecutivePressureSkips > 0 || this.lastPressureNotifiedAt > 0) {
|
|
636
|
+
this.consecutivePressureSkips = 0;
|
|
637
|
+
this.lastPressureNotifiedAt = 0;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Find one idle, evictable agent that can be terminated to free a wake
|
|
642
|
+
* slot under memory pressure.
|
|
643
|
+
*
|
|
644
|
+
* An agent is "evictable" when ALL of the following hold:
|
|
645
|
+
* - `agentStatus === 'active'` (no point evicting an already-dead one)
|
|
646
|
+
* - `workingStatus === 'idle'` (don't kill a mid-task agent)
|
|
647
|
+
* - role is NOT in `ALWAYS_ON_ROLES` (orchestrator, auditor)
|
|
648
|
+
* - no non-terminal WorkItem in the pool targets this sessionName
|
|
649
|
+
* (otherwise eviction would orphan that WI just like Atlas's)
|
|
650
|
+
* - sessionName !== `incomingAgent` (don't evict ourselves)
|
|
651
|
+
*
|
|
652
|
+
* Among eligible agents, returns the longest-idle one (oldest
|
|
653
|
+
* `updatedAt`). This biases towards freeing agents that have been sitting
|
|
654
|
+
* quietly without work — the freshest idle agent might be about to claim
|
|
655
|
+
* something via the auto-claim path.
|
|
656
|
+
*
|
|
657
|
+
* @param incomingAgent - sessionName of the agent we want to wake;
|
|
658
|
+
* excluded from the eviction pool so we never recommend evicting the
|
|
659
|
+
* very agent we're trying to wake.
|
|
660
|
+
* @returns Eviction candidate metadata, or `null` if no agent qualifies.
|
|
661
|
+
*/
|
|
662
|
+
async findEvictableIdleAgent(incomingAgent) {
|
|
663
|
+
let teams;
|
|
664
|
+
try {
|
|
665
|
+
teams = await this.storage.getTeams();
|
|
666
|
+
}
|
|
667
|
+
catch (err) {
|
|
668
|
+
this.logger.warn('findEvictableIdleAgent: failed to load teams', {
|
|
669
|
+
error: err instanceof Error ? err.message : String(err),
|
|
670
|
+
});
|
|
671
|
+
return null;
|
|
672
|
+
}
|
|
673
|
+
// Collect sessions that have any non-terminal WorkItem targeting them.
|
|
674
|
+
// Eviction would orphan those WIs (recreating the very stall we're
|
|
675
|
+
// trying to fix), so they're excluded.
|
|
676
|
+
const targetedSessions = new Set();
|
|
677
|
+
try {
|
|
678
|
+
const pool = TaskPoolService.getInstance();
|
|
679
|
+
const allItems = await pool.getAllItems();
|
|
680
|
+
for (const wi of allItems) {
|
|
681
|
+
if (wi.status === 'done' || wi.status === 'cancelled')
|
|
682
|
+
continue;
|
|
683
|
+
const t = wi.target;
|
|
684
|
+
if (typeof t === 'string' && t.length > 0)
|
|
685
|
+
targetedSessions.add(t);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
catch (err) {
|
|
689
|
+
// Pool unavailable → be conservative, refuse eviction so we don't
|
|
690
|
+
// accidentally kill an agent who's about to claim a queued WI.
|
|
691
|
+
this.logger.warn('findEvictableIdleAgent: pool query failed — refusing eviction', {
|
|
692
|
+
error: err instanceof Error ? err.message : String(err),
|
|
693
|
+
});
|
|
694
|
+
return null;
|
|
695
|
+
}
|
|
696
|
+
const now = Date.now();
|
|
697
|
+
const candidates = [];
|
|
698
|
+
for (const team of teams) {
|
|
699
|
+
for (const member of team.members || []) {
|
|
700
|
+
if (member.agentStatus !== 'active')
|
|
701
|
+
continue;
|
|
702
|
+
if (member.workingStatus !== 'idle')
|
|
703
|
+
continue;
|
|
704
|
+
if (AGENT_SUSPEND_CONSTANTS.ALWAYS_ON_ROLES.includes(member.role)) {
|
|
705
|
+
continue;
|
|
706
|
+
}
|
|
707
|
+
if (member.sessionName === incomingAgent)
|
|
708
|
+
continue;
|
|
709
|
+
if (targetedSessions.has(member.sessionName))
|
|
710
|
+
continue;
|
|
711
|
+
const lastActive = member.updatedAt
|
|
712
|
+
? new Date(member.updatedAt).getTime()
|
|
713
|
+
: member.createdAt
|
|
714
|
+
? new Date(member.createdAt).getTime()
|
|
715
|
+
: 0;
|
|
716
|
+
const idleMs = lastActive > 0 ? Math.max(0, now - lastActive) : 0;
|
|
717
|
+
candidates.push({
|
|
718
|
+
sessionName: member.sessionName,
|
|
719
|
+
teamId: team.id,
|
|
720
|
+
memberId: member.id,
|
|
721
|
+
role: member.role,
|
|
722
|
+
idleMs,
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
if (candidates.length === 0)
|
|
727
|
+
return null;
|
|
728
|
+
// Longest-idle first.
|
|
729
|
+
candidates.sort((a, b) => b.idleMs - a.idleMs);
|
|
730
|
+
return candidates[0];
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* Terminate an evicted agent so the wake slot is freed.
|
|
734
|
+
*
|
|
735
|
+
* Uses the same `terminateAgentSession` + `updateAgentStatus(..,
|
|
736
|
+
* 'idle_exit_pressure')` pair that `IdleDetectionService` uses for the
|
|
737
|
+
* regular auto-stop path, just with a different dropoutReason so the
|
|
738
|
+
* pressure-driven evictions are distinguishable in audit logs.
|
|
739
|
+
*
|
|
740
|
+
* @param victim - Eviction candidate returned by `findEvictableIdleAgent`
|
|
741
|
+
* @returns `true` if the agent was terminated AND marked inactive;
|
|
742
|
+
* `false` if either step failed (the caller falls back to skip).
|
|
743
|
+
*/
|
|
744
|
+
async evictIdleAgent(victim) {
|
|
745
|
+
if (!this.agentRegistration) {
|
|
746
|
+
this.logger.warn('evictIdleAgent: AgentRegistrationService not wired — eviction disabled', { sessionName: victim.sessionName });
|
|
335
747
|
return false;
|
|
336
748
|
}
|
|
749
|
+
try {
|
|
750
|
+
await this.agentRegistration.terminateAgentSession(victim.sessionName, victim.role);
|
|
751
|
+
// `terminateAgentSession` already marks the row inactive without a
|
|
752
|
+
// dropoutReason; overwrite it with `idle_exit_pressure` so this
|
|
753
|
+
// path is distinguishable from the IdleDetectionService auto-stop
|
|
754
|
+
// path (`idle_exit`) in audit logs.
|
|
755
|
+
await this.storage.updateAgentStatus(victim.sessionName, 'inactive', 'idle_exit_pressure');
|
|
756
|
+
return true;
|
|
757
|
+
}
|
|
758
|
+
catch (err) {
|
|
759
|
+
this.logger.error('evictIdleAgent failed', {
|
|
760
|
+
sessionName: victim.sessionName,
|
|
761
|
+
role: victim.role,
|
|
762
|
+
error: err instanceof Error ? err.message : String(err),
|
|
763
|
+
});
|
|
764
|
+
return false;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
async executeWakeAction(action) {
|
|
768
|
+
const { agentSessionName, strategy } = action;
|
|
769
|
+
// Memory-pressure gate with a concurrency floor.
|
|
770
|
+
//
|
|
771
|
+
// Previous behaviour (unconditional skip on >=90% used) wedged the
|
|
772
|
+
// system in the 2026-05-13 dogfood scenario: free RAM hovered at
|
|
773
|
+
// 16-33 MB for hours, the reconciler refused EVERY wake, and the
|
|
774
|
+
// user saw orc/think-tank/marketing all stuck inactive with queued
|
|
775
|
+
// WIs piling up. Nothing made progress until manual intervention.
|
|
776
|
+
//
|
|
777
|
+
// New behaviour: under memory pressure, still allow wakes up to
|
|
778
|
+
// `WAKE_FLOOR_UNDER_PRESSURE` concurrent active agents so the
|
|
779
|
+
// system stays minimally productive. Wakes beyond that cap are
|
|
780
|
+
// still blocked — we don't want to spawn an unbounded number of
|
|
781
|
+
// agents under crisis pressure and trigger an OOM cascade.
|
|
782
|
+
//
|
|
783
|
+
// The count includes 'active' and 'started' sessions (counting
|
|
784
|
+
// 'started' covers an in-flight wake from a prior reconciler tick
|
|
785
|
+
// that hasn't fully promoted to 'active' yet). Slight overshoot
|
|
786
|
+
// is possible across concurrent pass executions; acceptable
|
|
787
|
+
// because the cap is a SAFETY FLOOR, not a hard limit.
|
|
788
|
+
if (isUnderMemoryPressure()) {
|
|
789
|
+
const stats = getMemoryStats();
|
|
790
|
+
const activeCount = await this.countActiveAgentSessions();
|
|
791
|
+
if (activeCount >= WAKE_FLOOR_UNDER_PRESSURE) {
|
|
792
|
+
// Last-resort eviction: rather than silently skipping forever,
|
|
793
|
+
// look for an idle agent that is doing nothing productive and
|
|
794
|
+
// terminate it to free a slot for `agentSessionName` (which has
|
|
795
|
+
// a queued WI waiting). This is the failure mode that stranded
|
|
796
|
+
// Atlas on 2026-05-16 — the wake floor was held by idle product
|
|
797
|
+
// / marketing agents while a queued WI for an inactive Atlas
|
|
798
|
+
// never made progress.
|
|
799
|
+
//
|
|
800
|
+
// Eviction is intentionally narrow: ALWAYS_ON_ROLES are exempt,
|
|
801
|
+
// agents with any non-terminal WI of their own are exempt, and
|
|
802
|
+
// anything mid-task (workingStatus=in_progress) is exempt.
|
|
803
|
+
// We pick the longest-idle eligible agent (oldest `updatedAt`)
|
|
804
|
+
// so a freshly-idle agent that may auto-claim something stays
|
|
805
|
+
// alive.
|
|
806
|
+
const victim = await this.findEvictableIdleAgent(agentSessionName);
|
|
807
|
+
if (!victim) {
|
|
808
|
+
this.logger.warn('Skipping wake action — memory pressure AND at concurrency floor', {
|
|
809
|
+
agent: agentSessionName,
|
|
810
|
+
strategy,
|
|
811
|
+
memoryUsedPercent: stats.usedPercent,
|
|
812
|
+
freeMemMB: stats.freeMB,
|
|
813
|
+
activeAgents: activeCount,
|
|
814
|
+
wakeFloor: WAKE_FLOOR_UNDER_PRESSURE,
|
|
815
|
+
reason: 'no evictable idle agent — all active agents are busy or always-on',
|
|
816
|
+
});
|
|
817
|
+
this.maybeBroadcastMemoryPressure(stats, activeCount);
|
|
818
|
+
return false;
|
|
819
|
+
}
|
|
820
|
+
this.logger.warn('Evicting idle agent under memory pressure to free wake slot', {
|
|
821
|
+
evictingAgent: victim.sessionName,
|
|
822
|
+
evictingRole: victim.role,
|
|
823
|
+
idleMs: victim.idleMs,
|
|
824
|
+
incomingAgent: agentSessionName,
|
|
825
|
+
incomingStrategy: strategy,
|
|
826
|
+
memoryUsedPercent: stats.usedPercent,
|
|
827
|
+
freeMemMB: stats.freeMB,
|
|
828
|
+
activeAgents: activeCount,
|
|
829
|
+
wakeFloor: WAKE_FLOOR_UNDER_PRESSURE,
|
|
830
|
+
});
|
|
831
|
+
const evicted = await this.evictIdleAgent(victim);
|
|
832
|
+
if (!evicted) {
|
|
833
|
+
// Eviction failed — fall back to the historical skip behaviour
|
|
834
|
+
// rather than overshooting the floor with both agents alive.
|
|
835
|
+
this.logger.warn('Eviction failed — falling back to skip', {
|
|
836
|
+
agent: agentSessionName,
|
|
837
|
+
evictAttempted: victim.sessionName,
|
|
838
|
+
memoryUsedPercent: stats.usedPercent,
|
|
839
|
+
freeMemMB: stats.freeMB,
|
|
840
|
+
activeAgents: activeCount,
|
|
841
|
+
});
|
|
842
|
+
this.maybeBroadcastMemoryPressure(stats, activeCount);
|
|
843
|
+
return false;
|
|
844
|
+
}
|
|
845
|
+
// Slot freed — proceed with the wake. Net activeCount stays
|
|
846
|
+
// the same (one out, one in), so the floor invariant holds.
|
|
847
|
+
this.consecutivePressureSkips = 0;
|
|
848
|
+
}
|
|
849
|
+
else {
|
|
850
|
+
this.logger.info('Memory pressure detected — allowing wake (under concurrency floor)', {
|
|
851
|
+
agent: agentSessionName,
|
|
852
|
+
strategy,
|
|
853
|
+
memoryUsedPercent: stats.usedPercent,
|
|
854
|
+
freeMemMB: stats.freeMB,
|
|
855
|
+
activeAgents: activeCount,
|
|
856
|
+
wakeFloor: WAKE_FLOOR_UNDER_PRESSURE,
|
|
857
|
+
});
|
|
858
|
+
// Pressure persists but a wake is proceeding — clear the skip
|
|
859
|
+
// counter so the FIRST_FIRE_THRESHOLD must be crossed again
|
|
860
|
+
// before the next broadcast. Keep `lastPressureNotifiedAt` so
|
|
861
|
+
// the 5min refire throttle still applies — we don't want the
|
|
862
|
+
// skip→wake→skip oscillation to slip past the throttle window.
|
|
863
|
+
// (Follow-up #6 from PR #543 review.)
|
|
864
|
+
this.consecutivePressureSkips = 0;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
else {
|
|
868
|
+
// Pressure cleared — reset state so the next episode re-fires.
|
|
869
|
+
this.resetMemoryPressureBroadcast();
|
|
870
|
+
}
|
|
337
871
|
this.logger.info('Executing wake action', {
|
|
338
872
|
agent: agentSessionName,
|
|
339
873
|
strategy,
|
|
@@ -355,14 +889,25 @@ export class LiveReconcilerDataProvider {
|
|
|
355
889
|
// For inactive agents, we need to start them via the registration service.
|
|
356
890
|
// The agent session creation is complex — use the team-member-start API endpoint.
|
|
357
891
|
const { teamId, memberId } = action;
|
|
358
|
-
|
|
892
|
+
// Follow-up #10 from PR #543 review: replace the hardcoded
|
|
893
|
+
// 8787 with the canonical backend port constant. `process.env.PORT`
|
|
894
|
+
// still wins when set so deployments overriding the default keep
|
|
895
|
+
// working unchanged.
|
|
896
|
+
const port = process.env.PORT || WEB_CONSTANTS.PORTS.BACKEND;
|
|
897
|
+
let url = `http://localhost:${port}/api/teams/members/start`;
|
|
359
898
|
if (teamId && memberId) {
|
|
360
|
-
url = `http://localhost:${
|
|
899
|
+
url = `http://localhost:${port}/api/teams/${teamId}/members/${memberId}/start`;
|
|
361
900
|
}
|
|
901
|
+
// Pass `workItemId` so the team-controller wake-gate can verify
|
|
902
|
+
// that this wake is pool-driven (path 1 of the gate). Reconciler
|
|
903
|
+
// hybrid-wake has already decided which WI triggered the wake;
|
|
904
|
+
// the gate trusts that decision rather than re-scanning the pool.
|
|
905
|
+
// Without this, the gate would still pass via path 2 (pool scan)
|
|
906
|
+
// — but explicit is better when we already have the evidence.
|
|
362
907
|
const response = await fetch(url, {
|
|
363
908
|
method: 'POST',
|
|
364
909
|
headers: { 'Content-Type': 'application/json' },
|
|
365
|
-
body: JSON.stringify({ sessionName: agentSessionName }),
|
|
910
|
+
body: JSON.stringify({ sessionName: agentSessionName, workItemId: action.workItemId }),
|
|
366
911
|
});
|
|
367
912
|
if (!response.ok) {
|
|
368
913
|
const errorText = await response.text();
|