crewly 1.14.1 → 1.15.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 +28 -0
- 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/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/skills/_common/lib.sh +124 -2
- package/config/skills/_common/lib.test.sh +68 -1
- 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 +100 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +88 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- 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/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/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 +16 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +12 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +187 -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 +3 -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 +68 -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 +280 -10
- 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/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 +50 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.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/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 +42 -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/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/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/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/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/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-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 +74 -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 +251 -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 +16 -0
- 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/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/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 +100 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +88 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +68 -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 +280 -10
- 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/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 +50 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.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 +42 -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/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/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/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 +16 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/v2/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/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/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-203224f9.js +4961 -0
- package/frontend/dist/assets/index-dcaf6c88.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +3 -2
- package/frontend/dist/assets/index-190a957f.js +0 -4961
- package/frontend/dist/assets/index-88feb412.css +0 -42
|
@@ -15,12 +15,16 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import * as fs from 'fs/promises';
|
|
17
17
|
import * as path from 'path';
|
|
18
|
+
import { getMissionsDir } from './mission-paths.js';
|
|
18
19
|
import { CronExpressionParser } from 'cron-parser';
|
|
19
20
|
import { LoggerService } from '../core/logger.service.js';
|
|
20
21
|
import { StorageService } from '../core/storage.service.js';
|
|
21
22
|
import { KRTrackingService } from './kr-tracking.service.js';
|
|
23
|
+
import { OKRReviewService } from './okr-review.service.js';
|
|
24
|
+
import { MissionPeriodService } from './mission-period.service.js';
|
|
22
25
|
import { getSlackOrchestratorBridge } from '../slack/slack-orchestrator-bridge.js';
|
|
23
26
|
import { TaskPoolService } from '../task-pool/task-pool.service.js';
|
|
27
|
+
import { isMissionExecutable } from '../../types/v2/mission.types.js';
|
|
24
28
|
import { SLA_TERMINAL_WORK_ITEM_STATUSES } from '../../types/v2/work-item.types.js';
|
|
25
29
|
import { atomicWriteJson } from '../../utils/file-io.utils.js';
|
|
26
30
|
import { pickTeamLead } from '../../utils/team.utils.js';
|
|
@@ -30,6 +34,14 @@ import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
|
|
|
30
34
|
// ---------------------------------------------------------------------------
|
|
31
35
|
/** Minimum interval between reminders for the same mission (24 hours) */
|
|
32
36
|
const REMINDER_COOLDOWN_MS = 24 * 60 * 60 * 1000;
|
|
37
|
+
/**
|
|
38
|
+
* Consecutive sweeps a mission must show no active WorkItem AND no fresh
|
|
39
|
+
* KR measurement before it is flagged stale (`mission:stale` published,
|
|
40
|
+
* `staleCycles` bumped). Two sweeps ≈ two hours on the production timer.
|
|
41
|
+
*/
|
|
42
|
+
const STALE_SWEEP_THRESHOLD = 2;
|
|
43
|
+
/** Bounded size of the per-day `mission:stale` publish dedup set. */
|
|
44
|
+
const STALE_DEDUP_CAPACITY = 1000;
|
|
33
45
|
/**
|
|
34
46
|
* Statuses that *clear* a Mission's `pendingReviewWorkItemId` so the next
|
|
35
47
|
* sweep tick can fire a new review. Aliases the canonical
|
|
@@ -54,9 +66,6 @@ const REMINDER_COOLDOWN_MS = 24 * 60 * 60 * 1000;
|
|
|
54
66
|
* and clear the lock when it's in any of the SLA-terminal states.
|
|
55
67
|
*/
|
|
56
68
|
const PENDING_REVIEW_TERMINAL_STATUSES = SLA_TERMINAL_WORK_ITEM_STATUSES;
|
|
57
|
-
function getMissionsDir() {
|
|
58
|
-
return path.join(process.cwd(), '.crewly', 'missions');
|
|
59
|
-
}
|
|
60
69
|
/**
|
|
61
70
|
* Default timezone used when a mission's `policy.executionCadence.workHours`
|
|
62
71
|
* does not specify one. UTC keeps the dedup key globally consistent across
|
|
@@ -104,6 +113,23 @@ export class MissionReminderService {
|
|
|
104
113
|
* {@link cronParseFailureCount} for tests + (future) Prom metric.
|
|
105
114
|
*/
|
|
106
115
|
cronParseFailures = 0;
|
|
116
|
+
/**
|
|
117
|
+
* Optional EventBus for `mission:stale` publication. Wired from the
|
|
118
|
+
* backend boot path via {@link setEventBusService}; when absent the
|
|
119
|
+
* stale detection still bumps `staleCycles` but publishes nothing.
|
|
120
|
+
*/
|
|
121
|
+
eventBus = null;
|
|
122
|
+
/**
|
|
123
|
+
* Consecutive idle sweeps per mission (no active WI + no KR measurement
|
|
124
|
+
* since the previous sweep). In-memory by design — a restart simply
|
|
125
|
+
* restarts the count, and the per-day publish id keeps the downstream
|
|
126
|
+
* review WI idempotent regardless.
|
|
127
|
+
*/
|
|
128
|
+
idleSweeps = new Map();
|
|
129
|
+
/** Wall-clock of the previous sweep (for "measurement since last sweep"). */
|
|
130
|
+
lastSweepAt = null;
|
|
131
|
+
/** `<missionId>:stale:<YYYY-MM-DD>` ids already published (FIFO-bounded). */
|
|
132
|
+
publishedStale = [];
|
|
107
133
|
constructor() {
|
|
108
134
|
this.logger = LoggerService.getInstance().createComponentLogger('MissionReminder');
|
|
109
135
|
this.storageService = StorageService.getInstance();
|
|
@@ -140,6 +166,15 @@ export class MissionReminderService {
|
|
|
140
166
|
static resetInstance() {
|
|
141
167
|
MissionReminderService.instance = null;
|
|
142
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Wire the EventBus used to publish `mission:stale`. Idempotent; pass
|
|
171
|
+
* `null` to disable publication (tests / CLI).
|
|
172
|
+
*
|
|
173
|
+
* @param bus - The live EventBusService, or null
|
|
174
|
+
*/
|
|
175
|
+
setEventBusService(bus) {
|
|
176
|
+
this.eventBus = bus;
|
|
177
|
+
}
|
|
143
178
|
/**
|
|
144
179
|
* Run a full sweep of all active missions, sending Slack OKR reminders
|
|
145
180
|
* AND (per REVIEW-1, Phase E pre-beta) creating cadence-driven review
|
|
@@ -162,6 +197,11 @@ export class MissionReminderService {
|
|
|
162
197
|
*/
|
|
163
198
|
async runSweep(force = false) {
|
|
164
199
|
const now = new Date();
|
|
200
|
+
const previousSweepAt = this.lastSweepAt;
|
|
201
|
+
this.lastSweepAt = now;
|
|
202
|
+
// Period lifecycle first: a paused mission whose period just started
|
|
203
|
+
// becomes active and is then picked up by loadAllActiveMissions below.
|
|
204
|
+
await this.reconcilePeriods(now);
|
|
165
205
|
const missions = await this.loadAllActiveMissions();
|
|
166
206
|
const result = {
|
|
167
207
|
checked: 0,
|
|
@@ -169,10 +209,41 @@ export class MissionReminderService {
|
|
|
169
209
|
skipped: 0,
|
|
170
210
|
reviewsCreated: 0,
|
|
171
211
|
reviewsSkipped: 0,
|
|
212
|
+
reviewsAutoContinued: 0,
|
|
213
|
+
staleFlagged: 0,
|
|
172
214
|
};
|
|
173
215
|
this.logger.info('Starting Mission OKR reminder sweep', { count: missions.length });
|
|
216
|
+
// One pool read per sweep for the stale detector (not per mission).
|
|
217
|
+
let poolItems = null;
|
|
218
|
+
if (missions.length > 0) {
|
|
219
|
+
try {
|
|
220
|
+
poolItems = await this.getTaskPool().getAllItems();
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
this.logger.warn('Stale detection skipped — pool unavailable', {
|
|
224
|
+
error: err instanceof Error ? err.message : String(err),
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
174
228
|
for (const mission of missions) {
|
|
175
229
|
result.checked++;
|
|
230
|
+
// -------------------------------------------------------------------
|
|
231
|
+
// Stale detection: no active WorkItem AND no KR measurement since the
|
|
232
|
+
// previous sweep, for STALE_SWEEP_THRESHOLD consecutive sweeps.
|
|
233
|
+
// -------------------------------------------------------------------
|
|
234
|
+
if (poolItems) {
|
|
235
|
+
try {
|
|
236
|
+
const flagged = await this.detectStale(mission, poolItems, previousSweepAt, now);
|
|
237
|
+
if (flagged)
|
|
238
|
+
result.staleFlagged++;
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
this.logger.warn('Stale detection failed for mission', {
|
|
242
|
+
missionId: mission.id,
|
|
243
|
+
error: err instanceof Error ? err.message : String(err),
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
176
247
|
let summary = null;
|
|
177
248
|
try {
|
|
178
249
|
// Get OKR progress summary — needed for both the reminder DM
|
|
@@ -225,6 +296,8 @@ export class MissionReminderService {
|
|
|
225
296
|
result.reviewsCreated++;
|
|
226
297
|
else if (created === 'skipped')
|
|
227
298
|
result.reviewsSkipped++;
|
|
299
|
+
else if (created === 'auto_continued')
|
|
300
|
+
result.reviewsAutoContinued++;
|
|
228
301
|
}
|
|
229
302
|
catch (err) {
|
|
230
303
|
this.logger.error('Failed to create mission review WorkItem', {
|
|
@@ -241,7 +314,10 @@ export class MissionReminderService {
|
|
|
241
314
|
* Result of {@link maybeCreateReviewWorkItem} — `'created'` when a new
|
|
242
315
|
* review WorkItem was added to the pool, `'skipped'` when the
|
|
243
316
|
* reentrancy lock or cadence boundary blocked creation, `'noop'` when
|
|
244
|
-
* the mission has no executionCadence configured (legacy missions)
|
|
317
|
+
* the mission has no executionCadence configured (legacy missions),
|
|
318
|
+
* `'auto_continued'` when the cadence boundary fired but the
|
|
319
|
+
* deterministic OKR review recommended `continue` with no off-track KR
|
|
320
|
+
* — the review is persisted on the mission and NO WorkItem is raised.
|
|
245
321
|
*/
|
|
246
322
|
async maybeCreateReviewWorkItem(mission, summary, now) {
|
|
247
323
|
const cadence = mission.policy?.executionCadence;
|
|
@@ -318,23 +394,54 @@ export class MissionReminderService {
|
|
|
318
394
|
}
|
|
319
395
|
}
|
|
320
396
|
// -----------------------------------------------------------------
|
|
397
|
+
// Cadence boundary fired. Run the deterministic OKR review FIRST
|
|
398
|
+
// (aggregate → recommendation, no LLM) so the loop actually closes
|
|
399
|
+
// on the clock instead of only when someone POSTs /okr-review.
|
|
400
|
+
// `executeReview` persists lastReviewSummary / staleCycles /
|
|
401
|
+
// lastReviewAt on disk; we fold those back into our in-memory copy
|
|
402
|
+
// so the single saveMission below does not clobber them.
|
|
403
|
+
// -----------------------------------------------------------------
|
|
404
|
+
const review = await this.runDeterministicReview(mission);
|
|
405
|
+
const cycleId = boundary.toISOString().slice(0, 10);
|
|
406
|
+
const offTrack = (summary?.offTrack ?? 0) > 0 || (review?.okrSummary.offTrack ?? 0) > 0;
|
|
407
|
+
if (review && review.recommendation === 'continue' && !offTrack) {
|
|
408
|
+
// Healthy on the clock: nothing for the TL to decide. Persist the
|
|
409
|
+
// bookkeeping (lastReviewAt from the review, any cleared lock) and
|
|
410
|
+
// move on without waking anyone.
|
|
411
|
+
mission.lastReviewAt = review.reviewedAt;
|
|
412
|
+
await this.saveMission(mission);
|
|
413
|
+
this.logger.info('Mission cadence review: continue — no review WorkItem raised', {
|
|
414
|
+
missionId: mission.id,
|
|
415
|
+
cycleId,
|
|
416
|
+
progress: review.okrSummary.overallProgress,
|
|
417
|
+
staleCycles: mission.staleCycles ?? 0,
|
|
418
|
+
});
|
|
419
|
+
return 'auto_continued';
|
|
420
|
+
}
|
|
421
|
+
// -----------------------------------------------------------------
|
|
321
422
|
// Build the deterministic review WorkItem.
|
|
322
423
|
//
|
|
323
424
|
// The id collapses to the date-form of the boundary so a sweep
|
|
324
425
|
// replay within the same cycle hits the existing addToPool
|
|
325
426
|
// dedup-by-id guard (V1 satisfied without a TaskPoolService change).
|
|
326
427
|
// -----------------------------------------------------------------
|
|
327
|
-
const cycleId = boundary.toISOString().slice(0, 10);
|
|
328
428
|
const reviewWorkItemId = `${mission.id}:review:${cycleId}`;
|
|
329
|
-
const reviewReason = this.inferReviewReason(mission, summary);
|
|
429
|
+
const reviewReason = this.inferReviewReason(mission, summary ?? review?.okrSummary ?? null);
|
|
330
430
|
const target = await this.resolveTeamLeadSession(mission);
|
|
431
|
+
const recommendationLine = review
|
|
432
|
+
? ` Recommendation: ${review.recommendation} (${review.action}) — ` +
|
|
433
|
+
`progress ${review.okrSummary.overallProgress}%, ` +
|
|
434
|
+
`${review.okrSummary.achieved}/${review.okrSummary.totalKRs} KRs achieved, ` +
|
|
435
|
+
`${review.okrSummary.offTrack} off-track, ${review.okrSummary.atRisk} at-risk, ` +
|
|
436
|
+
`staleCycles=${mission.staleCycles ?? 0}.`
|
|
437
|
+
: '';
|
|
331
438
|
const reviewWorkItem = {
|
|
332
439
|
id: reviewWorkItemId,
|
|
333
440
|
type: 'review',
|
|
334
441
|
owner: 'team_lead',
|
|
335
442
|
target,
|
|
336
443
|
title: `Mission review — ${mission.objective.slice(0, 60)}${mission.objective.length > 60 ? '…' : ''}`,
|
|
337
|
-
description: `Cadence-driven review for mission ${mission.id}. Reason: ${reviewReason}
|
|
444
|
+
description: `Cadence-driven review for mission ${mission.id}. Reason: ${reviewReason}.${recommendationLine}`,
|
|
338
445
|
status: 'queued',
|
|
339
446
|
createdAt: now.toISOString(),
|
|
340
447
|
retryCount: 0,
|
|
@@ -349,6 +456,16 @@ export class MissionReminderService {
|
|
|
349
456
|
reviewReason,
|
|
350
457
|
reviewCycleId: cycleId,
|
|
351
458
|
cadenceSchedule: cadence.reviewSchedule,
|
|
459
|
+
...(review
|
|
460
|
+
? {
|
|
461
|
+
recommendation: review.recommendation,
|
|
462
|
+
reviewAction: review.action,
|
|
463
|
+
okrProgress: review.okrSummary.overallProgress,
|
|
464
|
+
okrOffTrack: review.okrSummary.offTrack,
|
|
465
|
+
okrAtRisk: review.okrSummary.atRisk,
|
|
466
|
+
staleCycles: mission.staleCycles ?? 0,
|
|
467
|
+
}
|
|
468
|
+
: {}),
|
|
352
469
|
},
|
|
353
470
|
};
|
|
354
471
|
await this.getTaskPool().addToPool(reviewWorkItem);
|
|
@@ -367,6 +484,116 @@ export class MissionReminderService {
|
|
|
367
484
|
});
|
|
368
485
|
return 'created';
|
|
369
486
|
}
|
|
487
|
+
/**
|
|
488
|
+
* Run {@link MissionPeriodService.reconcile} so period-bound missions
|
|
489
|
+
* auto-activate / get flagged at period end. Previously nothing called
|
|
490
|
+
* reconcile(), so periods never advanced on their own. Failure-soft.
|
|
491
|
+
*/
|
|
492
|
+
async reconcilePeriods(now) {
|
|
493
|
+
try {
|
|
494
|
+
const outcome = await MissionPeriodService.getInstance().reconcile(now);
|
|
495
|
+
if (outcome.activated.length > 0 || outcome.endOfPeriod.length > 0) {
|
|
496
|
+
this.logger.info('Mission periods reconciled', outcome);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
catch (err) {
|
|
500
|
+
this.logger.warn('Mission period reconcile failed (non-fatal)', {
|
|
501
|
+
error: err instanceof Error ? err.message : String(err),
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Stale detector. A mission is "idle" this sweep when it has no
|
|
507
|
+
* non-terminal WorkItem in the pool AND no KR measurement recorded since
|
|
508
|
+
* the previous sweep. After {@link STALE_SWEEP_THRESHOLD} consecutive
|
|
509
|
+
* idle sweeps the mission's `staleCycles` is bumped, persisted, and a
|
|
510
|
+
* `mission:stale` event is published with the idempotent id
|
|
511
|
+
* `<missionId>:stale:<YYYY-MM-DD>` (once per mission per UTC day). The
|
|
512
|
+
* bridge turns that into a `no_active_work` review WorkItem.
|
|
513
|
+
*
|
|
514
|
+
* @returns `true` when the mission was flagged stale on this sweep
|
|
515
|
+
*/
|
|
516
|
+
async detectStale(mission, poolItems, previousSweepAt, now) {
|
|
517
|
+
const hasActiveWork = poolItems.some((wi) => wi.missionId === mission.id && !SLA_TERMINAL_WORK_ITEM_STATUSES.has(wi.status));
|
|
518
|
+
const krs = await this.krTrackingService.listByMission(mission.id);
|
|
519
|
+
const measuredSinceLastSweep = previousSweepAt !== null && this.hasMeasurementSince(krs, previousSweepAt);
|
|
520
|
+
if (hasActiveWork || measuredSinceLastSweep) {
|
|
521
|
+
this.idleSweeps.delete(mission.id);
|
|
522
|
+
return false;
|
|
523
|
+
}
|
|
524
|
+
const idle = (this.idleSweeps.get(mission.id) ?? 0) + 1;
|
|
525
|
+
this.idleSweeps.set(mission.id, idle);
|
|
526
|
+
if (idle < STALE_SWEEP_THRESHOLD)
|
|
527
|
+
return false;
|
|
528
|
+
const day = now.toISOString().slice(0, 10);
|
|
529
|
+
const eventId = `${mission.id}:stale:${day}`;
|
|
530
|
+
if (this.publishedStale.includes(eventId))
|
|
531
|
+
return false;
|
|
532
|
+
this.publishedStale.push(eventId);
|
|
533
|
+
if (this.publishedStale.length > STALE_DEDUP_CAPACITY)
|
|
534
|
+
this.publishedStale.shift();
|
|
535
|
+
mission.staleCycles = (mission.staleCycles ?? 0) + 1;
|
|
536
|
+
await this.saveMission(mission);
|
|
537
|
+
if (this.eventBus) {
|
|
538
|
+
this.eventBus.publish({
|
|
539
|
+
id: eventId,
|
|
540
|
+
type: 'mission:stale',
|
|
541
|
+
timestamp: now.toISOString(),
|
|
542
|
+
teamId: mission.ownerTeamId,
|
|
543
|
+
teamName: '',
|
|
544
|
+
memberId: '',
|
|
545
|
+
memberName: '',
|
|
546
|
+
sessionName: '',
|
|
547
|
+
previousValue: String(mission.staleCycles - 1),
|
|
548
|
+
newValue: String(mission.staleCycles),
|
|
549
|
+
changedField: 'taskStatus',
|
|
550
|
+
missionId: mission.id,
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
this.logger.info('Mission flagged stale', {
|
|
554
|
+
missionId: mission.id,
|
|
555
|
+
idleSweeps: idle,
|
|
556
|
+
staleCycles: mission.staleCycles,
|
|
557
|
+
published: this.eventBus !== null,
|
|
558
|
+
});
|
|
559
|
+
return true;
|
|
560
|
+
}
|
|
561
|
+
/** Whether any KR carries a measurement taken at/after `since`. */
|
|
562
|
+
hasMeasurementSince(krs, since) {
|
|
563
|
+
const sinceMs = since.getTime();
|
|
564
|
+
return krs.some((kr) => (kr.measurements ?? []).some((m) => new Date(m.measuredAt).getTime() >= sinceMs));
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Run {@link OKRReviewService.executeReview} for a mission at its cadence
|
|
568
|
+
* boundary and fold the persisted bookkeeping (`lastReviewSummary`,
|
|
569
|
+
* `staleCycles`, `lastReviewAt`) back into the caller's in-memory copy.
|
|
570
|
+
*
|
|
571
|
+
* Failure-soft: any error is logged and `null` is returned so the sweep
|
|
572
|
+
* falls back to the legacy behaviour (create the review WI with an
|
|
573
|
+
* inferred reason) rather than dropping the cadence tick.
|
|
574
|
+
*
|
|
575
|
+
* @param mission - In-memory mission (mutated with the persisted fields)
|
|
576
|
+
* @returns The review result, or `null` if the review could not run
|
|
577
|
+
*/
|
|
578
|
+
async runDeterministicReview(mission) {
|
|
579
|
+
try {
|
|
580
|
+
const review = await OKRReviewService.getInstance().executeReview(mission.id);
|
|
581
|
+
const persisted = await this.loadMission(mission.id);
|
|
582
|
+
if (persisted) {
|
|
583
|
+
mission.lastReviewSummary = persisted.lastReviewSummary;
|
|
584
|
+
mission.staleCycles = persisted.staleCycles;
|
|
585
|
+
mission.lastReviewAt = persisted.lastReviewAt;
|
|
586
|
+
}
|
|
587
|
+
return review;
|
|
588
|
+
}
|
|
589
|
+
catch (err) {
|
|
590
|
+
this.logger.warn('Deterministic OKR review failed at cadence boundary — falling back to review WI', {
|
|
591
|
+
missionId: mission.id,
|
|
592
|
+
error: err instanceof Error ? err.message : String(err),
|
|
593
|
+
});
|
|
594
|
+
return null;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
370
597
|
/**
|
|
371
598
|
* Pick the {@link ReviewReason} for this sweep tick.
|
|
372
599
|
*
|
|
@@ -507,7 +734,10 @@ cc: @${ORCHESTRATOR_SESSION_NAME}`;
|
|
|
507
734
|
return 'Team Lead';
|
|
508
735
|
}
|
|
509
736
|
/**
|
|
510
|
-
* Load all missions
|
|
737
|
+
* Load all executable missions — `status: 'active'` AND approved (or
|
|
738
|
+
* legacy, no approval metadata). A cascade child still awaiting its
|
|
739
|
+
* owner's approval is skipped so it is neither reminded about nor handed
|
|
740
|
+
* review WorkItems before anyone said yes. See {@link isMissionExecutable}.
|
|
511
741
|
*/
|
|
512
742
|
async loadAllActiveMissions() {
|
|
513
743
|
const dir = getMissionsDir();
|
|
@@ -520,7 +750,7 @@ cc: @${ORCHESTRATOR_SESSION_NAME}`;
|
|
|
520
750
|
try {
|
|
521
751
|
const raw = await fs.readFile(path.join(dir, file), 'utf-8');
|
|
522
752
|
const mission = JSON.parse(raw);
|
|
523
|
-
if (mission
|
|
753
|
+
if (isMissionExecutable(mission)) {
|
|
524
754
|
missions.push(mission);
|
|
525
755
|
}
|
|
526
756
|
}
|
|
@@ -534,6 +764,18 @@ cc: @${ORCHESTRATOR_SESSION_NAME}`;
|
|
|
534
764
|
return [];
|
|
535
765
|
}
|
|
536
766
|
}
|
|
767
|
+
/**
|
|
768
|
+
* Load a single mission from disk (null when missing/corrupt).
|
|
769
|
+
*/
|
|
770
|
+
async loadMission(missionId) {
|
|
771
|
+
try {
|
|
772
|
+
const raw = await fs.readFile(path.join(getMissionsDir(), `${missionId}.json`), 'utf-8');
|
|
773
|
+
return JSON.parse(raw);
|
|
774
|
+
}
|
|
775
|
+
catch {
|
|
776
|
+
return null;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
537
779
|
/**
|
|
538
780
|
* Save a mission back to disk.
|
|
539
781
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mission-reminder.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-reminder.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mission-reminder.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/mission-reminder.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
*
|
|
24
24
|
* @module services/v3/okr-cascade.service
|
|
25
25
|
*/
|
|
26
|
-
import { type Mission, type MissionLevel } from '../../types/v2/mission.types.js';
|
|
26
|
+
import { type Mission, type MissionLevel, type ApprovalAudit } from '../../types/v2/mission.types.js';
|
|
27
27
|
import type { CreateKeyResultInput } from '../../types/v2/key-result.types.js';
|
|
28
28
|
/**
|
|
29
29
|
* A single proposed child OKR within a decomposition: one objective plus its
|
|
@@ -119,11 +119,12 @@ export declare class OKRCascadeService {
|
|
|
119
119
|
*
|
|
120
120
|
* @param missionId - ID of the proposed (pending_approval) mission
|
|
121
121
|
* @param decidedBy - Human owner who approved (e.g. "steve")
|
|
122
|
+
* @param audit - Optional audit trail (principal + token fingerprint)
|
|
122
123
|
* @returns The updated mission
|
|
123
124
|
* @throws If the mission is missing, has no approval state, or the
|
|
124
125
|
* `pending_approval → approved` transition is illegal
|
|
125
126
|
*/
|
|
126
|
-
approveDecomposition(missionId: string, decidedBy: string): Promise<Mission>;
|
|
127
|
+
approveDecomposition(missionId: string, decidedBy: string, audit?: ApprovalAudit): Promise<Mission>;
|
|
127
128
|
/**
|
|
128
129
|
* Reject a pending decomposition proposal with a required reason. The
|
|
129
130
|
* rejected mission is excluded from roll-up and autonomous execution.
|
|
@@ -131,11 +132,12 @@ export declare class OKRCascadeService {
|
|
|
131
132
|
* @param missionId - ID of the proposed (pending_approval) mission
|
|
132
133
|
* @param decidedBy - Human owner who rejected (e.g. "steve")
|
|
133
134
|
* @param reason - Non-empty explanation surfaced back to the proposing agent
|
|
135
|
+
* @param audit - Optional audit trail (principal + token fingerprint)
|
|
134
136
|
* @returns The updated mission
|
|
135
137
|
* @throws If the reason is empty, the mission is missing, has no approval
|
|
136
138
|
* state, or the `pending_approval → rejected` transition is illegal
|
|
137
139
|
*/
|
|
138
|
-
rejectDecomposition(missionId: string, decidedBy: string, reason: string): Promise<Mission>;
|
|
140
|
+
rejectDecomposition(missionId: string, decidedBy: string, reason: string, audit?: ApprovalAudit): Promise<Mission>;
|
|
139
141
|
/**
|
|
140
142
|
* List missions awaiting an owner decision (`approval.state ===
|
|
141
143
|
* 'pending_approval'`). Optionally scope to the direct children of one parent.
|
|
@@ -171,7 +173,7 @@ export declare class OKRCascadeService {
|
|
|
171
173
|
* @returns The child level, or `null` if `level` is already the bottom tier
|
|
172
174
|
*/
|
|
173
175
|
private nextLevel;
|
|
174
|
-
/** Absolute path to the missions directory
|
|
176
|
+
/** Absolute path to the missions directory (shared resolver). */
|
|
175
177
|
private getMissionsDir;
|
|
176
178
|
/** Absolute path to a single mission's JSON file. */
|
|
177
179
|
private getMissionPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okr-cascade.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/okr-cascade.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"okr-cascade.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/okr-cascade.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,EASL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AA4B/E;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,EAAE,YAAY,CAAC;IACzB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAQ5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IA6FzB;;;;;;;;;;;OAWG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC;IA8BnB;;;;;;;;;;;OAWG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC;IAkCnB;;;;;;OAMG;IACG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAajE;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAKjB,iEAAiE;IACjE,OAAO,CAAC,cAAc;IAItB,qDAAqD;IACrD,OAAO,CAAC,cAAc;IAItB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;YACW,WAAW;IASzB;;;;;OAKG;YACW,eAAe;IAqB7B;;;;OAIG;YACW,cAAc;CAK7B"}
|
|
@@ -27,14 +27,11 @@ import * as fs from 'fs/promises';
|
|
|
27
27
|
import * as path from 'path';
|
|
28
28
|
import { LoggerService } from '../core/logger.service.js';
|
|
29
29
|
import { KRTrackingService } from './kr-tracking.service.js';
|
|
30
|
+
import { getMissionsDir } from './mission-paths.js';
|
|
30
31
|
import { createMission, validateCascadeLink, resolveMissionLevel, isMission, isValidProposalState, isValidProposalTransition, MISSION_LEVELS, MISSION_LEVEL_DEPTH, } from '../../types/v2/mission.types.js';
|
|
31
32
|
// ---------------------------------------------------------------------------
|
|
32
33
|
// Constants
|
|
33
34
|
// ---------------------------------------------------------------------------
|
|
34
|
-
/** Workspace root folder for Crewly runtime state. */
|
|
35
|
-
const CREWLY_HOME = '.crewly';
|
|
36
|
-
/** Folder under {@link CREWLY_HOME} that holds one JSON file per Mission. */
|
|
37
|
-
const MISSIONS_DIR = 'missions';
|
|
38
35
|
/** Proposal state stamped on a freshly-proposed child mission. */
|
|
39
36
|
const PROPOSED_STATE = 'pending_approval';
|
|
40
37
|
/** Proposal state after a successful owner approval. */
|
|
@@ -196,11 +193,12 @@ export class OKRCascadeService {
|
|
|
196
193
|
*
|
|
197
194
|
* @param missionId - ID of the proposed (pending_approval) mission
|
|
198
195
|
* @param decidedBy - Human owner who approved (e.g. "steve")
|
|
196
|
+
* @param audit - Optional audit trail (principal + token fingerprint)
|
|
199
197
|
* @returns The updated mission
|
|
200
198
|
* @throws If the mission is missing, has no approval state, or the
|
|
201
199
|
* `pending_approval → approved` transition is illegal
|
|
202
200
|
*/
|
|
203
|
-
async approveDecomposition(missionId, decidedBy) {
|
|
201
|
+
async approveDecomposition(missionId, decidedBy, audit) {
|
|
204
202
|
const mission = await this.loadMission(missionId);
|
|
205
203
|
if (!mission) {
|
|
206
204
|
throw new Error(`Mission ${missionId} does not exist`);
|
|
@@ -219,11 +217,12 @@ export class OKRCascadeService {
|
|
|
219
217
|
state: APPROVED_STATE,
|
|
220
218
|
decidedBy,
|
|
221
219
|
decidedAt: new Date().toISOString(),
|
|
220
|
+
...(audit ?? {}),
|
|
222
221
|
},
|
|
223
222
|
updatedAt: new Date().toISOString(),
|
|
224
223
|
};
|
|
225
224
|
await this.persistMission(decided);
|
|
226
|
-
this.logger.info('Approved OKR decomposition', { missionId, decidedBy });
|
|
225
|
+
this.logger.info('Approved OKR decomposition', { missionId, decidedBy, ...(audit ?? {}) });
|
|
227
226
|
return decided;
|
|
228
227
|
}
|
|
229
228
|
/**
|
|
@@ -233,11 +232,12 @@ export class OKRCascadeService {
|
|
|
233
232
|
* @param missionId - ID of the proposed (pending_approval) mission
|
|
234
233
|
* @param decidedBy - Human owner who rejected (e.g. "steve")
|
|
235
234
|
* @param reason - Non-empty explanation surfaced back to the proposing agent
|
|
235
|
+
* @param audit - Optional audit trail (principal + token fingerprint)
|
|
236
236
|
* @returns The updated mission
|
|
237
237
|
* @throws If the reason is empty, the mission is missing, has no approval
|
|
238
238
|
* state, or the `pending_approval → rejected` transition is illegal
|
|
239
239
|
*/
|
|
240
|
-
async rejectDecomposition(missionId, decidedBy, reason) {
|
|
240
|
+
async rejectDecomposition(missionId, decidedBy, reason, audit) {
|
|
241
241
|
if (!reason || reason.trim().length === 0) {
|
|
242
242
|
throw new Error('Rejection requires a non-empty reason');
|
|
243
243
|
}
|
|
@@ -260,11 +260,12 @@ export class OKRCascadeService {
|
|
|
260
260
|
decidedBy,
|
|
261
261
|
decidedAt: new Date().toISOString(),
|
|
262
262
|
rejectionReason: reason.trim(),
|
|
263
|
+
...(audit ?? {}),
|
|
263
264
|
},
|
|
264
265
|
updatedAt: new Date().toISOString(),
|
|
265
266
|
};
|
|
266
267
|
await this.persistMission(decided);
|
|
267
|
-
this.logger.info('Rejected OKR decomposition', { missionId, decidedBy, reason: reason.trim() });
|
|
268
|
+
this.logger.info('Rejected OKR decomposition', { missionId, decidedBy, reason: reason.trim(), ...(audit ?? {}) });
|
|
268
269
|
return decided;
|
|
269
270
|
}
|
|
270
271
|
/**
|
|
@@ -321,9 +322,9 @@ export class OKRCascadeService {
|
|
|
321
322
|
const childDepth = MISSION_LEVEL_DEPTH[level] + 1;
|
|
322
323
|
return MISSION_LEVELS[childDepth] ?? null;
|
|
323
324
|
}
|
|
324
|
-
/** Absolute path to the missions directory
|
|
325
|
+
/** Absolute path to the missions directory (shared resolver). */
|
|
325
326
|
getMissionsDir() {
|
|
326
|
-
return
|
|
327
|
+
return getMissionsDir();
|
|
327
328
|
}
|
|
328
329
|
/** Absolute path to a single mission's JSON file. */
|
|
329
330
|
getMissionPath(missionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okr-cascade.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/okr-cascade.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,
|
|
1
|
+
{"version":3,"file":"okr-cascade.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/okr-cascade.service.ts"],"names":[],"mappings":"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"}
|