@lumenflow/core 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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,161 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Cleanup helpers for wu:done.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { getGitForCwd } from './git-adapter.js';
|
|
8
|
+
import { withCleanupLock } from './cleanup-lock.js';
|
|
9
|
+
import { validateWorktreeOwnership } from './worktree-ownership.js';
|
|
10
|
+
import { getCleanupInstallConfig, CLEANUP_INSTALL_TIMEOUT_MS } from './cleanup-install-config.js';
|
|
11
|
+
import { createValidationError } from './wu-done-errors.js';
|
|
12
|
+
import { defaultWorktreeFrom, defaultBranchFrom, branchExists } from './wu-done-paths.js';
|
|
13
|
+
import { isBranchAlreadyMerged } from './wu-done-branch-utils.js';
|
|
14
|
+
import { BRANCHES, CLAIMED_MODES, EMOJI, LOG_PREFIX, REMOTES } from './wu-constants.js';
|
|
15
|
+
import { exec as execCallback } from 'node:child_process';
|
|
16
|
+
import { promisify } from 'node:util';
|
|
17
|
+
const execAsync = promisify(execCallback);
|
|
18
|
+
/**
|
|
19
|
+
* Run cleanup operations after successful merge
|
|
20
|
+
* Removes worktree and optionally deletes lane branch
|
|
21
|
+
*/
|
|
22
|
+
export async function runCleanup(docMain, args) {
|
|
23
|
+
const wuId = docMain.id;
|
|
24
|
+
const worktreePath = args.worktree || (await defaultWorktreeFrom(docMain));
|
|
25
|
+
// WU-2278: Validate worktree ownership before cleanup
|
|
26
|
+
// Prevents cross-agent worktree deletion
|
|
27
|
+
if (!args.overrideOwner) {
|
|
28
|
+
const ownershipResult = validateWorktreeOwnership({ worktreePath, wuId });
|
|
29
|
+
if (!ownershipResult.valid) {
|
|
30
|
+
throw createValidationError(`${ownershipResult.error}\n\nTo override (DANGEROUS): pnpm wu:done --id ${wuId} --override-owner --reason "explanation"`, { wuId, worktreePath, error: ownershipResult.error });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// WU-2241: Wrap cleanup operations in cleanup lock to prevent concurrent collision
|
|
34
|
+
await withCleanupLock(wuId, async () => {
|
|
35
|
+
await runCleanupInternal(docMain, args, worktreePath);
|
|
36
|
+
}, { worktreePath });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Internal cleanup implementation (runs under cleanup lock)
|
|
40
|
+
*/
|
|
41
|
+
async function runCleanupInternal(docMain, args, worktreePath) {
|
|
42
|
+
// Step 6: Remove worktree (runs even if commit/push failed)
|
|
43
|
+
// Skip removal in PR mode (worktree needed for cleanup after PR merge)
|
|
44
|
+
const claimedMode = docMain.claimed_mode || CLAIMED_MODES.WORKTREE;
|
|
45
|
+
const requiresReview = docMain.requires_review === true;
|
|
46
|
+
// WU-1492: Include branch-pr in PR-mode check (preserves worktree for post-merge cleanup)
|
|
47
|
+
const prModeEnabled = claimedMode === CLAIMED_MODES.WORKTREE_PR ||
|
|
48
|
+
claimedMode === CLAIMED_MODES.BRANCH_PR ||
|
|
49
|
+
args.createPR ||
|
|
50
|
+
requiresReview;
|
|
51
|
+
// WU-2241: Track branch for cleanup after worktree removal
|
|
52
|
+
const laneBranch = await defaultBranchFrom(docMain);
|
|
53
|
+
if (!args.noRemove && !prModeEnabled) {
|
|
54
|
+
if (worktreePath && existsSync(worktreePath)) {
|
|
55
|
+
try {
|
|
56
|
+
await getGitForCwd().worktreeRemove(worktreePath, { force: true });
|
|
57
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Removed worktree ${worktreePath}`);
|
|
58
|
+
// WU-2241: Delete branch AFTER worktree removal (correct ordering)
|
|
59
|
+
// This ensures we don't leave orphan branches when worktree is removed
|
|
60
|
+
if (laneBranch && (await branchExists(laneBranch))) {
|
|
61
|
+
await deleteBranchWithCleanup(laneBranch);
|
|
62
|
+
}
|
|
63
|
+
// WU-1743: Re-run pnpm install to fix broken symlinks
|
|
64
|
+
// When pnpm install runs in a worktree, it may create symlinks with absolute paths
|
|
65
|
+
// to the worktree. After worktree removal, these symlinks break.
|
|
66
|
+
// Re-running pnpm install regenerates them with correct paths.
|
|
67
|
+
// WU-2278: Use timeout and CI=true to prevent hangs
|
|
68
|
+
console.log(`${LOG_PREFIX.DONE} Reinstalling dependencies to fix symlinks...`);
|
|
69
|
+
try {
|
|
70
|
+
const installConfig = getCleanupInstallConfig();
|
|
71
|
+
await execAsync(installConfig.command, {
|
|
72
|
+
timeout: installConfig.timeout,
|
|
73
|
+
env: installConfig.env,
|
|
74
|
+
});
|
|
75
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Dependencies reinstalled`);
|
|
76
|
+
}
|
|
77
|
+
catch (installErr) {
|
|
78
|
+
// Non-fatal: warn but don't fail wu:done
|
|
79
|
+
// WU-2278: Include timeout info in error message
|
|
80
|
+
const isTimeout = installErr.killed || installErr.signal === 'SIGTERM';
|
|
81
|
+
const errorMsg = isTimeout
|
|
82
|
+
? `pnpm install timed out after ${CLEANUP_INSTALL_TIMEOUT_MS / 1000}s`
|
|
83
|
+
: `pnpm install failed: ${installErr.message}`;
|
|
84
|
+
console.warn(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} ${errorMsg}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
console.warn(`${LOG_PREFIX.DONE} Could not remove worktree ${worktreePath}: ${e.message}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log(`${LOG_PREFIX.DONE} Worktree not found; skipping removal`);
|
|
93
|
+
// WU-2241: Still cleanup branch if worktree doesn't exist (orphan branch scenario)
|
|
94
|
+
if (!prModeEnabled && laneBranch && (await branchExists(laneBranch))) {
|
|
95
|
+
await deleteBranchWithCleanup(laneBranch);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (prModeEnabled) {
|
|
100
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Worktree preserved (PR mode - run wu:cleanup after PR merge)`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* WU-2241: Delete both local and remote branch with proper error handling
|
|
105
|
+
*/
|
|
106
|
+
async function deleteBranchWithCleanup(laneBranch) {
|
|
107
|
+
const gitAdapter = getGitForCwd();
|
|
108
|
+
// WU-1440: Check if branch is merged before deletion
|
|
109
|
+
// Use -D (force) when confirmed merged to handle rebased branches
|
|
110
|
+
const isMerged = await isBranchAlreadyMerged(laneBranch);
|
|
111
|
+
const isMergedIntoRemoteMain = async () => {
|
|
112
|
+
try {
|
|
113
|
+
await gitAdapter.fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
|
|
114
|
+
await gitAdapter.raw([
|
|
115
|
+
'merge-base',
|
|
116
|
+
'--is-ancestor',
|
|
117
|
+
laneBranch,
|
|
118
|
+
`${REMOTES.ORIGIN}/${BRANCHES.MAIN}`,
|
|
119
|
+
]);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
try {
|
|
127
|
+
await gitAdapter.deleteBranch(laneBranch, { force: isMerged });
|
|
128
|
+
const modeIndicator = isMerged ? ' (force: merged)' : '';
|
|
129
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Deleted local branch ${laneBranch}${modeIndicator}`);
|
|
130
|
+
// Also delete remote if it exists
|
|
131
|
+
try {
|
|
132
|
+
await gitAdapter.raw(['push', REMOTES.ORIGIN, '--delete', laneBranch]);
|
|
133
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Deleted remote branch ${laneBranch}`);
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
// WU-2241: Non-fatal - remote branch may already be deleted or never existed
|
|
137
|
+
console.warn(`${LOG_PREFIX.DONE} Could not delete remote branch: ${e.message}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
142
|
+
// WU-1657: If local merge state lags and branch reports "not fully merged",
|
|
143
|
+
// check against origin/main and force-delete when remote already contains the branch.
|
|
144
|
+
if (/not fully merged/i.test(errorMessage)) {
|
|
145
|
+
const mergedOnRemoteMain = await isMergedIntoRemoteMain();
|
|
146
|
+
if (mergedOnRemoteMain) {
|
|
147
|
+
try {
|
|
148
|
+
await gitAdapter.deleteBranch(laneBranch, { force: true });
|
|
149
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Deleted local branch ${laneBranch} (force: merged on origin/main)`);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
catch (forceErr) {
|
|
153
|
+
const forceMessage = forceErr instanceof Error ? forceErr.message : String(forceErr);
|
|
154
|
+
console.warn(`${LOG_PREFIX.DONE} Could not force-delete branch ${laneBranch} after remote-merge verification: ${forceMessage}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
console.warn(`${LOG_PREFIX.DONE} Could not delete branch ${laneBranch}: ${e.message}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=wu-done-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wu-done-cleanup.js","sourceRoot":"","sources":["../src/wu-done-cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { WUStateStore } from './wu-state-store.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch wu-events.jsonl content from origin/main using git show.
|
|
4
|
+
*
|
|
5
|
+
* This allows us to read the state from main without switching branches
|
|
6
|
+
* or having access to the main checkout directory.
|
|
7
|
+
*
|
|
8
|
+
* @returns Events content from origin/main, or null if not available
|
|
9
|
+
*/
|
|
10
|
+
export declare function fetchMainEventsContent(): Promise<string | null>;
|
|
11
|
+
/**
|
|
12
|
+
* Merge state stores from worktree and main.
|
|
13
|
+
*
|
|
14
|
+
* This creates a new WUStateStore instance that contains the merged
|
|
15
|
+
* state from both sources, preserving all concurrent modifications.
|
|
16
|
+
*
|
|
17
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
18
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
19
|
+
* @returns A WUStateStore with merged state
|
|
20
|
+
*/
|
|
21
|
+
export declare function mergeStateStores(worktreeStateDir: string, mainStateDir: string): Promise<WUStateStore>;
|
|
22
|
+
/**
|
|
23
|
+
* Compute backlog content with merged state from worktree and main.
|
|
24
|
+
*
|
|
25
|
+
* This is a drop-in replacement for computeBacklogContent that handles
|
|
26
|
+
* concurrent modifications by merging state stores before generation.
|
|
27
|
+
*
|
|
28
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
29
|
+
* @param wuId - WU ID being completed
|
|
30
|
+
* @param title - WU title
|
|
31
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
32
|
+
* @returns Merged backlog.md content
|
|
33
|
+
*/
|
|
34
|
+
export declare function computeBacklogContentWithMerge(backlogPath: string, wuId: string, title: string, mainStateDir: string): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the merged events content for wu-events.jsonl
|
|
37
|
+
*
|
|
38
|
+
* This returns the content that should be written to wu-events.jsonl
|
|
39
|
+
* after merging worktree and main state stores.
|
|
40
|
+
*
|
|
41
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
42
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
43
|
+
* @param wuId - WU ID being completed (to add complete event)
|
|
44
|
+
* @returns JSONL content for the merged events file
|
|
45
|
+
*/
|
|
46
|
+
export declare function getMergedEventsContent(worktreeStateDir: string, mainStateDir: string, wuId: string): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Merge worktree state with origin/main state using git show.
|
|
49
|
+
*
|
|
50
|
+
* This function:
|
|
51
|
+
* 1. Fetches the wu-events.jsonl content from origin/main using git show
|
|
52
|
+
* 2. Parses events from both worktree and main
|
|
53
|
+
* 3. Merges them with deduplication
|
|
54
|
+
* 4. Returns a store with the merged state
|
|
55
|
+
*
|
|
56
|
+
* This is the integration point for wu:done to preserve concurrent changes.
|
|
57
|
+
*
|
|
58
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
59
|
+
* @returns A WUStateStore with merged state, or just worktree state if main unavailable
|
|
60
|
+
*/
|
|
61
|
+
export declare function mergeWithMainState(worktreeStateDir: string): Promise<WUStateStore>;
|
|
62
|
+
/**
|
|
63
|
+
* Compute backlog content with merged state from origin/main.
|
|
64
|
+
*
|
|
65
|
+
* This is the main integration function for wu:done. It:
|
|
66
|
+
* 1. Loads the worktree's state
|
|
67
|
+
* 2. Fetches and merges state from origin/main
|
|
68
|
+
* 3. Applies the complete event for the WU being done
|
|
69
|
+
* 4. Generates backlog from the merged state
|
|
70
|
+
*
|
|
71
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
72
|
+
* @param wuId - WU ID being completed
|
|
73
|
+
* @returns Merged backlog.md content
|
|
74
|
+
*/
|
|
75
|
+
export declare function computeBacklogContentWithMainMerge(backlogPath: string, wuId: string): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Compute status.md content with merged state from origin/main.
|
|
78
|
+
*
|
|
79
|
+
* WU-1319: This function generates status.md from the merged state store
|
|
80
|
+
* instead of editing the local file snapshot. This prevents reintroducing
|
|
81
|
+
* stale "In Progress" entries when concurrent WUs complete on main.
|
|
82
|
+
*
|
|
83
|
+
* @param backlogPath - Path to backlog.md in the worktree (used to find state dir)
|
|
84
|
+
* @param wuId - WU ID being completed
|
|
85
|
+
* @param mainStateDir - Optional explicit path to main state dir (for testing)
|
|
86
|
+
* @returns Merged status.md content
|
|
87
|
+
*/
|
|
88
|
+
export declare function computeStatusContentWithMainMerge(backlogPath: string, wuId: string, mainStateDir?: string): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Compute wu-events.jsonl content with merged state from origin/main.
|
|
91
|
+
*
|
|
92
|
+
* Returns the JSONL content that should be written to wu-events.jsonl,
|
|
93
|
+
* containing merged events from both worktree and main, plus the completion event.
|
|
94
|
+
*
|
|
95
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
96
|
+
* @param wuId - WU ID being completed
|
|
97
|
+
* @returns Object with events path and merged content, or null if no update needed
|
|
98
|
+
*/
|
|
99
|
+
export declare function computeWUEventsContentWithMainMerge(backlogPath: string, wuId: string): Promise<{
|
|
100
|
+
eventsPath: string;
|
|
101
|
+
content: string;
|
|
102
|
+
} | null>;
|
|
103
|
+
//# sourceMappingURL=wu-done-concurrent-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wu-done-concurrent-merge.d.ts","sourceRoot":"","sources":["../src/wu-done-concurrent-merge.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAexE;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBrE;AA8FD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyBxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kCAAkC,CACtD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iCAAiC,CACrD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,mCAAmC,CACvD,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA2CzD"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* WU-1145: Concurrent backlog merge utilities
|
|
5
|
+
*
|
|
6
|
+
* This module provides utilities for merging state stores from worktree
|
|
7
|
+
* and main branches to prevent loss of concurrent WU completions.
|
|
8
|
+
*
|
|
9
|
+
* Problem: When wu:done regenerates backlog.md, it only uses the worktree's
|
|
10
|
+
* state store, losing UnsafeAny WUs that were completed on main since the worktree
|
|
11
|
+
* was created.
|
|
12
|
+
*
|
|
13
|
+
* Solution: Before regenerating backlog.md, merge events from both state
|
|
14
|
+
* stores using event deduplication by identity (type, wuId, timestamp).
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { WUStateStore, WU_EVENTS_FILE_NAME } from './wu-state-store.js';
|
|
19
|
+
import { validateWUEvent } from './wu-state-schema.js';
|
|
20
|
+
import { generateBacklog, generateStatus } from './backlog-generator.js';
|
|
21
|
+
import { getStateStoreDirFromBacklog } from './wu-paths.js';
|
|
22
|
+
import { getGitForCwd } from './git-adapter.js';
|
|
23
|
+
import { REMOTES, BRANCHES, LUMENFLOW_PATHS, WU_STATUS } from './wu-constants.js';
|
|
24
|
+
/**
|
|
25
|
+
* Creates a unique key for an event to detect duplicates.
|
|
26
|
+
* Events are considered identical if they have the same type, wuId, and timestamp.
|
|
27
|
+
*/
|
|
28
|
+
function getEventKey(event) {
|
|
29
|
+
return `${event.type}:${event.wuId}:${event.timestamp}`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fetch wu-events.jsonl content from origin/main using git show.
|
|
33
|
+
*
|
|
34
|
+
* This allows us to read the state from main without switching branches
|
|
35
|
+
* or having access to the main checkout directory.
|
|
36
|
+
*
|
|
37
|
+
* @returns Events content from origin/main, or null if not available
|
|
38
|
+
*/
|
|
39
|
+
export async function fetchMainEventsContent() {
|
|
40
|
+
try {
|
|
41
|
+
const git = getGitForCwd();
|
|
42
|
+
// First, fetch to ensure we have the latest main
|
|
43
|
+
try {
|
|
44
|
+
await git.fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// If fetch fails (e.g., offline), continue with cached version
|
|
48
|
+
console.warn('[wu-done] Warning: Could not fetch latest main, using cached version');
|
|
49
|
+
}
|
|
50
|
+
// Try to read wu-events.jsonl from origin/main
|
|
51
|
+
const eventsPath = `${LUMENFLOW_PATHS.STATE_DIR}/${WU_EVENTS_FILE_NAME}`;
|
|
52
|
+
const content = await git.raw(['show', `${REMOTES.ORIGIN}/${BRANCHES.MAIN}:${eventsPath}`]);
|
|
53
|
+
return content;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// File may not exist on main (e.g., new repo or first WU)
|
|
57
|
+
// Or we may not be in a git repo
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parse wu-events.jsonl content into validated events
|
|
63
|
+
*/
|
|
64
|
+
function parseEventsFile(content, sourceLabel) {
|
|
65
|
+
const events = [];
|
|
66
|
+
const lines = content
|
|
67
|
+
.split('\n')
|
|
68
|
+
.map((line) => line.trim())
|
|
69
|
+
.filter(Boolean);
|
|
70
|
+
for (let i = 0; i < lines.length; i++) {
|
|
71
|
+
const line = lines[i];
|
|
72
|
+
if (!line)
|
|
73
|
+
continue;
|
|
74
|
+
let parsed;
|
|
75
|
+
try {
|
|
76
|
+
parsed = JSON.parse(line);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.warn(`[wu-done] Warning: Malformed JSON in ${sourceLabel} line ${i + 1}, skipping`);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const validation = validateWUEvent(parsed);
|
|
83
|
+
if (!validation.success) {
|
|
84
|
+
console.warn(`[wu-done] Warning: Invalid event in ${sourceLabel} line ${i + 1}, skipping`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
events.push(validation.data);
|
|
88
|
+
}
|
|
89
|
+
return events;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load events from a state directory
|
|
93
|
+
*/
|
|
94
|
+
function loadEventsFromDir(stateDir, label) {
|
|
95
|
+
const eventsPath = join(stateDir, WU_EVENTS_FILE_NAME);
|
|
96
|
+
if (!existsSync(eventsPath)) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
const content = readFileSync(eventsPath, { encoding: 'utf-8' });
|
|
100
|
+
return parseEventsFile(content, label);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Merge events from two sources, preserving order and deduplicating.
|
|
104
|
+
*
|
|
105
|
+
* The merge strategy:
|
|
106
|
+
* 1. Start with all events from main (the "base" timeline)
|
|
107
|
+
* 2. Add UnsafeAny events from worktree that aren't in main
|
|
108
|
+
*
|
|
109
|
+
* This ensures:
|
|
110
|
+
* - Concurrent completions on main are preserved
|
|
111
|
+
* - The worktree's claim/in_progress events are included
|
|
112
|
+
* - No duplicate events
|
|
113
|
+
*/
|
|
114
|
+
function mergeEvents(mainEvents, worktreeEvents) {
|
|
115
|
+
const seen = new Set();
|
|
116
|
+
const merged = [];
|
|
117
|
+
// First, add all main events
|
|
118
|
+
for (const event of mainEvents) {
|
|
119
|
+
const key = getEventKey(event);
|
|
120
|
+
if (!seen.has(key)) {
|
|
121
|
+
seen.add(key);
|
|
122
|
+
merged.push(event);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Then add worktree events that aren't in main
|
|
126
|
+
for (const event of worktreeEvents) {
|
|
127
|
+
const key = getEventKey(event);
|
|
128
|
+
if (!seen.has(key)) {
|
|
129
|
+
seen.add(key);
|
|
130
|
+
merged.push(event);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Sort by timestamp to ensure chronological order
|
|
134
|
+
merged.sort((a, b) => {
|
|
135
|
+
const timeA = new Date(a.timestamp).getTime();
|
|
136
|
+
const timeB = new Date(b.timestamp).getTime();
|
|
137
|
+
return timeA - timeB;
|
|
138
|
+
});
|
|
139
|
+
return merged;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Merge state stores from worktree and main.
|
|
143
|
+
*
|
|
144
|
+
* This creates a new WUStateStore instance that contains the merged
|
|
145
|
+
* state from both sources, preserving all concurrent modifications.
|
|
146
|
+
*
|
|
147
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
148
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
149
|
+
* @returns A WUStateStore with merged state
|
|
150
|
+
*/
|
|
151
|
+
export async function mergeStateStores(worktreeStateDir, mainStateDir) {
|
|
152
|
+
// Load events from both sources
|
|
153
|
+
const worktreeEvents = loadEventsFromDir(worktreeStateDir, 'worktree');
|
|
154
|
+
const mainEvents = loadEventsFromDir(mainStateDir, 'main');
|
|
155
|
+
// Merge events
|
|
156
|
+
const mergedEvents = mergeEvents(mainEvents, worktreeEvents);
|
|
157
|
+
// Create a new store and replay merged events
|
|
158
|
+
const store = new WUStateStore(worktreeStateDir);
|
|
159
|
+
for (const event of mergedEvents) {
|
|
160
|
+
store.applyEvent(event);
|
|
161
|
+
}
|
|
162
|
+
return store;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Compute backlog content with merged state from worktree and main.
|
|
166
|
+
*
|
|
167
|
+
* This is a drop-in replacement for computeBacklogContent that handles
|
|
168
|
+
* concurrent modifications by merging state stores before generation.
|
|
169
|
+
*
|
|
170
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
171
|
+
* @param wuId - WU ID being completed
|
|
172
|
+
* @param title - WU title
|
|
173
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
174
|
+
* @returns Merged backlog.md content
|
|
175
|
+
*/
|
|
176
|
+
export async function computeBacklogContentWithMerge(backlogPath, wuId, title, mainStateDir) {
|
|
177
|
+
const worktreeStateDir = getStateStoreDirFromBacklog(backlogPath);
|
|
178
|
+
// Merge state stores
|
|
179
|
+
const mergedStore = await mergeStateStores(worktreeStateDir, mainStateDir);
|
|
180
|
+
// Check if the WU is already done in the merged state
|
|
181
|
+
const currentState = mergedStore.getWUState(wuId);
|
|
182
|
+
if (!currentState) {
|
|
183
|
+
throw new Error(`WU ${wuId} not found in merged state store`);
|
|
184
|
+
}
|
|
185
|
+
// If not already done, create and apply the complete event
|
|
186
|
+
if (currentState.status !== WU_STATUS.DONE) {
|
|
187
|
+
const completeEvent = mergedStore.createCompleteEvent(wuId);
|
|
188
|
+
mergedStore.applyEvent(completeEvent);
|
|
189
|
+
}
|
|
190
|
+
// Generate backlog from merged state
|
|
191
|
+
return generateBacklog(mergedStore);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get the merged events content for wu-events.jsonl
|
|
195
|
+
*
|
|
196
|
+
* This returns the content that should be written to wu-events.jsonl
|
|
197
|
+
* after merging worktree and main state stores.
|
|
198
|
+
*
|
|
199
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
200
|
+
* @param mainStateDir - Path to main's .lumenflow/state directory
|
|
201
|
+
* @param wuId - WU ID being completed (to add complete event)
|
|
202
|
+
* @returns JSONL content for the merged events file
|
|
203
|
+
*/
|
|
204
|
+
export async function getMergedEventsContent(worktreeStateDir, mainStateDir, wuId) {
|
|
205
|
+
// Load events from both sources
|
|
206
|
+
const worktreeEvents = loadEventsFromDir(worktreeStateDir, 'worktree');
|
|
207
|
+
const mainEvents = loadEventsFromDir(mainStateDir, 'main');
|
|
208
|
+
// Merge events
|
|
209
|
+
const mergedEvents = mergeEvents(mainEvents, worktreeEvents);
|
|
210
|
+
// Check if we need to add a complete event
|
|
211
|
+
const lastEventForWU = [...mergedEvents].reverse().find((e) => e.wuId === wuId);
|
|
212
|
+
if (!lastEventForWU || lastEventForWU.type !== 'complete') {
|
|
213
|
+
// Create a temporary store to generate the complete event
|
|
214
|
+
const tempStore = new WUStateStore(worktreeStateDir);
|
|
215
|
+
for (const event of mergedEvents) {
|
|
216
|
+
tempStore.applyEvent(event);
|
|
217
|
+
}
|
|
218
|
+
const currentState = tempStore.getWUState(wuId);
|
|
219
|
+
if (currentState && currentState.status === WU_STATUS.IN_PROGRESS) {
|
|
220
|
+
const completeEvent = tempStore.createCompleteEvent(wuId);
|
|
221
|
+
mergedEvents.push(completeEvent);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Convert to JSONL
|
|
225
|
+
return mergedEvents.map((event) => JSON.stringify(event)).join('\n') + '\n';
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Merge worktree state with origin/main state using git show.
|
|
229
|
+
*
|
|
230
|
+
* This function:
|
|
231
|
+
* 1. Fetches the wu-events.jsonl content from origin/main using git show
|
|
232
|
+
* 2. Parses events from both worktree and main
|
|
233
|
+
* 3. Merges them with deduplication
|
|
234
|
+
* 4. Returns a store with the merged state
|
|
235
|
+
*
|
|
236
|
+
* This is the integration point for wu:done to preserve concurrent changes.
|
|
237
|
+
*
|
|
238
|
+
* @param worktreeStateDir - Path to worktree's .lumenflow/state directory
|
|
239
|
+
* @returns A WUStateStore with merged state, or just worktree state if main unavailable
|
|
240
|
+
*/
|
|
241
|
+
export async function mergeWithMainState(worktreeStateDir) {
|
|
242
|
+
// Load worktree events
|
|
243
|
+
const worktreeEvents = loadEventsFromDir(worktreeStateDir, 'worktree');
|
|
244
|
+
// Try to fetch main events via git show
|
|
245
|
+
const mainContent = await fetchMainEventsContent();
|
|
246
|
+
const mainEvents = mainContent ? parseEventsFile(mainContent, 'origin/main') : [];
|
|
247
|
+
if (mainEvents.length > 0) {
|
|
248
|
+
console.log(`[wu-done] Merging state: ${worktreeEvents.length} worktree events + ${mainEvents.length} main events`);
|
|
249
|
+
}
|
|
250
|
+
// Merge events
|
|
251
|
+
const mergedEvents = mergeEvents(mainEvents, worktreeEvents);
|
|
252
|
+
// Create a new store and replay merged events
|
|
253
|
+
const store = new WUStateStore(worktreeStateDir);
|
|
254
|
+
for (const event of mergedEvents) {
|
|
255
|
+
store.applyEvent(event);
|
|
256
|
+
}
|
|
257
|
+
return store;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Compute backlog content with merged state from origin/main.
|
|
261
|
+
*
|
|
262
|
+
* This is the main integration function for wu:done. It:
|
|
263
|
+
* 1. Loads the worktree's state
|
|
264
|
+
* 2. Fetches and merges state from origin/main
|
|
265
|
+
* 3. Applies the complete event for the WU being done
|
|
266
|
+
* 4. Generates backlog from the merged state
|
|
267
|
+
*
|
|
268
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
269
|
+
* @param wuId - WU ID being completed
|
|
270
|
+
* @returns Merged backlog.md content
|
|
271
|
+
*/
|
|
272
|
+
export async function computeBacklogContentWithMainMerge(backlogPath, wuId) {
|
|
273
|
+
const worktreeStateDir = getStateStoreDirFromBacklog(backlogPath);
|
|
274
|
+
// Merge with main state
|
|
275
|
+
const mergedStore = await mergeWithMainState(worktreeStateDir);
|
|
276
|
+
// Check if the WU exists in the merged state
|
|
277
|
+
const currentState = mergedStore.getWUState(wuId);
|
|
278
|
+
if (!currentState) {
|
|
279
|
+
throw new Error(`WU ${wuId} not found in merged state store. ` +
|
|
280
|
+
`This may indicate the WU was never properly claimed.`);
|
|
281
|
+
}
|
|
282
|
+
// If not already done, create and apply the complete event
|
|
283
|
+
if (currentState.status !== WU_STATUS.DONE) {
|
|
284
|
+
if (currentState.status !== WU_STATUS.IN_PROGRESS) {
|
|
285
|
+
throw new Error(`WU ${wuId} is in status "${currentState.status}", expected "${WU_STATUS.IN_PROGRESS}"`);
|
|
286
|
+
}
|
|
287
|
+
const completeEvent = mergedStore.createCompleteEvent(wuId);
|
|
288
|
+
mergedStore.applyEvent(completeEvent);
|
|
289
|
+
}
|
|
290
|
+
// Generate backlog from merged state
|
|
291
|
+
return generateBacklog(mergedStore);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Compute status.md content with merged state from origin/main.
|
|
295
|
+
*
|
|
296
|
+
* WU-1319: This function generates status.md from the merged state store
|
|
297
|
+
* instead of editing the local file snapshot. This prevents reintroducing
|
|
298
|
+
* stale "In Progress" entries when concurrent WUs complete on main.
|
|
299
|
+
*
|
|
300
|
+
* @param backlogPath - Path to backlog.md in the worktree (used to find state dir)
|
|
301
|
+
* @param wuId - WU ID being completed
|
|
302
|
+
* @param mainStateDir - Optional explicit path to main state dir (for testing)
|
|
303
|
+
* @returns Merged status.md content
|
|
304
|
+
*/
|
|
305
|
+
export async function computeStatusContentWithMainMerge(backlogPath, wuId, mainStateDir) {
|
|
306
|
+
const worktreeStateDir = getStateStoreDirFromBacklog(backlogPath);
|
|
307
|
+
let mergedStore;
|
|
308
|
+
if (mainStateDir) {
|
|
309
|
+
// Direct merge with provided main state dir (for testing)
|
|
310
|
+
mergedStore = await mergeStateStores(worktreeStateDir, mainStateDir);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
// Merge with main state via git show
|
|
314
|
+
mergedStore = await mergeWithMainState(worktreeStateDir);
|
|
315
|
+
}
|
|
316
|
+
// Check if the WU exists in the merged state
|
|
317
|
+
const currentState = mergedStore.getWUState(wuId);
|
|
318
|
+
if (!currentState) {
|
|
319
|
+
throw new Error(`WU ${wuId} not found in merged state store. ` +
|
|
320
|
+
`This may indicate the WU was never properly claimed.`);
|
|
321
|
+
}
|
|
322
|
+
// If not already done, create and apply the complete event
|
|
323
|
+
if (currentState.status !== WU_STATUS.DONE) {
|
|
324
|
+
if (currentState.status !== WU_STATUS.IN_PROGRESS) {
|
|
325
|
+
throw new Error(`WU ${wuId} is in status "${currentState.status}", expected "${WU_STATUS.IN_PROGRESS}"`);
|
|
326
|
+
}
|
|
327
|
+
const completeEvent = mergedStore.createCompleteEvent(wuId);
|
|
328
|
+
mergedStore.applyEvent(completeEvent);
|
|
329
|
+
}
|
|
330
|
+
// Generate status from merged state
|
|
331
|
+
return generateStatus(mergedStore);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Compute wu-events.jsonl content with merged state from origin/main.
|
|
335
|
+
*
|
|
336
|
+
* Returns the JSONL content that should be written to wu-events.jsonl,
|
|
337
|
+
* containing merged events from both worktree and main, plus the completion event.
|
|
338
|
+
*
|
|
339
|
+
* @param backlogPath - Path to backlog.md in the worktree
|
|
340
|
+
* @param wuId - WU ID being completed
|
|
341
|
+
* @returns Object with events path and merged content, or null if no update needed
|
|
342
|
+
*/
|
|
343
|
+
export async function computeWUEventsContentWithMainMerge(backlogPath, wuId) {
|
|
344
|
+
const worktreeStateDir = getStateStoreDirFromBacklog(backlogPath);
|
|
345
|
+
// Load worktree events
|
|
346
|
+
const worktreeEvents = loadEventsFromDir(worktreeStateDir, 'worktree');
|
|
347
|
+
// Try to fetch main events via git show
|
|
348
|
+
const mainContent = await fetchMainEventsContent();
|
|
349
|
+
const mainEvents = mainContent ? parseEventsFile(mainContent, 'origin/main') : [];
|
|
350
|
+
// Merge events
|
|
351
|
+
const mergedEvents = mergeEvents(mainEvents, worktreeEvents);
|
|
352
|
+
// Check if WU is already done
|
|
353
|
+
const tempStore = new WUStateStore(worktreeStateDir);
|
|
354
|
+
for (const event of mergedEvents) {
|
|
355
|
+
tempStore.applyEvent(event);
|
|
356
|
+
}
|
|
357
|
+
const currentState = tempStore.getWUState(wuId);
|
|
358
|
+
if (!currentState) {
|
|
359
|
+
throw new Error(`WU ${wuId} not found in merged state store`);
|
|
360
|
+
}
|
|
361
|
+
if (currentState.status === WU_STATUS.DONE) {
|
|
362
|
+
// Already done, no update needed
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
if (currentState.status !== WU_STATUS.IN_PROGRESS) {
|
|
366
|
+
throw new Error(`WU ${wuId} is in status "${currentState.status}", expected "${WU_STATUS.IN_PROGRESS}"`);
|
|
367
|
+
}
|
|
368
|
+
// Add complete event
|
|
369
|
+
const completeEvent = tempStore.createCompleteEvent(wuId);
|
|
370
|
+
mergedEvents.push(completeEvent);
|
|
371
|
+
const eventsPath = join(worktreeStateDir, WU_EVENTS_FILE_NAME);
|
|
372
|
+
const content = mergedEvents.map((event) => JSON.stringify(event)).join('\n') + '\n';
|
|
373
|
+
return { eventsPath, content };
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=wu-done-concurrent-merge.js.map
|