@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,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic git state detection via branch containment.
|
|
3
|
+
*
|
|
4
|
+
* Polls deliveries with a merge_commit_sha and checks whether
|
|
5
|
+
* those commits have reached integration, main, or remote branches.
|
|
6
|
+
* Updates gitState accordingly, replacing inline reportGitState calls
|
|
7
|
+
* that were scattered across agent/spawner lifecycle code.
|
|
8
|
+
*
|
|
9
|
+
* Called from the daemon poll loop alongside other periodic checks.
|
|
10
|
+
*/
|
|
11
|
+
import type { DaemonConfig } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Detect and update git states for deliveries based on branch containment.
|
|
14
|
+
*
|
|
15
|
+
* For each active strategy, checks deliveries that have a mergeCommitSha.
|
|
16
|
+
* Determines the highest reachable state by checking containment in:
|
|
17
|
+
* 1. origin/<default-branch> -> pushed_to_remote
|
|
18
|
+
* 2. <default-branch> -> merged_to_main
|
|
19
|
+
* 3. <integration-branch> -> merged_to_integration
|
|
20
|
+
*
|
|
21
|
+
* Only updates forward (never downgrades state).
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectGitStates(config: DaemonConfig): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=git-state-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-state-detector.d.ts","sourceRoot":"","sources":["../src/git-state-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAY,CAAC;AA6CzD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFzE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic git state detection via branch containment.
|
|
3
|
+
*
|
|
4
|
+
* Polls deliveries with a merge_commit_sha and checks whether
|
|
5
|
+
* those commits have reached integration, main, or remote branches.
|
|
6
|
+
* Updates gitState accordingly, replacing inline reportGitState calls
|
|
7
|
+
* that were scattered across agent/spawner lifecycle code.
|
|
8
|
+
*
|
|
9
|
+
* Called from the daemon poll loop alongside other periodic checks.
|
|
10
|
+
*/
|
|
11
|
+
import { runGitSync } from './git-types.js';
|
|
12
|
+
import { getDefaultBranch } from './git-branch.js';
|
|
13
|
+
import { getActiveStrategies } from './queries/deliveries.js';
|
|
14
|
+
import { getStrategyDeliveries } from './queries/strategies.js';
|
|
15
|
+
import { reportGitState } from './queries/deliveries.js';
|
|
16
|
+
/** Short timeout for containment checks to avoid blocking the poll loop. */
|
|
17
|
+
const CONTAINMENT_CHECK_TIMEOUT_MS = 5_000;
|
|
18
|
+
/** Track whether origin remote exists to avoid repeated fetch failures. */
|
|
19
|
+
let originChecked = false;
|
|
20
|
+
let originExists = false;
|
|
21
|
+
/**
|
|
22
|
+
* Priority ordering for git states. Higher number = more advanced.
|
|
23
|
+
* Only update a delivery's state forward, never backward.
|
|
24
|
+
*/
|
|
25
|
+
const GIT_STATE_PRIORITY = {
|
|
26
|
+
'worktree_created': 0,
|
|
27
|
+
'worktree_active': 1,
|
|
28
|
+
'worktree_complete': 2,
|
|
29
|
+
'resolving_conflict': 3,
|
|
30
|
+
'merge_conflict': 3,
|
|
31
|
+
'merged_to_integration': 4,
|
|
32
|
+
'worktree_cleaned': 5,
|
|
33
|
+
'merged_to_main': 6,
|
|
34
|
+
'pushed_to_remote': 7,
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Check if a commit SHA is an ancestor of (i.e., contained in) a branch.
|
|
38
|
+
*
|
|
39
|
+
* Uses `git merge-base --is-ancestor` which returns exit code 0 if
|
|
40
|
+
* the SHA is an ancestor of the branch tip, 1 otherwise.
|
|
41
|
+
*/
|
|
42
|
+
function isContainedIn(sha, branch, repoPath) {
|
|
43
|
+
const result = runGitSync(['merge-base', '--is-ancestor', sha, branch], repoPath, { timeoutMs: CONTAINMENT_CHECK_TIMEOUT_MS });
|
|
44
|
+
return result.success;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Detect and update git states for deliveries based on branch containment.
|
|
48
|
+
*
|
|
49
|
+
* For each active strategy, checks deliveries that have a mergeCommitSha.
|
|
50
|
+
* Determines the highest reachable state by checking containment in:
|
|
51
|
+
* 1. origin/<default-branch> -> pushed_to_remote
|
|
52
|
+
* 2. <default-branch> -> merged_to_main
|
|
53
|
+
* 3. <integration-branch> -> merged_to_integration
|
|
54
|
+
*
|
|
55
|
+
* Only updates forward (never downgrades state).
|
|
56
|
+
*/
|
|
57
|
+
export async function detectGitStates(config) {
|
|
58
|
+
const { repoPath, integrationBranch } = config;
|
|
59
|
+
// Check once whether origin remote exists; skip fetch entirely if not.
|
|
60
|
+
if (!originChecked) {
|
|
61
|
+
const remoteCheck = runGitSync(['remote', 'get-url', 'origin'], repoPath, { timeoutMs: 3_000 });
|
|
62
|
+
originExists = remoteCheck.success;
|
|
63
|
+
originChecked = true;
|
|
64
|
+
if (!originExists) {
|
|
65
|
+
console.debug('[git-state-detector] No origin remote configured -- skipping fetch');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Fetch refs once before iterating (ensures consistent state)
|
|
69
|
+
if (originExists) {
|
|
70
|
+
const fetchResult = runGitSync(['fetch', '--quiet', 'origin'], repoPath, { timeoutMs: CONTAINMENT_CHECK_TIMEOUT_MS });
|
|
71
|
+
if (!fetchResult.success) {
|
|
72
|
+
console.debug('[git-state-detector] fetch failed (non-fatal):', fetchResult.error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const defaultBranch = getDefaultBranch(repoPath);
|
|
76
|
+
let strategies;
|
|
77
|
+
try {
|
|
78
|
+
strategies = await getActiveStrategies(config.organizationId, config.productId);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.warn('[git-state-detector] Failed to fetch active strategies:', err.message);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
for (const strategy of strategies) {
|
|
85
|
+
let deliveries;
|
|
86
|
+
try {
|
|
87
|
+
deliveries = await getStrategyDeliveries(strategy.strategy_id);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
console.warn(`[git-state-detector] Failed to fetch deliveries for strategy ${strategy.strategy_id}:`, err.message);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
for (const delivery of deliveries) {
|
|
94
|
+
if (!delivery.mergeCommitSha)
|
|
95
|
+
continue;
|
|
96
|
+
const currentPriority = GIT_STATE_PRIORITY[delivery.gitState ?? ''] ?? -1;
|
|
97
|
+
const sha = delivery.mergeCommitSha;
|
|
98
|
+
// Check highest state first: pushed_to_remote
|
|
99
|
+
if (currentPriority < GIT_STATE_PRIORITY['pushed_to_remote']) {
|
|
100
|
+
if (isContainedIn(sha, `origin/${defaultBranch}`, repoPath)) {
|
|
101
|
+
reportGitState(delivery.id, 'pushed_to_remote').catch(err => console.warn(`[git-state-detector] pushed_to_remote failed for ${delivery.id}:`, err.message));
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Check: merged_to_main
|
|
106
|
+
if (currentPriority < GIT_STATE_PRIORITY['merged_to_main']) {
|
|
107
|
+
if (isContainedIn(sha, defaultBranch, repoPath)) {
|
|
108
|
+
reportGitState(delivery.id, 'merged_to_main').catch(err => console.warn(`[git-state-detector] merged_to_main failed for ${delivery.id}:`, err.message));
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Check: merged_to_integration
|
|
113
|
+
if (currentPriority < GIT_STATE_PRIORITY['merged_to_integration']) {
|
|
114
|
+
if (isContainedIn(sha, integrationBranch, repoPath)) {
|
|
115
|
+
reportGitState(delivery.id, 'merged_to_integration').catch(err => console.warn(`[git-state-detector] merged_to_integration failed for ${delivery.id}:`, err.message));
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=git-state-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-state-detector.js","sourceRoot":"","sources":["../src/git-state-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types and utilities for the git subsystem.
|
|
3
|
+
*
|
|
4
|
+
* Core git primitives (runGit, GitResult, DEFAULT_GIT_TIMEOUT_MS, branchExists)
|
|
5
|
+
* are imported from @telora/daemon-core and re-exported with a backward-compatible
|
|
6
|
+
* wrapper (runGitSync) that accepts the daemon's RunGitSyncOptions interface.
|
|
7
|
+
*/
|
|
8
|
+
import { DEFAULT_GIT_TIMEOUT_MS, type GitResult } from '@telora/daemon-core';
|
|
9
|
+
import type { PipelineConfig } from './types.js';
|
|
10
|
+
export { DEFAULT_GIT_TIMEOUT_MS };
|
|
11
|
+
export type { GitResult };
|
|
12
|
+
export type MergeStrategy = PipelineConfig['ci']['mergeStrategy'];
|
|
13
|
+
export interface MergeResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
/** Files that had conflicts (only set when success is false due to conflicts). */
|
|
17
|
+
conflictedFiles?: string[];
|
|
18
|
+
/** The agent branch that was being merged (for escalation context). */
|
|
19
|
+
sourceBranch?: string;
|
|
20
|
+
/** The target branch of the merge (for escalation context). */
|
|
21
|
+
targetBranch?: string;
|
|
22
|
+
/** Set when a rollback failure leaves the branch in a corrupt state. */
|
|
23
|
+
rollbackFailed?: boolean;
|
|
24
|
+
/** The resulting commit SHA after a successful merge (e.g. squash merge). */
|
|
25
|
+
commitSha?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RunGitSyncOptions {
|
|
28
|
+
/** Timeout in ms for the git operation. Default: 60000 (60s). */
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run a git command synchronously and return the result.
|
|
33
|
+
*
|
|
34
|
+
* Backward-compatible wrapper around daemon-core's runGit that accepts
|
|
35
|
+
* the daemon's RunGitSyncOptions interface. All invocations have a
|
|
36
|
+
* configurable timeout (default 60s) to prevent the daemon from hanging
|
|
37
|
+
* indefinitely on stuck git operations.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runGitSync(args: string[], cwd: string, options?: RunGitSyncOptions): GitResult;
|
|
40
|
+
//# sourceMappingURL=git-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-types.d.ts","sourceRoot":"","sources":["../src/git-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,sBAAsB,EACtB,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,SAAS,CAGX"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types and utilities for the git subsystem.
|
|
3
|
+
*
|
|
4
|
+
* Core git primitives (runGit, GitResult, DEFAULT_GIT_TIMEOUT_MS, branchExists)
|
|
5
|
+
* are imported from @telora/daemon-core and re-exported with a backward-compatible
|
|
6
|
+
* wrapper (runGitSync) that accepts the daemon's RunGitSyncOptions interface.
|
|
7
|
+
*/
|
|
8
|
+
import { runGit, DEFAULT_GIT_TIMEOUT_MS, } from '@telora/daemon-core';
|
|
9
|
+
// Re-export daemon-core primitives
|
|
10
|
+
export { DEFAULT_GIT_TIMEOUT_MS };
|
|
11
|
+
/**
|
|
12
|
+
* Run a git command synchronously and return the result.
|
|
13
|
+
*
|
|
14
|
+
* Backward-compatible wrapper around daemon-core's runGit that accepts
|
|
15
|
+
* the daemon's RunGitSyncOptions interface. All invocations have a
|
|
16
|
+
* configurable timeout (default 60s) to prevent the daemon from hanging
|
|
17
|
+
* indefinitely on stuck git operations.
|
|
18
|
+
*/
|
|
19
|
+
export function runGitSync(args, cwd, options) {
|
|
20
|
+
const timeoutMs = options?.timeoutMs ?? DEFAULT_GIT_TIMEOUT_MS;
|
|
21
|
+
return runGit(args, cwd, timeoutMs);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=git-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-types.js","sourceRoot":"","sources":["../src/git-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAG7B,mCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAyBlC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAc,EACd,GAAW,EACX,OAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,sBAAsB,CAAC;IAC/D,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared git utility functions for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* Consolidates branch name sanitization logic previously duplicated between
|
|
5
|
+
* spawner.ts (generateBranchName) and strategy-executor.ts (generateStrategyBranchName).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Sanitize a string for safe use as a git branch name segment.
|
|
9
|
+
*
|
|
10
|
+
* Converts the input to lowercase, replaces any non-alphanumeric/hyphen characters
|
|
11
|
+
* with hyphens, collapses consecutive hyphens, strips leading/trailing hyphens,
|
|
12
|
+
* and truncates to maxLen characters (default 50).
|
|
13
|
+
*/
|
|
14
|
+
export declare function sanitizeGitSegment(str: string, maxLen?: number): string;
|
|
15
|
+
/**
|
|
16
|
+
* Compute aggregate lines added/removed for a git revision range.
|
|
17
|
+
*
|
|
18
|
+
* Uses `git log --numstat` to parse insertions and deletions.
|
|
19
|
+
* Binary files (which show `-` in numstat) are skipped.
|
|
20
|
+
* Returns { linesAdded: 0, linesRemoved: 0 } if git fails.
|
|
21
|
+
*
|
|
22
|
+
* @param revRange - A git revision range, e.g. "main..feature-branch"
|
|
23
|
+
*/
|
|
24
|
+
export declare function computeGitDiffStats(repoPath: string, revRange: string): {
|
|
25
|
+
linesAdded: number;
|
|
26
|
+
linesRemoved: number;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=git-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAOnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA6B9C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared git utility functions for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* Consolidates branch name sanitization logic previously duplicated between
|
|
5
|
+
* spawner.ts (generateBranchName) and strategy-executor.ts (generateStrategyBranchName).
|
|
6
|
+
*/
|
|
7
|
+
import { runGitSync } from './git-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Sanitize a string for safe use as a git branch name segment.
|
|
10
|
+
*
|
|
11
|
+
* Converts the input to lowercase, replaces any non-alphanumeric/hyphen characters
|
|
12
|
+
* with hyphens, collapses consecutive hyphens, strips leading/trailing hyphens,
|
|
13
|
+
* and truncates to maxLen characters (default 50).
|
|
14
|
+
*/
|
|
15
|
+
export function sanitizeGitSegment(str, maxLen = 50) {
|
|
16
|
+
return str
|
|
17
|
+
.toLowerCase()
|
|
18
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
19
|
+
.replace(/-+/g, '-')
|
|
20
|
+
.replace(/^-|-$/g, '')
|
|
21
|
+
.slice(0, maxLen);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compute aggregate lines added/removed for a git revision range.
|
|
25
|
+
*
|
|
26
|
+
* Uses `git log --numstat` to parse insertions and deletions.
|
|
27
|
+
* Binary files (which show `-` in numstat) are skipped.
|
|
28
|
+
* Returns { linesAdded: 0, linesRemoved: 0 } if git fails.
|
|
29
|
+
*
|
|
30
|
+
* @param revRange - A git revision range, e.g. "main..feature-branch"
|
|
31
|
+
*/
|
|
32
|
+
export function computeGitDiffStats(repoPath, revRange) {
|
|
33
|
+
const result = runGitSync(['log', '--numstat', '--format=', revRange], repoPath, { timeoutMs: 30_000 });
|
|
34
|
+
if (!result.success) {
|
|
35
|
+
console.warn(`[git-utils] computeGitDiffStats failed: ${result.error}`);
|
|
36
|
+
return { linesAdded: 0, linesRemoved: 0 };
|
|
37
|
+
}
|
|
38
|
+
let linesAdded = 0;
|
|
39
|
+
let linesRemoved = 0;
|
|
40
|
+
for (const line of result.output.split('\n')) {
|
|
41
|
+
const trimmed = line.trim();
|
|
42
|
+
if (!trimmed)
|
|
43
|
+
continue;
|
|
44
|
+
const parts = trimmed.split('\t');
|
|
45
|
+
if (parts.length < 3)
|
|
46
|
+
continue;
|
|
47
|
+
const added = parts[0];
|
|
48
|
+
const removed = parts[1];
|
|
49
|
+
// Binary files show `-` for both columns — skip
|
|
50
|
+
if (added === '-' || removed === '-')
|
|
51
|
+
continue;
|
|
52
|
+
linesAdded += parseInt(added, 10) || 0;
|
|
53
|
+
linesRemoved += parseInt(removed, 10) || 0;
|
|
54
|
+
}
|
|
55
|
+
return { linesAdded, linesRemoved };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=git-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../src/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE;IACzD,OAAO,GAAG;SACP,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,QAAgB;IAEhB,MAAM,MAAM,GAAG,UAAU,CACvB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAC3C,QAAQ,EACR,EAAE,SAAS,EAAE,MAAM,EAAE,CACtB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,2CAA2C,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,gDAAgD;QAChD,IAAI,KAAK,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG;YAAE,SAAS;QAC/C,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACvC,YAAY,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC"}
|
package/dist/git.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git utilities for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* Thin barrel re-export that preserves the original import surface.
|
|
5
|
+
* Actual implementations live in focused sub-modules:
|
|
6
|
+
* - git-types.ts: shared types and runGitSync
|
|
7
|
+
* - git-merge-lock.ts: merge lock and corruption state
|
|
8
|
+
* - git-branch.ts: branch management utilities
|
|
9
|
+
* - git-merge.ts: merge operations and strategy dispatch
|
|
10
|
+
* - git-integration.ts: integration branch sync and advance
|
|
11
|
+
* - worktree.ts: worktree management (re-exported here for backward compatibility)
|
|
12
|
+
*/
|
|
13
|
+
import type { DaemonConfig } from './types.js';
|
|
14
|
+
export { runGitSync, DEFAULT_GIT_TIMEOUT_MS, type GitResult, type MergeResult, type MergeStrategy, type RunGitSyncOptions } from './git-types.js';
|
|
15
|
+
export { MergeLockTimeoutError, IntegrationCorruptError, type CorruptionDetails, isIntegrationCorrupt, getCorruptionDetails, resetCorruptionFlag, configureMergeLock, withMergeLock, resetMergeLock, } from './git-merge-lock.js';
|
|
16
|
+
export { branchExists, getDefaultBranch, ensureIntegrationBranch, deleteBranch, } from './git-branch.js';
|
|
17
|
+
export { mergeToIntegration, type MergeToIntegrationParams, applyMergeStrategy, trySquashMerge, handlePushFailureWithRollback, } from './git-merge.js';
|
|
18
|
+
export { syncIntegrationWithMain, } from './git-integration.js';
|
|
19
|
+
export { ensureWorktreeDir, ensureMergeWorktree, getMergeWorktreePath, pruneWorktrees, worktreeExistsForBranch, createWorktree, ensureMcpServerInWorktree, worktreeHasUncommittedChanges, branchHasUnmergedCommits, removeWorktree, commitWipChanges, safeRemoveStrategyWorktree, cleanupOrphanStrategyWorktrees, type SafeRemoveStrategyWorktreeParams, type SafeRemoveResult, } from './worktree.js';
|
|
20
|
+
/**
|
|
21
|
+
* Initialize git subsystem for daemon startup.
|
|
22
|
+
*/
|
|
23
|
+
export declare function initGit(config: DaemonConfig): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAa/C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGlJ,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,cAAc,EACd,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAIvB;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjE"}
|
package/dist/git.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git utilities for the daemon.
|
|
3
|
+
*
|
|
4
|
+
* Thin barrel re-export that preserves the original import surface.
|
|
5
|
+
* Actual implementations live in focused sub-modules:
|
|
6
|
+
* - git-types.ts: shared types and runGitSync
|
|
7
|
+
* - git-merge-lock.ts: merge lock and corruption state
|
|
8
|
+
* - git-branch.ts: branch management utilities
|
|
9
|
+
* - git-merge.ts: merge operations and strategy dispatch
|
|
10
|
+
* - git-integration.ts: integration branch sync and advance
|
|
11
|
+
* - worktree.ts: worktree management (re-exported here for backward compatibility)
|
|
12
|
+
*/
|
|
13
|
+
// Import worktree functions used locally by initGit
|
|
14
|
+
import { ensureWorktreeDir, pruneWorktrees, ensureMergeWorktree } from './worktree.js';
|
|
15
|
+
// Import sub-module functions used by initGit
|
|
16
|
+
import { configureMergeLock } from './git-merge-lock.js';
|
|
17
|
+
import { ensureIntegrationBranch } from './git-branch.js';
|
|
18
|
+
import { syncIntegrationWithMain } from './git-integration.js';
|
|
19
|
+
// ── Re-exports from sub-modules ─────────────────────────────────
|
|
20
|
+
// git-types.ts: shared types and utilities
|
|
21
|
+
export { runGitSync, DEFAULT_GIT_TIMEOUT_MS } from './git-types.js';
|
|
22
|
+
// git-merge-lock.ts: merge lock and corruption state
|
|
23
|
+
export { MergeLockTimeoutError, IntegrationCorruptError, isIntegrationCorrupt, getCorruptionDetails, resetCorruptionFlag, configureMergeLock, withMergeLock, resetMergeLock, } from './git-merge-lock.js';
|
|
24
|
+
// git-branch.ts: branch management
|
|
25
|
+
export { branchExists, getDefaultBranch, ensureIntegrationBranch, deleteBranch, } from './git-branch.js';
|
|
26
|
+
// git-merge.ts: merge operations
|
|
27
|
+
export { mergeToIntegration, applyMergeStrategy, trySquashMerge, handlePushFailureWithRollback, } from './git-merge.js';
|
|
28
|
+
// git-integration.ts: integration branch operations
|
|
29
|
+
export { syncIntegrationWithMain, } from './git-integration.js';
|
|
30
|
+
// worktree.ts: worktree management (re-exported for backward compatibility)
|
|
31
|
+
export { ensureWorktreeDir, ensureMergeWorktree, getMergeWorktreePath, pruneWorktrees, worktreeExistsForBranch, createWorktree, ensureMcpServerInWorktree, worktreeHasUncommittedChanges, branchHasUnmergedCommits, removeWorktree, commitWipChanges, safeRemoveStrategyWorktree, cleanupOrphanStrategyWorktrees, } from './worktree.js';
|
|
32
|
+
// ── initGit ─────────────────────────────────────────────────────
|
|
33
|
+
/**
|
|
34
|
+
* Initialize git subsystem for daemon startup.
|
|
35
|
+
*/
|
|
36
|
+
export async function initGit(config) {
|
|
37
|
+
console.log('Initializing git subsystem...');
|
|
38
|
+
// Configure merge lock from daemon config
|
|
39
|
+
configureMergeLock({
|
|
40
|
+
timeoutMs: config.mergeLockTimeoutMs,
|
|
41
|
+
contentionWarningMs: config.mergeLockContentionWarningMs,
|
|
42
|
+
});
|
|
43
|
+
// Ensure worktree directory exists
|
|
44
|
+
ensureWorktreeDir(config);
|
|
45
|
+
// Prune stale worktree entries
|
|
46
|
+
pruneWorktrees(config.repoPath);
|
|
47
|
+
// Ensure integration branch exists
|
|
48
|
+
await ensureIntegrationBranch(config);
|
|
49
|
+
// Create persistent merge worktree for branch-switching operations
|
|
50
|
+
ensureMergeWorktree(config);
|
|
51
|
+
// Sync integration with main on startup so we start fresh
|
|
52
|
+
const syncResult = await syncIntegrationWithMain(config);
|
|
53
|
+
if (syncResult.success) {
|
|
54
|
+
console.log('Integration branch synced with main on startup');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.warn(`Could not sync integration with main on startup: ${syncResult.error}`);
|
|
58
|
+
// Non-fatal — stale code is better than not starting
|
|
59
|
+
}
|
|
60
|
+
// Orphan strategy worktree cleanup is handled by rebuildStrategyWorktreeState()
|
|
61
|
+
// which runs after initGit(). No separate cleanup pass needed here.
|
|
62
|
+
console.log('Git subsystem initialized');
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,oDAAoD;AACpD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvF,8CAA8C;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,mEAAmE;AAEnE,2CAA2C;AAC3C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAgF,MAAM,gBAAgB,CAAC;AAElJ,qDAAqD;AACrD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAEvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,mCAAmC;AACnC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EAClB,cAAc,EACd,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAExB,oDAAoD;AACpD,OAAO,EACL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,4EAA4E;AAC5E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,GAG/B,MAAM,eAAe,CAAC;AAEvB,mEAAmE;AAEnE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAoB;IAChD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,0CAA0C;IAC1C,kBAAkB,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC,kBAAkB;QACpC,mBAAmB,EAAE,MAAM,CAAC,4BAA4B;KACzD,CAAC,CAAC;IAEH,mCAAmC;IACnC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,+BAA+B;IAC/B,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEhC,mCAAmC;IACnC,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEtC,mEAAmE;IACnE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,0DAA0D;IAC1D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,oDAAoD,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACrF,qDAAqD;IACvD,CAAC;IAED,gFAAgF;IAChF,oEAAoE;IAEpE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard evaluation engine for the daemon -- re-export facade.
|
|
3
|
+
*
|
|
4
|
+
* The implementation has been decomposed into focused modules:
|
|
5
|
+
* - condition-evaluators.ts -- leaf condition evaluation (dispatch map)
|
|
6
|
+
* - guard-evaluator.ts -- condition tree traversal + orchestrator
|
|
7
|
+
* - evaluation-context.ts -- EvaluationContext type + context builders
|
|
8
|
+
* - trigger-executor.ts -- trigger action executors + template interpolation
|
|
9
|
+
*
|
|
10
|
+
* This file re-exports the public API so existing consumers
|
|
11
|
+
* (`delivery-guards.ts`, `delivery-lifecycle.ts`, tests) continue to work
|
|
12
|
+
* without import changes.
|
|
13
|
+
*/
|
|
14
|
+
export { evaluateLeafCondition, toSafeNumber, compareValues, } from './condition-evaluators.js';
|
|
15
|
+
export { GuardEvaluationError, evaluateGuardConditionTree, evaluateGuardsAtTransition, } from './guard-evaluator.js';
|
|
16
|
+
export type { EvaluationContext } from './evaluation-context.js';
|
|
17
|
+
export { buildFactoryEvaluationContext, buildEvaluationContext, } from './evaluation-context.js';
|
|
18
|
+
export { interpolateTemplate, executeBlockTransition, executeEmitWarning, executeSpawnAgent, executeCreateIssue, executeTriggers, } from './trigger-executor.js';
|
|
19
|
+
//# sourceMappingURL=guard-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-engine.d.ts","sourceRoot":"","sources":["../src/guard-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard evaluation engine for the daemon -- re-export facade.
|
|
3
|
+
*
|
|
4
|
+
* The implementation has been decomposed into focused modules:
|
|
5
|
+
* - condition-evaluators.ts -- leaf condition evaluation (dispatch map)
|
|
6
|
+
* - guard-evaluator.ts -- condition tree traversal + orchestrator
|
|
7
|
+
* - evaluation-context.ts -- EvaluationContext type + context builders
|
|
8
|
+
* - trigger-executor.ts -- trigger action executors + template interpolation
|
|
9
|
+
*
|
|
10
|
+
* This file re-exports the public API so existing consumers
|
|
11
|
+
* (`delivery-guards.ts`, `delivery-lifecycle.ts`, tests) continue to work
|
|
12
|
+
* without import changes.
|
|
13
|
+
*/
|
|
14
|
+
// ── Condition evaluators ────────────────────────────────────────
|
|
15
|
+
export { evaluateLeafCondition, toSafeNumber, compareValues, } from './condition-evaluators.js';
|
|
16
|
+
// ── Guard evaluation (tree traversal + orchestrator) ────────────
|
|
17
|
+
export { GuardEvaluationError, evaluateGuardConditionTree, evaluateGuardsAtTransition, } from './guard-evaluator.js';
|
|
18
|
+
export { buildFactoryEvaluationContext, buildEvaluationContext, } from './evaluation-context.js';
|
|
19
|
+
// ── Trigger executors ───────────────────────────────────────────
|
|
20
|
+
export { interpolateTemplate, executeBlockTransition, executeEmitWarning, executeSpawnAgent, executeCreateIssue, executeTriggers, } from './trigger-executor.js';
|
|
21
|
+
//# sourceMappingURL=guard-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-engine.js","sourceRoot":"","sources":["../src/guard-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mEAAmE;AACnE,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC,mEAAmE;AACnE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,mEAAmE;AACnE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core condition tree evaluation logic for the guard engine.
|
|
3
|
+
*
|
|
4
|
+
* Contains the main evaluateGuardConditionTree function that traverses
|
|
5
|
+
* AND/OR/NOT trees and dispatches to leaf condition evaluators, plus the
|
|
6
|
+
* high-level guard evaluation orchestrator (evaluateGuardsAtTransition).
|
|
7
|
+
*
|
|
8
|
+
* Extracted from guard-engine.ts to improve maintainability.
|
|
9
|
+
*/
|
|
10
|
+
import type { WorkflowGuard, GuardConditionNode, TransitionGuardResult, ConditionEvalResult } from './types.js';
|
|
11
|
+
import type { EvaluationContext } from './evaluation-context.js';
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when guard evaluation fails.
|
|
14
|
+
* Carries the fetched guards (if available) so callers can determine
|
|
15
|
+
* failure mode based on enforcement levels.
|
|
16
|
+
*/
|
|
17
|
+
export declare class GuardEvaluationError extends Error {
|
|
18
|
+
readonly cause: unknown;
|
|
19
|
+
/** Guards that were successfully fetched before the error, if any. */
|
|
20
|
+
readonly fetchedGuards: WorkflowGuard[] | null;
|
|
21
|
+
constructor(message: string, cause: unknown,
|
|
22
|
+
/** Guards that were successfully fetched before the error, if any. */
|
|
23
|
+
fetchedGuards: WorkflowGuard[] | null);
|
|
24
|
+
/** Whether any fetched guard has hard enforcement. */
|
|
25
|
+
get hasHardEnforcementGuards(): boolean;
|
|
26
|
+
/** Names of fetched guards (for error messages). */
|
|
27
|
+
get guardNames(): string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Evaluate a JSONB condition tree for a guard.
|
|
31
|
+
*
|
|
32
|
+
* The JSONB tree uses nested children arrays rather than
|
|
33
|
+
* parent_condition_id references. Root-level nodes are combined
|
|
34
|
+
* with AND by default.
|
|
35
|
+
*/
|
|
36
|
+
export declare function evaluateGuardConditionTree(conditions: GuardConditionNode[], ctx: EvaluationContext): {
|
|
37
|
+
passed: boolean;
|
|
38
|
+
details: ConditionEvalResult[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate all guards at a workflow transition.
|
|
42
|
+
*
|
|
43
|
+
* Returns a TransitionGuardResult indicating whether the transition
|
|
44
|
+
* should proceed and what triggers need to be executed.
|
|
45
|
+
*/
|
|
46
|
+
export declare function evaluateGuardsAtTransition(deliveryId: string, organizationId: string, transitionId: string, lastExitCode: number): Promise<TransitionGuardResult>;
|
|
47
|
+
//# sourceMappingURL=guard-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-evaluator.d.ts","sourceRoot":"","sources":["../src/guard-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAElB,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAajE;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,KAAK,EAAE,OAAO;IAC9B,sEAAsE;aACtD,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI;gBAHrD,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,OAAO;IAC9B,sEAAsE;IACtD,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI;IAMvD,sDAAsD;IACtD,IAAI,wBAAwB,IAAI,OAAO,CAEtC;IAED,oDAAoD;IACpD,IAAI,UAAU,IAAI,MAAM,EAAE,CAEzB;CACF;AAuCD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,kBAAkB,EAAE,EAChC,GAAG,EAAE,iBAAiB,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAcrD;AAMD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA4HhC"}
|