@lumenflow/core 3.2.0 → 3.2.2
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/dist/active-wu-detector.d.ts +25 -0
- package/dist/active-wu-detector.d.ts.map +1 -0
- package/dist/active-wu-detector.js +109 -0
- package/dist/active-wu-detector.js.map +1 -0
- package/dist/adapters/context-adapters.d.ts +101 -0
- package/dist/adapters/context-adapters.d.ts.map +1 -0
- package/dist/adapters/context-adapters.js +98 -0
- package/dist/adapters/context-adapters.js.map +1 -0
- package/dist/adapters/filesystem-metrics.adapter.d.ts +91 -0
- package/dist/adapters/filesystem-metrics.adapter.d.ts.map +1 -0
- package/dist/adapters/filesystem-metrics.adapter.js +530 -0
- package/dist/adapters/filesystem-metrics.adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +15 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +21 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mock-dashboard-renderer.adapter.d.ts +86 -0
- package/dist/adapters/mock-dashboard-renderer.adapter.d.ts.map +1 -0
- package/dist/adapters/mock-dashboard-renderer.adapter.js +93 -0
- package/dist/adapters/mock-dashboard-renderer.adapter.js.map +1 -0
- package/dist/adapters/recovery-adapters.d.ts +41 -0
- package/dist/adapters/recovery-adapters.d.ts.map +1 -0
- package/dist/adapters/recovery-adapters.js +32 -0
- package/dist/adapters/recovery-adapters.js.map +1 -0
- package/dist/adapters/terminal-renderer.adapter.d.ts +86 -0
- package/dist/adapters/terminal-renderer.adapter.d.ts.map +1 -0
- package/dist/adapters/terminal-renderer.adapter.js +344 -0
- package/dist/adapters/terminal-renderer.adapter.js.map +1 -0
- package/dist/adapters/validation-adapters.d.ts +53 -0
- package/dist/adapters/validation-adapters.d.ts.map +1 -0
- package/dist/adapters/validation-adapters.js +48 -0
- package/dist/adapters/validation-adapters.js.map +1 -0
- package/dist/agent-patterns-registry.d.ts +141 -0
- package/dist/agent-patterns-registry.d.ts.map +1 -0
- package/dist/agent-patterns-registry.js +320 -0
- package/dist/agent-patterns-registry.js.map +1 -0
- package/dist/arg-parser.d.ts +94 -0
- package/dist/arg-parser.d.ts.map +1 -0
- package/dist/arg-parser.js +774 -0
- package/dist/arg-parser.js.map +1 -0
- package/dist/atomic-merge.d.ts +21 -0
- package/dist/atomic-merge.d.ts.map +1 -0
- package/dist/atomic-merge.js +87 -0
- package/dist/atomic-merge.js.map +1 -0
- package/dist/backlog-editor.d.ts +103 -0
- package/dist/backlog-editor.d.ts.map +1 -0
- package/dist/backlog-editor.js +158 -0
- package/dist/backlog-editor.js.map +1 -0
- package/dist/backlog-generator.d.ts +90 -0
- package/dist/backlog-generator.d.ts.map +1 -0
- package/dist/backlog-generator.js +536 -0
- package/dist/backlog-generator.js.map +1 -0
- package/dist/backlog-parser.d.ts +46 -0
- package/dist/backlog-parser.d.ts.map +1 -0
- package/dist/backlog-parser.js +105 -0
- package/dist/backlog-parser.js.map +1 -0
- package/dist/backlog-sync-validator.d.ts +88 -0
- package/dist/backlog-sync-validator.d.ts.map +1 -0
- package/dist/backlog-sync-validator.js +322 -0
- package/dist/backlog-sync-validator.js.map +1 -0
- package/dist/branch-check.d.ts +63 -0
- package/dist/branch-check.d.ts.map +1 -0
- package/dist/branch-check.js +197 -0
- package/dist/branch-check.js.map +1 -0
- package/dist/branch-drift.d.ts +24 -0
- package/dist/branch-drift.d.ts.map +1 -0
- package/dist/branch-drift.js +54 -0
- package/dist/branch-drift.js.map +1 -0
- package/dist/cleanup-install-config.d.ts +24 -0
- package/dist/cleanup-install-config.d.ts.map +1 -0
- package/dist/cleanup-install-config.js +40 -0
- package/dist/cleanup-install-config.js.map +1 -0
- package/dist/cleanup-lock.d.ts +125 -0
- package/dist/cleanup-lock.d.ts.map +1 -0
- package/dist/cleanup-lock.js +322 -0
- package/dist/cleanup-lock.js.map +1 -0
- package/dist/cli/is-agent-branch.d.ts +22 -0
- package/dist/cli/is-agent-branch.d.ts.map +1 -0
- package/dist/cli/is-agent-branch.js.map +1 -0
- package/dist/cloud-detect.d.ts +145 -0
- package/dist/cloud-detect.d.ts.map +1 -0
- package/dist/cloud-detect.js +116 -0
- package/dist/cloud-detect.js.map +1 -0
- package/dist/code-path-validator.d.ts +145 -0
- package/dist/code-path-validator.d.ts.map +1 -0
- package/dist/code-path-validator.js +553 -0
- package/dist/code-path-validator.js.map +1 -0
- package/dist/code-paths-overlap.d.ts +50 -0
- package/dist/code-paths-overlap.d.ts.map +1 -0
- package/dist/code-paths-overlap.js +248 -0
- package/dist/code-paths-overlap.js.map +1 -0
- package/dist/color-support.d.ts +21 -0
- package/dist/color-support.d.ts.map +1 -0
- package/dist/color-support.js +67 -0
- package/dist/color-support.js.map +1 -0
- package/dist/commands-logger.d.ts +71 -0
- package/dist/commands-logger.d.ts.map +1 -0
- package/dist/commands-logger.js +257 -0
- package/dist/commands-logger.js.map +1 -0
- package/dist/commit-message-utils.d.ts +26 -0
- package/dist/commit-message-utils.d.ts.map +1 -0
- package/dist/commit-message-utils.js +44 -0
- package/dist/commit-message-utils.js.map +1 -0
- package/dist/config-contract.d.ts +12 -0
- package/dist/config-contract.d.ts.map +1 -0
- package/dist/config-contract.js +14 -0
- package/dist/config-contract.js.map +1 -0
- package/dist/constants/backlog-patterns.d.ts +21 -0
- package/dist/constants/backlog-patterns.d.ts.map +1 -0
- package/dist/constants/backlog-patterns.js +26 -0
- package/dist/constants/backlog-patterns.js.map +1 -0
- package/dist/constants/display-constants.d.ts +22 -0
- package/dist/constants/display-constants.d.ts.map +1 -0
- package/dist/constants/display-constants.js +26 -0
- package/dist/constants/display-constants.js.map +1 -0
- package/dist/constants/dora-constants.d.ts +50 -0
- package/dist/constants/dora-constants.d.ts.map +1 -0
- package/dist/constants/dora-constants.js +56 -0
- package/dist/constants/dora-constants.js.map +1 -0
- package/dist/constants/duration-constants.d.ts +29 -0
- package/dist/constants/duration-constants.d.ts.map +1 -0
- package/dist/constants/duration-constants.js +31 -0
- package/dist/constants/duration-constants.js.map +1 -0
- package/dist/constants/gate-constants.d.ts +24 -0
- package/dist/constants/gate-constants.d.ts.map +1 -0
- package/dist/constants/gate-constants.js +26 -0
- package/dist/constants/gate-constants.js.map +1 -0
- package/dist/constants/git-constants.d.ts +33 -0
- package/dist/constants/git-constants.d.ts.map +1 -0
- package/dist/constants/git-constants.js +35 -0
- package/dist/constants/git-constants.js.map +1 -0
- package/dist/constants/index.d.ts +20 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +31 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/linter-constants.d.ts +17 -0
- package/dist/constants/linter-constants.d.ts.map +1 -0
- package/dist/constants/linter-constants.js +19 -0
- package/dist/constants/linter-constants.js.map +1 -0
- package/dist/constants/lock-constants.d.ts +29 -0
- package/dist/constants/lock-constants.d.ts.map +1 -0
- package/dist/constants/lock-constants.js +31 -0
- package/dist/constants/lock-constants.js.map +1 -0
- package/dist/constants/tokenizer-constants.d.ts +16 -0
- package/dist/constants/tokenizer-constants.d.ts.map +1 -0
- package/dist/constants/tokenizer-constants.js +18 -0
- package/dist/constants/tokenizer-constants.js.map +1 -0
- package/dist/constants/validation-constants.d.ts +15 -0
- package/dist/constants/validation-constants.d.ts.map +1 -0
- package/dist/constants/validation-constants.js +17 -0
- package/dist/constants/validation-constants.js.map +1 -0
- package/dist/context/context-computer.d.ts +36 -0
- package/dist/context/context-computer.d.ts.map +1 -0
- package/dist/context/context-computer.js +128 -0
- package/dist/context/context-computer.js.map +1 -0
- package/dist/context/git-state-reader.d.ts +37 -0
- package/dist/context/git-state-reader.d.ts.map +1 -0
- package/dist/context/git-state-reader.js +64 -0
- package/dist/context/git-state-reader.js.map +1 -0
- package/dist/context/index.d.ts +18 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +20 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/location-resolver.d.ts +34 -0
- package/dist/context/location-resolver.d.ts.map +1 -0
- package/dist/context/location-resolver.js +179 -0
- package/dist/context/location-resolver.js.map +1 -0
- package/dist/context/wu-state-reader.d.ts +30 -0
- package/dist/context/wu-state-reader.d.ts.map +1 -0
- package/dist/context/wu-state-reader.js +126 -0
- package/dist/context/wu-state-reader.js.map +1 -0
- package/dist/context-di.d.ts +185 -0
- package/dist/context-di.d.ts.map +1 -0
- package/dist/context-di.js +165 -0
- package/dist/context-di.js.map +1 -0
- package/dist/context-validation-integration.d.ts +69 -0
- package/dist/context-validation-integration.d.ts.map +1 -0
- package/dist/context-validation-integration.js +161 -0
- package/dist/context-validation-integration.js.map +1 -0
- package/dist/core/scope-checker.d.ts +80 -0
- package/dist/core/scope-checker.d.ts.map +1 -0
- package/dist/core/scope-checker.js +166 -0
- package/dist/core/scope-checker.js.map +1 -0
- package/dist/core/tool-runner.d.ts +136 -0
- package/dist/core/tool-runner.d.ts.map +1 -0
- package/dist/core/tool-runner.js +396 -0
- package/dist/core/tool-runner.js.map +1 -0
- package/dist/core/tool.constants.d.ts +106 -0
- package/dist/core/tool.constants.d.ts.map +1 -0
- package/dist/core/tool.constants.js +104 -0
- package/dist/core/tool.constants.js.map +1 -0
- package/dist/core/tool.schemas.d.ts +227 -0
- package/dist/core/tool.schemas.d.ts.map +1 -0
- package/dist/core/tool.schemas.js +229 -0
- package/dist/core/tool.schemas.js.map +1 -0
- package/dist/core/worktree-guard.d.ts +115 -0
- package/dist/core/worktree-guard.d.ts.map +1 -0
- package/dist/core/worktree-guard.js +245 -0
- package/dist/core/worktree-guard.js.map +1 -0
- package/dist/coverage-gate.d.ts +127 -0
- package/dist/coverage-gate.d.ts.map +1 -0
- package/dist/coverage-gate.js +211 -0
- package/dist/coverage-gate.js.map +1 -0
- package/dist/cycle-detector.d.ts +52 -0
- package/dist/cycle-detector.d.ts.map +1 -0
- package/dist/cycle-detector.js +84 -0
- package/dist/cycle-detector.js.map +1 -0
- package/dist/date-utils.d.ts +66 -0
- package/dist/date-utils.d.ts.map +1 -0
- package/dist/date-utils.js +143 -0
- package/dist/date-utils.js.map +1 -0
- package/dist/delegation-escalation.d.ts +71 -0
- package/dist/delegation-escalation.d.ts.map +1 -0
- package/dist/delegation-escalation.js +264 -0
- package/dist/delegation-escalation.js.map +1 -0
- package/dist/delegation-monitor.d.ts +262 -0
- package/dist/delegation-monitor.d.ts.map +1 -0
- package/dist/delegation-monitor.js +678 -0
- package/dist/delegation-monitor.js.map +1 -0
- package/dist/delegation-recovery.d.ts +62 -0
- package/dist/delegation-recovery.d.ts.map +1 -0
- package/dist/delegation-recovery.js +304 -0
- package/dist/delegation-recovery.js.map +1 -0
- package/dist/delegation-registry-schema.d.ts +75 -0
- package/dist/delegation-registry-schema.d.ts.map +1 -0
- package/dist/delegation-registry-schema.js +93 -0
- package/dist/delegation-registry-schema.js.map +1 -0
- package/dist/delegation-registry-store.d.ts +145 -0
- package/dist/delegation-registry-store.d.ts.map +1 -0
- package/dist/delegation-registry-store.js +308 -0
- package/dist/delegation-registry-store.js.map +1 -0
- package/dist/delegation-tree.d.ts +52 -0
- package/dist/delegation-tree.d.ts.map +1 -0
- package/dist/delegation-tree.js +205 -0
- package/dist/delegation-tree.js.map +1 -0
- package/dist/dependency-graph.d.ts +169 -0
- package/dist/dependency-graph.d.ts.map +1 -0
- package/dist/dependency-graph.js +612 -0
- package/dist/dependency-graph.js.map +1 -0
- package/dist/dependency-guard.d.ts +41 -0
- package/dist/dependency-guard.d.ts.map +1 -0
- package/dist/dependency-guard.js +145 -0
- package/dist/dependency-guard.js.map +1 -0
- package/dist/dependency-validator.d.ts +89 -0
- package/dist/dependency-validator.d.ts.map +1 -0
- package/dist/dependency-validator.js +155 -0
- package/dist/dependency-validator.js.map +1 -0
- package/dist/docs-path-validator.d.ts +16 -0
- package/dist/docs-path-validator.d.ts.map +1 -0
- package/dist/docs-path-validator.js +98 -0
- package/dist/docs-path-validator.js.map +1 -0
- package/dist/domain/context.schemas.d.ts +170 -0
- package/dist/domain/context.schemas.d.ts.map +1 -0
- package/dist/domain/context.schemas.js +151 -0
- package/dist/domain/context.schemas.js.map +1 -0
- package/dist/domain/index.d.ts +15 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +23 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/orchestration.constants.d.ts +111 -0
- package/dist/domain/orchestration.constants.d.ts.map +1 -0
- package/dist/domain/orchestration.constants.js +130 -0
- package/dist/domain/orchestration.constants.js.map +1 -0
- package/dist/domain/orchestration.schemas.d.ts +307 -0
- package/dist/domain/orchestration.schemas.d.ts.map +1 -0
- package/dist/domain/orchestration.schemas.js +214 -0
- package/dist/domain/orchestration.schemas.js.map +1 -0
- package/dist/domain/orchestration.types.d.ts +134 -0
- package/dist/domain/orchestration.types.d.ts.map +1 -0
- package/dist/domain/orchestration.types.js +5 -0
- package/dist/domain/orchestration.types.js.map +1 -0
- package/dist/domain/recovery.schemas.d.ts +164 -0
- package/dist/domain/recovery.schemas.d.ts.map +1 -0
- package/dist/domain/recovery.schemas.js +134 -0
- package/dist/domain/recovery.schemas.js.map +1 -0
- package/dist/domain/validation.schemas.d.ts +147 -0
- package/dist/domain/validation.schemas.d.ts.map +1 -0
- package/dist/domain/validation.schemas.js +117 -0
- package/dist/domain/validation.schemas.js.map +1 -0
- package/dist/error-handler.d.ts +144 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +214 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/file-classifiers.d.ts +63 -0
- package/dist/file-classifiers.d.ts.map +1 -0
- package/dist/file-classifiers.js +111 -0
- package/dist/file-classifiers.js.map +1 -0
- package/dist/force-bypass-audit.d.ts +47 -0
- package/dist/force-bypass-audit.d.ts.map +1 -0
- package/dist/force-bypass-audit.js +146 -0
- package/dist/force-bypass-audit.js.map +1 -0
- package/dist/gates-agent-mode.d.ts +107 -0
- package/dist/gates-agent-mode.d.ts.map +1 -0
- package/dist/gates-agent-mode.js +138 -0
- package/dist/gates-agent-mode.js.map +1 -0
- package/dist/gates-config-internal.d.ts +51 -0
- package/dist/gates-config-internal.d.ts.map +1 -0
- package/dist/gates-config-internal.js +105 -0
- package/dist/gates-config-internal.js.map +1 -0
- package/dist/gates-config.d.ts +65 -0
- package/dist/gates-config.d.ts.map +1 -0
- package/dist/gates-config.js +191 -0
- package/dist/gates-config.js.map +1 -0
- package/dist/gates-coverage.d.ts +39 -0
- package/dist/gates-coverage.d.ts.map +1 -0
- package/dist/gates-coverage.js +148 -0
- package/dist/gates-coverage.js.map +1 -0
- package/dist/gates-presets.d.ts +25 -0
- package/dist/gates-presets.d.ts.map +1 -0
- package/dist/gates-presets.js +74 -0
- package/dist/gates-presets.js.map +1 -0
- package/dist/gates-schemas.d.ts +141 -0
- package/dist/gates-schemas.d.ts.map +1 -0
- package/dist/gates-schemas.js +67 -0
- package/dist/gates-schemas.js.map +1 -0
- package/dist/generate-traceability.d.ts +106 -0
- package/dist/generate-traceability.d.ts.map +1 -0
- package/dist/generate-traceability.js +387 -0
- package/dist/generate-traceability.js.map +1 -0
- package/dist/git-adapter.d.ts +406 -0
- package/dist/git-adapter.d.ts.map +1 -0
- package/dist/git-adapter.js +686 -0
- package/dist/git-adapter.js.map +1 -0
- package/dist/git-context-extractor.d.ts +102 -0
- package/dist/git-context-extractor.d.ts.map +1 -0
- package/dist/git-context-extractor.js +569 -0
- package/dist/git-context-extractor.js.map +1 -0
- package/dist/git-staged-validator.d.ts +33 -0
- package/dist/git-staged-validator.d.ts.map +1 -0
- package/dist/git-staged-validator.js +52 -0
- package/dist/git-staged-validator.js.map +1 -0
- package/dist/hardcoded-strings.d.ts +67 -0
- package/dist/hardcoded-strings.d.ts.map +1 -0
- package/dist/hardcoded-strings.js +276 -0
- package/dist/hardcoded-strings.js.map +1 -0
- package/dist/incremental-lint.d.ts +71 -0
- package/dist/incremental-lint.d.ts.map +1 -0
- package/dist/incremental-lint.js +132 -0
- package/dist/incremental-lint.js.map +1 -0
- package/dist/incremental-test.d.ts +33 -0
- package/dist/incremental-test.d.ts.map +1 -0
- package/dist/incremental-test.js +64 -0
- package/dist/incremental-test.js.map +1 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/invariants/check-automated-tests.d.ts +42 -0
- package/dist/invariants/check-automated-tests.d.ts.map +1 -0
- package/dist/invariants/check-automated-tests.js +171 -0
- package/dist/invariants/check-automated-tests.js.map +1 -0
- package/dist/invariants-runner.d.ts +166 -0
- package/dist/invariants-runner.d.ts.map +1 -0
- package/dist/invariants-runner.js +583 -0
- package/dist/invariants-runner.js.map +1 -0
- package/dist/lane-checker.d.ts +132 -0
- package/dist/lane-checker.d.ts.map +1 -0
- package/dist/lane-checker.js +687 -0
- package/dist/lane-checker.js.map +1 -0
- package/dist/lane-inference.d.ts +29 -0
- package/dist/lane-inference.d.ts.map +1 -0
- package/dist/lane-inference.js +210 -0
- package/dist/lane-inference.js.map +1 -0
- package/dist/lane-lock.d.ts +220 -0
- package/dist/lane-lock.d.ts.map +1 -0
- package/dist/lane-lock.js +499 -0
- package/dist/lane-lock.js.map +1 -0
- package/dist/lane-suggest-prompt.d.ts +97 -0
- package/dist/lane-suggest-prompt.d.ts.map +1 -0
- package/dist/lane-suggest-prompt.js +362 -0
- package/dist/lane-suggest-prompt.js.map +1 -0
- package/dist/lane-validator.d.ts +49 -0
- package/dist/lane-validator.d.ts.map +1 -0
- package/dist/lane-validator.js +117 -0
- package/dist/lane-validator.js.map +1 -0
- package/dist/logs-lib.d.ts +89 -0
- package/dist/logs-lib.d.ts.map +1 -0
- package/dist/logs-lib.js +214 -0
- package/dist/logs-lib.js.map +1 -0
- package/dist/lumenflow-config-schema.d.ts +643 -0
- package/dist/lumenflow-config-schema.d.ts.map +1 -0
- package/dist/lumenflow-config-schema.js +120 -0
- package/dist/lumenflow-config-schema.js.map +1 -0
- package/dist/lumenflow-config.d.ts +112 -0
- package/dist/lumenflow-config.d.ts.map +1 -0
- package/dist/lumenflow-config.js +328 -0
- package/dist/lumenflow-config.js.map +1 -0
- package/dist/lumenflow-home.d.ts +118 -0
- package/dist/lumenflow-home.d.ts.map +1 -0
- package/dist/lumenflow-home.js +214 -0
- package/dist/lumenflow-home.js.map +1 -0
- package/dist/manual-test-validator.d.ts +84 -0
- package/dist/manual-test-validator.d.ts.map +1 -0
- package/dist/manual-test-validator.js +206 -0
- package/dist/manual-test-validator.js.map +1 -0
- package/dist/merge-lock.d.ts +107 -0
- package/dist/merge-lock.d.ts.map +1 -0
- package/dist/merge-lock.js +260 -0
- package/dist/merge-lock.js.map +1 -0
- package/dist/micro-worktree-shared.d.ts +128 -0
- package/dist/micro-worktree-shared.d.ts.map +1 -0
- package/dist/micro-worktree-shared.js +352 -0
- package/dist/micro-worktree-shared.js.map +1 -0
- package/dist/micro-worktree.d.ts +165 -0
- package/dist/micro-worktree.d.ts.map +1 -0
- package/dist/micro-worktree.js +463 -0
- package/dist/micro-worktree.js.map +1 -0
- package/dist/normalize-config-keys.d.ts +10 -0
- package/dist/normalize-config-keys.d.ts.map +1 -0
- package/dist/normalize-config-keys.js +70 -0
- package/dist/normalize-config-keys.js.map +1 -0
- package/dist/object-guards.d.ts +11 -0
- package/dist/object-guards.d.ts.map +1 -0
- package/dist/object-guards.js +23 -0
- package/dist/object-guards.js.map +1 -0
- package/dist/orchestration-advisory-loader.d.ts +19 -0
- package/dist/orchestration-advisory-loader.d.ts.map +1 -0
- package/dist/orchestration-advisory-loader.js +94 -0
- package/dist/orchestration-advisory-loader.js.map +1 -0
- package/dist/orchestration-advisory.d.ts +49 -0
- package/dist/orchestration-advisory.d.ts.map +1 -0
- package/dist/orchestration-advisory.js +97 -0
- package/dist/orchestration-advisory.js.map +1 -0
- package/dist/orchestration-di.d.ts +36 -0
- package/dist/orchestration-di.d.ts.map +1 -0
- package/dist/orchestration-di.js +60 -0
- package/dist/orchestration-di.js.map +1 -0
- package/dist/orchestration-rules.d.ts +60 -0
- package/dist/orchestration-rules.d.ts.map +1 -0
- package/dist/orchestration-rules.js +212 -0
- package/dist/orchestration-rules.js.map +1 -0
- package/dist/orphan-detector.d.ts +148 -0
- package/dist/orphan-detector.d.ts.map +1 -0
- package/dist/orphan-detector.js +253 -0
- package/dist/orphan-detector.js.map +1 -0
- package/dist/pack-authoring-template-engine.d.ts +54 -0
- package/dist/pack-authoring-template-engine.d.ts.map +1 -0
- package/dist/pack-authoring-template-engine.js +510 -0
- package/dist/pack-authoring-template-engine.js.map +1 -0
- package/dist/package-manager-resolver.d.ts +63 -0
- package/dist/package-manager-resolver.d.ts.map +1 -0
- package/dist/package-manager-resolver.js +193 -0
- package/dist/package-manager-resolver.js.map +1 -0
- package/dist/path-classifiers.d.ts +58 -0
- package/dist/path-classifiers.d.ts.map +1 -0
- package/dist/path-classifiers.js +96 -0
- package/dist/path-classifiers.js.map +1 -0
- package/dist/patrol-loop.d.ts +171 -0
- package/dist/patrol-loop.d.ts.map +1 -0
- package/dist/patrol-loop.js +197 -0
- package/dist/patrol-loop.js.map +1 -0
- package/dist/piped-command-detector.d.ts +25 -0
- package/dist/piped-command-detector.d.ts.map +1 -0
- package/dist/piped-command-detector.js +67 -0
- package/dist/piped-command-detector.js.map +1 -0
- package/dist/ports/config.ports.d.ts +83 -0
- package/dist/ports/config.ports.d.ts.map +1 -0
- package/dist/ports/config.ports.js +4 -0
- package/dist/ports/config.ports.js.map +1 -0
- package/dist/ports/context.ports.d.ts +136 -0
- package/dist/ports/context.ports.d.ts.map +1 -0
- package/dist/ports/context.ports.js +4 -0
- package/dist/ports/context.ports.js.map +1 -0
- package/dist/ports/core-tools.ports.d.ts +282 -0
- package/dist/ports/core-tools.ports.d.ts.map +1 -0
- package/dist/ports/core-tools.ports.js +4 -0
- package/dist/ports/core-tools.ports.js.map +1 -0
- package/dist/ports/dashboard-renderer.port.d.ts +113 -0
- package/dist/ports/dashboard-renderer.port.d.ts.map +1 -0
- package/dist/ports/dashboard-renderer.port.js +4 -0
- package/dist/ports/dashboard-renderer.port.js.map +1 -0
- package/dist/ports/git-validator.ports.d.ts +114 -0
- package/dist/ports/git-validator.ports.d.ts.map +1 -0
- package/dist/ports/git-validator.ports.js +4 -0
- package/dist/ports/git-validator.ports.js.map +1 -0
- package/dist/ports/index.d.ts +23 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +25 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/metrics-collector.port.d.ts +133 -0
- package/dist/ports/metrics-collector.port.d.ts.map +1 -0
- package/dist/ports/metrics-collector.port.js +4 -0
- package/dist/ports/metrics-collector.port.js.map +1 -0
- package/dist/ports/recovery.ports.d.ts +59 -0
- package/dist/ports/recovery.ports.d.ts.map +1 -0
- package/dist/ports/recovery.ports.js +4 -0
- package/dist/ports/recovery.ports.js.map +1 -0
- package/dist/ports/validation.ports.d.ts +75 -0
- package/dist/ports/validation.ports.d.ts.map +1 -0
- package/dist/ports/validation.ports.js +4 -0
- package/dist/ports/validation.ports.js.map +1 -0
- package/dist/ports/wu-helpers.ports.d.ts +168 -0
- package/dist/ports/wu-helpers.ports.d.ts.map +1 -0
- package/dist/ports/wu-helpers.ports.js +4 -0
- package/dist/ports/wu-helpers.ports.js.map +1 -0
- package/dist/ports/wu-state.ports.d.ts +190 -0
- package/dist/ports/wu-state.ports.d.ts.map +1 -0
- package/dist/ports/wu-state.ports.js +4 -0
- package/dist/ports/wu-state.ports.js.map +1 -0
- package/dist/process-detector.d.ts +69 -0
- package/dist/process-detector.d.ts.map +1 -0
- package/dist/process-detector.js +175 -0
- package/dist/process-detector.js.map +1 -0
- package/dist/prompt-linter.d.ts +73 -0
- package/dist/prompt-linter.d.ts.map +1 -0
- package/dist/prompt-linter.js +338 -0
- package/dist/prompt-linter.js.map +1 -0
- package/dist/prompt-monitor.d.ts +13 -0
- package/dist/prompt-monitor.d.ts.map +1 -0
- package/dist/prompt-monitor.js +233 -0
- package/dist/prompt-monitor.js.map +1 -0
- package/dist/rebase-artifact-cleanup.d.ts +156 -0
- package/dist/rebase-artifact-cleanup.d.ts.map +1 -0
- package/dist/rebase-artifact-cleanup.js +475 -0
- package/dist/rebase-artifact-cleanup.js.map +1 -0
- package/dist/recovery/index.d.ts +12 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +14 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/recovery/recovery-analyzer.d.ts +49 -0
- package/dist/recovery/recovery-analyzer.d.ts.map +1 -0
- package/dist/recovery/recovery-analyzer.js +149 -0
- package/dist/recovery/recovery-analyzer.js.map +1 -0
- package/dist/resolve-policy.d.ts +257 -0
- package/dist/resolve-policy.d.ts.map +1 -0
- package/dist/resolve-policy.js +269 -0
- package/dist/resolve-policy.js.map +1 -0
- package/dist/retry-strategy.d.ts +191 -0
- package/dist/retry-strategy.d.ts.map +1 -0
- package/dist/retry-strategy.js +286 -0
- package/dist/retry-strategy.js.map +1 -0
- package/dist/rollback-utils.d.ts +129 -0
- package/dist/rollback-utils.d.ts.map +1 -0
- package/dist/rollback-utils.js +217 -0
- package/dist/rollback-utils.js.map +1 -0
- package/dist/sandbox-allowlist.d.ts +16 -0
- package/dist/sandbox-allowlist.d.ts.map +1 -0
- package/dist/sandbox-allowlist.js +77 -0
- package/dist/sandbox-allowlist.js.map +1 -0
- package/dist/sandbox-backend-linux.d.ts +6 -0
- package/dist/sandbox-backend-linux.d.ts.map +1 -0
- package/dist/sandbox-backend-linux.js +67 -0
- package/dist/sandbox-backend-linux.js.map +1 -0
- package/dist/sandbox-backend-macos.d.ts +6 -0
- package/dist/sandbox-backend-macos.d.ts.map +1 -0
- package/dist/sandbox-backend-macos.js +66 -0
- package/dist/sandbox-backend-macos.js.map +1 -0
- package/dist/sandbox-backend-windows.d.ts +6 -0
- package/dist/sandbox-backend-windows.d.ts.map +1 -0
- package/dist/sandbox-backend-windows.js +30 -0
- package/dist/sandbox-backend-windows.js.map +1 -0
- package/dist/sandbox-profile.d.ts +53 -0
- package/dist/sandbox-profile.d.ts.map +1 -0
- package/dist/sandbox-profile.js +64 -0
- package/dist/sandbox-profile.js.map +1 -0
- package/dist/schemas/agents-config.d.ts +130 -0
- package/dist/schemas/agents-config.d.ts.map +1 -0
- package/dist/schemas/agents-config.js +153 -0
- package/dist/schemas/agents-config.js.map +1 -0
- package/dist/schemas/arg-validators.d.ts +58 -0
- package/dist/schemas/arg-validators.d.ts.map +1 -0
- package/dist/schemas/arg-validators.js +193 -0
- package/dist/schemas/arg-validators.js.map +1 -0
- package/dist/schemas/cloud-config.d.ts +66 -0
- package/dist/schemas/cloud-config.d.ts.map +1 -0
- package/dist/schemas/cloud-config.js +81 -0
- package/dist/schemas/cloud-config.js.map +1 -0
- package/dist/schemas/command-schemas.d.ts +171 -0
- package/dist/schemas/command-schemas.d.ts.map +1 -0
- package/dist/schemas/command-schemas.js +145 -0
- package/dist/schemas/command-schemas.js.map +1 -0
- package/dist/schemas/directories-config.d.ts +64 -0
- package/dist/schemas/directories-config.d.ts.map +1 -0
- package/dist/schemas/directories-config.js +103 -0
- package/dist/schemas/directories-config.js.map +1 -0
- package/dist/schemas/flow-arg-validators.d.ts +32 -0
- package/dist/schemas/flow-arg-validators.d.ts.map +1 -0
- package/dist/schemas/flow-arg-validators.js +57 -0
- package/dist/schemas/flow-arg-validators.js.map +1 -0
- package/dist/schemas/flow-schemas.d.ts +152 -0
- package/dist/schemas/flow-schemas.d.ts.map +1 -0
- package/dist/schemas/flow-schemas.js +105 -0
- package/dist/schemas/flow-schemas.js.map +1 -0
- package/dist/schemas/gates-section-config.d.ts +94 -0
- package/dist/schemas/gates-section-config.d.ts.map +1 -0
- package/dist/schemas/gates-section-config.js +105 -0
- package/dist/schemas/gates-section-config.js.map +1 -0
- package/dist/schemas/git-config.d.ts +48 -0
- package/dist/schemas/git-config.d.ts.map +1 -0
- package/dist/schemas/git-config.js +157 -0
- package/dist/schemas/git-config.js.map +1 -0
- package/dist/schemas/index.d.ts +33 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +96 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/initiative-arg-validators.d.ts +64 -0
- package/dist/schemas/initiative-arg-validators.d.ts.map +1 -0
- package/dist/schemas/initiative-arg-validators.js +65 -0
- package/dist/schemas/initiative-arg-validators.js.map +1 -0
- package/dist/schemas/initiative-schemas.d.ts +256 -0
- package/dist/schemas/initiative-schemas.d.ts.map +1 -0
- package/dist/schemas/initiative-schemas.js +186 -0
- package/dist/schemas/initiative-schemas.js.map +1 -0
- package/dist/schemas/lanes-config.d.ts +153 -0
- package/dist/schemas/lanes-config.d.ts.map +1 -0
- package/dist/schemas/lanes-config.js +125 -0
- package/dist/schemas/lanes-config.js.map +1 -0
- package/dist/schemas/memory-arg-validators.d.ts +91 -0
- package/dist/schemas/memory-arg-validators.d.ts.map +1 -0
- package/dist/schemas/memory-arg-validators.js +75 -0
- package/dist/schemas/memory-arg-validators.js.map +1 -0
- package/dist/schemas/memory-config.d.ts +169 -0
- package/dist/schemas/memory-config.d.ts.map +1 -0
- package/dist/schemas/memory-config.js +253 -0
- package/dist/schemas/memory-config.js.map +1 -0
- package/dist/schemas/memory-schemas.d.ts +287 -0
- package/dist/schemas/memory-schemas.d.ts.map +1 -0
- package/dist/schemas/memory-schemas.js +242 -0
- package/dist/schemas/memory-schemas.js.map +1 -0
- package/dist/schemas/operational-config.d.ts +145 -0
- package/dist/schemas/operational-config.d.ts.map +1 -0
- package/dist/schemas/operational-config.js +161 -0
- package/dist/schemas/operational-config.js.map +1 -0
- package/dist/schemas/schema-utils.d.ts +87 -0
- package/dist/schemas/schema-utils.d.ts.map +1 -0
- package/dist/schemas/schema-utils.js +320 -0
- package/dist/schemas/schema-utils.js.map +1 -0
- package/dist/schemas/setup-arg-validators.d.ts +91 -0
- package/dist/schemas/setup-arg-validators.d.ts.map +1 -0
- package/dist/schemas/setup-arg-validators.js +98 -0
- package/dist/schemas/setup-arg-validators.js.map +1 -0
- package/dist/schemas/setup-schemas.d.ts +335 -0
- package/dist/schemas/setup-schemas.d.ts.map +1 -0
- package/dist/schemas/setup-schemas.js +260 -0
- package/dist/schemas/setup-schemas.js.map +1 -0
- package/dist/schemas/validation-arg-validators.d.ts +18 -0
- package/dist/schemas/validation-arg-validators.d.ts.map +1 -0
- package/dist/schemas/validation-arg-validators.js +59 -0
- package/dist/schemas/validation-arg-validators.js.map +1 -0
- package/dist/schemas/validation-schemas.d.ts +80 -0
- package/dist/schemas/validation-schemas.d.ts.map +1 -0
- package/dist/schemas/validation-schemas.js +88 -0
- package/dist/schemas/validation-schemas.js.map +1 -0
- package/dist/schemas/workspace-config.d.ts +48 -0
- package/dist/schemas/workspace-config.d.ts.map +1 -0
- package/dist/schemas/workspace-config.js +33 -0
- package/dist/schemas/workspace-config.js.map +1 -0
- package/dist/schemas/wu-config.d.ts +21 -0
- package/dist/schemas/wu-config.d.ts.map +1 -0
- package/dist/schemas/wu-config.js +28 -0
- package/dist/schemas/wu-config.js.map +1 -0
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts +118 -0
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts.map +1 -0
- package/dist/schemas/wu-lifecycle-arg-validators.js +82 -0
- package/dist/schemas/wu-lifecycle-arg-validators.js.map +1 -0
- package/dist/schemas/wu-lifecycle-schemas.d.ts +362 -0
- package/dist/schemas/wu-lifecycle-schemas.d.ts.map +1 -0
- package/dist/schemas/wu-lifecycle-schemas.js +284 -0
- package/dist/schemas/wu-lifecycle-schemas.js.map +1 -0
- package/dist/section-headings.d.ts +35 -0
- package/dist/section-headings.d.ts.map +1 -0
- package/dist/section-headings.js +54 -0
- package/dist/section-headings.js.map +1 -0
- package/dist/spawn-agent-guidance.d.ts +90 -0
- package/dist/spawn-agent-guidance.d.ts.map +1 -0
- package/dist/spawn-agent-guidance.js +431 -0
- package/dist/spawn-agent-guidance.js.map +1 -0
- package/dist/spawn-constraints-generator.d.ts +30 -0
- package/dist/spawn-constraints-generator.d.ts.map +1 -0
- package/dist/spawn-constraints-generator.js +121 -0
- package/dist/spawn-constraints-generator.js.map +1 -0
- package/dist/spawn-guidance-generators.d.ts +47 -0
- package/dist/spawn-guidance-generators.d.ts.map +1 -0
- package/dist/spawn-guidance-generators.js +346 -0
- package/dist/spawn-guidance-generators.js.map +1 -0
- package/dist/spawn-policy-resolver.d.ts +26 -0
- package/dist/spawn-policy-resolver.d.ts.map +1 -0
- package/dist/spawn-policy-resolver.js +31 -0
- package/dist/spawn-policy-resolver.js.map +1 -0
- package/dist/spawn-prompt-helpers.d.ts +45 -0
- package/dist/spawn-prompt-helpers.d.ts.map +1 -0
- package/dist/spawn-prompt-helpers.js +271 -0
- package/dist/spawn-prompt-helpers.js.map +1 -0
- package/dist/spawn-prompt-schema.d.ts +107 -0
- package/dist/spawn-prompt-schema.d.ts.map +1 -0
- package/dist/spawn-prompt-schema.js +163 -0
- package/dist/spawn-prompt-schema.js.map +1 -0
- package/dist/spawn-strategy.d.ts +60 -0
- package/dist/spawn-strategy.d.ts.map +1 -0
- package/dist/spawn-strategy.js +112 -0
- package/dist/spawn-strategy.js.map +1 -0
- package/dist/spawn-task-builder.d.ts +68 -0
- package/dist/spawn-task-builder.d.ts.map +1 -0
- package/dist/spawn-task-builder.js +356 -0
- package/dist/spawn-task-builder.js.map +1 -0
- package/dist/spawn-template-assembler.d.ts +65 -0
- package/dist/spawn-template-assembler.d.ts.map +1 -0
- package/dist/spawn-template-assembler.js +111 -0
- package/dist/spawn-template-assembler.js.map +1 -0
- package/dist/stamp-status-validator.d.ts +77 -0
- package/dist/stamp-status-validator.d.ts.map +1 -0
- package/dist/stamp-status-validator.js +138 -0
- package/dist/stamp-status-validator.js.map +1 -0
- package/dist/stamp-tracking.d.ts +12 -0
- package/dist/stamp-tracking.d.ts.map +1 -0
- package/dist/stamp-tracking.js +43 -0
- package/dist/stamp-tracking.js.map +1 -0
- package/dist/stamp-utils.d.ts +94 -0
- package/dist/stamp-utils.d.ts.map +1 -0
- package/dist/stamp-utils.js +245 -0
- package/dist/stamp-utils.js.map +1 -0
- package/dist/state-cleanup-core.d.ts +206 -0
- package/dist/state-cleanup-core.d.ts.map +1 -0
- package/dist/state-cleanup-core.js +225 -0
- package/dist/state-cleanup-core.js.map +1 -0
- package/dist/state-doctor-core.d.ts +177 -0
- package/dist/state-doctor-core.d.ts.map +1 -0
- package/dist/state-doctor-core.js +420 -0
- package/dist/state-doctor-core.js.map +1 -0
- package/dist/state-machine.d.ts +10 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +89 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/stream-error-handler.d.ts +69 -0
- package/dist/stream-error-handler.d.ts.map +1 -0
- package/dist/stream-error-handler.js +80 -0
- package/dist/stream-error-handler.js.map +1 -0
- package/dist/telemetry.d.ts +81 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +219 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/template-loader.d.ts +151 -0
- package/dist/template-loader.d.ts.map +1 -0
- package/dist/template-loader.js +400 -0
- package/dist/template-loader.js.map +1 -0
- package/dist/test-baseline.d.ts +177 -0
- package/dist/test-baseline.d.ts.map +1 -0
- package/dist/test-baseline.js +286 -0
- package/dist/test-baseline.js.map +1 -0
- package/dist/token-counter.d.ts +50 -0
- package/dist/token-counter.d.ts.map +1 -0
- package/dist/token-counter.js +144 -0
- package/dist/token-counter.js.map +1 -0
- package/dist/usecases/analyze-recovery.usecase.d.ts +43 -0
- package/dist/usecases/analyze-recovery.usecase.d.ts.map +1 -0
- package/dist/usecases/analyze-recovery.usecase.js +34 -0
- package/dist/usecases/analyze-recovery.usecase.js.map +1 -0
- package/dist/usecases/compute-context.usecase.d.ts +63 -0
- package/dist/usecases/compute-context.usecase.d.ts.map +1 -0
- package/dist/usecases/compute-context.usecase.js +91 -0
- package/dist/usecases/compute-context.usecase.js.map +1 -0
- package/dist/usecases/get-dashboard-data.usecase.d.ts +53 -0
- package/dist/usecases/get-dashboard-data.usecase.d.ts.map +1 -0
- package/dist/usecases/get-dashboard-data.usecase.js +54 -0
- package/dist/usecases/get-dashboard-data.usecase.js.map +1 -0
- package/dist/usecases/get-suggestions.usecase.d.ts +101 -0
- package/dist/usecases/get-suggestions.usecase.d.ts.map +1 -0
- package/dist/usecases/get-suggestions.usecase.js +148 -0
- package/dist/usecases/get-suggestions.usecase.js.map +1 -0
- package/dist/usecases/index.d.ts +15 -0
- package/dist/usecases/index.d.ts.map +1 -0
- package/dist/usecases/index.js +21 -0
- package/dist/usecases/index.js.map +1 -0
- package/dist/usecases/validate-command.usecase.d.ts +56 -0
- package/dist/usecases/validate-command.usecase.d.ts.map +1 -0
- package/dist/usecases/validate-command.usecase.js +143 -0
- package/dist/usecases/validate-command.usecase.js.map +1 -0
- package/dist/user-normalizer.d.ts +36 -0
- package/dist/user-normalizer.d.ts.map +1 -0
- package/dist/user-normalizer.js +177 -0
- package/dist/user-normalizer.js.map +1 -0
- package/dist/validation/command-registry.d.ts +26 -0
- package/dist/validation/command-registry.d.ts.map +1 -0
- package/dist/validation/command-registry.js +269 -0
- package/dist/validation/command-registry.js.map +1 -0
- package/dist/validation/index.d.ts +16 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +18 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/types.d.ts +140 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +4 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validate-command.d.ts +16 -0
- package/dist/validation/validate-command.d.ts.map +1 -0
- package/dist/validation/validate-command.js +163 -0
- package/dist/validation/validate-command.js.map +1 -0
- package/dist/validators/backlog-sync.d.ts +11 -0
- package/dist/validators/backlog-sync.d.ts.map +1 -0
- package/dist/validators/backlog-sync.js +65 -0
- package/dist/validators/backlog-sync.js.map +1 -0
- package/dist/validators/claim-validation.d.ts +46 -0
- package/dist/validators/claim-validation.d.ts.map +1 -0
- package/dist/validators/claim-validation.js +491 -0
- package/dist/validators/claim-validation.js.map +1 -0
- package/dist/validators/supabase-docs-linter.d.ts +15 -0
- package/dist/validators/supabase-docs-linter.d.ts.map +1 -0
- package/dist/validators/supabase-docs-linter.js +45 -0
- package/dist/validators/supabase-docs-linter.js.map +1 -0
- package/dist/validators/wu-tasks.d.ts +21 -0
- package/dist/validators/wu-tasks.d.ts.map +1 -0
- package/dist/validators/wu-tasks.js +93 -0
- package/dist/validators/wu-tasks.js.map +1 -0
- package/dist/work-classifier.d.ts +95 -0
- package/dist/work-classifier.d.ts.map +1 -0
- package/dist/work-classifier.js +407 -0
- package/dist/work-classifier.js.map +1 -0
- package/dist/worktree-ownership.d.ts +51 -0
- package/dist/worktree-ownership.d.ts.map +1 -0
- package/dist/worktree-ownership.js +77 -0
- package/dist/worktree-ownership.js.map +1 -0
- package/dist/worktree-scanner.d.ts +118 -0
- package/dist/worktree-scanner.d.ts.map +1 -0
- package/dist/worktree-scanner.js +171 -0
- package/dist/worktree-scanner.js.map +1 -0
- package/dist/worktree-symlink.d.ts +98 -0
- package/dist/worktree-symlink.d.ts.map +1 -0
- package/dist/worktree-symlink.js +530 -0
- package/dist/worktree-symlink.js.map +1 -0
- package/dist/wu-backlog-updater.d.ts +10 -0
- package/dist/wu-backlog-updater.d.ts.map +1 -0
- package/dist/wu-backlog-updater.js +40 -0
- package/dist/wu-backlog-updater.js.map +1 -0
- package/dist/wu-checkpoint.d.ts +110 -0
- package/dist/wu-checkpoint.d.ts.map +1 -0
- package/dist/wu-checkpoint.js +238 -0
- package/dist/wu-checkpoint.js.map +1 -0
- package/dist/wu-claim-helpers.d.ts +21 -0
- package/dist/wu-claim-helpers.d.ts.map +1 -0
- package/dist/wu-claim-helpers.js +66 -0
- package/dist/wu-claim-helpers.js.map +1 -0
- package/dist/wu-claim-resume.d.ts +106 -0
- package/dist/wu-claim-resume.d.ts.map +1 -0
- package/dist/wu-claim-resume.js +279 -0
- package/dist/wu-claim-resume.js.map +1 -0
- package/dist/wu-cli-constants.d.ts +427 -0
- package/dist/wu-cli-constants.d.ts.map +1 -0
- package/dist/wu-cli-constants.js +432 -0
- package/dist/wu-cli-constants.js.map +1 -0
- package/dist/wu-consistency-checker.d.ts +23 -0
- package/dist/wu-consistency-checker.d.ts.map +1 -0
- package/dist/wu-consistency-checker.js +24 -0
- package/dist/wu-consistency-checker.js.map +1 -0
- package/dist/wu-consistency-detector.d.ts +94 -0
- package/dist/wu-consistency-detector.d.ts.map +1 -0
- package/dist/wu-consistency-detector.js +410 -0
- package/dist/wu-consistency-detector.js.map +1 -0
- package/dist/wu-consistency-file-repairs.d.ts +75 -0
- package/dist/wu-consistency-file-repairs.d.ts.map +1 -0
- package/dist/wu-consistency-file-repairs.js +326 -0
- package/dist/wu-consistency-file-repairs.js.map +1 -0
- package/dist/wu-constants.d.ts +29 -0
- package/dist/wu-constants.d.ts.map +1 -0
- package/dist/wu-constants.js +37 -0
- package/dist/wu-constants.js.map +1 -0
- package/dist/wu-context-constants.d.ts +270 -0
- package/dist/wu-context-constants.d.ts.map +1 -0
- package/dist/wu-context-constants.js +267 -0
- package/dist/wu-context-constants.js.map +1 -0
- package/dist/wu-create-defaults.d.ts +11 -0
- package/dist/wu-create-defaults.d.ts.map +1 -0
- package/dist/wu-create-defaults.js +13 -0
- package/dist/wu-create-defaults.js.map +1 -0
- package/dist/wu-create-validators.d.ts +89 -0
- package/dist/wu-create-validators.d.ts.map +1 -0
- package/dist/wu-create-validators.js +215 -0
- package/dist/wu-create-validators.js.map +1 -0
- package/dist/wu-delegation-cutover.d.ts +5 -0
- package/dist/wu-delegation-cutover.d.ts.map +1 -0
- package/dist/wu-delegation-cutover.js +231 -0
- package/dist/wu-delegation-cutover.js.map +1 -0
- package/dist/wu-doc-types.d.ts +48 -0
- package/dist/wu-doc-types.d.ts.map +1 -0
- package/dist/wu-doc-types.js +4 -0
- package/dist/wu-doc-types.js.map +1 -0
- package/dist/wu-domain-constants.d.ts +295 -0
- package/dist/wu-domain-constants.d.ts.map +1 -0
- package/dist/wu-domain-constants.js +399 -0
- package/dist/wu-domain-constants.js.map +1 -0
- package/dist/wu-done-branch-only.d.ts +120 -0
- package/dist/wu-done-branch-only.d.ts.map +1 -0
- package/dist/wu-done-branch-only.js +412 -0
- package/dist/wu-done-branch-only.js.map +1 -0
- package/dist/wu-done-branch-utils.d.ts +8 -0
- package/dist/wu-done-branch-utils.d.ts.map +1 -0
- package/dist/wu-done-branch-utils.js +34 -0
- package/dist/wu-done-branch-utils.js.map +1 -0
- package/dist/wu-done-cleanup.d.ts +6 -0
- package/dist/wu-done-cleanup.d.ts.map +1 -0
- package/dist/wu-done-cleanup.js +161 -0
- package/dist/wu-done-cleanup.js.map +1 -0
- package/dist/wu-done-concurrent-merge.d.ts +103 -0
- package/dist/wu-done-concurrent-merge.d.ts.map +1 -0
- package/dist/wu-done-concurrent-merge.js +375 -0
- package/dist/wu-done-concurrent-merge.js.map +1 -0
- package/dist/wu-done-docs-generate.d.ts +72 -0
- package/dist/wu-done-docs-generate.d.ts.map +1 -0
- package/dist/wu-done-docs-generate.js +129 -0
- package/dist/wu-done-docs-generate.js.map +1 -0
- package/dist/wu-done-docs-only.d.ts +16 -0
- package/dist/wu-done-docs-only.d.ts.map +1 -0
- package/dist/wu-done-docs-only.js +68 -0
- package/dist/wu-done-docs-only.js.map +1 -0
- package/dist/wu-done-error-handling.d.ts +35 -0
- package/dist/wu-done-error-handling.d.ts.map +1 -0
- package/dist/wu-done-error-handling.js +109 -0
- package/dist/wu-done-error-handling.js.map +1 -0
- package/dist/wu-done-errors.d.ts +13 -0
- package/dist/wu-done-errors.d.ts.map +1 -0
- package/dist/wu-done-errors.js +27 -0
- package/dist/wu-done-errors.js.map +1 -0
- package/dist/wu-done-initiative-sync.d.ts +13 -0
- package/dist/wu-done-initiative-sync.d.ts.map +1 -0
- package/dist/wu-done-initiative-sync.js +235 -0
- package/dist/wu-done-initiative-sync.js.map +1 -0
- package/dist/wu-done-inputs.d.ts +10 -0
- package/dist/wu-done-inputs.d.ts.map +1 -0
- package/dist/wu-done-inputs.js +55 -0
- package/dist/wu-done-inputs.js.map +1 -0
- package/dist/wu-done-machine.d.ts +175 -0
- package/dist/wu-done-machine.d.ts.map +1 -0
- package/dist/wu-done-machine.js +227 -0
- package/dist/wu-done-machine.js.map +1 -0
- package/dist/wu-done-main-sync.d.ts +36 -0
- package/dist/wu-done-main-sync.d.ts.map +1 -0
- package/dist/wu-done-main-sync.js +67 -0
- package/dist/wu-done-main-sync.js.map +1 -0
- package/dist/wu-done-merge-phase.d.ts +49 -0
- package/dist/wu-done-merge-phase.d.ts.map +1 -0
- package/dist/wu-done-merge-phase.js +121 -0
- package/dist/wu-done-merge-phase.js.map +1 -0
- package/dist/wu-done-merge.d.ts +46 -0
- package/dist/wu-done-merge.d.ts.map +1 -0
- package/dist/wu-done-merge.js +123 -0
- package/dist/wu-done-merge.js.map +1 -0
- package/dist/wu-done-merged-worktree.d.ts +65 -0
- package/dist/wu-done-merged-worktree.d.ts.map +1 -0
- package/dist/wu-done-merged-worktree.js +197 -0
- package/dist/wu-done-merged-worktree.js.map +1 -0
- package/dist/wu-done-messages.d.ts +120 -0
- package/dist/wu-done-messages.d.ts.map +1 -0
- package/dist/wu-done-messages.js +191 -0
- package/dist/wu-done-messages.js.map +1 -0
- package/dist/wu-done-metadata.d.ts +123 -0
- package/dist/wu-done-metadata.d.ts.map +1 -0
- package/dist/wu-done-metadata.js +240 -0
- package/dist/wu-done-metadata.js.map +1 -0
- package/dist/wu-done-paths.d.ts +79 -0
- package/dist/wu-done-paths.d.ts.map +1 -0
- package/dist/wu-done-paths.js +263 -0
- package/dist/wu-done-paths.js.map +1 -0
- package/dist/wu-done-pr.d.ts +76 -0
- package/dist/wu-done-pr.d.ts.map +1 -0
- package/dist/wu-done-pr.js +189 -0
- package/dist/wu-done-pr.js.map +1 -0
- package/dist/wu-done-preflight-checks.d.ts +66 -0
- package/dist/wu-done-preflight-checks.d.ts.map +1 -0
- package/dist/wu-done-preflight-checks.js +275 -0
- package/dist/wu-done-preflight-checks.js.map +1 -0
- package/dist/wu-done-preflight.d.ts +65 -0
- package/dist/wu-done-preflight.d.ts.map +1 -0
- package/dist/wu-done-preflight.js +205 -0
- package/dist/wu-done-preflight.js.map +1 -0
- package/dist/wu-done-rebase.d.ts +44 -0
- package/dist/wu-done-rebase.d.ts.map +1 -0
- package/dist/wu-done-rebase.js +360 -0
- package/dist/wu-done-rebase.js.map +1 -0
- package/dist/wu-done-retry-helpers.d.ts +75 -0
- package/dist/wu-done-retry-helpers.d.ts.map +1 -0
- package/dist/wu-done-retry-helpers.js +175 -0
- package/dist/wu-done-retry-helpers.js.map +1 -0
- package/dist/wu-done-ui.d.ts +29 -0
- package/dist/wu-done-ui.d.ts.map +1 -0
- package/dist/wu-done-ui.js +74 -0
- package/dist/wu-done-ui.js.map +1 -0
- package/dist/wu-done-utils.d.ts +31 -0
- package/dist/wu-done-utils.d.ts.map +1 -0
- package/dist/wu-done-utils.js +60 -0
- package/dist/wu-done-utils.js.map +1 -0
- package/dist/wu-done-validation.d.ts +128 -0
- package/dist/wu-done-validation.d.ts.map +1 -0
- package/dist/wu-done-validation.js +553 -0
- package/dist/wu-done-validation.js.map +1 -0
- package/dist/wu-done-validators.d.ts +16 -0
- package/dist/wu-done-validators.d.ts.map +1 -0
- package/dist/wu-done-validators.js +16 -0
- package/dist/wu-done-validators.js.map +1 -0
- package/dist/wu-done-worktree-services.d.ts +174 -0
- package/dist/wu-done-worktree-services.d.ts.map +1 -0
- package/dist/wu-done-worktree-services.js +274 -0
- package/dist/wu-done-worktree-services.js.map +1 -0
- package/dist/wu-done-worktree.d.ts +71 -0
- package/dist/wu-done-worktree.d.ts.map +1 -0
- package/dist/wu-done-worktree.js +243 -0
- package/dist/wu-done-worktree.js.map +1 -0
- package/dist/wu-done-zombie-recovery.d.ts +18 -0
- package/dist/wu-done-zombie-recovery.d.ts.map +1 -0
- package/dist/wu-done-zombie-recovery.js +84 -0
- package/dist/wu-done-zombie-recovery.js.map +1 -0
- package/dist/wu-event-sourcer.d.ts +44 -0
- package/dist/wu-event-sourcer.d.ts.map +1 -0
- package/dist/wu-event-sourcer.js +135 -0
- package/dist/wu-event-sourcer.js.map +1 -0
- package/dist/wu-events-cleanup.d.ts +131 -0
- package/dist/wu-events-cleanup.d.ts.map +1 -0
- package/dist/wu-events-cleanup.js +403 -0
- package/dist/wu-events-cleanup.js.map +1 -0
- package/dist/wu-git-constants.d.ts +176 -0
- package/dist/wu-git-constants.d.ts.map +1 -0
- package/dist/wu-git-constants.js +178 -0
- package/dist/wu-git-constants.js.map +1 -0
- package/dist/wu-helpers.d.ts +133 -0
- package/dist/wu-helpers.d.ts.map +1 -0
- package/dist/wu-helpers.js +268 -0
- package/dist/wu-helpers.js.map +1 -0
- package/dist/wu-id-generator.d.ts +51 -0
- package/dist/wu-id-generator.d.ts.map +1 -0
- package/dist/wu-id-generator.js +110 -0
- package/dist/wu-id-generator.js.map +1 -0
- package/dist/wu-inconsistency-repairer.d.ts +69 -0
- package/dist/wu-inconsistency-repairer.d.ts.map +1 -0
- package/dist/wu-inconsistency-repairer.js +271 -0
- package/dist/wu-inconsistency-repairer.js.map +1 -0
- package/dist/wu-lint.d.ts +191 -0
- package/dist/wu-lint.d.ts.map +1 -0
- package/dist/wu-lint.js +338 -0
- package/dist/wu-lint.js.map +1 -0
- package/dist/wu-list.d.ts +76 -0
- package/dist/wu-list.d.ts.map +1 -0
- package/dist/wu-list.js +181 -0
- package/dist/wu-list.js.map +1 -0
- package/dist/wu-lock-manager.d.ts +28 -0
- package/dist/wu-lock-manager.d.ts.map +1 -0
- package/dist/wu-lock-manager.js +164 -0
- package/dist/wu-lock-manager.js.map +1 -0
- package/dist/wu-paths-constants.d.ts +264 -0
- package/dist/wu-paths-constants.d.ts.map +1 -0
- package/dist/wu-paths-constants.js +273 -0
- package/dist/wu-paths-constants.js.map +1 -0
- package/dist/wu-paths.d.ts +211 -0
- package/dist/wu-paths.d.ts.map +1 -0
- package/dist/wu-paths.js +223 -0
- package/dist/wu-paths.js.map +1 -0
- package/dist/wu-preflight-validators.d.ts +64 -0
- package/dist/wu-preflight-validators.d.ts.map +1 -0
- package/dist/wu-preflight-validators.js +277 -0
- package/dist/wu-preflight-validators.js.map +1 -0
- package/dist/wu-recovery.d.ts +220 -0
- package/dist/wu-recovery.d.ts.map +1 -0
- package/dist/wu-recovery.js +470 -0
- package/dist/wu-recovery.js.map +1 -0
- package/dist/wu-repair-core.d.ts +137 -0
- package/dist/wu-repair-core.d.ts.map +1 -0
- package/dist/wu-repair-core.js +719 -0
- package/dist/wu-repair-core.js.map +1 -0
- package/dist/wu-repair-service.d.ts +22 -0
- package/dist/wu-repair-service.d.ts.map +1 -0
- package/dist/wu-repair-service.js +131 -0
- package/dist/wu-repair-service.js.map +1 -0
- package/dist/wu-rules-core.d.ts +95 -0
- package/dist/wu-rules-core.d.ts.map +1 -0
- package/dist/wu-rules-core.js +401 -0
- package/dist/wu-rules-core.js.map +1 -0
- package/dist/wu-rules-engine.d.ts +29 -0
- package/dist/wu-rules-engine.d.ts.map +1 -0
- package/dist/wu-rules-engine.js +61 -0
- package/dist/wu-rules-engine.js.map +1 -0
- package/dist/wu-rules-resolvers.d.ts +19 -0
- package/dist/wu-rules-resolvers.d.ts.map +1 -0
- package/dist/wu-rules-resolvers.js +229 -0
- package/dist/wu-rules-resolvers.js.map +1 -0
- package/dist/wu-schema-normalization.d.ts +18 -0
- package/dist/wu-schema-normalization.d.ts.map +1 -0
- package/dist/wu-schema-normalization.js +87 -0
- package/dist/wu-schema-normalization.js.map +1 -0
- package/dist/wu-schema.d.ts +772 -0
- package/dist/wu-schema.d.ts.map +1 -0
- package/dist/wu-schema.js +897 -0
- package/dist/wu-schema.js.map +1 -0
- package/dist/wu-spawn-context.d.ts +66 -0
- package/dist/wu-spawn-context.d.ts.map +1 -0
- package/dist/wu-spawn-context.js +185 -0
- package/dist/wu-spawn-context.js.map +1 -0
- package/dist/wu-spawn-helpers.d.ts +110 -0
- package/dist/wu-spawn-helpers.d.ts.map +1 -0
- package/dist/wu-spawn-helpers.js +276 -0
- package/dist/wu-spawn-helpers.js.map +1 -0
- package/dist/wu-spawn-skills.d.ts +39 -0
- package/dist/wu-spawn-skills.d.ts.map +1 -0
- package/dist/wu-spawn-skills.js +214 -0
- package/dist/wu-spawn-skills.js.map +1 -0
- package/dist/wu-spawn.d.ts +33 -0
- package/dist/wu-spawn.d.ts.map +1 -0
- package/dist/wu-spawn.js +212 -0
- package/dist/wu-spawn.js.map +1 -0
- package/dist/wu-state-indexer.d.ts +49 -0
- package/dist/wu-state-indexer.d.ts.map +1 -0
- package/dist/wu-state-indexer.js +156 -0
- package/dist/wu-state-indexer.js.map +1 -0
- package/dist/wu-state-schema.d.ts +253 -0
- package/dist/wu-state-schema.d.ts.map +1 -0
- package/dist/wu-state-schema.js +188 -0
- package/dist/wu-state-schema.js.map +1 -0
- package/dist/wu-state-store.d.ts +64 -0
- package/dist/wu-state-store.d.ts.map +1 -0
- package/dist/wu-state-store.js +171 -0
- package/dist/wu-state-store.js.map +1 -0
- package/dist/wu-status-transition.d.ts +58 -0
- package/dist/wu-status-transition.d.ts.map +1 -0
- package/dist/wu-status-transition.js +370 -0
- package/dist/wu-status-transition.js.map +1 -0
- package/dist/wu-status-updater.d.ts +18 -0
- package/dist/wu-status-updater.d.ts.map +1 -0
- package/dist/wu-status-updater.js +123 -0
- package/dist/wu-status-updater.js.map +1 -0
- package/dist/wu-statuses.d.ts +154 -0
- package/dist/wu-statuses.d.ts.map +1 -0
- package/dist/wu-statuses.js +176 -0
- package/dist/wu-statuses.js.map +1 -0
- package/dist/wu-transaction-collectors.d.ts +111 -0
- package/dist/wu-transaction-collectors.d.ts.map +1 -0
- package/dist/wu-transaction-collectors.js +273 -0
- package/dist/wu-transaction-collectors.js.map +1 -0
- package/dist/wu-transaction.d.ts +172 -0
- package/dist/wu-transaction.d.ts.map +1 -0
- package/dist/wu-transaction.js +288 -0
- package/dist/wu-transaction.js.map +1 -0
- package/dist/wu-type-helpers.d.ts +26 -0
- package/dist/wu-type-helpers.d.ts.map +1 -0
- package/dist/wu-type-helpers.js +45 -0
- package/dist/wu-type-helpers.js.map +1 -0
- package/dist/wu-ui-constants.d.ts +235 -0
- package/dist/wu-ui-constants.d.ts.map +1 -0
- package/dist/wu-ui-constants.js +237 -0
- package/dist/wu-ui-constants.js.map +1 -0
- package/dist/wu-validation-constants.d.ts +61 -0
- package/dist/wu-validation-constants.d.ts.map +1 -0
- package/dist/wu-validation-constants.js +69 -0
- package/dist/wu-validation-constants.js.map +1 -0
- package/dist/wu-validation.d.ts +121 -0
- package/dist/wu-validation.d.ts.map +1 -0
- package/dist/wu-validation.js +266 -0
- package/dist/wu-validation.js.map +1 -0
- package/dist/wu-validator.d.ts +128 -0
- package/dist/wu-validator.d.ts.map +1 -0
- package/dist/wu-validator.js +447 -0
- package/dist/wu-validator.js.map +1 -0
- package/dist/wu-yaml-fixer.d.ts +74 -0
- package/dist/wu-yaml-fixer.d.ts.map +1 -0
- package/dist/wu-yaml-fixer.js +273 -0
- package/dist/wu-yaml-fixer.js.map +1 -0
- package/dist/wu-yaml.d.ts +110 -0
- package/dist/wu-yaml.d.ts.map +1 -0
- package/dist/wu-yaml.js +300 -0
- package/dist/wu-yaml.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* WU-1747: Retry Strategy Module
|
|
5
|
+
*
|
|
6
|
+
* Provides exponential backoff retry mechanism with configurable parameters
|
|
7
|
+
* for wu:done concurrent load resilience.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Configurable max attempts, base delay, multiplier
|
|
11
|
+
* - Exponential backoff with optional jitter
|
|
12
|
+
* - Presets for common scenarios (wu_done, recovery)
|
|
13
|
+
* - Callback hooks for retry events
|
|
14
|
+
* - Conditional retry based on error type
|
|
15
|
+
*
|
|
16
|
+
* @module retry-strategy
|
|
17
|
+
*/
|
|
18
|
+
import { LOG_PREFIX, EMOJI } from './wu-constants.js';
|
|
19
|
+
/**
|
|
20
|
+
* Error message patterns that are considered retryable for wu:done operations
|
|
21
|
+
* Exported for test consistency
|
|
22
|
+
*/
|
|
23
|
+
export const RETRYABLE_ERROR_PATTERNS = Object.freeze({
|
|
24
|
+
FAST_FORWARD: 'fast-forward',
|
|
25
|
+
NOT_POSSIBLE: 'not possible',
|
|
26
|
+
CANNOT_LOCK_REF: 'Cannot lock ref',
|
|
27
|
+
FETCH: 'fetch',
|
|
28
|
+
PUSH: 'push',
|
|
29
|
+
ETIMEDOUT: 'ETIMEDOUT',
|
|
30
|
+
ECONNRESET: 'ECONNRESET',
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {Object} RetryConfig
|
|
34
|
+
* @property {number} maxAttempts - Maximum number of attempts (default: 5)
|
|
35
|
+
* @property {number} baseDelayMs - Base delay in milliseconds (default: 1000)
|
|
36
|
+
* @property {number} maxDelayMs - Maximum delay cap in milliseconds (default: 30000)
|
|
37
|
+
* @property {number} multiplier - Exponential multiplier (default: 2)
|
|
38
|
+
* @property {number} jitter - Jitter factor 0-1 (default: 0.1 for 10%)
|
|
39
|
+
* @property {function} [shouldRetry] - Optional function(error) => boolean to determine if error is retryable
|
|
40
|
+
* @property {function} [onRetry] - Optional callback(attempt, error, delay) before each retry
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Default retry configuration
|
|
44
|
+
* Balanced for typical wu:done operations
|
|
45
|
+
*/
|
|
46
|
+
export const DEFAULT_RETRY_CONFIG = Object.freeze({
|
|
47
|
+
maxAttempts: 5,
|
|
48
|
+
baseDelayMs: 1000,
|
|
49
|
+
maxDelayMs: 30000,
|
|
50
|
+
multiplier: 2,
|
|
51
|
+
jitter: 0.1,
|
|
52
|
+
shouldRetry: (_error) => true,
|
|
53
|
+
onRetry: null,
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Pre-configured retry presets for common scenarios
|
|
57
|
+
*/
|
|
58
|
+
export const RETRY_PRESETS = Object.freeze({
|
|
59
|
+
/**
|
|
60
|
+
* Preset for wu:done merge operations
|
|
61
|
+
* Higher attempts and longer delays for handling concurrent load
|
|
62
|
+
*/
|
|
63
|
+
wu_done: Object.freeze({
|
|
64
|
+
maxAttempts: 6,
|
|
65
|
+
baseDelayMs: 2000,
|
|
66
|
+
maxDelayMs: 60000,
|
|
67
|
+
multiplier: 2,
|
|
68
|
+
jitter: 0.15, // 15% jitter to spread concurrent retries
|
|
69
|
+
shouldRetry: (error) => {
|
|
70
|
+
// Retry fast-forward failures and network errors using defined patterns
|
|
71
|
+
const message = error.message || '';
|
|
72
|
+
return Object.values(RETRYABLE_ERROR_PATTERNS).some((pattern) => message.includes(pattern));
|
|
73
|
+
},
|
|
74
|
+
onRetry: null,
|
|
75
|
+
}),
|
|
76
|
+
/**
|
|
77
|
+
* Preset for zombie state recovery
|
|
78
|
+
* More attempts with shorter delays
|
|
79
|
+
*/
|
|
80
|
+
recovery: Object.freeze({
|
|
81
|
+
maxAttempts: 4,
|
|
82
|
+
baseDelayMs: 500,
|
|
83
|
+
maxDelayMs: 10000,
|
|
84
|
+
multiplier: 2,
|
|
85
|
+
jitter: 0.1,
|
|
86
|
+
shouldRetry: () => true,
|
|
87
|
+
onRetry: null,
|
|
88
|
+
}),
|
|
89
|
+
/**
|
|
90
|
+
* Preset for quick operations (file I/O, local git)
|
|
91
|
+
* Fast retries for transient errors
|
|
92
|
+
*/
|
|
93
|
+
quick: Object.freeze({
|
|
94
|
+
maxAttempts: 3,
|
|
95
|
+
baseDelayMs: 100,
|
|
96
|
+
maxDelayMs: 2000,
|
|
97
|
+
multiplier: 2,
|
|
98
|
+
jitter: 0.05,
|
|
99
|
+
shouldRetry: () => true,
|
|
100
|
+
onRetry: null,
|
|
101
|
+
}),
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Create a retry configuration by merging defaults with custom options
|
|
105
|
+
*
|
|
106
|
+
* @param {string|Object} [presetOrOptions] - Preset name or custom options
|
|
107
|
+
* @param {Object} [options] - Additional options to merge (when first arg is preset name)
|
|
108
|
+
* @returns {RetryConfig} Complete retry configuration
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* // Use defaults
|
|
112
|
+
* const config = createRetryConfig();
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* // Customize defaults
|
|
116
|
+
* const config = createRetryConfig({ maxAttempts: 10 });
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* // Use preset
|
|
120
|
+
* const config = createRetryConfig('wu_done');
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* // Customize preset
|
|
124
|
+
* const config = createRetryConfig('wu_done', { maxAttempts: 10 });
|
|
125
|
+
*/
|
|
126
|
+
export function createRetryConfig(presetOrOptions, options) {
|
|
127
|
+
// Determine base config
|
|
128
|
+
let baseConfig;
|
|
129
|
+
let customOptions;
|
|
130
|
+
if (typeof presetOrOptions === 'string') {
|
|
131
|
+
// First arg is preset name
|
|
132
|
+
if (!(presetOrOptions in RETRY_PRESETS)) {
|
|
133
|
+
throw new Error(`Unknown retry preset: ${presetOrOptions}`);
|
|
134
|
+
}
|
|
135
|
+
baseConfig = RETRY_PRESETS[presetOrOptions];
|
|
136
|
+
customOptions = options || {};
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// First arg is options (or undefined)
|
|
140
|
+
baseConfig = DEFAULT_RETRY_CONFIG;
|
|
141
|
+
customOptions = presetOrOptions || {};
|
|
142
|
+
}
|
|
143
|
+
// Merge and return
|
|
144
|
+
// Avoid overriding preset/default values with `undefined` (WU-1756):
|
|
145
|
+
// callers often pass option keys conditionally, and spreading `undefined`
|
|
146
|
+
// clobbers required defaults (e.g., maxAttempts) leading to zero-attempt retries.
|
|
147
|
+
const definedOptions = Object.fromEntries(Object.entries(customOptions).filter(([, value]) => value !== undefined));
|
|
148
|
+
return {
|
|
149
|
+
...baseConfig,
|
|
150
|
+
...definedOptions,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Calculate the backoff delay for a given attempt number
|
|
155
|
+
*
|
|
156
|
+
* Uses exponential backoff formula: baseDelay * (multiplier ^ attempt)
|
|
157
|
+
* with optional jitter to spread concurrent retry attempts
|
|
158
|
+
*
|
|
159
|
+
* @param {number} attempt - Zero-based attempt number (0 = first attempt)
|
|
160
|
+
* @param {RetryConfig} config - Retry configuration
|
|
161
|
+
* @returns {number} Delay in milliseconds
|
|
162
|
+
*/
|
|
163
|
+
export function calculateBackoffDelay(attempt, config) {
|
|
164
|
+
const { baseDelayMs, multiplier, maxDelayMs, jitter } = config;
|
|
165
|
+
// Exponential backoff: base * multiplier^attempt
|
|
166
|
+
let delay = baseDelayMs * Math.pow(multiplier, attempt);
|
|
167
|
+
// Cap at max delay
|
|
168
|
+
delay = Math.min(delay, maxDelayMs);
|
|
169
|
+
// Add jitter if enabled (spreads concurrent retries)
|
|
170
|
+
if (jitter > 0) {
|
|
171
|
+
// Jitter adds/subtracts random percentage
|
|
172
|
+
const jitterRange = delay * jitter;
|
|
173
|
+
const jitterOffset = (Math.random() * 2 - 1) * jitterRange;
|
|
174
|
+
delay = delay + jitterOffset;
|
|
175
|
+
}
|
|
176
|
+
return Math.round(delay);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Sleep for specified milliseconds
|
|
180
|
+
*
|
|
181
|
+
* @param {number} ms - Milliseconds to sleep
|
|
182
|
+
* @returns {Promise<void>}
|
|
183
|
+
*/
|
|
184
|
+
function sleep(ms) {
|
|
185
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Execute a function with retry logic and exponential backoff
|
|
189
|
+
*
|
|
190
|
+
* @template T
|
|
191
|
+
* @param {function(): Promise<T>} fn - Async function to execute
|
|
192
|
+
* @param {RetryConfig} [config] - Retry configuration (uses defaults if not provided)
|
|
193
|
+
* @returns {Promise<T>} Result of successful execution
|
|
194
|
+
* @throws {Error} Last error if all attempts fail
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* const result = await withRetry(
|
|
198
|
+
* async () => await mergeBranch(),
|
|
199
|
+
* createRetryConfig('wu_done')
|
|
200
|
+
* );
|
|
201
|
+
*/
|
|
202
|
+
export async function withRetry(fn, config = DEFAULT_RETRY_CONFIG) {
|
|
203
|
+
const { maxAttempts, shouldRetry, onRetry } = config;
|
|
204
|
+
let lastError;
|
|
205
|
+
let attempt = 0;
|
|
206
|
+
while (attempt < maxAttempts) {
|
|
207
|
+
try {
|
|
208
|
+
return await fn();
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
lastError = error;
|
|
212
|
+
attempt++;
|
|
213
|
+
// Check if we should retry
|
|
214
|
+
if (attempt >= maxAttempts) {
|
|
215
|
+
break; // Max attempts reached
|
|
216
|
+
}
|
|
217
|
+
if (!shouldRetry(error)) {
|
|
218
|
+
break; // Error not retryable
|
|
219
|
+
}
|
|
220
|
+
// Calculate delay for next retry
|
|
221
|
+
const delay = calculateBackoffDelay(attempt - 1, config);
|
|
222
|
+
// Call onRetry callback if provided
|
|
223
|
+
if (typeof onRetry === 'function') {
|
|
224
|
+
onRetry(attempt, error, delay);
|
|
225
|
+
}
|
|
226
|
+
// Log retry info
|
|
227
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Attempt ${attempt}/${maxAttempts} failed: ${error.message}`);
|
|
228
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} Retrying in ${delay}ms...`);
|
|
229
|
+
// Wait before retry
|
|
230
|
+
await sleep(delay);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// All attempts failed
|
|
234
|
+
// Defensive: if a caller passes an invalid config, ensure we throw a useful error.
|
|
235
|
+
if (!lastError) {
|
|
236
|
+
throw new Error(`Operation failed: invalid retry configuration (maxAttempts=${maxAttempts})`);
|
|
237
|
+
}
|
|
238
|
+
throw new Error(`Operation failed after ${attempt} attempt(s): ${lastError.message}\n` +
|
|
239
|
+
`Original error: ${lastError.stack || lastError.message}`);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Higher-order function to wrap a function with retry logic
|
|
243
|
+
*
|
|
244
|
+
* @template T
|
|
245
|
+
* @param {function(...args): Promise<T>} fn - Function to wrap
|
|
246
|
+
* @param {RetryConfig} [config] - Retry configuration
|
|
247
|
+
* @returns {function(...args): Promise<T>} Wrapped function with retry logic
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* const retryableMerge = withRetryWrapper(mergeBranch, createRetryConfig('wu_done'));
|
|
251
|
+
* await retryableMerge(branch);
|
|
252
|
+
*/
|
|
253
|
+
export function withRetryWrapper(fn, config = DEFAULT_RETRY_CONFIG) {
|
|
254
|
+
return async (...args) => {
|
|
255
|
+
return withRetry(() => fn(...args), config);
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Determine if an error is a git conflict error (non-retryable)
|
|
260
|
+
*
|
|
261
|
+
* @param {Error} error - Error to check
|
|
262
|
+
* @returns {boolean} True if conflict error
|
|
263
|
+
*/
|
|
264
|
+
export function isConflictError(error) {
|
|
265
|
+
const message = error.message || '';
|
|
266
|
+
return (message.includes('conflict') ||
|
|
267
|
+
message.includes('CONFLICT') ||
|
|
268
|
+
message.includes('<<<<<<<') ||
|
|
269
|
+
message.includes('not possible to fast-forward'));
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Determine if an error is a network/transient error (retryable)
|
|
273
|
+
*
|
|
274
|
+
* @param {Error} error - Error to check
|
|
275
|
+
* @returns {boolean} True if likely transient
|
|
276
|
+
*/
|
|
277
|
+
export function isTransientError(error) {
|
|
278
|
+
const message = error.message || '';
|
|
279
|
+
return (message.includes('ETIMEDOUT') ||
|
|
280
|
+
message.includes('ECONNRESET') ||
|
|
281
|
+
message.includes('ECONNREFUSED') ||
|
|
282
|
+
message.includes('fetch failed') ||
|
|
283
|
+
message.includes('network') ||
|
|
284
|
+
message.includes('timeout'));
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=retry-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-strategy.js","sourceRoot":"","sources":["../src/retry-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Rollback Utilities for WU Tooling
|
|
4
|
+
*
|
|
5
|
+
* WU-1255: Per-file error tracking for robust rollback operations.
|
|
6
|
+
* Ensures all files are attempted even if some fail, with clear error reporting.
|
|
7
|
+
*
|
|
8
|
+
* WU-1665: Adds rollbackFromPipelineState for state-machine-driven recovery.
|
|
9
|
+
* Centralized entry point that determines rollback actions from pipeline state.
|
|
10
|
+
*
|
|
11
|
+
* @see {@link packages/@lumenflow/cli/src/wu-done.ts} - Consumer (rollbackTransaction function)
|
|
12
|
+
*/
|
|
13
|
+
import type { RollbackScope } from './wu-recovery.js';
|
|
14
|
+
/**
|
|
15
|
+
* Error entry for failed file restoration
|
|
16
|
+
*/
|
|
17
|
+
interface RollbackError {
|
|
18
|
+
name: string;
|
|
19
|
+
path: string;
|
|
20
|
+
error: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result of a rollback operation.
|
|
24
|
+
* Tracks which files were restored and which failed.
|
|
25
|
+
*
|
|
26
|
+
* WU-1665: Extended with optional scope metadata for state-machine-driven recovery.
|
|
27
|
+
*
|
|
28
|
+
* @class
|
|
29
|
+
*/
|
|
30
|
+
export declare class RollbackResult {
|
|
31
|
+
/** Names of successfully restored files */
|
|
32
|
+
restored: string[];
|
|
33
|
+
/** Failed file restorations */
|
|
34
|
+
errors: RollbackError[];
|
|
35
|
+
/** WU-1665: Rollback scope from pipeline state (set by rollbackFromPipelineState) */
|
|
36
|
+
scope: RollbackScope | null;
|
|
37
|
+
constructor();
|
|
38
|
+
/**
|
|
39
|
+
* Record a successful file restoration.
|
|
40
|
+
* @param {string} name - File identifier (e.g., 'backlog.md')
|
|
41
|
+
*/
|
|
42
|
+
addSuccess(name: UnsafeAny): void;
|
|
43
|
+
/**
|
|
44
|
+
* Record a failed file restoration.
|
|
45
|
+
* @param {string} name - File identifier
|
|
46
|
+
* @param {string} path - Full file path
|
|
47
|
+
* @param {string} error - Error message
|
|
48
|
+
*/
|
|
49
|
+
addError(name: UnsafeAny, path: UnsafeAny, error: UnsafeAny): void;
|
|
50
|
+
/**
|
|
51
|
+
* Check if all files were restored successfully.
|
|
52
|
+
* @returns {boolean} True if no errors occurred
|
|
53
|
+
*/
|
|
54
|
+
get success(): boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Restore multiple files with per-file error tracking.
|
|
58
|
+
*
|
|
59
|
+
* Each file is restored independently - if one fails, subsequent files
|
|
60
|
+
* are still attempted. This ensures maximum recovery even in partial
|
|
61
|
+
* failure scenarios.
|
|
62
|
+
*
|
|
63
|
+
* @param {Array<{name: string, path: string, content: string}>} filesToRestore - Files to restore
|
|
64
|
+
* @returns {RollbackResult} Result with restored files and UnsafeAny errors
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* const result = rollbackFiles([
|
|
68
|
+
* { name: 'backlog.md', path: '/path/to/backlog.md', content: 'original content' },
|
|
69
|
+
* { name: 'status.md', path: '/path/to/status.md', content: 'original content' },
|
|
70
|
+
* ]);
|
|
71
|
+
*
|
|
72
|
+
* if (!result.success) {
|
|
73
|
+
* console.error('Rollback had errors:', result.errors);
|
|
74
|
+
* }
|
|
75
|
+
*/
|
|
76
|
+
export declare function rollbackFiles(filesToRestore: UnsafeAny): RollbackResult;
|
|
77
|
+
/**
|
|
78
|
+
* Delete multiple files with per-file error tracking.
|
|
79
|
+
*
|
|
80
|
+
* @param {Array<{name: string, path: string}>} filesToDelete - Files to delete
|
|
81
|
+
* @returns {RollbackResult} Result with deleted files and UnsafeAny errors
|
|
82
|
+
*/
|
|
83
|
+
export declare function deleteFiles(filesToDelete: UnsafeAny): RollbackResult;
|
|
84
|
+
/**
|
|
85
|
+
* Input for the centralized pipeline-state-aware rollback.
|
|
86
|
+
*/
|
|
87
|
+
export interface PipelineRollbackInput {
|
|
88
|
+
/** The pipeline state where failure occurred (from machine context.failedAt) */
|
|
89
|
+
failedAt: string | null;
|
|
90
|
+
/** Snapshot map of file paths to original content (from createTransactionSnapshot) */
|
|
91
|
+
snapshot: Map<string, string | null> | null;
|
|
92
|
+
/** Files to restore via the legacy per-file rollback path */
|
|
93
|
+
filesToRestore: Array<{
|
|
94
|
+
name: string;
|
|
95
|
+
path: string;
|
|
96
|
+
content: string;
|
|
97
|
+
}>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* WU-1665: Centralized rollback entry point driven by pipeline state.
|
|
101
|
+
*
|
|
102
|
+
* Determines the rollback scope from the failedAt state, then executes
|
|
103
|
+
* the appropriate rollback actions. This replaces the scattered rollback
|
|
104
|
+
* logic that was previously duplicated across wu-recovery.ts, wu-transaction.ts,
|
|
105
|
+
* and the CLI orchestrator.
|
|
106
|
+
*
|
|
107
|
+
* Scope determination:
|
|
108
|
+
* - validating/preparing/gating: no-op (nothing was written)
|
|
109
|
+
* - committing: restore files from snapshot or filesToRestore
|
|
110
|
+
* - merging/pushing: restore files + flag branch rollback needed
|
|
111
|
+
* - cleaningUp: flag worktree cleanup only (push already succeeded)
|
|
112
|
+
*
|
|
113
|
+
* @param {PipelineRollbackInput} input - Rollback inputs
|
|
114
|
+
* @returns {RollbackResult} Result with scope metadata and file restoration details
|
|
115
|
+
*/
|
|
116
|
+
export declare function rollbackFromPipelineState(input: PipelineRollbackInput): RollbackResult;
|
|
117
|
+
/**
|
|
118
|
+
* WU-1665: Compute rollback scope from pipeline failedAt state.
|
|
119
|
+
*
|
|
120
|
+
* Pure function: given the same failedAt, always returns the same scope.
|
|
121
|
+
* This is the canonical scope determination used by both
|
|
122
|
+
* StateMachineRecoveryManager.getRollbackScope() and rollbackFromPipelineState().
|
|
123
|
+
*
|
|
124
|
+
* @param {string|null} failedAt - Pipeline state where failure occurred
|
|
125
|
+
* @returns {RollbackScope} Rollback scope
|
|
126
|
+
*/
|
|
127
|
+
export declare function computeRollbackScope(failedAt: string | null): RollbackScope;
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=rollback-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-utils.d.ts","sourceRoot":"","sources":["../src/rollback-utils.ts"],"names":[],"mappings":";AAGA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+BAA+B;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,qFAAqF;IACrF,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;;IAQ5B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS;IAI1B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS;IAI3D;;;OAGG;IACH,IAAI,OAAO,YAEV;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,SAAS,kBActD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,SAAS,kBAcnD;AAMD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sFAAsF;IACtF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,6DAA6D;IAC7D,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,GAAG,cAAc,CA2CtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAkC3E"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
3
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
4
|
+
/**
|
|
5
|
+
* Rollback Utilities for WU Tooling
|
|
6
|
+
*
|
|
7
|
+
* WU-1255: Per-file error tracking for robust rollback operations.
|
|
8
|
+
* Ensures all files are attempted even if some fail, with clear error reporting.
|
|
9
|
+
*
|
|
10
|
+
* WU-1665: Adds rollbackFromPipelineState for state-machine-driven recovery.
|
|
11
|
+
* Centralized entry point that determines rollback actions from pipeline state.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link packages/@lumenflow/cli/src/wu-done.ts} - Consumer (rollbackTransaction function)
|
|
14
|
+
*/
|
|
15
|
+
import { writeFileSync, unlinkSync } from 'node:fs';
|
|
16
|
+
/**
|
|
17
|
+
* Result of a rollback operation.
|
|
18
|
+
* Tracks which files were restored and which failed.
|
|
19
|
+
*
|
|
20
|
+
* WU-1665: Extended with optional scope metadata for state-machine-driven recovery.
|
|
21
|
+
*
|
|
22
|
+
* @class
|
|
23
|
+
*/
|
|
24
|
+
export class RollbackResult {
|
|
25
|
+
/** Names of successfully restored files */
|
|
26
|
+
restored;
|
|
27
|
+
/** Failed file restorations */
|
|
28
|
+
errors;
|
|
29
|
+
/** WU-1665: Rollback scope from pipeline state (set by rollbackFromPipelineState) */
|
|
30
|
+
scope;
|
|
31
|
+
constructor() {
|
|
32
|
+
this.restored = [];
|
|
33
|
+
this.errors = [];
|
|
34
|
+
this.scope = null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Record a successful file restoration.
|
|
38
|
+
* @param {string} name - File identifier (e.g., 'backlog.md')
|
|
39
|
+
*/
|
|
40
|
+
addSuccess(name) {
|
|
41
|
+
this.restored.push(name);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Record a failed file restoration.
|
|
45
|
+
* @param {string} name - File identifier
|
|
46
|
+
* @param {string} path - Full file path
|
|
47
|
+
* @param {string} error - Error message
|
|
48
|
+
*/
|
|
49
|
+
addError(name, path, error) {
|
|
50
|
+
this.errors.push({ name, path, error });
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if all files were restored successfully.
|
|
54
|
+
* @returns {boolean} True if no errors occurred
|
|
55
|
+
*/
|
|
56
|
+
get success() {
|
|
57
|
+
return this.errors.length === 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Restore multiple files with per-file error tracking.
|
|
62
|
+
*
|
|
63
|
+
* Each file is restored independently - if one fails, subsequent files
|
|
64
|
+
* are still attempted. This ensures maximum recovery even in partial
|
|
65
|
+
* failure scenarios.
|
|
66
|
+
*
|
|
67
|
+
* @param {Array<{name: string, path: string, content: string}>} filesToRestore - Files to restore
|
|
68
|
+
* @returns {RollbackResult} Result with restored files and UnsafeAny errors
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* const result = rollbackFiles([
|
|
72
|
+
* { name: 'backlog.md', path: '/path/to/backlog.md', content: 'original content' },
|
|
73
|
+
* { name: 'status.md', path: '/path/to/status.md', content: 'original content' },
|
|
74
|
+
* ]);
|
|
75
|
+
*
|
|
76
|
+
* if (!result.success) {
|
|
77
|
+
* console.error('Rollback had errors:', result.errors);
|
|
78
|
+
* }
|
|
79
|
+
*/
|
|
80
|
+
export function rollbackFiles(filesToRestore) {
|
|
81
|
+
const result = new RollbackResult();
|
|
82
|
+
for (const file of filesToRestore) {
|
|
83
|
+
try {
|
|
84
|
+
writeFileSync(file.path, file.content, { encoding: 'utf-8' });
|
|
85
|
+
result.addSuccess(file.name);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
89
|
+
result.addError(file.name, file.path, message);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Delete multiple files with per-file error tracking.
|
|
96
|
+
*
|
|
97
|
+
* @param {Array<{name: string, path: string}>} filesToDelete - Files to delete
|
|
98
|
+
* @returns {RollbackResult} Result with deleted files and UnsafeAny errors
|
|
99
|
+
*/
|
|
100
|
+
export function deleteFiles(filesToDelete) {
|
|
101
|
+
const result = new RollbackResult();
|
|
102
|
+
for (const file of filesToDelete) {
|
|
103
|
+
try {
|
|
104
|
+
unlinkSync(file.path);
|
|
105
|
+
result.addSuccess(file.name);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
109
|
+
result.addError(file.name, file.path, message);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* WU-1665: Centralized rollback entry point driven by pipeline state.
|
|
116
|
+
*
|
|
117
|
+
* Determines the rollback scope from the failedAt state, then executes
|
|
118
|
+
* the appropriate rollback actions. This replaces the scattered rollback
|
|
119
|
+
* logic that was previously duplicated across wu-recovery.ts, wu-transaction.ts,
|
|
120
|
+
* and the CLI orchestrator.
|
|
121
|
+
*
|
|
122
|
+
* Scope determination:
|
|
123
|
+
* - validating/preparing/gating: no-op (nothing was written)
|
|
124
|
+
* - committing: restore files from snapshot or filesToRestore
|
|
125
|
+
* - merging/pushing: restore files + flag branch rollback needed
|
|
126
|
+
* - cleaningUp: flag worktree cleanup only (push already succeeded)
|
|
127
|
+
*
|
|
128
|
+
* @param {PipelineRollbackInput} input - Rollback inputs
|
|
129
|
+
* @returns {RollbackResult} Result with scope metadata and file restoration details
|
|
130
|
+
*/
|
|
131
|
+
export function rollbackFromPipelineState(input) {
|
|
132
|
+
const { failedAt, snapshot, filesToRestore } = input;
|
|
133
|
+
const result = new RollbackResult();
|
|
134
|
+
// Determine scope from failedAt state (same logic as StateMachineRecoveryManager)
|
|
135
|
+
const scope = computeRollbackScope(failedAt);
|
|
136
|
+
result.scope = scope;
|
|
137
|
+
// If no file restoration needed, return early with scope metadata
|
|
138
|
+
if (!scope.snapshotRestore) {
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
// Restore files using snapshot if available, otherwise fall back to filesToRestore
|
|
142
|
+
if (snapshot && snapshot.size > 0) {
|
|
143
|
+
for (const [filePath, content] of snapshot) {
|
|
144
|
+
try {
|
|
145
|
+
if (content === null) {
|
|
146
|
+
// File didn't exist before - delete if created
|
|
147
|
+
try {
|
|
148
|
+
unlinkSync(filePath);
|
|
149
|
+
result.addSuccess(filePath);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// File might not exist, which is fine
|
|
153
|
+
result.addSuccess(filePath);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
writeFileSync(filePath, content, { encoding: 'utf-8' });
|
|
158
|
+
result.addSuccess(filePath);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
163
|
+
result.addError(filePath, filePath, message);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (filesToRestore.length > 0) {
|
|
168
|
+
// Legacy-compatible file restoration
|
|
169
|
+
const legacyResult = rollbackFiles(filesToRestore);
|
|
170
|
+
result.restored.push(...legacyResult.restored);
|
|
171
|
+
result.errors.push(...legacyResult.errors);
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* WU-1665: Compute rollback scope from pipeline failedAt state.
|
|
177
|
+
*
|
|
178
|
+
* Pure function: given the same failedAt, always returns the same scope.
|
|
179
|
+
* This is the canonical scope determination used by both
|
|
180
|
+
* StateMachineRecoveryManager.getRollbackScope() and rollbackFromPipelineState().
|
|
181
|
+
*
|
|
182
|
+
* @param {string|null} failedAt - Pipeline state where failure occurred
|
|
183
|
+
* @returns {RollbackScope} Rollback scope
|
|
184
|
+
*/
|
|
185
|
+
export function computeRollbackScope(failedAt) {
|
|
186
|
+
// Pre-write states: nothing to roll back
|
|
187
|
+
if (!failedAt || failedAt === 'validating' || failedAt === 'preparing' || failedAt === 'gating') {
|
|
188
|
+
return {
|
|
189
|
+
snapshotRestore: false,
|
|
190
|
+
branchRollback: false,
|
|
191
|
+
worktreeCleanup: false,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
// Post-push state: push already succeeded, only cleanup remains
|
|
195
|
+
if (failedAt === 'cleaningUp') {
|
|
196
|
+
return {
|
|
197
|
+
snapshotRestore: false,
|
|
198
|
+
branchRollback: false,
|
|
199
|
+
worktreeCleanup: true,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
// Commit-phase failures: files written, need snapshot restore
|
|
203
|
+
if (failedAt === 'committing') {
|
|
204
|
+
return {
|
|
205
|
+
snapshotRestore: true,
|
|
206
|
+
branchRollback: false,
|
|
207
|
+
worktreeCleanup: false,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Merge/push phase failures: committed + potentially merged, need full rollback
|
|
211
|
+
return {
|
|
212
|
+
snapshotRestore: true,
|
|
213
|
+
branchRollback: true,
|
|
214
|
+
worktreeCleanup: false,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=rollback-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-utils.js","sourceRoot":"","sources":["../src/rollback-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SandboxAllowlistEntry {
|
|
2
|
+
originalPath: string;
|
|
3
|
+
normalizedPath: string;
|
|
4
|
+
canonicalPath: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SandboxAllowlist {
|
|
7
|
+
projectRoot: string;
|
|
8
|
+
writableRoots: SandboxAllowlistEntry[];
|
|
9
|
+
}
|
|
10
|
+
export interface BuildSandboxAllowlistInput {
|
|
11
|
+
projectRoot: string;
|
|
12
|
+
writableRoots: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare function buildSandboxAllowlist(input: BuildSandboxAllowlistInput): SandboxAllowlist;
|
|
15
|
+
export declare function isWritePathAllowed(allowlist: SandboxAllowlist, targetPath: string): boolean;
|
|
16
|
+
//# sourceMappingURL=sandbox-allowlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-allowlist.d.ts","sourceRoot":"","sources":["../src/sandbox-allowlist.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAkED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,gBAAgB,CAgBzF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAa3F"}
|