@telora/daemon 0.12.33
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/.env.example +64 -0
- package/README.md +229 -0
- package/build-info.json +4 -0
- package/dist/activity-tracker.d.ts +13 -0
- package/dist/activity-tracker.d.ts.map +1 -0
- package/dist/activity-tracker.js +19 -0
- package/dist/activity-tracker.js.map +1 -0
- package/dist/agent-state.d.ts +45 -0
- package/dist/agent-state.d.ts.map +1 -0
- package/dist/agent-state.js +61 -0
- package/dist/agent-state.js.map +1 -0
- package/dist/audit-hooks.d.ts +12 -0
- package/dist/audit-hooks.d.ts.map +1 -0
- package/dist/audit-hooks.js +45 -0
- package/dist/audit-hooks.js.map +1 -0
- package/dist/auto-update.d.ts +42 -0
- package/dist/auto-update.d.ts.map +1 -0
- package/dist/auto-update.js +96 -0
- package/dist/auto-update.js.map +1 -0
- package/dist/branch-status.d.ts +40 -0
- package/dist/branch-status.d.ts.map +1 -0
- package/dist/branch-status.js +107 -0
- package/dist/branch-status.js.map +1 -0
- package/dist/completion-detector.d.ts +87 -0
- package/dist/completion-detector.d.ts.map +1 -0
- package/dist/completion-detector.js +160 -0
- package/dist/completion-detector.js.map +1 -0
- package/dist/completion-handler.d.ts +48 -0
- package/dist/completion-handler.d.ts.map +1 -0
- package/dist/completion-handler.js +200 -0
- package/dist/completion-handler.js.map +1 -0
- package/dist/condition-evaluators.d.ts +31 -0
- package/dist/condition-evaluators.d.ts.map +1 -0
- package/dist/condition-evaluators.js +416 -0
- package/dist/condition-evaluators.js.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +311 -0
- package/dist/config.js.map +1 -0
- package/dist/control-state.d.ts +41 -0
- package/dist/control-state.d.ts.map +1 -0
- package/dist/control-state.js +204 -0
- package/dist/control-state.js.map +1 -0
- package/dist/crash-recovery-cleanup.d.ts +21 -0
- package/dist/crash-recovery-cleanup.d.ts.map +1 -0
- package/dist/crash-recovery-cleanup.js +198 -0
- package/dist/crash-recovery-cleanup.js.map +1 -0
- package/dist/crash-recovery-scan.d.ts +19 -0
- package/dist/crash-recovery-scan.d.ts.map +1 -0
- package/dist/crash-recovery-scan.js +145 -0
- package/dist/crash-recovery-scan.js.map +1 -0
- package/dist/crash-recovery-types.d.ts +54 -0
- package/dist/crash-recovery-types.d.ts.map +1 -0
- package/dist/crash-recovery-types.js +13 -0
- package/dist/crash-recovery-types.js.map +1 -0
- package/dist/crash-recovery.d.ts +88 -0
- package/dist/crash-recovery.d.ts.map +1 -0
- package/dist/crash-recovery.js +448 -0
- package/dist/crash-recovery.js.map +1 -0
- package/dist/daemon-logs.d.ts +19 -0
- package/dist/daemon-logs.d.ts.map +1 -0
- package/dist/daemon-logs.js +81 -0
- package/dist/daemon-logs.js.map +1 -0
- package/dist/daemon-process.d.ts +154 -0
- package/dist/daemon-process.d.ts.map +1 -0
- package/dist/daemon-process.js +427 -0
- package/dist/daemon-process.js.map +1 -0
- package/dist/dag-validator.d.ts +52 -0
- package/dist/dag-validator.d.ts.map +1 -0
- package/dist/dag-validator.js +199 -0
- package/dist/dag-validator.js.map +1 -0
- package/dist/delivery-guards.d.ts +41 -0
- package/dist/delivery-guards.d.ts.map +1 -0
- package/dist/delivery-guards.js +195 -0
- package/dist/delivery-guards.js.map +1 -0
- package/dist/delivery-lifecycle.d.ts +110 -0
- package/dist/delivery-lifecycle.d.ts.map +1 -0
- package/dist/delivery-lifecycle.js +353 -0
- package/dist/delivery-lifecycle.js.map +1 -0
- package/dist/delivery-merge.d.ts +17 -0
- package/dist/delivery-merge.d.ts.map +1 -0
- package/dist/delivery-merge.js +89 -0
- package/dist/delivery-merge.js.map +1 -0
- package/dist/dependency-resolver.d.ts +77 -0
- package/dist/dependency-resolver.d.ts.map +1 -0
- package/dist/dependency-resolver.js +337 -0
- package/dist/dependency-resolver.js.map +1 -0
- package/dist/evaluation-context.d.ts +49 -0
- package/dist/evaluation-context.d.ts.map +1 -0
- package/dist/evaluation-context.js +98 -0
- package/dist/evaluation-context.js.map +1 -0
- package/dist/git-activity.d.ts +24 -0
- package/dist/git-activity.d.ts.map +1 -0
- package/dist/git-activity.js +97 -0
- package/dist/git-activity.js.map +1 -0
- package/dist/git-branch.d.ts +33 -0
- package/dist/git-branch.d.ts.map +1 -0
- package/dist/git-branch.js +88 -0
- package/dist/git-branch.js.map +1 -0
- package/dist/git-integration.d.ts +27 -0
- package/dist/git-integration.d.ts.map +1 -0
- package/dist/git-integration.js +82 -0
- package/dist/git-integration.js.map +1 -0
- package/dist/git-merge-helpers.d.ts +48 -0
- package/dist/git-merge-helpers.d.ts.map +1 -0
- package/dist/git-merge-helpers.js +105 -0
- package/dist/git-merge-helpers.js.map +1 -0
- package/dist/git-merge-lock.d.ts +67 -0
- package/dist/git-merge-lock.d.ts.map +1 -0
- package/dist/git-merge-lock.js +157 -0
- package/dist/git-merge-lock.js.map +1 -0
- package/dist/git-merge-strategies.d.ts +39 -0
- package/dist/git-merge-strategies.d.ts.map +1 -0
- package/dist/git-merge-strategies.js +127 -0
- package/dist/git-merge-strategies.js.map +1 -0
- package/dist/git-merge.d.ts +80 -0
- package/dist/git-merge.d.ts.map +1 -0
- package/dist/git-merge.js +373 -0
- package/dist/git-merge.js.map +1 -0
- package/dist/git-state-detector.d.ts +24 -0
- package/dist/git-state-detector.d.ts.map +1 -0
- package/dist/git-state-detector.js +122 -0
- package/dist/git-state-detector.js.map +1 -0
- package/dist/git-types.d.ts +40 -0
- package/dist/git-types.d.ts.map +1 -0
- package/dist/git-types.js +23 -0
- package/dist/git-types.js.map +1 -0
- package/dist/git-utils.d.ts +28 -0
- package/dist/git-utils.d.ts.map +1 -0
- package/dist/git-utils.js +57 -0
- package/dist/git-utils.js.map +1 -0
- package/dist/git.d.ts +24 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +64 -0
- package/dist/git.js.map +1 -0
- package/dist/guard-engine.d.ts +19 -0
- package/dist/guard-engine.d.ts.map +1 -0
- package/dist/guard-engine.js +21 -0
- package/dist/guard-engine.js.map +1 -0
- package/dist/guard-evaluator.d.ts +47 -0
- package/dist/guard-evaluator.d.ts.map +1 -0
- package/dist/guard-evaluator.js +193 -0
- package/dist/guard-evaluator.js.map +1 -0
- package/dist/heartbeat.d.ts +73 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +306 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +493 -0
- package/dist/index.js.map +1 -0
- package/dist/listener-auto-advance.d.ts +29 -0
- package/dist/listener-auto-advance.d.ts.map +1 -0
- package/dist/listener-auto-advance.js +172 -0
- package/dist/listener-auto-advance.js.map +1 -0
- package/dist/listener-review.d.ts +37 -0
- package/dist/listener-review.d.ts.map +1 -0
- package/dist/listener-review.js +217 -0
- package/dist/listener-review.js.map +1 -0
- package/dist/listener.d.ts +57 -0
- package/dist/listener.d.ts.map +1 -0
- package/dist/listener.js +361 -0
- package/dist/listener.js.map +1 -0
- package/dist/log-manager.d.ts +18 -0
- package/dist/log-manager.d.ts.map +1 -0
- package/dist/log-manager.js +18 -0
- package/dist/log-manager.js.map +1 -0
- package/dist/otlp-log-parser.d.ts +21 -0
- package/dist/otlp-log-parser.d.ts.map +1 -0
- package/dist/otlp-log-parser.js +143 -0
- package/dist/otlp-log-parser.js.map +1 -0
- package/dist/otlp-metric-parser.d.ts +20 -0
- package/dist/otlp-metric-parser.d.ts.map +1 -0
- package/dist/otlp-metric-parser.js +113 -0
- package/dist/otlp-metric-parser.js.map +1 -0
- package/dist/otlp-port-manager.d.ts +26 -0
- package/dist/otlp-port-manager.d.ts.map +1 -0
- package/dist/otlp-port-manager.js +130 -0
- package/dist/otlp-port-manager.js.map +1 -0
- package/dist/otlp-receiver.d.ts +51 -0
- package/dist/otlp-receiver.d.ts.map +1 -0
- package/dist/otlp-receiver.js +663 -0
- package/dist/otlp-receiver.js.map +1 -0
- package/dist/otlp-types.d.ts +92 -0
- package/dist/otlp-types.d.ts.map +1 -0
- package/dist/otlp-types.js +133 -0
- package/dist/otlp-types.js.map +1 -0
- package/dist/output-monitor.d.ts +33 -0
- package/dist/output-monitor.d.ts.map +1 -0
- package/dist/output-monitor.js +67 -0
- package/dist/output-monitor.js.map +1 -0
- package/dist/planning-prompt-builder.d.ts +67 -0
- package/dist/planning-prompt-builder.d.ts.map +1 -0
- package/dist/planning-prompt-builder.js +515 -0
- package/dist/planning-prompt-builder.js.map +1 -0
- package/dist/prompt-builder.d.ts +14 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +174 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/qa-crash-recovery.d.ts +77 -0
- package/dist/qa-crash-recovery.d.ts.map +1 -0
- package/dist/qa-crash-recovery.js +243 -0
- package/dist/qa-crash-recovery.js.map +1 -0
- package/dist/qa-dev-server.d.ts +73 -0
- package/dist/qa-dev-server.d.ts.map +1 -0
- package/dist/qa-dev-server.js +279 -0
- package/dist/qa-dev-server.js.map +1 -0
- package/dist/qa-orchestrator.d.ts +79 -0
- package/dist/qa-orchestrator.d.ts.map +1 -0
- package/dist/qa-orchestrator.js +349 -0
- package/dist/qa-orchestrator.js.map +1 -0
- package/dist/qa-port-allocator.d.ts +34 -0
- package/dist/qa-port-allocator.d.ts.map +1 -0
- package/dist/qa-port-allocator.js +75 -0
- package/dist/qa-port-allocator.js.map +1 -0
- package/dist/qa-provisioner.d.ts +33 -0
- package/dist/qa-provisioner.d.ts.map +1 -0
- package/dist/qa-provisioner.js +141 -0
- package/dist/qa-provisioner.js.map +1 -0
- package/dist/qa-state.d.ts +93 -0
- package/dist/qa-state.d.ts.map +1 -0
- package/dist/qa-state.js +74 -0
- package/dist/qa-state.js.map +1 -0
- package/dist/queries/control-state.d.ts +25 -0
- package/dist/queries/control-state.d.ts.map +1 -0
- package/dist/queries/control-state.js +34 -0
- package/dist/queries/control-state.js.map +1 -0
- package/dist/queries/daemon-connection.d.ts +25 -0
- package/dist/queries/daemon-connection.d.ts.map +1 -0
- package/dist/queries/daemon-connection.js +28 -0
- package/dist/queries/daemon-connection.js.map +1 -0
- package/dist/queries/deliveries.d.ts +100 -0
- package/dist/queries/deliveries.d.ts.map +1 -0
- package/dist/queries/deliveries.js +184 -0
- package/dist/queries/deliveries.js.map +1 -0
- package/dist/queries/git-activity.d.ts +20 -0
- package/dist/queries/git-activity.d.ts.map +1 -0
- package/dist/queries/git-activity.js +22 -0
- package/dist/queries/git-activity.js.map +1 -0
- package/dist/queries/guards.d.ts +47 -0
- package/dist/queries/guards.d.ts.map +1 -0
- package/dist/queries/guards.js +138 -0
- package/dist/queries/guards.js.map +1 -0
- package/dist/queries/index.d.ts +19 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +17 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/issues.d.ts +41 -0
- package/dist/queries/issues.d.ts.map +1 -0
- package/dist/queries/issues.js +67 -0
- package/dist/queries/issues.js.map +1 -0
- package/dist/queries/qa.d.ts +79 -0
- package/dist/queries/qa.d.ts.map +1 -0
- package/dist/queries/qa.js +85 -0
- package/dist/queries/qa.js.map +1 -0
- package/dist/queries/roles.d.ts +13 -0
- package/dist/queries/roles.d.ts.map +1 -0
- package/dist/queries/roles.js +39 -0
- package/dist/queries/roles.js.map +1 -0
- package/dist/queries/schemas.d.ts +777 -0
- package/dist/queries/schemas.d.ts.map +1 -0
- package/dist/queries/schemas.js +391 -0
- package/dist/queries/schemas.js.map +1 -0
- package/dist/queries/sessions.d.ts +64 -0
- package/dist/queries/sessions.d.ts.map +1 -0
- package/dist/queries/sessions.js +100 -0
- package/dist/queries/sessions.js.map +1 -0
- package/dist/queries/shared.d.ts +61 -0
- package/dist/queries/shared.d.ts.map +1 -0
- package/dist/queries/shared.js +187 -0
- package/dist/queries/shared.js.map +1 -0
- package/dist/queries/strategies.d.ts +69 -0
- package/dist/queries/strategies.d.ts.map +1 -0
- package/dist/queries/strategies.js +80 -0
- package/dist/queries/strategies.js.map +1 -0
- package/dist/queries/workflows.d.ts +17 -0
- package/dist/queries/workflows.d.ts.map +1 -0
- package/dist/queries/workflows.js +49 -0
- package/dist/queries/workflows.js.map +1 -0
- package/dist/queries/worktrees.d.ts +38 -0
- package/dist/queries/worktrees.d.ts.map +1 -0
- package/dist/queries/worktrees.js +37 -0
- package/dist/queries/worktrees.js.map +1 -0
- package/dist/self-update.d.ts +94 -0
- package/dist/self-update.d.ts.map +1 -0
- package/dist/self-update.js +438 -0
- package/dist/self-update.js.map +1 -0
- package/dist/session-lifecycle.d.ts +77 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +379 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/shutdown-state.d.ts +17 -0
- package/dist/shutdown-state.d.ts.map +1 -0
- package/dist/shutdown-state.js +22 -0
- package/dist/shutdown-state.js.map +1 -0
- package/dist/spawn-cooldown.d.ts +14 -0
- package/dist/spawn-cooldown.d.ts.map +1 -0
- package/dist/spawn-cooldown.js +34 -0
- package/dist/spawn-cooldown.js.map +1 -0
- package/dist/spawn-environment.d.ts +35 -0
- package/dist/spawn-environment.d.ts.map +1 -0
- package/dist/spawn-environment.js +48 -0
- package/dist/spawn-environment.js.map +1 -0
- package/dist/spawner-liveness.d.ts +23 -0
- package/dist/spawner-liveness.d.ts.map +1 -0
- package/dist/spawner-liveness.js +99 -0
- package/dist/spawner-liveness.js.map +1 -0
- package/dist/spawner-resolution.d.ts +27 -0
- package/dist/spawner-resolution.d.ts.map +1 -0
- package/dist/spawner-resolution.js +99 -0
- package/dist/spawner-resolution.js.map +1 -0
- package/dist/spawner-timeout.d.ts +32 -0
- package/dist/spawner-timeout.d.ts.map +1 -0
- package/dist/spawner-timeout.js +124 -0
- package/dist/spawner-timeout.js.map +1 -0
- package/dist/spawner.d.ts +77 -0
- package/dist/spawner.d.ts.map +1 -0
- package/dist/spawner.js +734 -0
- package/dist/spawner.js.map +1 -0
- package/dist/strategy-completion.d.ts +110 -0
- package/dist/strategy-completion.d.ts.map +1 -0
- package/dist/strategy-completion.js +434 -0
- package/dist/strategy-completion.js.map +1 -0
- package/dist/strategy-engine.d.ts +47 -0
- package/dist/strategy-engine.d.ts.map +1 -0
- package/dist/strategy-engine.js +419 -0
- package/dist/strategy-engine.js.map +1 -0
- package/dist/strategy-executor.d.ts +93 -0
- package/dist/strategy-executor.d.ts.map +1 -0
- package/dist/strategy-executor.js +775 -0
- package/dist/strategy-executor.js.map +1 -0
- package/dist/strategy-lifecycle.d.ts +61 -0
- package/dist/strategy-lifecycle.d.ts.map +1 -0
- package/dist/strategy-lifecycle.js +516 -0
- package/dist/strategy-lifecycle.js.map +1 -0
- package/dist/strategy-merge.d.ts +72 -0
- package/dist/strategy-merge.d.ts.map +1 -0
- package/dist/strategy-merge.js +371 -0
- package/dist/strategy-merge.js.map +1 -0
- package/dist/strategy-prompt-builder.d.ts +62 -0
- package/dist/strategy-prompt-builder.d.ts.map +1 -0
- package/dist/strategy-prompt-builder.js +538 -0
- package/dist/strategy-prompt-builder.js.map +1 -0
- package/dist/strategy-provisioning.d.ts +16 -0
- package/dist/strategy-provisioning.d.ts.map +1 -0
- package/dist/strategy-provisioning.js +119 -0
- package/dist/strategy-provisioning.js.map +1 -0
- package/dist/strategy-team-state.d.ts +24 -0
- package/dist/strategy-team-state.d.ts.map +1 -0
- package/dist/strategy-team-state.js +43 -0
- package/dist/strategy-team-state.js.map +1 -0
- package/dist/strategy-teardown.d.ts +24 -0
- package/dist/strategy-teardown.d.ts.map +1 -0
- package/dist/strategy-teardown.js +158 -0
- package/dist/strategy-teardown.js.map +1 -0
- package/dist/strategy-worktree-state.d.ts +47 -0
- package/dist/strategy-worktree-state.d.ts.map +1 -0
- package/dist/strategy-worktree-state.js +104 -0
- package/dist/strategy-worktree-state.js.map +1 -0
- package/dist/supabase.d.ts +36 -0
- package/dist/supabase.d.ts.map +1 -0
- package/dist/supabase.js +50 -0
- package/dist/supabase.js.map +1 -0
- package/dist/task-converter.d.ts +61 -0
- package/dist/task-converter.d.ts.map +1 -0
- package/dist/task-converter.js +286 -0
- package/dist/task-converter.js.map +1 -0
- package/dist/task-dag-builder.d.ts +14 -0
- package/dist/task-dag-builder.d.ts.map +1 -0
- package/dist/task-dag-builder.js +17 -0
- package/dist/task-dag-builder.js.map +1 -0
- package/dist/team-prompt-base.d.ts +114 -0
- package/dist/team-prompt-base.d.ts.map +1 -0
- package/dist/team-prompt-base.js +531 -0
- package/dist/team-prompt-base.js.map +1 -0
- package/dist/team-prompt-variants.d.ts +27 -0
- package/dist/team-prompt-variants.d.ts.map +1 -0
- package/dist/team-prompt-variants.js +134 -0
- package/dist/team-prompt-variants.js.map +1 -0
- package/dist/team-spawner.d.ts +50 -0
- package/dist/team-spawner.d.ts.map +1 -0
- package/dist/team-spawner.js +410 -0
- package/dist/team-spawner.js.map +1 -0
- package/dist/telemetry-writer.d.ts +66 -0
- package/dist/telemetry-writer.d.ts.map +1 -0
- package/dist/telemetry-writer.js +96 -0
- package/dist/telemetry-writer.js.map +1 -0
- package/dist/trigger-executor.d.ts +56 -0
- package/dist/trigger-executor.d.ts.map +1 -0
- package/dist/trigger-executor.js +313 -0
- package/dist/trigger-executor.js.map +1 -0
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dag.d.ts +53 -0
- package/dist/types/dag.d.ts.map +1 -0
- package/dist/types/dag.js +5 -0
- package/dist/types/dag.js.map +1 -0
- package/dist/types/delivery.d.ts +71 -0
- package/dist/types/delivery.d.ts.map +1 -0
- package/dist/types/delivery.js +5 -0
- package/dist/types/delivery.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/issue.d.ts +22 -0
- package/dist/types/issue.d.ts.map +1 -0
- package/dist/types/issue.js +5 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/merge.d.ts +28 -0
- package/dist/types/merge.d.ts.map +1 -0
- package/dist/types/merge.js +5 -0
- package/dist/types/merge.js.map +1 -0
- package/dist/types/session.d.ts +98 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +5 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/strategy.d.ts +175 -0
- package/dist/types/strategy.d.ts.map +1 -0
- package/dist/types/strategy.js +5 -0
- package/dist/types/strategy.js.map +1 -0
- package/dist/types/workflow.d.ts +34 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +9 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/unified-init.d.ts +16 -0
- package/dist/unified-init.d.ts.map +1 -0
- package/dist/unified-init.js +183 -0
- package/dist/unified-init.js.map +1 -0
- package/dist/unified-shell-config.d.ts +34 -0
- package/dist/unified-shell-config.d.ts.map +1 -0
- package/dist/unified-shell-config.js +238 -0
- package/dist/unified-shell-config.js.map +1 -0
- package/dist/unified-shell-status.d.ts +15 -0
- package/dist/unified-shell-status.d.ts.map +1 -0
- package/dist/unified-shell-status.js +100 -0
- package/dist/unified-shell-status.js.map +1 -0
- package/dist/unified-shell.d.ts +50 -0
- package/dist/unified-shell.d.ts.map +1 -0
- package/dist/unified-shell.js +682 -0
- package/dist/unified-shell.js.map +1 -0
- package/dist/version-check.d.ts +19 -0
- package/dist/version-check.d.ts.map +1 -0
- package/dist/version-check.js +67 -0
- package/dist/version-check.js.map +1 -0
- package/dist/workflow-engine.d.ts +95 -0
- package/dist/workflow-engine.d.ts.map +1 -0
- package/dist/workflow-engine.js +165 -0
- package/dist/workflow-engine.js.map +1 -0
- package/dist/worktree-merge.d.ts +23 -0
- package/dist/worktree-merge.d.ts.map +1 -0
- package/dist/worktree-merge.js +57 -0
- package/dist/worktree-merge.js.map +1 -0
- package/dist/worktree-safety.d.ts +48 -0
- package/dist/worktree-safety.d.ts.map +1 -0
- package/dist/worktree-safety.js +113 -0
- package/dist/worktree-safety.js.map +1 -0
- package/dist/worktree-strategy.d.ts +69 -0
- package/dist/worktree-strategy.d.ts.map +1 -0
- package/dist/worktree-strategy.js +214 -0
- package/dist/worktree-strategy.js.map +1 -0
- package/dist/worktree.d.ts +159 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +512 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +76 -0
- package/scripts/telora-daemon-wrapper.sh +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-process.js","sourceRoot":"","sources":["../src/daemon-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAG validation: cycle detection and delivery dependency graph validation.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from task-dag-builder.ts. Contains functions for inferring
|
|
5
|
+
* delivery-level dependencies from cross-delivery CG annotations,
|
|
6
|
+
* detecting cycles in the dependency graph, and building validated
|
|
7
|
+
* delivery DAGs.
|
|
8
|
+
*
|
|
9
|
+
* Pure functions only (no side effects, no API calls).
|
|
10
|
+
*/
|
|
11
|
+
import type { CrossDeliveryCGDependency, StrategyDeliveryInfo, StrategyIssueInfo } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Infer delivery-level dependency edges from cross-delivery CG dependencies.
|
|
14
|
+
*
|
|
15
|
+
* When a CG in Delivery B depends on a CG in Delivery A, this implies
|
|
16
|
+
* Delivery B depends on Delivery A. Multiple CG dependencies between
|
|
17
|
+
* the same two deliveries produce only one delivery-level edge.
|
|
18
|
+
*
|
|
19
|
+
* This is the low-level version that resolves CG names by title only
|
|
20
|
+
* (without delivery name verification). Prefer buildDeliveryDAGFromCGDeps
|
|
21
|
+
* which uses delivery name lookup for accurate resolution.
|
|
22
|
+
*
|
|
23
|
+
* @param crossDeliveryDeps - Array of cross-delivery CG dependency declarations
|
|
24
|
+
* @param issues - All issues (to resolve CG names to delivery IDs)
|
|
25
|
+
* @returns Map of deliveryId -> Set of deliveryIds it depends on
|
|
26
|
+
*/
|
|
27
|
+
export declare function inferDeliveryDependencies(crossDeliveryDeps: CrossDeliveryCGDependency[], issues: StrategyIssueInfo[]): Map<string, Set<string>>;
|
|
28
|
+
/**
|
|
29
|
+
* Detect cycles in the delivery-level dependency graph.
|
|
30
|
+
* Uses DFS-based cycle detection.
|
|
31
|
+
*
|
|
32
|
+
* @throws Error with a descriptive message including delivery names if a cycle is found.
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectDeliveryCycles(deliveryDeps: Map<string, Set<string>>, deliveries: StrategyDeliveryInfo[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Build delivery-level dependencies from cross-delivery CG annotations.
|
|
37
|
+
* Returns the delivery dependency map, or throws if cycles are detected.
|
|
38
|
+
*
|
|
39
|
+
* This is used by the daemon to derive delivery ordering from planning output
|
|
40
|
+
* instead of relying solely on priorityRank.
|
|
41
|
+
*
|
|
42
|
+
* Resolution: delivery names in CrossDeliveryCGDependency are matched against
|
|
43
|
+
* StrategyDeliveryInfo.name. CG names are matched against issue titles
|
|
44
|
+
* (issueType === 'Context Group') within the resolved delivery.
|
|
45
|
+
*
|
|
46
|
+
* @param crossDeliveryDeps - Array of cross-delivery CG dependency declarations
|
|
47
|
+
* @param deliveries - All deliveries for the strategy
|
|
48
|
+
* @param issues - All issues across all deliveries
|
|
49
|
+
* @returns Map of deliveryId -> Set of deliveryIds it depends on
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildDeliveryDAGFromCGDeps(crossDeliveryDeps: CrossDeliveryCGDependency[], deliveries: StrategyDeliveryInfo[], issues: StrategyIssueInfo[]): Map<string, Set<string>>;
|
|
52
|
+
//# sourceMappingURL=dag-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag-validator.d.ts","sourceRoot":"","sources":["../src/dag-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,yBAAyB,EAAE,EAC9C,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAqC1B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACtC,UAAU,EAAE,oBAAoB,EAAE,GACjC,IAAI,CA4BN;AA2DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,yBAAyB,EAAE,EAC9C,UAAU,EAAE,oBAAoB,EAAE,EAClC,MAAM,EAAE,iBAAiB,EAAE,GAC1B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAU1B"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAG validation: cycle detection and delivery dependency graph validation.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from task-dag-builder.ts. Contains functions for inferring
|
|
5
|
+
* delivery-level dependencies from cross-delivery CG annotations,
|
|
6
|
+
* detecting cycles in the dependency graph, and building validated
|
|
7
|
+
* delivery DAGs.
|
|
8
|
+
*
|
|
9
|
+
* Pure functions only (no side effects, no API calls).
|
|
10
|
+
*/
|
|
11
|
+
// ── Delivery-level DAG propagation from cross-delivery CG deps ───
|
|
12
|
+
/**
|
|
13
|
+
* Infer delivery-level dependency edges from cross-delivery CG dependencies.
|
|
14
|
+
*
|
|
15
|
+
* When a CG in Delivery B depends on a CG in Delivery A, this implies
|
|
16
|
+
* Delivery B depends on Delivery A. Multiple CG dependencies between
|
|
17
|
+
* the same two deliveries produce only one delivery-level edge.
|
|
18
|
+
*
|
|
19
|
+
* This is the low-level version that resolves CG names by title only
|
|
20
|
+
* (without delivery name verification). Prefer buildDeliveryDAGFromCGDeps
|
|
21
|
+
* which uses delivery name lookup for accurate resolution.
|
|
22
|
+
*
|
|
23
|
+
* @param crossDeliveryDeps - Array of cross-delivery CG dependency declarations
|
|
24
|
+
* @param issues - All issues (to resolve CG names to delivery IDs)
|
|
25
|
+
* @returns Map of deliveryId -> Set of deliveryIds it depends on
|
|
26
|
+
*/
|
|
27
|
+
export function inferDeliveryDependencies(crossDeliveryDeps, issues) {
|
|
28
|
+
const deliveryDeps = new Map();
|
|
29
|
+
if (crossDeliveryDeps.length === 0)
|
|
30
|
+
return deliveryDeps;
|
|
31
|
+
// Build lookup: CG title (lowercased) -> CG issue (first match wins)
|
|
32
|
+
const cgByTitle = new Map();
|
|
33
|
+
for (const issue of issues) {
|
|
34
|
+
if (issue.issueType === 'Context Group') {
|
|
35
|
+
const key = issue.title.toLowerCase();
|
|
36
|
+
if (!cgByTitle.has(key)) {
|
|
37
|
+
cgByTitle.set(key, issue);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (const dep of crossDeliveryDeps) {
|
|
42
|
+
const fromCG = cgByTitle.get(dep.fromCG.toLowerCase());
|
|
43
|
+
const depCG = cgByTitle.get(dep.dependsOnCG.toLowerCase());
|
|
44
|
+
if (!fromCG || !depCG)
|
|
45
|
+
continue;
|
|
46
|
+
const fromDeliveryId = fromCG.deliveryId;
|
|
47
|
+
const depDeliveryId = depCG.deliveryId;
|
|
48
|
+
// Skip self-dependencies (same delivery)
|
|
49
|
+
if (fromDeliveryId === depDeliveryId)
|
|
50
|
+
continue;
|
|
51
|
+
let deps = deliveryDeps.get(fromDeliveryId);
|
|
52
|
+
if (!deps) {
|
|
53
|
+
deps = new Set();
|
|
54
|
+
deliveryDeps.set(fromDeliveryId, deps);
|
|
55
|
+
}
|
|
56
|
+
deps.add(depDeliveryId);
|
|
57
|
+
}
|
|
58
|
+
return deliveryDeps;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect cycles in the delivery-level dependency graph.
|
|
62
|
+
* Uses DFS-based cycle detection.
|
|
63
|
+
*
|
|
64
|
+
* @throws Error with a descriptive message including delivery names if a cycle is found.
|
|
65
|
+
*/
|
|
66
|
+
export function detectDeliveryCycles(deliveryDeps, deliveries) {
|
|
67
|
+
// Build delivery name lookup
|
|
68
|
+
const deliveryNameById = new Map();
|
|
69
|
+
for (const d of deliveries) {
|
|
70
|
+
deliveryNameById.set(d.id, d.name);
|
|
71
|
+
}
|
|
72
|
+
// Collect all delivery IDs referenced in the graph
|
|
73
|
+
const allIds = new Set();
|
|
74
|
+
for (const [id, deps] of deliveryDeps) {
|
|
75
|
+
allIds.add(id);
|
|
76
|
+
for (const depId of deps) {
|
|
77
|
+
allIds.add(depId);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// DFS-based cycle detection using three-color marking
|
|
81
|
+
const WHITE = 0; // Not visited
|
|
82
|
+
const color = new Map();
|
|
83
|
+
for (const id of allIds) {
|
|
84
|
+
color.set(id, WHITE);
|
|
85
|
+
}
|
|
86
|
+
for (const startId of allIds) {
|
|
87
|
+
if (color.get(startId) !== WHITE)
|
|
88
|
+
continue;
|
|
89
|
+
// dfsHasCycle throws with a descriptive error if a cycle is found
|
|
90
|
+
dfsHasCycle(startId, deliveryDeps, color, deliveryNameById);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* DFS from a single start node, coloring nodes and detecting back edges.
|
|
95
|
+
* Throws with cycle description if a cycle is found.
|
|
96
|
+
*/
|
|
97
|
+
function dfsHasCycle(startId, deliveryDeps, color, deliveryNameById) {
|
|
98
|
+
const WHITE = 0;
|
|
99
|
+
const GRAY = 1;
|
|
100
|
+
const BLACK = 2;
|
|
101
|
+
// Recursive DFS with path tracking
|
|
102
|
+
const path = [];
|
|
103
|
+
function visit(nodeId) {
|
|
104
|
+
color.set(nodeId, GRAY);
|
|
105
|
+
path.push(nodeId);
|
|
106
|
+
const deps = deliveryDeps.get(nodeId);
|
|
107
|
+
if (deps) {
|
|
108
|
+
for (const depId of deps) {
|
|
109
|
+
const depColor = color.get(depId) ?? WHITE;
|
|
110
|
+
if (depColor === GRAY) {
|
|
111
|
+
// Back edge found -- extract cycle from path
|
|
112
|
+
const cycleStartIdx = path.indexOf(depId);
|
|
113
|
+
const cyclePath = path.slice(cycleStartIdx);
|
|
114
|
+
cyclePath.push(depId); // Close the cycle
|
|
115
|
+
const cycleNames = cyclePath.map(id => deliveryNameById.get(id) ?? id);
|
|
116
|
+
throw new Error(`Cycle detected in delivery dependency graph: ${cycleNames.join(' -> ')}`);
|
|
117
|
+
}
|
|
118
|
+
if (depColor === WHITE) {
|
|
119
|
+
visit(depId);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
path.pop();
|
|
124
|
+
color.set(nodeId, BLACK);
|
|
125
|
+
}
|
|
126
|
+
if (color.get(startId) === WHITE) {
|
|
127
|
+
visit(startId);
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Build delivery-level dependencies from cross-delivery CG annotations.
|
|
133
|
+
* Returns the delivery dependency map, or throws if cycles are detected.
|
|
134
|
+
*
|
|
135
|
+
* This is used by the daemon to derive delivery ordering from planning output
|
|
136
|
+
* instead of relying solely on priorityRank.
|
|
137
|
+
*
|
|
138
|
+
* Resolution: delivery names in CrossDeliveryCGDependency are matched against
|
|
139
|
+
* StrategyDeliveryInfo.name. CG names are matched against issue titles
|
|
140
|
+
* (issueType === 'Context Group') within the resolved delivery.
|
|
141
|
+
*
|
|
142
|
+
* @param crossDeliveryDeps - Array of cross-delivery CG dependency declarations
|
|
143
|
+
* @param deliveries - All deliveries for the strategy
|
|
144
|
+
* @param issues - All issues across all deliveries
|
|
145
|
+
* @returns Map of deliveryId -> Set of deliveryIds it depends on
|
|
146
|
+
*/
|
|
147
|
+
export function buildDeliveryDAGFromCGDeps(crossDeliveryDeps, deliveries, issues) {
|
|
148
|
+
// Resolve CG names to delivery IDs using delivery name lookup
|
|
149
|
+
const resolvedDeps = inferDeliveryDependenciesWithDeliveryNames(crossDeliveryDeps, deliveries, issues);
|
|
150
|
+
// Validate no cycles
|
|
151
|
+
detectDeliveryCycles(resolvedDeps, deliveries);
|
|
152
|
+
return resolvedDeps;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Enhanced version of inferDeliveryDependencies that uses delivery name lookup
|
|
156
|
+
* for accurate resolution when deliveries are available.
|
|
157
|
+
*/
|
|
158
|
+
function inferDeliveryDependenciesWithDeliveryNames(crossDeliveryDeps, deliveries, issues) {
|
|
159
|
+
const deliveryDeps = new Map();
|
|
160
|
+
if (crossDeliveryDeps.length === 0)
|
|
161
|
+
return deliveryDeps;
|
|
162
|
+
// Build delivery name -> ID lookup (case-insensitive)
|
|
163
|
+
const deliveryIdByName = new Map();
|
|
164
|
+
for (const d of deliveries) {
|
|
165
|
+
deliveryIdByName.set(d.name.toLowerCase(), d.id);
|
|
166
|
+
}
|
|
167
|
+
// Build CG lookup: deliveryId + CG title (lowercased) -> CG issue
|
|
168
|
+
const cgLookup = new Map();
|
|
169
|
+
for (const issue of issues) {
|
|
170
|
+
if (issue.issueType === 'Context Group') {
|
|
171
|
+
const key = `${issue.deliveryId}::${issue.title.toLowerCase()}`;
|
|
172
|
+
cgLookup.set(key, issue);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
for (const dep of crossDeliveryDeps) {
|
|
176
|
+
// Resolve delivery names to IDs
|
|
177
|
+
const fromDeliveryId = deliveryIdByName.get(dep.fromDelivery.toLowerCase());
|
|
178
|
+
const depDeliveryId = deliveryIdByName.get(dep.dependsOnDelivery.toLowerCase());
|
|
179
|
+
if (!fromDeliveryId || !depDeliveryId)
|
|
180
|
+
continue;
|
|
181
|
+
// Skip self-dependencies
|
|
182
|
+
if (fromDeliveryId === depDeliveryId)
|
|
183
|
+
continue;
|
|
184
|
+
// Verify CGs exist in the resolved deliveries
|
|
185
|
+
const fromCGKey = `${fromDeliveryId}::${dep.fromCG.toLowerCase()}`;
|
|
186
|
+
const depCGKey = `${depDeliveryId}::${dep.dependsOnCG.toLowerCase()}`;
|
|
187
|
+
if (!cgLookup.has(fromCGKey) || !cgLookup.has(depCGKey))
|
|
188
|
+
continue;
|
|
189
|
+
// Add delivery-level edge
|
|
190
|
+
let deps = deliveryDeps.get(fromDeliveryId);
|
|
191
|
+
if (!deps) {
|
|
192
|
+
deps = new Set();
|
|
193
|
+
deliveryDeps.set(fromDeliveryId, deps);
|
|
194
|
+
}
|
|
195
|
+
deps.add(depDeliveryId);
|
|
196
|
+
}
|
|
197
|
+
return deliveryDeps;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=dag-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag-validator.js","sourceRoot":"","sources":["../src/dag-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard evaluation for delivery stage transitions.
|
|
3
|
+
*
|
|
4
|
+
* Core guard evaluation logic, failure mode resolution, fail-closed
|
|
5
|
+
* handling, and audit trail recording.
|
|
6
|
+
*/
|
|
7
|
+
import type { PolicyFailureMode } from './types.js';
|
|
8
|
+
import { GuardEvaluationError } from './guard-engine.js';
|
|
9
|
+
import type { GuardEvalOutcome, GuardEvalParams } from './delivery-lifecycle.js';
|
|
10
|
+
/**
|
|
11
|
+
* Evaluate guards at a stage transition for a delivery.
|
|
12
|
+
*
|
|
13
|
+
* This is the core guard evaluation logic extracted from completion-handler.ts.
|
|
14
|
+
* Can be called by:
|
|
15
|
+
* - The per-delivery completion handler (legacy)
|
|
16
|
+
* - The strategy team lead (after detecting delivery issue completion)
|
|
17
|
+
*/
|
|
18
|
+
export declare function evaluateGuardsForDeliveryTransition(params: GuardEvalParams): Promise<GuardEvalOutcome>;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the effective failure mode for a guard evaluation error.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveGuardFailureMode(daemonMode: PolicyFailureMode, guardError: GuardEvaluationError | null): PolicyFailureMode;
|
|
23
|
+
interface GuardFailClosedParams {
|
|
24
|
+
err: Error;
|
|
25
|
+
guardError: GuardEvaluationError | null;
|
|
26
|
+
deliveryId: string;
|
|
27
|
+
deliveryName: string;
|
|
28
|
+
organizationId: string;
|
|
29
|
+
sessionId: string | null;
|
|
30
|
+
transitionId: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Handle fail-closed for guard evaluation errors.
|
|
34
|
+
*/
|
|
35
|
+
export declare function handleGuardFailClosed(params: GuardFailClosedParams): Promise<GuardEvalOutcome>;
|
|
36
|
+
/**
|
|
37
|
+
* Record guard evaluation errors in the audit trail (best-effort).
|
|
38
|
+
*/
|
|
39
|
+
export declare function recordGuardEvaluationError(err: Error, guardError: GuardEvaluationError | null, deliveryId: string, organizationId: string, transitionId: string, effectiveMode: PolicyFailureMode): Promise<void>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=delivery-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-guards.d.ts","sourceRoot":"","sources":["../src/delivery-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAA+C,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEtG,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAIjF;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAoH3B;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,oBAAoB,GAAG,IAAI,GACtC,iBAAiB,CAQnB;AAED,UAAU,qBAAqB;IAC7B,GAAG,EAAE,KAAK,CAAC;IACX,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,KAAK,EACV,UAAU,EAAE,oBAAoB,GAAG,IAAI,EACvC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard evaluation for delivery stage transitions.
|
|
3
|
+
*
|
|
4
|
+
* Core guard evaluation logic, failure mode resolution, fail-closed
|
|
5
|
+
* handling, and audit trail recording.
|
|
6
|
+
*/
|
|
7
|
+
import { updateDeliveryStatus, createEscalation, createTransitionEvaluation } from './supabase.js';
|
|
8
|
+
import { evaluateGuardsAtTransition, executeTriggers, GuardEvaluationError } from './guard-engine.js';
|
|
9
|
+
import { withRetry, ESCALATION_REASONS } from '@telora/daemon-core';
|
|
10
|
+
// ── Guard evaluation (unified workflow system) ──────────────────────
|
|
11
|
+
/**
|
|
12
|
+
* Evaluate guards at a stage transition for a delivery.
|
|
13
|
+
*
|
|
14
|
+
* This is the core guard evaluation logic extracted from completion-handler.ts.
|
|
15
|
+
* Can be called by:
|
|
16
|
+
* - The per-delivery completion handler (legacy)
|
|
17
|
+
* - The strategy team lead (after detecting delivery issue completion)
|
|
18
|
+
*/
|
|
19
|
+
export async function evaluateGuardsForDeliveryTransition(params) {
|
|
20
|
+
const { deliveryId, organizationId, workflowTransition, exitCode, policyFailureMode, deliveryName, sessionId, } = params;
|
|
21
|
+
const baseOutcome = {
|
|
22
|
+
blocked: false,
|
|
23
|
+
shouldMerge: false,
|
|
24
|
+
shouldTriggerRepoll: false,
|
|
25
|
+
sessionStatus: 'completed',
|
|
26
|
+
exitReason: '',
|
|
27
|
+
};
|
|
28
|
+
if (!workflowTransition) {
|
|
29
|
+
return baseOutcome;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const guardResult = await evaluateGuardsAtTransition(deliveryId, organizationId, workflowTransition.id, exitCode);
|
|
33
|
+
// Log warnings (soft enforcement failures)
|
|
34
|
+
for (const warning of guardResult.warnings) {
|
|
35
|
+
console.warn(`[guard] Soft warning on "${deliveryName}": ` +
|
|
36
|
+
`guard "${warning.guard_name}" conditions not met`);
|
|
37
|
+
}
|
|
38
|
+
if (!guardResult.should_proceed) {
|
|
39
|
+
// Hard guard blocked the transition
|
|
40
|
+
console.log(`[guard] Transition blocked for "${deliveryName}": ` +
|
|
41
|
+
`${guardResult.blocks.length} hard guard(s) failed`);
|
|
42
|
+
// Execute blocking triggers
|
|
43
|
+
const triggerResult = await executeTriggers(deliveryId, organizationId, workflowTransition.id, guardResult.triggers_to_execute);
|
|
44
|
+
let exitReason = `Guard blocked: ${guardResult.blocks.map(b => b.guard_name).join(', ')}.`;
|
|
45
|
+
if (triggerResult.spawnedSessionIds.length > 0) {
|
|
46
|
+
exitReason += ` Spawned ${triggerResult.spawnedSessionIds.length} guard agent(s).`;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
blocked: true,
|
|
50
|
+
shouldMerge: false,
|
|
51
|
+
shouldTriggerRepoll: false,
|
|
52
|
+
sessionStatus: 'completed',
|
|
53
|
+
exitReason,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// All guards passed or only soft warnings -- execute pass/enter triggers
|
|
57
|
+
if (guardResult.triggers_to_execute.length > 0) {
|
|
58
|
+
await executeTriggers(deliveryId, organizationId, workflowTransition.id, guardResult.triggers_to_execute);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
const guardError = err instanceof GuardEvaluationError ? err : null;
|
|
63
|
+
const effectiveMode = resolveGuardFailureMode(policyFailureMode, guardError);
|
|
64
|
+
// Record evaluation error in audit trail
|
|
65
|
+
await recordGuardEvaluationError(err, guardError, deliveryId, organizationId, workflowTransition.id, effectiveMode);
|
|
66
|
+
if (effectiveMode === 'fail-closed') {
|
|
67
|
+
return await handleGuardFailClosed({
|
|
68
|
+
err: err,
|
|
69
|
+
guardError,
|
|
70
|
+
deliveryId,
|
|
71
|
+
deliveryName,
|
|
72
|
+
organizationId,
|
|
73
|
+
sessionId,
|
|
74
|
+
transitionId: workflowTransition.id,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Fail-open: log and proceed
|
|
78
|
+
console.error(`[guard] GUARD EVALUATION FAILED for "${deliveryName}": ` +
|
|
79
|
+
`${err.message}. Proceeding without guard checks (fail-open).`);
|
|
80
|
+
return {
|
|
81
|
+
...baseOutcome,
|
|
82
|
+
exitReason: `Warning: guard evaluation skipped due to error.`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return baseOutcome;
|
|
86
|
+
}
|
|
87
|
+
// ── Guard failure helpers ───────────────────────────────────────────
|
|
88
|
+
/**
|
|
89
|
+
* Resolve the effective failure mode for a guard evaluation error.
|
|
90
|
+
*/
|
|
91
|
+
export function resolveGuardFailureMode(daemonMode, guardError) {
|
|
92
|
+
if (guardError?.hasHardEnforcementGuards) {
|
|
93
|
+
return 'fail-closed';
|
|
94
|
+
}
|
|
95
|
+
if (guardError?.fetchedGuards !== null && guardError?.fetchedGuards !== undefined) {
|
|
96
|
+
return 'fail-open';
|
|
97
|
+
}
|
|
98
|
+
return daemonMode;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handle fail-closed for guard evaluation errors.
|
|
102
|
+
*/
|
|
103
|
+
export async function handleGuardFailClosed(params) {
|
|
104
|
+
const { err, guardError, deliveryId, deliveryName, organizationId, sessionId, transitionId } = params;
|
|
105
|
+
const guardNames = guardError?.guardNames ?? [];
|
|
106
|
+
const guardInfo = guardNames.length > 0
|
|
107
|
+
? ` Guards: ${guardNames.join(', ')}.`
|
|
108
|
+
: '';
|
|
109
|
+
console.error(`[guard] GUARD EVALUATION FAILED for "${deliveryName}": ` +
|
|
110
|
+
`${err.message}. Transition blocked per fail-closed configuration.${guardInfo}`);
|
|
111
|
+
const exitReason = `Guard evaluation failed, transition blocked per fail-closed configuration.${guardInfo}`;
|
|
112
|
+
try {
|
|
113
|
+
await updateDeliveryStatus(deliveryId, 'paused');
|
|
114
|
+
}
|
|
115
|
+
catch (statusErr) {
|
|
116
|
+
console.error(`[guard] Failed to pause delivery "${deliveryName}":`, statusErr.message);
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
await withRetry(() => createEscalation({
|
|
120
|
+
organizationId,
|
|
121
|
+
sessionId: sessionId ?? '',
|
|
122
|
+
issueId: null,
|
|
123
|
+
reasonType: ESCALATION_REASONS.ERROR_ENCOUNTERED,
|
|
124
|
+
description: `Guard evaluation failed (fail-closed). Transition blocked.\n\n` +
|
|
125
|
+
`**Delivery:** ${deliveryName}\n` +
|
|
126
|
+
`**Transition:** ${transitionId}\n` +
|
|
127
|
+
`**Error:** ${err.message}\n` +
|
|
128
|
+
(guardNames.length > 0 ? `**Affected guards:** ${guardNames.join(', ')}\n` : '') +
|
|
129
|
+
`\nThe delivery has been paused. Review the error and re-queue when resolved.`,
|
|
130
|
+
whatWasTried: `Guard evaluation at stage transition failed after retries. ` +
|
|
131
|
+
`Fail-closed mode is active${guardError?.hasHardEnforcementGuards ? ' (hard enforcement guards detected)' : ''}.`,
|
|
132
|
+
helpNeeded: `Investigate the guard evaluation failure, resolve the underlying issue, then re-queue the delivery.`,
|
|
133
|
+
}), { maxAttempts: 3, label: 'escalation-guard-fail-closed' });
|
|
134
|
+
console.log(`[guard] Created escalation for guard evaluation failure (fail-closed)`);
|
|
135
|
+
}
|
|
136
|
+
catch (escErr) {
|
|
137
|
+
console.error(`CRITICAL: Failed to create escalation for guard fail-closed after retries: ${escErr.message}. ` +
|
|
138
|
+
`Delivery: "${deliveryName}"`);
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
blocked: true,
|
|
142
|
+
shouldMerge: false,
|
|
143
|
+
shouldTriggerRepoll: false,
|
|
144
|
+
sessionStatus: 'completed',
|
|
145
|
+
exitReason,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Record guard evaluation errors in the audit trail (best-effort).
|
|
150
|
+
*/
|
|
151
|
+
export async function recordGuardEvaluationError(err, guardError, deliveryId, organizationId, transitionId, effectiveMode) {
|
|
152
|
+
const errorDetails = {
|
|
153
|
+
error: err.message,
|
|
154
|
+
failure_mode: effectiveMode,
|
|
155
|
+
};
|
|
156
|
+
if (guardError?.fetchedGuards && guardError.fetchedGuards.length > 0) {
|
|
157
|
+
for (const guard of guardError.fetchedGuards) {
|
|
158
|
+
try {
|
|
159
|
+
await createTransitionEvaluation({
|
|
160
|
+
organization_id: organizationId,
|
|
161
|
+
entity_type: 'delivery',
|
|
162
|
+
entity_id: deliveryId,
|
|
163
|
+
transition_id: transitionId,
|
|
164
|
+
guard_id: guard.id,
|
|
165
|
+
result: 'error',
|
|
166
|
+
blocked: effectiveMode === 'fail-closed',
|
|
167
|
+
enforcement_level: guard.enforcement,
|
|
168
|
+
evaluation_details: errorDetails,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
catch (auditErr) {
|
|
172
|
+
console.warn(`[guard] Failed to record evaluation error for "${guard.name}":`, auditErr.message);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
try {
|
|
178
|
+
await createTransitionEvaluation({
|
|
179
|
+
organization_id: organizationId,
|
|
180
|
+
entity_type: 'delivery',
|
|
181
|
+
entity_id: deliveryId,
|
|
182
|
+
transition_id: transitionId,
|
|
183
|
+
guard_id: null,
|
|
184
|
+
result: 'error',
|
|
185
|
+
blocked: effectiveMode === 'fail-closed',
|
|
186
|
+
enforcement_level: null,
|
|
187
|
+
evaluation_details: errorDetails,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (auditErr) {
|
|
191
|
+
console.warn(`[guard] Failed to record evaluation error in audit trail:`, auditErr.message);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=delivery-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-guards.js","sourceRoot":"","sources":["../src/delivery-guards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGpE,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,MAAuB;IAEvB,MAAM,EACJ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,SAAS,GACV,GAAG,MAAM,CAAC;IACX,MAAM,WAAW,GAAqB;QACpC,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,WAAW;QAC1B,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAClD,UAAU,EACV,cAAc,EACd,kBAAkB,CAAC,EAAE,EACrB,QAAQ,CACT,CAAC;QAEF,2CAA2C;QAC3C,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CACV,4BAA4B,YAAY,KAAK;gBAC7C,UAAU,OAAO,CAAC,UAAU,sBAAsB,CACnD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAChC,oCAAoC;YACpC,OAAO,CAAC,GAAG,CACT,mCAAmC,YAAY,KAAK;gBACpD,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,uBAAuB,CACpD,CAAC;YAEF,4BAA4B;YAC5B,MAAM,aAAa,GAAG,MAAM,eAAe,CACzC,UAAU,EACV,cAAc,EACd,kBAAkB,CAAC,EAAE,EACrB,WAAW,CAAC,mBAAmB,CAChC,CAAC;YAEF,IAAI,UAAU,GAAG,kBAAkB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAE3F,IAAI,aAAa,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,UAAU,IAAI,YAAY,aAAa,CAAC,iBAAiB,CAAC,MAAM,kBAAkB,CAAC;YACrF,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,KAAK;gBAClB,mBAAmB,EAAE,KAAK;gBAC1B,aAAa,EAAE,WAAW;gBAC1B,UAAU;aACX,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,WAAW,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,eAAe,CACnB,UAAU,EACV,cAAc,EACd,kBAAkB,CAAC,EAAE,EACrB,WAAW,CAAC,mBAAmB,CAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,GAAG,YAAY,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,MAAM,aAAa,GAAG,uBAAuB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE7E,yCAAyC;QACzC,MAAM,0BAA0B,CAC9B,GAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,CAAC,EAAE,EACrB,aAAa,CACd,CAAC;QAEF,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,OAAO,MAAM,qBAAqB,CAAC;gBACjC,GAAG,EAAE,GAAY;gBACjB,UAAU;gBACV,UAAU;gBACV,YAAY;gBACZ,cAAc;gBACd,SAAS;gBACT,YAAY,EAAE,kBAAkB,CAAC,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,OAAO,CAAC,KAAK,CACX,wCAAwC,YAAY,KAAK;YACzD,GAAI,GAAa,CAAC,OAAO,gDAAgD,CAC1E,CAAC;QAEF,OAAO;YACL,GAAG,WAAW;YACd,UAAU,EAAE,iDAAiD;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,uEAAuE;AAEvE;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA6B,EAC7B,UAAuC;IAEvC,IAAI,UAAU,EAAE,wBAAwB,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,UAAU,EAAE,aAAa,KAAK,IAAI,IAAI,UAAU,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QAClF,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAYD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACtG,MAAM,UAAU,GAAG,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,CAAC,KAAK,CACX,wCAAwC,YAAY,KAAK;QACzD,GAAG,GAAG,CAAC,OAAO,sDAAsD,SAAS,EAAE,CAChF,CAAC;IAEF,MAAM,UAAU,GAAG,6EAA6E,SAAS,EAAE,CAAC;IAE5G,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,qCAAqC,YAAY,IAAI,EAAG,SAAmB,CAAC,OAAO,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CACb,GAAG,EAAE,CAAC,gBAAgB,CAAC;YACrB,cAAc;YACd,SAAS,EAAE,SAAS,IAAI,EAAE;YAC1B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,kBAAkB,CAAC,iBAAiB;YAChD,WAAW,EAAE,gEAAgE;gBAC3E,iBAAiB,YAAY,IAAI;gBACjC,mBAAmB,YAAY,IAAI;gBACnC,cAAc,GAAG,CAAC,OAAO,IAAI;gBAC7B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,8EAA8E;YAChF,YAAY,EAAE,6DAA6D;gBACzE,6BAA6B,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAAE,GAAG;YACnH,UAAU,EAAE,qGAAqG;SAClH,CAAC,EACF,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAC1D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACX,8EAA+E,MAAgB,CAAC,OAAO,IAAI;YAC3G,cAAc,YAAY,GAAG,CAC9B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,WAAW;QAC1B,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAU,EACV,UAAuC,EACvC,UAAkB,EAClB,cAAsB,EACtB,YAAoB,EACpB,aAAgC;IAEhC,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,GAAG,CAAC,OAAO;QAClB,YAAY,EAAE,aAAa;KAC5B,CAAC;IAEF,IAAI,UAAU,EAAE,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,0BAA0B,CAAC;oBAC/B,eAAe,EAAE,cAAc;oBAC/B,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,UAAU;oBACrB,aAAa,EAAE,YAAY;oBAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAClB,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,aAAa,KAAK,aAAa;oBACxC,iBAAiB,EAAE,KAAK,CAAC,WAAW;oBACpC,kBAAkB,EAAE,YAAY;iBACjC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CACV,kDAAkD,KAAK,CAAC,IAAI,IAAI,EAC/D,QAAkB,CAAC,OAAO,CAC5B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,0BAA0B,CAAC;gBAC/B,eAAe,EAAE,cAAc;gBAC/B,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,UAAU;gBACrB,aAAa,EAAE,YAAY;gBAC3B,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,aAAa,KAAK,aAAa;gBACxC,iBAAiB,EAAE,IAAI;gBACvB,kBAAkB,EAAE,YAAY;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAG,QAAkB,CAAC,OAAO,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery lifecycle - reusable functions for guard evaluation,
|
|
3
|
+
* stage transitions, and merge operations.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from completion-handler.ts so that both the legacy
|
|
6
|
+
* per-delivery completion handler and the strategy team lead
|
|
7
|
+
* can use the same logic.
|
|
8
|
+
*
|
|
9
|
+
* Key functions:
|
|
10
|
+
* - evaluateAndTransition(): evaluate guards and determine next stage
|
|
11
|
+
* - mergeDeliveryBranch(): merge a branch to integration
|
|
12
|
+
* - advanceDeliveryStage(): update delivery to its next workflow stage
|
|
13
|
+
*/
|
|
14
|
+
import type { DaemonConfig, Workflow, WorkflowTransition, PolicyFailureMode } from './types.js';
|
|
15
|
+
export interface GuardEvalOutcome {
|
|
16
|
+
/** Whether the transition was blocked by a guard. */
|
|
17
|
+
blocked: boolean;
|
|
18
|
+
/** Whether to merge the agent's branch to integration. */
|
|
19
|
+
shouldMerge: boolean;
|
|
20
|
+
/** Whether to trigger a re-poll for next work. */
|
|
21
|
+
shouldTriggerRepoll: boolean;
|
|
22
|
+
/** Session status to record. */
|
|
23
|
+
sessionStatus: 'completed' | 'failed';
|
|
24
|
+
/** Human-readable exit reason. */
|
|
25
|
+
exitReason: string;
|
|
26
|
+
}
|
|
27
|
+
export interface MergeOutcome {
|
|
28
|
+
/** Whether the merge to integration succeeded. */
|
|
29
|
+
mergeSucceeded: boolean;
|
|
30
|
+
/** Updated exit reason string. */
|
|
31
|
+
exitReason: string;
|
|
32
|
+
/** If set, override the delivery status (e.g., back to queued on conflict). */
|
|
33
|
+
overrideDeliveryStatus?: string;
|
|
34
|
+
/** If set, override the delivery stage ID. */
|
|
35
|
+
overrideDeliveryStageId?: string | null;
|
|
36
|
+
/** The squash merge commit SHA (set on successful merge). */
|
|
37
|
+
commitSha?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface StageAdvanceResult {
|
|
40
|
+
/** Whether the stage was advanced successfully. */
|
|
41
|
+
advanced: boolean;
|
|
42
|
+
/** The new delivery status. */
|
|
43
|
+
deliveryStatus: string;
|
|
44
|
+
/** The new delivery stage ID. */
|
|
45
|
+
deliveryStageId: string | null | undefined;
|
|
46
|
+
/** Whether guards blocked the transition. */
|
|
47
|
+
guardBlocked: boolean;
|
|
48
|
+
/** Whether to merge. */
|
|
49
|
+
shouldMerge: boolean;
|
|
50
|
+
/** Human-readable reason. */
|
|
51
|
+
exitReason: string;
|
|
52
|
+
}
|
|
53
|
+
export interface GuardEvalParams {
|
|
54
|
+
deliveryId: string;
|
|
55
|
+
organizationId: string;
|
|
56
|
+
workflowTransition: WorkflowTransition | null;
|
|
57
|
+
exitCode: number;
|
|
58
|
+
policyFailureMode: PolicyFailureMode;
|
|
59
|
+
deliveryName: string;
|
|
60
|
+
sessionId: string | null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Evaluate guards at a stage transition for a delivery.
|
|
64
|
+
*
|
|
65
|
+
* This is the core guard evaluation logic extracted from completion-handler.ts.
|
|
66
|
+
* Can be called by:
|
|
67
|
+
* - The per-delivery completion handler (legacy)
|
|
68
|
+
* - The strategy team lead (after detecting delivery issue completion)
|
|
69
|
+
*/
|
|
70
|
+
export declare function evaluateGuardsForDeliveryTransition(params: GuardEvalParams): Promise<GuardEvalOutcome>;
|
|
71
|
+
export interface DeliveryStageAdvanceParams {
|
|
72
|
+
deliveryId: string;
|
|
73
|
+
deliveryName: string;
|
|
74
|
+
organizationId: string;
|
|
75
|
+
workflow: Workflow;
|
|
76
|
+
currentStageId: string;
|
|
77
|
+
exitCode: number;
|
|
78
|
+
openIssueCount: number;
|
|
79
|
+
sessionCount: number;
|
|
80
|
+
policyFailureMode: PolicyFailureMode;
|
|
81
|
+
sessionId: string | null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Advance a delivery through its workflow stage.
|
|
85
|
+
*
|
|
86
|
+
* Given a delivery's current stage and workflow, determines the next stage,
|
|
87
|
+
* evaluates any guards on the transition, and updates the delivery status.
|
|
88
|
+
*
|
|
89
|
+
* Used by the strategy team lead when all issues in a delivery are completed.
|
|
90
|
+
*/
|
|
91
|
+
export declare function advanceDeliveryStage(params: DeliveryStageAdvanceParams): Promise<StageAdvanceResult>;
|
|
92
|
+
export interface DeliveryBranchMergeParams {
|
|
93
|
+
config: DaemonConfig;
|
|
94
|
+
branchName: string;
|
|
95
|
+
deliveryId: string;
|
|
96
|
+
deliveryName: string;
|
|
97
|
+
organizationId: string;
|
|
98
|
+
sessionId: string | null;
|
|
99
|
+
workflow: Workflow;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Merge a delivery's branch to the integration branch.
|
|
103
|
+
*
|
|
104
|
+
* Handles:
|
|
105
|
+
* - Merge to integration
|
|
106
|
+
* - Conflict escalation
|
|
107
|
+
* - Git state reporting
|
|
108
|
+
*/
|
|
109
|
+
export declare function mergeDeliveryBranch(params: DeliveryBranchMergeParams): Promise<MergeOutcome>;
|
|
110
|
+
//# sourceMappingURL=delivery-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-lifecycle.d.ts","sourceRoot":"","sources":["../src/delivery-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAUhG,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gCAAgC;IAChC,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAC;IACtC,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,cAAc,EAAE,OAAO,CAAC;IACxB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8CAA8C;IAC9C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,QAAQ,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAoH3B;AAID,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CA0E7B;AAID,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAID;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,CAAC,CAqFvB"}
|