crewly 1.13.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/skills/_common/complete-body-shape.test.sh +113 -0
- package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
- package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
- package/config/skills/agent/core/accept-task/execute.sh +30 -5
- package/config/skills/agent/core/block-task/execute.sh +59 -6
- package/config/skills/agent/core/complete-task/SKILL.md +37 -5
- package/config/skills/agent/core/complete-task/execute.sh +40 -9
- package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
- package/config/skills/agent/core/create-task/SKILL.md +33 -0
- package/config/skills/agent/core/create-task/execute.sh +82 -23
- package/config/skills/agent/core/delegate-task/execute.sh +46 -0
- package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
- package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
- package/config/skills/agent/core/handoff-task/execute.sh +8 -1
- package/config/skills/agent/core/report-status/SKILL.md +26 -0
- package/config/skills/agent/core/report-status/execute.sh +40 -5
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
- package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
- package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
- package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
- package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
- package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
- package/config/skills/team-leader/delegate-task/execute.sh +132 -43
- package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
- package/config/vitest-exclude.constants.ts +56 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -3
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +18 -15
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
- 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 +19 -10
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +20 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
- package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
- package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -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 +25 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -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 +9 -1
- 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/crewly-agent/types.d.ts +42 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +22 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
- 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 +40 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +13 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +84 -5
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +14 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
- 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 +268 -36
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
- package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +39 -2
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.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/work-item.types.d.ts +181 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
- package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/build-provenance.js +211 -0
- package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
- package/dist/backend/build-info.json +4 -0
- package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/backend/config/vitest-exclude.constants.js +55 -0
- package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +737 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1213 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
- package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +208 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +405 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
- package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.js +302 -0
- package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
- package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/index.d.ts +47 -0
- package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/index.js +50 -0
- package/dist/cli/backend/src/services/session/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.js +11 -0
- package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.js +728 -0
- package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1928 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +315 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.js +1094 -0
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
- package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
- 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 +268 -36
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.js +534 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
- package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.js +403 -0
- package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/index.js +22 -0
- package/dist/cli/backend/src/types/v2/index.js.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
- package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.js +179 -0
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.js +80 -0
- package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
- package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/cli/config/vitest-exclude.constants.js +55 -0
- package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
- package/frontend/dist/assets/index-890d3f9d.js +4961 -0
- package/frontend/dist/index.html +1 -1
- package/package.json +2 -2
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +174 -30
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +121 -6
- package/packages/crewly-agent/src/runtime/types.ts +56 -5
- package/frontend/dist/assets/index-aa737fd3.js +0 -5254
|
@@ -87,6 +87,127 @@ export declare const TERMINAL_WORK_ITEM_STATUSES: ReadonlySet<WorkItemStatus>;
|
|
|
87
87
|
* release based on the current WI state?", and use {@link TERMINAL_WORK_ITEM_STATUSES}
|
|
88
88
|
* when answering "is the state machine done with this WI?".
|
|
89
89
|
*/
|
|
90
|
+
/**
|
|
91
|
+
* Metadata key recording the last time a WorkItem was put back on the queue
|
|
92
|
+
* after a failure.
|
|
93
|
+
*
|
|
94
|
+
* Written by `TaskPoolService.requeueAfterFailure`. Read only through
|
|
95
|
+
* {@link getTtlAnchorAt} — call sites must not reach for it directly, so the
|
|
96
|
+
* "which timestamp does age mean?" decision stays in one place.
|
|
97
|
+
*/
|
|
98
|
+
/**
|
|
99
|
+
* How a WorkItem that landed in `rejected`/`failed` was dealt with.
|
|
100
|
+
*
|
|
101
|
+
* - `retried_in_place` the same WorkItem went back on the queue (`→ queued`)
|
|
102
|
+
* with `retryCount` bumped. The successor IS the item.
|
|
103
|
+
* - `succeeded_by` a distinct WorkItem picked the work up (the
|
|
104
|
+
* `EventToWorkItemBridge` retry/escalation WI). The
|
|
105
|
+
* source stays where it is; `successorWorkItemId` names
|
|
106
|
+
* the item that carries the work now.
|
|
107
|
+
* - `terminal` no successor, deliberately. The retry budget is spent
|
|
108
|
+
* or the status has no retry path, so the work stops
|
|
109
|
+
* here and an escalation carries the decision to a human
|
|
110
|
+
* or the orchestrator. `escalationId` names that record.
|
|
111
|
+
*/
|
|
112
|
+
export type WorkItemDispositionKind = 'retried_in_place' | 'succeeded_by' | 'terminal';
|
|
113
|
+
/**
|
|
114
|
+
* The audit record proving a `rejected`/`failed` WorkItem was actually dealt
|
|
115
|
+
* with, rather than merely left in a status nothing acts on.
|
|
116
|
+
*
|
|
117
|
+
* This exists because the previous attempt at a successor model (reverted in
|
|
118
|
+
* `469a3a21`) tried to INFER whether a successor existed by scanning other
|
|
119
|
+
* WorkItems, and inference over a live filtered collection is wrong in both
|
|
120
|
+
* directions by construction:
|
|
121
|
+
*
|
|
122
|
+
* - `getActiveWorkItems()` drops `done`/`cancelled`, so a successor that had
|
|
123
|
+
* already completed was invisible → the rule concluded "no successor" and
|
|
124
|
+
* re-dispatched the source → completed work ran a second time.
|
|
125
|
+
* - `buildAutoWorkItem` sets `parentWorkItemId` on VERIFY WorkItems too, so an
|
|
126
|
+
* unrelated verification child read as a successor → the rule skipped the
|
|
127
|
+
* exact SLA case it was written to rescue.
|
|
128
|
+
*
|
|
129
|
+
* No refinement of that query fixes it, because the query is reconstructing
|
|
130
|
+
* information the writer already had and discarded. So the writer records it
|
|
131
|
+
* instead: whoever performs the disposition stamps it, in the same operation.
|
|
132
|
+
* The predicate then becomes a local field read with no collection to filter
|
|
133
|
+
* and no `parentWorkItemId` to misread.
|
|
134
|
+
*/
|
|
135
|
+
export interface WorkItemDisposition {
|
|
136
|
+
/** What was done. See {@link WorkItemDispositionKind}. */
|
|
137
|
+
kind: WorkItemDispositionKind;
|
|
138
|
+
/** ISO-8601 timestamp of the disposition. */
|
|
139
|
+
at: string;
|
|
140
|
+
/** Role that performed it. `'system'` for reconciler/subscriber paths. */
|
|
141
|
+
by: WorkItemOwner;
|
|
142
|
+
/** Human-readable justification, carried into the audit trail. */
|
|
143
|
+
reason: string;
|
|
144
|
+
/** Set when `kind === 'succeeded_by'`: the WorkItem now carrying the work. */
|
|
145
|
+
successorWorkItemId?: string;
|
|
146
|
+
/** Set when `kind === 'terminal'`: the PendingEscalation raised, if any. */
|
|
147
|
+
escalationId?: string;
|
|
148
|
+
}
|
|
149
|
+
/** Metadata key under which {@link WorkItemDisposition} is stored. */
|
|
150
|
+
export declare const DISPOSITION_METADATA_KEY = "disposition";
|
|
151
|
+
/**
|
|
152
|
+
* Reads a WorkItem's disposition record, validating its shape.
|
|
153
|
+
*
|
|
154
|
+
* `metadata` is `Record<string, unknown>` and round-trips through storage, so
|
|
155
|
+
* the value is validated rather than cast. An unrecognised shape is treated as
|
|
156
|
+
* absent — the safety-net rule will then re-dispose the item, which is safe
|
|
157
|
+
* (dispositions are idempotent) whereas trusting a malformed record is not.
|
|
158
|
+
*
|
|
159
|
+
* @param wi - WorkItem (or any object carrying `metadata`) to read.
|
|
160
|
+
* @returns The disposition, or `null` if the item has not been disposed.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* if (!isWorkItemDisposed(wi)) await pool.disposeFailedWorkItem(wi.id, {...});
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export declare function getWorkItemDisposition(wi: Pick<WorkItem, 'metadata'>): WorkItemDisposition | null;
|
|
168
|
+
/**
|
|
169
|
+
* Whether a WorkItem has an explicit disposition record.
|
|
170
|
+
*
|
|
171
|
+
* This is THE successor predicate. It is a local field read by design — see
|
|
172
|
+
* {@link WorkItemDisposition} for why the scan-based version it replaces could
|
|
173
|
+
* not be made correct.
|
|
174
|
+
*
|
|
175
|
+
* @param wi - WorkItem to test.
|
|
176
|
+
* @returns True if the item has been dealt with and must not be re-dispatched.
|
|
177
|
+
*/
|
|
178
|
+
export declare function isWorkItemDisposed(wi: Pick<WorkItem, 'metadata'>): boolean;
|
|
179
|
+
export declare const LAST_REQUEUED_AT_METADATA_KEY = "lastRequeuedAt";
|
|
180
|
+
/**
|
|
181
|
+
* The timestamp that age-based expiry rules must measure from.
|
|
182
|
+
*
|
|
183
|
+
* `createdAt` answers "when was this work first asked for?" and is never
|
|
184
|
+
* mutated anywhere in the codebase — age metrics, ordering and postmortems all
|
|
185
|
+
* depend on that. It is therefore the wrong clock for a TTL, because a WorkItem
|
|
186
|
+
* that is legitimately retried is not stale merely because its *original*
|
|
187
|
+
* request is old.
|
|
188
|
+
*
|
|
189
|
+
* Using `createdAt` for TTL caused a live data-loss bug: a WorkItem that failed
|
|
190
|
+
* after the 24h TTL and was auto-retried by `detectRetryableFailedWorkItems`
|
|
191
|
+
* landed back in `queued` still carrying its original `createdAt`, so the very
|
|
192
|
+
* next reconciler pass (60s later) TTL-cancelled it. Every retry granted past
|
|
193
|
+
* the 24h mark was silently destroyed a minute after being granted.
|
|
194
|
+
*
|
|
195
|
+
* This function resolves the anchor instead: a requeued item's TTL window
|
|
196
|
+
* restarts from the requeue, while an item that has never been requeued keeps
|
|
197
|
+
* `createdAt` and behaves exactly as before.
|
|
198
|
+
*
|
|
199
|
+
* @param wi - The WorkItem whose age is being measured.
|
|
200
|
+
* @returns ISO-8601 timestamp to measure age from. Falls back to `createdAt`
|
|
201
|
+
* when no requeue has happened, or when the stored value is not a
|
|
202
|
+
* usable date (defensive: `metadata` is untyped and may be
|
|
203
|
+
* round-tripped through storage by older writers).
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* const age = Date.now() - new Date(getTtlAnchorAt(wi)).getTime();
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export declare function getTtlAnchorAt(wi: Pick<WorkItem, 'createdAt' | 'metadata'>): string;
|
|
90
211
|
export declare const SLA_TERMINAL_WORK_ITEM_STATUSES: ReadonlySet<WorkItemStatus>;
|
|
91
212
|
/**
|
|
92
213
|
* A single unit of system execution.
|
|
@@ -168,10 +289,55 @@ export interface WorkItem {
|
|
|
168
289
|
* TaskPoolService.blockItem (explicit worker block).
|
|
169
290
|
*/
|
|
170
291
|
blockedReason?: string;
|
|
171
|
-
/**
|
|
292
|
+
/**
|
|
293
|
+
* Number of FAILED attempts so far.
|
|
294
|
+
*
|
|
295
|
+
* SEMANTICS (deliberate, load-bearing): this counter means *failures
|
|
296
|
+
* only*. It is incremented by `requeueAfterFailure` — the path taken
|
|
297
|
+
* when work genuinely failed — and by nothing else. Consumers branch on
|
|
298
|
+
* `retryCount < maxRetries` to choose retry-in-place vs terminal-and-
|
|
299
|
+
* escalate, so anything that inflates it without a real failure takes
|
|
300
|
+
* live work terminal.
|
|
301
|
+
*
|
|
302
|
+
* In particular, an administrative release (lease expiry, claim revoke,
|
|
303
|
+
* reconciler requeue, an agent handing work back) is NOT a failure and
|
|
304
|
+
* MUST NOT touch this field — see {@link releaseCount}. Before
|
|
305
|
+
* 2026-08-21 `releaseBack` incremented it on every release, so an agent
|
|
306
|
+
* who simply went heads-down for longer than the lease accumulated
|
|
307
|
+
* retries it never earned and was driven to 3/3 with zero failures.
|
|
308
|
+
*/
|
|
172
309
|
retryCount: number;
|
|
173
310
|
/** Maximum retries before permanent failure */
|
|
174
311
|
maxRetries: number;
|
|
312
|
+
/**
|
|
313
|
+
* Number of administrative releases back to the pool (lease expiry,
|
|
314
|
+
* claim revoke, reconciler requeue, explicit hand-back).
|
|
315
|
+
*
|
|
316
|
+
* Purely diagnostic — deliberately kept SEPARATE from {@link retryCount}
|
|
317
|
+
* so release churn stays observable without being mistaken for failure.
|
|
318
|
+
* Nothing branches on this field; it exists so a release loop can be
|
|
319
|
+
* spotted without corrupting retry semantics.
|
|
320
|
+
*
|
|
321
|
+
* Optional for back-compat: items persisted before this field existed
|
|
322
|
+
* read as `undefined`, which callers treat as 0.
|
|
323
|
+
*/
|
|
324
|
+
releaseCount?: number;
|
|
325
|
+
/**
|
|
326
|
+
* Provenance of {@link target} — how this item came to point at an agent.
|
|
327
|
+
*
|
|
328
|
+
* - `'assigned'` (or absent): a DELIBERATE assignment. A TL delegated the
|
|
329
|
+
* work, or it was handed off explicitly. This survives a release: the
|
|
330
|
+
* work still belongs to that agent.
|
|
331
|
+
* - `'claim'`: an incidental stamp. The item was a broadcast item with no
|
|
332
|
+
* target, and `claimFromPool` / `claimSpecificItem` recorded whoever
|
|
333
|
+
* picked it up. This must NOT survive a release — otherwise a single
|
|
334
|
+
* claim would permanently bind broadcast work to one agent, and if that
|
|
335
|
+
* agent died the item could only ever be re-claimed by a dead session.
|
|
336
|
+
*
|
|
337
|
+
* The distinction exists because "preserve the target on release" is
|
|
338
|
+
* correct for an assignment and actively harmful for a claim stamp.
|
|
339
|
+
*/
|
|
340
|
+
targetSource?: 'assigned' | 'claim';
|
|
175
341
|
/** Trigger ID that created or will wake this WorkItem */
|
|
176
342
|
triggerId?: string;
|
|
177
343
|
/** Link to ProjectTask (for durable project work) */
|
|
@@ -247,6 +413,20 @@ export interface UpdateWorkItemInput {
|
|
|
247
413
|
* the extended acceptance/verification flow (proposed→accepted→running→done_by_worker→verified).
|
|
248
414
|
*/
|
|
249
415
|
export declare const WORK_ITEM_TRANSITIONS: Record<WorkItemStatus, ReadonlySet<WorkItemStatus>>;
|
|
416
|
+
/**
|
|
417
|
+
* Statuses that require a disposition record before a WorkItem can be
|
|
418
|
+
* considered dealt with.
|
|
419
|
+
*
|
|
420
|
+
* These are exactly the statuses that are neither terminal
|
|
421
|
+
* ({@link TERMINAL_WORK_ITEM_STATUSES}) nor able to reach a terminal state —
|
|
422
|
+
* their only outbound edge is `→ queued`. That combination is what makes them
|
|
423
|
+
* strand: every consumer treats them as finished (see
|
|
424
|
+
* {@link SLA_TERMINAL_WORK_ITEM_STATUSES}) while the state machine does not.
|
|
425
|
+
*
|
|
426
|
+
* Derived rather than hand-listed so a future `WorkItemStatus` with the same
|
|
427
|
+
* shape is covered automatically instead of silently stranding.
|
|
428
|
+
*/
|
|
429
|
+
export declare const DISPOSITION_REQUIRED_STATUSES: ReadonlySet<WorkItemStatus>;
|
|
250
430
|
/**
|
|
251
431
|
* Defines which roles are allowed to trigger specific status transitions.
|
|
252
432
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-item.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/work-item.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,cAAc,GACd,OAAO,GACP,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB,qCAAqC;AACrC,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EASzC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,WAAW,GACX,OAAO,GACP,QAAQ,CAAC;AAEb,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAK3C,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,UAAU,GACV,SAAS,GACT,SAAS,GACT,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EAc9C,CAAC;AAEX,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,cAAc,CAIlE,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,+BAA+B,EAAE,WAAW,CAAC,cAAc,CAOpE,CAAC;AAML;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,cAAc;IACd,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,IAAI,EAAE,YAAY,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,aAAa,CAAC;IACrB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB
|
|
1
|
+
{"version":3,"file":"work-item.types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/work-item.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,28 +48,93 @@ export const TERMINAL_WORK_ITEM_STATUSES = new Set([
|
|
|
48
48
|
'verified',
|
|
49
49
|
'cancelled',
|
|
50
50
|
]);
|
|
51
|
+
/** Metadata key under which {@link WorkItemDisposition} is stored. */
|
|
52
|
+
export const DISPOSITION_METADATA_KEY = 'disposition';
|
|
51
53
|
/**
|
|
52
|
-
*
|
|
53
|
-
* (e.g. `RequestSlaSubscriber`, `MissionReminderService`) that need to
|
|
54
|
-
* treat `failed` and `rejected` as terminal for *their* purposes — even
|
|
55
|
-
* though those statuses are NOT terminal in the strict state-machine sense
|
|
56
|
-
* (they can transition back to `queued` via the retry path).
|
|
54
|
+
* Reads a WorkItem's disposition record, validating its shape.
|
|
57
55
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
56
|
+
* `metadata` is `Record<string, unknown>` and round-trips through storage, so
|
|
57
|
+
* the value is validated rather than cast. An unrecognised shape is treated as
|
|
58
|
+
* absent — the safety-net rule will then re-dispose the item, which is safe
|
|
59
|
+
* (dispositions are idempotent) whereas trusting a malformed record is not.
|
|
62
60
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* - `failed` / `rejected` — semantically "exited active queue" for SLA timer
|
|
66
|
-
* no-op + reentrancy-lock release purposes, even though the state machine
|
|
67
|
-
* permits `rejected → queued` (retry) and `failed` is not formally terminal.
|
|
61
|
+
* @param wi - WorkItem (or any object carrying `metadata`) to read.
|
|
62
|
+
* @returns The disposition, or `null` if the item has not been disposed.
|
|
68
63
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* if (!isWorkItemDisposed(wi)) await pool.disposeFailedWorkItem(wi.id, {...});
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export function getWorkItemDisposition(wi) {
|
|
70
|
+
const raw = wi.metadata?.[DISPOSITION_METADATA_KEY];
|
|
71
|
+
if (typeof raw !== 'object' || raw === null)
|
|
72
|
+
return null;
|
|
73
|
+
const candidate = raw;
|
|
74
|
+
const kindOk = candidate.kind === 'retried_in_place' ||
|
|
75
|
+
candidate.kind === 'succeeded_by' ||
|
|
76
|
+
candidate.kind === 'terminal';
|
|
77
|
+
if (!kindOk)
|
|
78
|
+
return null;
|
|
79
|
+
if (typeof candidate.at !== 'string' || typeof candidate.reason !== 'string') {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return candidate;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether a WorkItem has an explicit disposition record.
|
|
86
|
+
*
|
|
87
|
+
* This is THE successor predicate. It is a local field read by design — see
|
|
88
|
+
* {@link WorkItemDisposition} for why the scan-based version it replaces could
|
|
89
|
+
* not be made correct.
|
|
90
|
+
*
|
|
91
|
+
* @param wi - WorkItem to test.
|
|
92
|
+
* @returns True if the item has been dealt with and must not be re-dispatched.
|
|
72
93
|
*/
|
|
94
|
+
export function isWorkItemDisposed(wi) {
|
|
95
|
+
return getWorkItemDisposition(wi) !== null;
|
|
96
|
+
}
|
|
97
|
+
export const LAST_REQUEUED_AT_METADATA_KEY = 'lastRequeuedAt';
|
|
98
|
+
/**
|
|
99
|
+
* The timestamp that age-based expiry rules must measure from.
|
|
100
|
+
*
|
|
101
|
+
* `createdAt` answers "when was this work first asked for?" and is never
|
|
102
|
+
* mutated anywhere in the codebase — age metrics, ordering and postmortems all
|
|
103
|
+
* depend on that. It is therefore the wrong clock for a TTL, because a WorkItem
|
|
104
|
+
* that is legitimately retried is not stale merely because its *original*
|
|
105
|
+
* request is old.
|
|
106
|
+
*
|
|
107
|
+
* Using `createdAt` for TTL caused a live data-loss bug: a WorkItem that failed
|
|
108
|
+
* after the 24h TTL and was auto-retried by `detectRetryableFailedWorkItems`
|
|
109
|
+
* landed back in `queued` still carrying its original `createdAt`, so the very
|
|
110
|
+
* next reconciler pass (60s later) TTL-cancelled it. Every retry granted past
|
|
111
|
+
* the 24h mark was silently destroyed a minute after being granted.
|
|
112
|
+
*
|
|
113
|
+
* This function resolves the anchor instead: a requeued item's TTL window
|
|
114
|
+
* restarts from the requeue, while an item that has never been requeued keeps
|
|
115
|
+
* `createdAt` and behaves exactly as before.
|
|
116
|
+
*
|
|
117
|
+
* @param wi - The WorkItem whose age is being measured.
|
|
118
|
+
* @returns ISO-8601 timestamp to measure age from. Falls back to `createdAt`
|
|
119
|
+
* when no requeue has happened, or when the stored value is not a
|
|
120
|
+
* usable date (defensive: `metadata` is untyped and may be
|
|
121
|
+
* round-tripped through storage by older writers).
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const age = Date.now() - new Date(getTtlAnchorAt(wi)).getTime();
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export function getTtlAnchorAt(wi) {
|
|
129
|
+
const raw = wi.metadata?.[LAST_REQUEUED_AT_METADATA_KEY];
|
|
130
|
+
if (typeof raw !== 'string')
|
|
131
|
+
return wi.createdAt;
|
|
132
|
+
// Reject unparseable values rather than letting a NaN age silently disable
|
|
133
|
+
// (or instantly trip) the TTL rule for this item.
|
|
134
|
+
if (Number.isNaN(new Date(raw).getTime()))
|
|
135
|
+
return wi.createdAt;
|
|
136
|
+
return raw;
|
|
137
|
+
}
|
|
73
138
|
export const SLA_TERMINAL_WORK_ITEM_STATUSES = new Set([
|
|
74
139
|
'done',
|
|
75
140
|
'verified',
|
|
@@ -106,6 +171,28 @@ export const WORK_ITEM_TRANSITIONS = {
|
|
|
106
171
|
failed: new Set(['queued']),
|
|
107
172
|
cancelled: new Set(),
|
|
108
173
|
};
|
|
174
|
+
/**
|
|
175
|
+
* Statuses that require a disposition record before a WorkItem can be
|
|
176
|
+
* considered dealt with.
|
|
177
|
+
*
|
|
178
|
+
* These are exactly the statuses that are neither terminal
|
|
179
|
+
* ({@link TERMINAL_WORK_ITEM_STATUSES}) nor able to reach a terminal state —
|
|
180
|
+
* their only outbound edge is `→ queued`. That combination is what makes them
|
|
181
|
+
* strand: every consumer treats them as finished (see
|
|
182
|
+
* {@link SLA_TERMINAL_WORK_ITEM_STATUSES}) while the state machine does not.
|
|
183
|
+
*
|
|
184
|
+
* Derived rather than hand-listed so a future `WorkItemStatus` with the same
|
|
185
|
+
* shape is covered automatically instead of silently stranding.
|
|
186
|
+
*/
|
|
187
|
+
export const DISPOSITION_REQUIRED_STATUSES = new Set(Object.keys(WORK_ITEM_TRANSITIONS).filter((status) => {
|
|
188
|
+
if (TERMINAL_WORK_ITEM_STATUSES.has(status))
|
|
189
|
+
return false;
|
|
190
|
+
const outbound = WORK_ITEM_TRANSITIONS[status];
|
|
191
|
+
if (outbound.size === 0)
|
|
192
|
+
return false;
|
|
193
|
+
// No outbound edge reaches a strictly terminal status.
|
|
194
|
+
return ![...outbound].some((next) => TERMINAL_WORK_ITEM_STATUSES.has(next));
|
|
195
|
+
}));
|
|
109
196
|
// ---------------------------------------------------------------------------
|
|
110
197
|
// Role-Based Transition Permissions
|
|
111
198
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-item.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/work-item.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAmBpC,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,UAAU;IACV,cAAc;IACd,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,WAAW;CACH,CAAC;AAWX,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,cAAc;IACd,WAAW;IACX,OAAO;IACP,QAAQ;CACA,CAAC;AA0DX,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAA8B;IAC3D,QAAQ;IACR,WAAW;IACX,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,MAAM;IACN,QAAQ;IACR,WAAW;CACH,CAAC;AAEX,0DAA0D;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAgC,IAAI,GAAG,CAAC;IAC9E,MAAM;IACN,UAAU;IACV,WAAW;CACZ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"work-item.types.js","sourceRoot":"","sources":["../../../../../../backend/src/types/v2/work-item.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build provenance: answer "which commit is this process actually running?"
|
|
3
|
+
* and fail loudly when the compiled output is older than the checked-out
|
|
4
|
+
* source it claims to serve.
|
|
5
|
+
*
|
|
6
|
+
* WHY THIS EXISTS (2026-08-21): five merged fixes were found not to be
|
|
7
|
+
* executing. The backend was serving `dist/` built on May 5 from a process
|
|
8
|
+
* started two weeks earlier, so every conclusion drawn from live behaviour
|
|
9
|
+
* that day was produced by stale code. Nothing in the system said so. The
|
|
10
|
+
* discipline of "always rebuild" had already been written down and it still
|
|
11
|
+
* did not hold, which is the argument for a mechanical check rather than
|
|
12
|
+
* another reminder.
|
|
13
|
+
*
|
|
14
|
+
* WHY COMMIT IDENTITY AND NOT MTIMES: `git checkout` does not preserve
|
|
15
|
+
* modification times, so a fresh clone or a branch switch can make source
|
|
16
|
+
* look newer than a perfectly current build. An mtime check would cry wolf,
|
|
17
|
+
* get switched off, and leave us with neither the check nor the attention.
|
|
18
|
+
* Comparing the stamped HEAD SHA to the current HEAD is exact, has no clock
|
|
19
|
+
* or filesystem dependence, and answers the question a debugger actually
|
|
20
|
+
* has.
|
|
21
|
+
*
|
|
22
|
+
* KNOWN LIMIT, deliberately accepted: this compares COMMITS, so uncommitted
|
|
23
|
+
* edits to tracked files are invisible to it. That is the right trade —
|
|
24
|
+
* flagging every dirty working tree would reintroduce exactly the false-alarm
|
|
25
|
+
* problem this design avoids. It catches the case that actually bit us: HEAD
|
|
26
|
+
* moved and nobody rebuilt.
|
|
27
|
+
*/
|
|
28
|
+
/** Filename written into the build output directory at build time. */
|
|
29
|
+
export declare const BUILD_INFO_FILENAME = "build-info.json";
|
|
30
|
+
/** Env var that downgrades a stale-build failure to a warning. */
|
|
31
|
+
export declare const SKIP_BUILD_CHECK_ENV = "CREWLY_SKIP_BUILD_CHECK";
|
|
32
|
+
/**
|
|
33
|
+
* Provenance stamp written beside the compiled output.
|
|
34
|
+
*/
|
|
35
|
+
export interface BuildInfo {
|
|
36
|
+
/** Full 40-char SHA of HEAD at build time. */
|
|
37
|
+
commit: string;
|
|
38
|
+
/** ISO8601 timestamp of the build, for humans reading the log line. */
|
|
39
|
+
builtAt: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Result of comparing the build stamp against the current checkout.
|
|
43
|
+
*
|
|
44
|
+
* - `ok` — the build matches HEAD.
|
|
45
|
+
* - `stale` — the build is from a different commit than HEAD. This is the
|
|
46
|
+
* condition worth failing on.
|
|
47
|
+
* - `unstamped` — no build stamp found (a build predating this guard).
|
|
48
|
+
* - `unknown` — HEAD could not be determined (no `.git`, no `git` binary —
|
|
49
|
+
* i.e. a container or a tarball deploy). Never an error.
|
|
50
|
+
*/
|
|
51
|
+
export type ProvenanceVerdict = {
|
|
52
|
+
state: 'ok';
|
|
53
|
+
commit: string;
|
|
54
|
+
builtAt: string;
|
|
55
|
+
} | {
|
|
56
|
+
state: 'stale';
|
|
57
|
+
builtCommit: string;
|
|
58
|
+
headCommit: string;
|
|
59
|
+
builtAt: string;
|
|
60
|
+
} | {
|
|
61
|
+
state: 'unstamped';
|
|
62
|
+
reason: string;
|
|
63
|
+
} | {
|
|
64
|
+
state: 'unknown';
|
|
65
|
+
reason: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Compares a build stamp against the current HEAD.
|
|
69
|
+
*
|
|
70
|
+
* Pure: all filesystem and git access happens in the callers, so the
|
|
71
|
+
* decision logic is testable without a repository.
|
|
72
|
+
*
|
|
73
|
+
* @param build - Stamp read from the build output, or null if absent
|
|
74
|
+
* @param headCommit - Current HEAD SHA, or null if it could not be read
|
|
75
|
+
* @returns The verdict describing how build and checkout relate
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* evaluateBuildProvenance({ commit: 'abc', builtAt: t }, 'def');
|
|
80
|
+
* // → { state: 'stale', builtCommit: 'abc', headCommit: 'def', builtAt: t }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function evaluateBuildProvenance(build: BuildInfo | null, headCommit: string | null): ProvenanceVerdict;
|
|
84
|
+
/**
|
|
85
|
+
* Renders a verdict as a single operator-readable line.
|
|
86
|
+
*
|
|
87
|
+
* @param verdict - Verdict from {@link evaluateBuildProvenance}
|
|
88
|
+
* @returns A message naming the running commit, or what is wrong
|
|
89
|
+
*/
|
|
90
|
+
export declare function formatVerdict(verdict: ProvenanceVerdict): string;
|
|
91
|
+
/**
|
|
92
|
+
* Reads the current HEAD commit via the `git` binary.
|
|
93
|
+
*
|
|
94
|
+
* @param repoRoot - Directory to run `git` in
|
|
95
|
+
* @returns The 40-char SHA, or null when git is unavailable or this is not a
|
|
96
|
+
* repository (a container or tarball deploy, where the check must not fire)
|
|
97
|
+
*/
|
|
98
|
+
export declare function readGitHead(repoRoot: string): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Locates and reads the build stamp by walking up from a starting directory.
|
|
101
|
+
*
|
|
102
|
+
* Walking up (rather than hardcoding a path) keeps the guard working if the
|
|
103
|
+
* compiled layout shifts; a miss degrades to `unstamped`, which warns rather
|
|
104
|
+
* than failing.
|
|
105
|
+
*
|
|
106
|
+
* @param startDir - Directory to begin the upward search from
|
|
107
|
+
* @returns The parsed stamp, or null when absent or unparseable
|
|
108
|
+
*/
|
|
109
|
+
export declare function readBuildInfo(startDir: string): BuildInfo | null;
|
|
110
|
+
/**
|
|
111
|
+
* Writes the build stamp. Called once at the end of the backend build.
|
|
112
|
+
*
|
|
113
|
+
* @param outDir - Directory to write {@link BUILD_INFO_FILENAME} into
|
|
114
|
+
* @param commit - HEAD SHA at build time
|
|
115
|
+
* @param builtAt - ISO8601 build timestamp
|
|
116
|
+
* @returns Absolute path of the file written
|
|
117
|
+
*/
|
|
118
|
+
export declare function writeBuildInfo(outDir: string, commit: string, builtAt: string): string;
|
|
119
|
+
/**
|
|
120
|
+
* Checks build provenance at startup and reports it.
|
|
121
|
+
*
|
|
122
|
+
* A stale build throws, because a silent stale build is the exact failure
|
|
123
|
+
* this guard exists to end. Every other outcome — unstamped, no git, the
|
|
124
|
+
* skip flag set — only reports, so the check can never block a legitimate
|
|
125
|
+
* container deploy.
|
|
126
|
+
*
|
|
127
|
+
* @param options - Injection points, all defaulted for production use
|
|
128
|
+
* @param options.moduleDir - Directory to search upward from for the stamp.
|
|
129
|
+
* Defaults to the backend build directory. Deliberately a parameter rather
|
|
130
|
+
* than an `import.meta.url` lookup: this module is compiled as ESM for
|
|
131
|
+
* production but as CommonJS by ts-jest, and `import.meta` is illegal in
|
|
132
|
+
* the latter — so depending on it would make the guard untestable.
|
|
133
|
+
* @param options.repoRoot - Directory to resolve HEAD in
|
|
134
|
+
* @param options.headCommit - Overrides HEAD resolution. Present so the
|
|
135
|
+
* stale path is testable without constructing a git repository
|
|
136
|
+
* @param options.env - Environment to read the skip flag from
|
|
137
|
+
* @param options.log - Sink for the informational line
|
|
138
|
+
* @param options.warn - Sink for non-fatal problems
|
|
139
|
+
* @returns The verdict, for callers that want to surface it elsewhere
|
|
140
|
+
* @throws Error when the build is stale and the skip flag is not set
|
|
141
|
+
*/
|
|
142
|
+
export declare function assertBuildProvenance(options?: {
|
|
143
|
+
moduleDir?: string;
|
|
144
|
+
repoRoot?: string;
|
|
145
|
+
headCommit?: string | null;
|
|
146
|
+
env?: NodeJS.ProcessEnv;
|
|
147
|
+
log?: (message: string) => void;
|
|
148
|
+
warn?: (message: string) => void;
|
|
149
|
+
}): ProvenanceVerdict;
|
|
150
|
+
//# sourceMappingURL=build-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-provenance.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/build-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAK9D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,iBAAiB,CAsBnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAgBhE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAoBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B,GAAG,iBAAiB,CAyBzB"}
|