crewly 1.14.1 → 1.16.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/README.md +34 -4
- package/config/constants.ts +57 -0
- package/config/index.ts +6 -2
- package/config/roles/architect/soul.md +31 -0
- package/config/roles/auditor/soul.md +30 -0
- package/config/roles/backend-developer/soul.md +30 -0
- package/config/roles/content-strategist/soul.md +29 -0
- package/config/roles/designer/soul.md +30 -0
- package/config/roles/developer/prompt.md +1 -1
- package/config/roles/developer/soul.md +4 -1
- package/config/roles/frontend-developer/soul.md +28 -0
- package/config/roles/fullstack-dev/soul.md +28 -0
- package/config/roles/generalist/soul.md +28 -0
- package/config/roles/ops/soul.md +31 -0
- package/config/roles/orchestrator/fragments/lifecycle.md +2 -22
- package/config/roles/orchestrator/fragments/recovery.md +1 -1
- package/config/roles/orchestrator/prompt.md +18 -49
- package/config/roles/orchestrator/soul.md +2 -1
- package/config/roles/product-manager/prompt.md +1 -1
- package/config/roles/product-manager/soul.md +30 -0
- package/config/roles/qa/soul.md +31 -0
- package/config/roles/qa-engineer/soul.md +31 -0
- package/config/roles/researcher/soul.md +4 -1
- package/config/roles/sales/soul.md +30 -0
- package/config/roles/support/soul.md +30 -0
- package/config/roles/team-leader/prompt.md +1 -1
- package/config/roles/team-leader/soul.md +32 -0
- package/config/roles/tpm/soul.md +31 -0
- package/config/roles/ux-designer/soul.md +31 -0
- package/config/runtime_scripts/runtime-config.json +7 -0
- package/config/skills/_common/lib.sh +124 -2
- package/config/skills/_common/lib.test.sh +68 -1
- package/config/skills/agent/core/count-json/SKILL.md +61 -0
- package/config/skills/agent/core/count-json/execute.sh +52 -0
- package/config/skills/agent/core/count-json/execute.test.sh +35 -0
- package/config/skills/agent/core/record-prediction/SKILL.md +61 -0
- package/config/skills/agent/core/record-prediction/execute.sh +90 -0
- package/config/skills/agent/core/record-prediction/execute.test.sh +67 -0
- package/config/skills/agent/core/resolve-prediction/SKILL.md +61 -0
- package/config/skills/agent/core/resolve-prediction/execute.sh +87 -0
- package/config/skills/agent/core/resolve-prediction/execute.test.sh +74 -0
- package/config/skills/agent/core/set-focus/SKILL.md +64 -0
- package/config/skills/agent/core/set-focus/execute.sh +73 -0
- package/config/skills/agent/core/set-focus/execute.test.sh +67 -0
- package/config/skills/agent/core/suppress-noise/SKILL.md +59 -0
- package/config/skills/agent/core/suppress-noise/execute.sh +68 -0
- package/config/skills/agent/core/suppress-noise/execute.test.sh +58 -0
- package/config/skills/orchestrator/delegate-task/SKILL.md +17 -21
- package/config/skills/orchestrator/delegate-task/execute.sh +18 -9
- package/config/skills/orchestrator/delegate-task/execute.test.sh +1 -1
- package/config/skills/orchestrator/wiki-migrate/SKILL.md +33 -3
- package/config/skills/orchestrator/wiki-migrate/compact.jq +36 -0
- package/config/skills/orchestrator/wiki-migrate/execute.sh +35 -5
- package/config/skills/orchestrator/wiki-migrate/execute.test.sh +124 -0
- package/config/skills/team-leader/verify-output/execute.sh +14 -6
- package/config/skills/team-leader/verify-output/execute.test.sh +117 -0
- package/dist/backend/backend/src/constants.d.ts +161 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +159 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.d.ts +76 -0
- package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.js +262 -0
- package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/mission/mission-policy.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js +4 -6
- package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts +10 -0
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +78 -16
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +31 -0
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +11 -1
- package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request-types.d.ts +6 -2
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +14 -0
- 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 +59 -0
- 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 +9 -0
- 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 +14 -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 +20 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +13 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +240 -9
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +139 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.js +301 -0
- package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -0
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +9 -1
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +78 -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 +311 -13
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +10 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js +11 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +10 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/opencode-runtime.service.d.ts +114 -0
- package/dist/backend/backend/src/services/agent/opencode-runtime.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/opencode-runtime.service.js +185 -0
- package/dist/backend/backend/src/services/agent/opencode-runtime.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +71 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +1 -1
- 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 +15 -3
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
- package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +23 -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 +45 -0
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -1
- 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 +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +43 -3
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +85 -4
- package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -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 +73 -2
- 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 +44 -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 +33 -0
- 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/recovery.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +6 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts +45 -0
- package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.js +59 -0
- package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.js.map +1 -0
- package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.d.ts +137 -0
- package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.js +216 -0
- package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.js.map +1 -0
- package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +4 -1
- package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js +3 -1
- package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +26 -2
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js +91 -10
- package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts +15 -2
- package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-restore.service.js +100 -21
- package/dist/backend/backend/src/services/backup/backup-restore.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup.types.d.ts +85 -2
- package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup.types.js +21 -0
- package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -1
- package/dist/backend/backend/src/services/backup/project-file-filter.d.ts +35 -0
- package/dist/backend/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/backup/project-file-filter.js +90 -0
- package/dist/backend/backend/src/services/backup/project-file-filter.js.map +1 -0
- package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
- package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/budget/team-budget-gate.service.js +364 -0
- package/dist/backend/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -3
- 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 +34 -3
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +5 -3
- 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 +6 -4
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/core/api-token.service.d.ts +78 -0
- package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/api-token.service.js +149 -0
- package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -0
- package/dist/backend/backend/src/services/core/logger.service.d.ts +10 -1
- package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/logger.service.js +18 -3
- package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +11 -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 +34 -0
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +7 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +29 -7
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts +140 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js +346 -0
- package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.js +1 -1
- package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +42 -7
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +22 -15
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +24 -15
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +10 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.js +12 -1
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +7 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +9 -3
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +27 -0
- 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 +110 -22
- package/dist/backend/backend/src/services/session/session-handoff.service.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 +1 -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.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +7 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
- 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 +132 -6
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-boot.d.ts +87 -0
- package/dist/backend/backend/src/services/v3/escalation-boot.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/escalation-boot.js +128 -0
- package/dist/backend/backend/src/services/v3/escalation-boot.js.map +1 -0
- package/dist/backend/backend/src/services/v3/escalation.service.d.ts +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation.service.js +4 -4
- package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.d.ts +78 -0
- package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.js +129 -0
- package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts +118 -0
- package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js +277 -0
- package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.d.ts +117 -0
- package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.js +214 -0
- package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.js.map +1 -0
- package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/kr-tracking.service.js +3 -6
- package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts +5 -0
- 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 +36 -0
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-paths.d.ts +69 -0
- package/dist/backend/backend/src/services/v3/mission-paths.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-paths.js +92 -0
- package/dist/backend/backend/src/services/v3/mission-paths.js.map +1 -0
- package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-period.service.js +1 -12
- package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +76 -2
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js +267 -9
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +6 -4
- package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-cascade.service.js +11 -10
- package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +24 -0
- package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/okr-review.service.js +63 -3
- package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts +17 -0
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +62 -13
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +6 -2
- 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 +14 -9
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +14 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +31 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +4 -2
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +15 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +27 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +7 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.d.ts +2 -2
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.js +1 -1
- package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.d.ts +41 -0
- package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/mission.types.js +29 -0
- package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
- package/dist/backend/backend/src/utils/network-exposure.utils.d.ts +67 -0
- package/dist/backend/backend/src/utils/network-exposure.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/network-exposure.utils.js +92 -0
- package/dist/backend/backend/src/utils/network-exposure.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/terminal-string-ops.d.ts +2 -0
- package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/terminal-string-ops.js +14 -0
- package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +53 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +54 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +6 -6
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +161 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +159 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +78 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +311 -13
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js +10 -1
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +11 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +10 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/opencode-runtime.service.d.ts +114 -0
- package/dist/cli/backend/src/services/agent/opencode-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/opencode-runtime.service.js +185 -0
- package/dist/cli/backend/src/services/agent/opencode-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +71 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +15 -3
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js +9 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +23 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +45 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +43 -3
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +85 -4
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +73 -2
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +44 -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 +33 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +6 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts +45 -0
- package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.js +59 -0
- package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/attention.service.d.ts +74 -0
- package/dist/cli/backend/src/services/ai/self-improvement/attention.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/attention.service.js +132 -0
- package/dist/cli/backend/src/services/ai/self-improvement/attention.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts +107 -0
- package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.js +183 -0
- package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +100 -0
- package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.js +130 -0
- package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +26 -2
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js +91 -10
- package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts +15 -2
- package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-restore.service.js +100 -21
- package/dist/cli/backend/src/services/backup/backup-restore.service.js.map +1 -1
- package/dist/cli/backend/src/services/backup/backup.types.d.ts +85 -2
- package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup.types.js +21 -0
- package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -1
- package/dist/cli/backend/src/services/backup/project-file-filter.d.ts +35 -0
- package/dist/cli/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
- package/dist/cli/backend/src/services/backup/project-file-filter.js +90 -0
- package/dist/cli/backend/src/services/backup/project-file-filter.js.map +1 -0
- package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
- package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/budget/team-budget-gate.service.js +364 -0
- package/dist/cli/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -3
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +34 -3
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +5 -3
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +6 -4
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/core/api-token.service.d.ts +78 -0
- package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/api-token.service.js +149 -0
- package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -0
- package/dist/cli/backend/src/services/core/logger.service.d.ts +10 -1
- package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/logger.service.js +18 -3
- package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.d.ts +11 -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 +34 -0
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.js +1 -1
- package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +42 -7
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +7 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js +9 -3
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +27 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.js +110 -22
- package/dist/cli/backend/src/services/session/session-handoff.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 +1 -0
- package/dist/cli/backend/src/services/settings/settings.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
- 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 +132 -6
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js +3 -6
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +5 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +36 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/mission-paths.d.ts +69 -0
- package/dist/cli/backend/src/services/v3/mission-paths.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-paths.js +92 -0
- package/dist/cli/backend/src/services/v3/mission-paths.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +6 -2
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +14 -9
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts +4 -2
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.js +15 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +27 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +7 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/types/team-template.types.d.ts +2 -2
- package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/team-template.types.js +1 -1
- package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/index.js +1 -1
- package/dist/cli/backend/src/types/v2/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/mission.types.d.ts +41 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/mission.types.js +29 -0
- package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -1
- package/dist/cli/backend/src/utils/terminal-string-ops.d.ts +2 -0
- package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/terminal-string-ops.js +14 -0
- package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/dist/cli/cli/src/commands/backup.d.ts +25 -0
- package/dist/cli/cli/src/commands/backup.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/backup.js +120 -6
- package/dist/cli/cli/src/commands/backup.js.map +1 -1
- package/dist/cli/cli/src/commands/doctor.d.ts +58 -0
- package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/doctor.js +163 -0
- package/dist/cli/cli/src/commands/doctor.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +2 -2
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +15 -7
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts +68 -11
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +183 -51
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- package/dist/cli/cli/src/commands/token.d.ts +53 -0
- package/dist/cli/cli/src/commands/token.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/token.js +70 -0
- package/dist/cli/cli/src/commands/token.js.map +1 -0
- package/dist/cli/cli/src/index.js +40 -5
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts +21 -0
- package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts.map +1 -0
- package/dist/cli/cli/src/scripts/check-native-toolchain.js +40 -0
- package/dist/cli/cli/src/scripts/check-native-toolchain.js.map +1 -0
- package/dist/cli/cli/src/utils/native-toolchain.d.ts +111 -0
- package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/native-toolchain.js +146 -0
- package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -0
- package/dist/cli/cli/src/utils/package-root.d.ts +55 -0
- package/dist/cli/cli/src/utils/package-root.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/package-root.js +107 -0
- package/dist/cli/cli/src/utils/package-root.js.map +1 -0
- package/dist/cli/cli/src/utils/version-check.d.ts +18 -2
- package/dist/cli/cli/src/utils/version-check.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/version-check.js +51 -4
- package/dist/cli/cli/src/utils/version-check.js.map +1 -1
- package/dist/cli/config/constants.d.ts +53 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +54 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +6 -6
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/index-019817e2.js +4961 -0
- package/frontend/dist/assets/{index-88feb412.css → index-a56613e7.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +3 -2
- package/frontend/dist/assets/index-190a957f.js +0 -4961
|
@@ -22,7 +22,7 @@ import { TerminalGateway, setTerminalGateway } from './websocket/terminal.gatewa
|
|
|
22
22
|
import { initializeChatGateway } from './websocket/chat.gateway.js';
|
|
23
23
|
import { LoggerService } from './services/core/logger.service.js';
|
|
24
24
|
import { retryWithBackoff } from './services/core/retry.util.js';
|
|
25
|
-
import { CREWLY_CONSTANTS, ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, ORCHESTRATOR_WINDOW_NAME, MESSAGE_QUEUE_CONSTANTS, RUNTIME_TYPES, AUDITOR_CONSTANTS, AUDITOR_SCHEDULER_CONSTANTS, } from './constants.js';
|
|
25
|
+
import { CREWLY_CONSTANTS, ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, ORCHESTRATOR_WINDOW_NAME, MESSAGE_QUEUE_CONSTANTS, RUNTIME_TYPES, AUDITOR_CONSTANTS, AUDITOR_SCHEDULER_CONSTANTS, API_SECURITY_CONSTANTS, } from './constants.js';
|
|
26
26
|
import { getSettingsService } from './services/settings/index.js';
|
|
27
27
|
import { MemoryService } from './services/memory/memory.service.js';
|
|
28
28
|
import { getImprovementStartupService } from './services/orchestrator/improvement-startup.service.js';
|
|
@@ -35,6 +35,13 @@ import { MessageQueueService, QueueProcessorService, ResponseRouterService } fro
|
|
|
35
35
|
import { ThreadStatusQueueService } from './services/messaging/thread-status-queue.service.js';
|
|
36
36
|
import { EventBusService } from './services/event-bus/index.js';
|
|
37
37
|
import { EventToWorkItemBridge } from './services/event-bus/event-to-workitem-bridge.service.js';
|
|
38
|
+
import { KRCompletionSubscriber } from './services/v3/kr-completion.subscriber.js';
|
|
39
|
+
import { FallbackTriggerCleanupSubscriber } from './services/v3/fallback-trigger-cleanup.subscriber.js';
|
|
40
|
+
import { MissionReminderService } from './services/v3/mission-reminder.service.js';
|
|
41
|
+
import { OKRReviewService } from './services/v3/okr-review.service.js';
|
|
42
|
+
import { bootEscalationService } from './services/v3/escalation-boot.js';
|
|
43
|
+
import { TeamBudgetGateService } from './services/budget/team-budget-gate.service.js';
|
|
44
|
+
import { HierarchyEscalationMonitor } from './services/hierarchy/hierarchy-escalation-monitor.service.js';
|
|
38
45
|
import { AutoLearningSubscriber } from './services/memory/auto-learning.subscriber.js';
|
|
39
46
|
import { MilestoneNotificationSubscriber } from './services/notification/milestone-notification.subscriber.js';
|
|
40
47
|
import { RequestSlaSubscriber, setRequestSlaSubscriber, getRequestSlaSubscriber, } from './services/v3/request-sla.subscriber.js';
|
|
@@ -56,6 +63,9 @@ import { setMessageQueueService as setMessagingControllerQueueService } from './
|
|
|
56
63
|
import { SystemResourceAlertService } from './services/monitoring/system-resource-alert.service.js';
|
|
57
64
|
import { TokenUsageService } from './services/monitoring/token-usage.service.js';
|
|
58
65
|
import { agentHeartbeatMiddleware } from './middleware/agent-heartbeat.middleware.js';
|
|
66
|
+
import { apiTokenMiddleware, socketIoAllowRequest, installWebSocketGate, } from './middleware/api-token.middleware.js';
|
|
67
|
+
import { resolveApiToken } from './services/core/api-token.service.js';
|
|
68
|
+
import { isHeadlessEnvironment, describeNetworkExposure } from './utils/network-exposure.utils.js';
|
|
59
69
|
import { RedisCacheService } from './services/cache/redis-cache.service.js';
|
|
60
70
|
import { OrchestratorRestartService } from './services/orchestrator/orchestrator-restart.service.js';
|
|
61
71
|
import { setOrchestratorSetupDependencies } from './services/orchestrator/orchestrator-setup.service.js';
|
|
@@ -66,6 +76,7 @@ import { OrchestratorHeartbeatMonitorService } from './services/orchestrator/orc
|
|
|
66
76
|
import { RuntimeExitMonitorService } from './services/agent/runtime-exit-monitor.service.js';
|
|
67
77
|
import { ContextWindowMonitorService } from './services/agent/context-window-monitor.service.js';
|
|
68
78
|
import { OAuthReloginMonitorService } from './services/agent/oauth-relogin-monitor.service.js';
|
|
79
|
+
import { getChatV2Service } from './services/chat-v2/chat-v2.singleton.js';
|
|
69
80
|
import { findPackageRoot } from './utils/package-root.js';
|
|
70
81
|
import { assertBuildProvenance } from './utils/build-provenance.js';
|
|
71
82
|
import { isNativeBindingFatalError } from './utils/native-binding.utils.js';
|
|
@@ -146,6 +157,10 @@ export class CrewlyServer {
|
|
|
146
157
|
eventBusService;
|
|
147
158
|
/** BRIDGE-1: subscribes to autonomy events and creates WorkItems. */
|
|
148
159
|
eventToWorkItemBridge = null;
|
|
160
|
+
krCompletionSubscriber = null;
|
|
161
|
+
fallbackTriggerCleanup = null;
|
|
162
|
+
escalationService = null;
|
|
163
|
+
hierarchyEscalationMonitor = null;
|
|
149
164
|
/** LEARN-1: subscribes to terminal task / mission:replanned events and auto-records learnings. */
|
|
150
165
|
autoLearningSubscriber = null;
|
|
151
166
|
// DF-1 #438 — symmetric to AutoLearningSubscriber; surfaces milestones
|
|
@@ -188,6 +203,9 @@ export class CrewlyServer {
|
|
|
188
203
|
parseIntWithFallback(process.env.DEFAULT_CHECK_INTERVAL, 30, 'DEFAULT_CHECK_INTERVAL'),
|
|
189
204
|
autoCommitInterval: config?.autoCommitInterval || parseIntWithFallback(process.env.AUTO_COMMIT_INTERVAL, 30, 'AUTO_COMMIT_INTERVAL'),
|
|
190
205
|
headless: config?.headless ?? process.env.CREWLY_HEADLESS === 'true',
|
|
206
|
+
bindHost: config?.bindHost ||
|
|
207
|
+
process.env[API_SECURITY_CONSTANTS.ENV.BIND_HOST] ||
|
|
208
|
+
API_SECURITY_CONSTANTS.DEFAULT_BIND_HOST,
|
|
191
209
|
};
|
|
192
210
|
this.app = express();
|
|
193
211
|
this.httpServer = createServer(this.app);
|
|
@@ -214,6 +232,10 @@ export class CrewlyServer {
|
|
|
214
232
|
// that doesn't match /socket.io/ — killing Crewly in Chrome connections before
|
|
215
233
|
// any data is exchanged (manifests as "Invalid frame header" errors).
|
|
216
234
|
destroyUpgrade: false,
|
|
235
|
+
// Non-loopback clients must present the API token (query `token`
|
|
236
|
+
// or the `crewly_token` cookie). Engine.IO's polling handshake
|
|
237
|
+
// bypasses Express, so the gate has to live here as well.
|
|
238
|
+
allowRequest: socketIoAllowRequest,
|
|
217
239
|
});
|
|
218
240
|
this.initializeServices();
|
|
219
241
|
this.configureMiddleware();
|
|
@@ -275,6 +297,15 @@ export class CrewlyServer {
|
|
|
275
297
|
// triggers addToPool — the slack listener / TaskPool router below both
|
|
276
298
|
// depend on this for the auto-close path b chain. Idempotent.
|
|
277
299
|
TaskPoolService.getInstance().setEventBusService(this.eventBusService);
|
|
300
|
+
// Team budget gate (Team.budget was stored + prompt-injected but never
|
|
301
|
+
// evaluated). Enforced in claimFromPool + WorkItemDispatchSubscriber;
|
|
302
|
+
// here we give it the bus + queue so cap crossings reach the owner.
|
|
303
|
+
const teamBudgetGate = TeamBudgetGateService.getInstance();
|
|
304
|
+
teamBudgetGate.setNotifiers({
|
|
305
|
+
eventBus: this.eventBusService,
|
|
306
|
+
messageQueue: this.messageQueueService,
|
|
307
|
+
});
|
|
308
|
+
TaskPoolService.getInstance().setTeamBudgetGate(teamBudgetGate);
|
|
278
309
|
// Memory: TaskHistorySubscriber listens on the bus for
|
|
279
310
|
// task:done_by_worker / task:rejected / task:cancelled and writes
|
|
280
311
|
// the resulting TaskHistoryEntry into ProjectMemory. This is the
|
|
@@ -444,6 +475,48 @@ export class CrewlyServer {
|
|
|
444
475
|
error: reflectErr.message,
|
|
445
476
|
});
|
|
446
477
|
}
|
|
478
|
+
// Daily memory consolidation (self-improvement wiring): the
|
|
479
|
+
// MemoryConsolidationService existed but nothing ever called
|
|
480
|
+
// consolidate(), so no agent ever had a consolidation.json. Run it
|
|
481
|
+
// for every active member once per day, with a boot-time catch-up
|
|
482
|
+
// when the last recorded sweep (CREWLY_HOME/self-improvement-
|
|
483
|
+
// state.json) is older than the interval. Non-fatal throughout.
|
|
484
|
+
try {
|
|
485
|
+
const { ConsolidationSchedulerService } = await import('./services/ai/self-improvement/consolidation-scheduler.service.js');
|
|
486
|
+
const { createMemoryConsolidationService } = await import('./services/ai/self-improvement/agent-memory-provider.js');
|
|
487
|
+
const { SELF_IMPROVEMENT_CONSTANTS } = await import('./constants.js');
|
|
488
|
+
const posIntMs = (raw, fallback) => {
|
|
489
|
+
const n = Number(raw);
|
|
490
|
+
return Number.isFinite(n) && n > 0 ? n : fallback;
|
|
491
|
+
};
|
|
492
|
+
const consolidation = createMemoryConsolidationService();
|
|
493
|
+
const scheduler = new ConsolidationSchedulerService({
|
|
494
|
+
intervalMs: posIntMs(process.env[SELF_IMPROVEMENT_CONSTANTS.CONSOLIDATION_INTERVAL_ENV], SELF_IMPROVEMENT_CONSTANTS.CONSOLIDATION_INTERVAL_MS),
|
|
495
|
+
consolidate: (sessionName) => consolidation.consolidate(sessionName),
|
|
496
|
+
listActiveSessions: async () => {
|
|
497
|
+
const sessions = [];
|
|
498
|
+
const orc = await this.storageService.getOrchestratorStatus();
|
|
499
|
+
if (orc && orc.agentStatus === CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE)
|
|
500
|
+
sessions.push(orc.sessionName);
|
|
501
|
+
const teams = await this.storageService.getTeams();
|
|
502
|
+
for (const team of teams) {
|
|
503
|
+
for (const member of team.members ?? []) {
|
|
504
|
+
if (member.agentStatus === CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE && member.sessionName) {
|
|
505
|
+
sessions.push(member.sessionName);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return sessions;
|
|
510
|
+
},
|
|
511
|
+
});
|
|
512
|
+
ConsolidationSchedulerService.setInstance(scheduler);
|
|
513
|
+
scheduler.start();
|
|
514
|
+
}
|
|
515
|
+
catch (consolidationErr) {
|
|
516
|
+
this.logger.warn('Memory consolidation scheduler failed to start (non-fatal)', {
|
|
517
|
+
error: consolidationErr.message,
|
|
518
|
+
});
|
|
519
|
+
}
|
|
447
520
|
// LLM-wiki → WorkItem bridge (2026-05-27): pending wiki queue
|
|
448
521
|
// items + legacy migration candidates become claimable
|
|
449
522
|
// WorkItems in the V3 pool. Replaces the bookkeep/reflect
|
|
@@ -479,6 +552,10 @@ export class CrewlyServer {
|
|
|
479
552
|
// actually delivers OR the budget is exhausted.
|
|
480
553
|
try {
|
|
481
554
|
const { OrcDeliveryEnforcerService } = await import('./services/orc/orc-delivery-enforcer.service.js');
|
|
555
|
+
const [{ getChatV2Service }, { synthesizeSlackConversationId }] = await Promise.all([
|
|
556
|
+
import('./services/chat-v2/chat-v2.singleton.js'),
|
|
557
|
+
import('./services/chat-v2/legacy-dto.utils.js'),
|
|
558
|
+
]);
|
|
482
559
|
const enforcer = new OrcDeliveryEnforcerService({
|
|
483
560
|
reminderSink: ({ conversationId, text }) => {
|
|
484
561
|
if (!this.messageQueueService)
|
|
@@ -489,6 +566,12 @@ export class CrewlyServer {
|
|
|
489
566
|
source: 'system_event',
|
|
490
567
|
});
|
|
491
568
|
},
|
|
569
|
+
// Issue #731: let the enforcer see the thread's real activity
|
|
570
|
+
// (owner silence → don't track; reply via any path → stop).
|
|
571
|
+
// Every Slack thread is a chat-v2 channel keyed by its
|
|
572
|
+
// synthesized conversation id, and every outbound Slack
|
|
573
|
+
// reply is mirrored into it.
|
|
574
|
+
threadActivityProvider: ({ channelId, threadTs }) => getChatV2Service().getChannelActivity(synthesizeSlackConversationId(channelId, threadTs)),
|
|
492
575
|
});
|
|
493
576
|
OrcDeliveryEnforcerService.setInstance(enforcer);
|
|
494
577
|
enforcer.start();
|
|
@@ -521,6 +604,28 @@ export class CrewlyServer {
|
|
|
521
604
|
// for idempotency contract + retry cap + cron-recursion guard.
|
|
522
605
|
this.eventToWorkItemBridge = EventToWorkItemBridge.boot(this.eventBusService);
|
|
523
606
|
this.eventToWorkItemBridge.start();
|
|
607
|
+
// OKR loop closure: auto-measure `task_completion` KRs from task:done /
|
|
608
|
+
// task:verified and publish `team:all_tasks_done` when a mission has no
|
|
609
|
+
// active WorkItems left (the bridge turns that into a review WI). See
|
|
610
|
+
// `kr-completion.subscriber.ts`.
|
|
611
|
+
this.krCompletionSubscriber = KRCompletionSubscriber.boot(this.eventBusService);
|
|
612
|
+
this.krCompletionSubscriber.start();
|
|
613
|
+
// A delegation's fallback timer is cancelled the moment its WorkItem
|
|
614
|
+
// finishes, so the orchestrator stops being woken to "check" work that
|
|
615
|
+
// is already verified (26 of 65 WorkItems on steamfun-ops, 2026-09-18).
|
|
616
|
+
this.fallbackTriggerCleanup = FallbackTriggerCleanupSubscriber.boot(this.eventBusService);
|
|
617
|
+
this.fallbackTriggerCleanup.start();
|
|
618
|
+
// OKR loop closure: give the reminder sweep (mission:stale) and the
|
|
619
|
+
// review service (mission:replanned) a bus to publish on. Both were
|
|
620
|
+
// declared + bridged events with no publisher before this.
|
|
621
|
+
MissionReminderService.getInstance().setEventBusService(this.eventBusService);
|
|
622
|
+
OKRReviewService.getInstance().setEventBusService(this.eventBusService);
|
|
623
|
+
// Hierarchy escalation: a TL that has not acted on a worker's
|
|
624
|
+
// verification handoff within 15 min triggers the documented bypass to
|
|
625
|
+
// the orchestrator (`hierarchy:escalation` + [ESCALATION] queue message).
|
|
626
|
+
// HierarchyEscalationService had the rules but no runtime consumer.
|
|
627
|
+
this.hierarchyEscalationMonitor = HierarchyEscalationMonitor.boot(this.eventBusService, this.messageQueueService);
|
|
628
|
+
this.hierarchyEscalationMonitor.start();
|
|
524
629
|
// LEARN-1: subscribe to terminal task / mission:replanned events and
|
|
525
630
|
// auto-record a learning entry via MemoryService.recordLearning. Closes
|
|
526
631
|
// the prompt-driven "agents-forget-to-record" gap. See
|
|
@@ -908,6 +1013,10 @@ export class CrewlyServer {
|
|
|
908
1013
|
// Note: Static files are configured in configureRoutes() after API routes
|
|
909
1014
|
}
|
|
910
1015
|
configureRoutes() {
|
|
1016
|
+
// API token gate — loopback callers (local skills, local dashboard)
|
|
1017
|
+
// pass; every other address must present the API token. `/health`,
|
|
1018
|
+
// static assets and the SPA shell are outside `/api` and stay open.
|
|
1019
|
+
this.app.use('/api', apiTokenMiddleware);
|
|
911
1020
|
// Agent heartbeat middleware - any API call with X-Agent-Session header updates heartbeat
|
|
912
1021
|
this.app.use('/api', agentHeartbeatMiddleware);
|
|
913
1022
|
// API routes
|
|
@@ -1291,12 +1400,44 @@ export class CrewlyServer {
|
|
|
1291
1400
|
error: error instanceof Error ? error.message : String(error),
|
|
1292
1401
|
});
|
|
1293
1402
|
}
|
|
1294
|
-
// Wire OAuthReloginMonitorService
|
|
1403
|
+
// Wire OAuthReloginMonitorService: event bus, orchestrator queue,
|
|
1404
|
+
// chat + Slack sinks for the owner-facing login notice, and the
|
|
1405
|
+
// boot-level sign-in-screen sweep (server-install finding 7).
|
|
1295
1406
|
try {
|
|
1296
|
-
OAuthReloginMonitorService.getInstance()
|
|
1407
|
+
const oauthMonitor = OAuthReloginMonitorService.getInstance();
|
|
1408
|
+
oauthMonitor.setEventBusService(this.eventBusService);
|
|
1409
|
+
oauthMonitor.setNoticeQueue(this.messageQueueService);
|
|
1410
|
+
oauthMonitor.setSlackProvider(async () => {
|
|
1411
|
+
const slack = getSlackService();
|
|
1412
|
+
return slack.isConnected() ? slack : null;
|
|
1413
|
+
});
|
|
1414
|
+
oauthMonitor.setChatProvider(() => {
|
|
1415
|
+
const gateway = this.terminalGateway;
|
|
1416
|
+
if (!gateway)
|
|
1417
|
+
return null;
|
|
1418
|
+
return {
|
|
1419
|
+
getActiveConversationId: () => gateway.getActiveConversationId(),
|
|
1420
|
+
recordSystemTurn: (conversationId, content) => {
|
|
1421
|
+
const chatV2 = getChatV2Service();
|
|
1422
|
+
const channel = chatV2.ensureChannelForLegacyConversation({
|
|
1423
|
+
conversationId,
|
|
1424
|
+
agentSession: ORCHESTRATOR_SESSION_NAME,
|
|
1425
|
+
});
|
|
1426
|
+
chatV2.recordTurn({
|
|
1427
|
+
channelId: channel.id,
|
|
1428
|
+
senderType: 'system',
|
|
1429
|
+
senderId: 'system',
|
|
1430
|
+
content,
|
|
1431
|
+
metadata: { source: 'system' },
|
|
1432
|
+
});
|
|
1433
|
+
},
|
|
1434
|
+
broadcastSystemNotification: (message, type) => gateway.broadcastSystemNotification(message, type),
|
|
1435
|
+
};
|
|
1436
|
+
});
|
|
1437
|
+
oauthMonitor.start();
|
|
1297
1438
|
}
|
|
1298
1439
|
catch (error) {
|
|
1299
|
-
this.logger.warn('Failed to wire OAuthReloginMonitorService
|
|
1440
|
+
this.logger.warn('Failed to wire OAuthReloginMonitorService (non-critical)', {
|
|
1300
1441
|
error: error instanceof Error ? error.message : String(error),
|
|
1301
1442
|
});
|
|
1302
1443
|
}
|
|
@@ -1832,6 +1973,15 @@ export class CrewlyServer {
|
|
|
1832
1973
|
});
|
|
1833
1974
|
await triggerEngine.start();
|
|
1834
1975
|
this.logger.info('TriggerEngine started with action handler wired');
|
|
1976
|
+
// MissionPolicy escalation loop (every 5 min: cost/time/failure rules →
|
|
1977
|
+
// notify/pause/block). Sequenced AFTER the action handler above because
|
|
1978
|
+
// EscalationService.start() wraps the installed handler and delegates
|
|
1979
|
+
// non-escalation triggers back to it. Gated by CREWLY_ESCALATION_ENABLED
|
|
1980
|
+
// (default on); a no-op when no mission carries escalation rules.
|
|
1981
|
+
this.escalationService = await bootEscalationService({
|
|
1982
|
+
messageQueue: this.messageQueueService,
|
|
1983
|
+
logger: this.logger,
|
|
1984
|
+
});
|
|
1835
1985
|
// Wire team-scoped triggers: reconcile declarative Team.triggers spec
|
|
1836
1986
|
// against the running engine on every team save, and cancel all of a
|
|
1837
1987
|
// team's triggers when it's deleted. Listener is fire-and-forget.
|
|
@@ -1894,6 +2044,7 @@ export class CrewlyServer {
|
|
|
1894
2044
|
try {
|
|
1895
2045
|
const { WorkItemDispatchSubscriber } = await import('./services/v3/workitem-dispatch.subscriber.js');
|
|
1896
2046
|
const dispatchSubscriber = WorkItemDispatchSubscriber.getInstance();
|
|
2047
|
+
dispatchSubscriber.setTeamBudgetGate(TeamBudgetGateService.getInstance());
|
|
1897
2048
|
dispatchSubscriber.initialize(this.eventBusService);
|
|
1898
2049
|
dispatchSubscriber.start();
|
|
1899
2050
|
this.logger.info('WorkItemDispatchSubscriber started — workitem:queued events push to target sessions');
|
|
@@ -2067,6 +2218,12 @@ export class CrewlyServer {
|
|
|
2067
2218
|
const loadedAddons = await addonLoader.loadAddons(this.app, this.httpServer);
|
|
2068
2219
|
if (loadedAddons.length > 0) {
|
|
2069
2220
|
this.logger.info('Addons loaded successfully', { addons: loadedAddons });
|
|
2221
|
+
// An addon that attaches its own WebSocket gateway wraps
|
|
2222
|
+
// `httpServer.emit` after our gate did; re-install so the
|
|
2223
|
+
// gate is outermost again (double-wrapping is harmless —
|
|
2224
|
+
// an allowed upgrade passes both, a refused one is
|
|
2225
|
+
// answered once by the outer wrapper).
|
|
2226
|
+
installWebSocketGate(this.httpServer);
|
|
2070
2227
|
}
|
|
2071
2228
|
}
|
|
2072
2229
|
catch (addonErr) {
|
|
@@ -2669,9 +2826,9 @@ export class CrewlyServer {
|
|
|
2669
2826
|
const { createServer } = await import('net');
|
|
2670
2827
|
const testServer = createServer();
|
|
2671
2828
|
return new Promise((resolve, reject) => {
|
|
2672
|
-
testServer.listen(this.config.webPort, () => {
|
|
2829
|
+
testServer.listen(this.config.webPort, this.config.bindHost, () => {
|
|
2673
2830
|
testServer.close(() => {
|
|
2674
|
-
this.logger.info('Port is available', { port: this.config.webPort });
|
|
2831
|
+
this.logger.info('Port is available', { port: this.config.webPort, host: this.config.bindHost });
|
|
2675
2832
|
resolve();
|
|
2676
2833
|
});
|
|
2677
2834
|
});
|
|
@@ -2685,18 +2842,63 @@ export class CrewlyServer {
|
|
|
2685
2842
|
});
|
|
2686
2843
|
});
|
|
2687
2844
|
}
|
|
2845
|
+
/**
|
|
2846
|
+
* Log where the API token lives and how reachable the API is.
|
|
2847
|
+
*
|
|
2848
|
+
* Resolving the token here also performs the first-boot generation so
|
|
2849
|
+
* the file exists (0600) before the first non-loopback caller arrives.
|
|
2850
|
+
* Emits a WARN for a headless install that binds every interface with
|
|
2851
|
+
* neither `CREWLY_BIND_HOST` nor `CREWLY_API_TOKEN` set.
|
|
2852
|
+
*/
|
|
2853
|
+
logNetworkExposure() {
|
|
2854
|
+
try {
|
|
2855
|
+
const token = resolveApiToken();
|
|
2856
|
+
const summary = describeNetworkExposure({
|
|
2857
|
+
bindHost: this.config.bindHost,
|
|
2858
|
+
port: this.config.webPort,
|
|
2859
|
+
bindHostExplicit: Boolean(process.env[API_SECURITY_CONSTANTS.ENV.BIND_HOST]),
|
|
2860
|
+
tokenSource: token.source,
|
|
2861
|
+
tokenFilePath: token.filePath,
|
|
2862
|
+
headless: this.config.headless || isHeadlessEnvironment(),
|
|
2863
|
+
});
|
|
2864
|
+
if (token.source === 'generated') {
|
|
2865
|
+
this.logger.info('Generated API token for non-loopback callers', {
|
|
2866
|
+
file: token.filePath,
|
|
2867
|
+
usage: 'crewly token | curl -H "X-Crewly-Token: $(crewly token)" http://<host>:<port>/api/teams',
|
|
2868
|
+
});
|
|
2869
|
+
}
|
|
2870
|
+
if (summary.level === 'warn') {
|
|
2871
|
+
this.logger.warn(summary.message, summary.details);
|
|
2872
|
+
}
|
|
2873
|
+
else {
|
|
2874
|
+
this.logger.info(summary.message, summary.details);
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
catch (error) {
|
|
2878
|
+
this.logger.error('Failed to resolve API token', {
|
|
2879
|
+
error: error instanceof Error ? error.message : String(error),
|
|
2880
|
+
});
|
|
2881
|
+
}
|
|
2882
|
+
}
|
|
2688
2883
|
async startHttpServer() {
|
|
2689
2884
|
return new Promise((resolve, reject) => {
|
|
2690
2885
|
const startTime = Date.now();
|
|
2691
|
-
|
|
2886
|
+
// Outermost upgrade wrapper: every gateway (Socket.IO, browser
|
|
2887
|
+
// bridge, chat-v2, terminal) has attached by now, so this gate
|
|
2888
|
+
// runs before any of them sees a non-loopback upgrade.
|
|
2889
|
+
installWebSocketGate(this.httpServer);
|
|
2890
|
+
this.httpServer.listen(this.config.webPort, this.config.bindHost, () => {
|
|
2692
2891
|
const duration = Date.now() - startTime;
|
|
2693
2892
|
this.logger.info('Crewly server started', {
|
|
2893
|
+
host: this.config.bindHost,
|
|
2694
2894
|
port: this.config.webPort,
|
|
2895
|
+
listening: `${this.config.bindHost}:${this.config.webPort}`,
|
|
2695
2896
|
durationMs: duration,
|
|
2696
2897
|
dashboardUrl: `http://localhost:${this.config.webPort}`,
|
|
2697
2898
|
websocketUrl: `ws://localhost:${this.config.webPort}`,
|
|
2698
2899
|
home: this.config.crewlyHome
|
|
2699
2900
|
});
|
|
2901
|
+
this.logNetworkExposure();
|
|
2700
2902
|
// B0 (interim) per `.crewly/specs/2026-05-05-trigger-persistence-bug.md`:
|
|
2701
2903
|
// Broadcast `system:backend_restarted` exactly once per boot. The
|
|
2702
2904
|
// trigger engine (`backend/src/services/v3/trigger-engine.service.ts`)
|
|
@@ -2831,7 +3033,6 @@ export class CrewlyServer {
|
|
|
2831
3033
|
// Scans active missions and sends Slack alerts for off-track KRs
|
|
2832
3034
|
setInterval(async () => {
|
|
2833
3035
|
try {
|
|
2834
|
-
const { MissionReminderService } = await import('./services/v3/mission-reminder.service.js');
|
|
2835
3036
|
await MissionReminderService.getInstance().runSweep();
|
|
2836
3037
|
}
|
|
2837
3038
|
catch (err) {
|
|
@@ -2844,7 +3045,6 @@ export class CrewlyServer {
|
|
|
2844
3045
|
setTimeout(() => this.purgeCompletedData(), 30 * 1000);
|
|
2845
3046
|
setTimeout(async () => {
|
|
2846
3047
|
try {
|
|
2847
|
-
const { MissionReminderService } = await import('./services/v3/mission-reminder.service.js');
|
|
2848
3048
|
await MissionReminderService.getInstance().runSweep();
|
|
2849
3049
|
}
|
|
2850
3050
|
catch (err) {
|
|
@@ -3187,6 +3387,25 @@ export class CrewlyServer {
|
|
|
3187
3387
|
this.eventToWorkItemBridge.stop();
|
|
3188
3388
|
this.eventToWorkItemBridge = null;
|
|
3189
3389
|
}
|
|
3390
|
+
if (this.krCompletionSubscriber) {
|
|
3391
|
+
this.krCompletionSubscriber.stop();
|
|
3392
|
+
this.krCompletionSubscriber = null;
|
|
3393
|
+
}
|
|
3394
|
+
if (this.fallbackTriggerCleanup) {
|
|
3395
|
+
this.fallbackTriggerCleanup.stop();
|
|
3396
|
+
this.fallbackTriggerCleanup = null;
|
|
3397
|
+
}
|
|
3398
|
+
if (this.escalationService) {
|
|
3399
|
+
try {
|
|
3400
|
+
await this.escalationService.stop();
|
|
3401
|
+
}
|
|
3402
|
+
catch { /* best-effort */ }
|
|
3403
|
+
this.escalationService = null;
|
|
3404
|
+
}
|
|
3405
|
+
if (this.hierarchyEscalationMonitor) {
|
|
3406
|
+
this.hierarchyEscalationMonitor.stop();
|
|
3407
|
+
this.hierarchyEscalationMonitor = null;
|
|
3408
|
+
}
|
|
3190
3409
|
// LEARN-1: stop the AutoLearningSubscriber on the same window as the
|
|
3191
3410
|
// bridge so its in-flight recordLearning calls drain before the bus
|
|
3192
3411
|
// is cleaned.
|
|
@@ -3255,6 +3474,18 @@ export class CrewlyServer {
|
|
|
3255
3474
|
LogRotationService.getInstance().stop();
|
|
3256
3475
|
// Stop auditor scheduler
|
|
3257
3476
|
AuditorSchedulerService.getInstance().stop();
|
|
3477
|
+
// Persist the token ledger: it flushes every 5 minutes, so a restart
|
|
3478
|
+
// used to drop everything recorded since the last tick (2026-09-18).
|
|
3479
|
+
try {
|
|
3480
|
+
const ledger = TokenUsageService.getInstance();
|
|
3481
|
+
ledger.stopPeriodicFlush();
|
|
3482
|
+
await ledger.flushToDisk();
|
|
3483
|
+
}
|
|
3484
|
+
catch (flushErr) {
|
|
3485
|
+
this.logger.warn('Token ledger flush on shutdown failed (non-fatal)', {
|
|
3486
|
+
error: flushErr instanceof Error ? flushErr.message : String(flushErr),
|
|
3487
|
+
});
|
|
3488
|
+
}
|
|
3258
3489
|
// Flush and shutdown OpenTelemetry tracing
|
|
3259
3490
|
try {
|
|
3260
3491
|
const { TracingService: TracingSvc } = await import('./services/core/tracing.service.js');
|