@lumenflow/core 3.1.2 → 3.1.3
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/README.md +16 -16
- package/dist/cli/is-agent-branch.js +31 -10
- package/dist/index.js +3 -0
- package/package.json +5 -2
- package/dist/active-wu-detector.d.ts +0 -25
- package/dist/active-wu-detector.d.ts.map +0 -1
- package/dist/active-wu-detector.js +0 -109
- package/dist/active-wu-detector.js.map +0 -1
- package/dist/adapters/context-adapters.d.ts +0 -101
- package/dist/adapters/context-adapters.d.ts.map +0 -1
- package/dist/adapters/context-adapters.js +0 -98
- package/dist/adapters/context-adapters.js.map +0 -1
- package/dist/adapters/filesystem-metrics.adapter.d.ts +0 -91
- package/dist/adapters/filesystem-metrics.adapter.d.ts.map +0 -1
- package/dist/adapters/filesystem-metrics.adapter.js +0 -530
- package/dist/adapters/filesystem-metrics.adapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -15
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -21
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/mock-dashboard-renderer.adapter.d.ts +0 -86
- package/dist/adapters/mock-dashboard-renderer.adapter.d.ts.map +0 -1
- package/dist/adapters/mock-dashboard-renderer.adapter.js +0 -93
- package/dist/adapters/mock-dashboard-renderer.adapter.js.map +0 -1
- package/dist/adapters/recovery-adapters.d.ts +0 -41
- package/dist/adapters/recovery-adapters.d.ts.map +0 -1
- package/dist/adapters/recovery-adapters.js +0 -32
- package/dist/adapters/recovery-adapters.js.map +0 -1
- package/dist/adapters/terminal-renderer.adapter.d.ts +0 -86
- package/dist/adapters/terminal-renderer.adapter.d.ts.map +0 -1
- package/dist/adapters/terminal-renderer.adapter.js +0 -342
- package/dist/adapters/terminal-renderer.adapter.js.map +0 -1
- package/dist/adapters/validation-adapters.d.ts +0 -53
- package/dist/adapters/validation-adapters.d.ts.map +0 -1
- package/dist/adapters/validation-adapters.js +0 -48
- package/dist/adapters/validation-adapters.js.map +0 -1
- package/dist/agent-patterns-registry.d.ts +0 -141
- package/dist/agent-patterns-registry.d.ts.map +0 -1
- package/dist/agent-patterns-registry.js +0 -319
- package/dist/agent-patterns-registry.js.map +0 -1
- package/dist/arg-parser.d.ts +0 -94
- package/dist/arg-parser.d.ts.map +0 -1
- package/dist/arg-parser.js +0 -774
- package/dist/arg-parser.js.map +0 -1
- package/dist/atomic-merge.d.ts +0 -21
- package/dist/atomic-merge.d.ts.map +0 -1
- package/dist/atomic-merge.js +0 -87
- package/dist/atomic-merge.js.map +0 -1
- package/dist/backlog-editor.d.ts +0 -103
- package/dist/backlog-editor.d.ts.map +0 -1
- package/dist/backlog-editor.js +0 -158
- package/dist/backlog-editor.js.map +0 -1
- package/dist/backlog-generator.d.ts +0 -90
- package/dist/backlog-generator.d.ts.map +0 -1
- package/dist/backlog-generator.js +0 -536
- package/dist/backlog-generator.js.map +0 -1
- package/dist/backlog-parser.d.ts +0 -46
- package/dist/backlog-parser.d.ts.map +0 -1
- package/dist/backlog-parser.js +0 -105
- package/dist/backlog-parser.js.map +0 -1
- package/dist/backlog-sync-validator.d.ts +0 -88
- package/dist/backlog-sync-validator.d.ts.map +0 -1
- package/dist/backlog-sync-validator.js +0 -324
- package/dist/backlog-sync-validator.js.map +0 -1
- package/dist/beacon-migration.d.ts +0 -56
- package/dist/beacon-migration.js +0 -101
- package/dist/branch-check.d.ts +0 -63
- package/dist/branch-check.d.ts.map +0 -1
- package/dist/branch-check.js +0 -197
- package/dist/branch-check.js.map +0 -1
- package/dist/branch-drift.d.ts +0 -24
- package/dist/branch-drift.d.ts.map +0 -1
- package/dist/branch-drift.js +0 -54
- package/dist/branch-drift.js.map +0 -1
- package/dist/cleanup-install-config.d.ts +0 -24
- package/dist/cleanup-install-config.d.ts.map +0 -1
- package/dist/cleanup-install-config.js +0 -40
- package/dist/cleanup-install-config.js.map +0 -1
- package/dist/cleanup-lock.d.ts +0 -125
- package/dist/cleanup-lock.d.ts.map +0 -1
- package/dist/cleanup-lock.js +0 -325
- package/dist/cleanup-lock.js.map +0 -1
- package/dist/cli/is-agent-branch.d.ts +0 -15
- package/dist/cli/is-agent-branch.d.ts.map +0 -1
- package/dist/cli/is-agent-branch.js.map +0 -1
- package/dist/cloud-detect.d.ts +0 -145
- package/dist/cloud-detect.d.ts.map +0 -1
- package/dist/cloud-detect.js +0 -116
- package/dist/cloud-detect.js.map +0 -1
- package/dist/code-path-validator.d.ts +0 -147
- package/dist/code-path-validator.d.ts.map +0 -1
- package/dist/code-path-validator.js +0 -551
- package/dist/code-path-validator.js.map +0 -1
- package/dist/code-paths-overlap.d.ts +0 -50
- package/dist/code-paths-overlap.d.ts.map +0 -1
- package/dist/code-paths-overlap.js +0 -248
- package/dist/code-paths-overlap.js.map +0 -1
- package/dist/color-support.d.ts +0 -21
- package/dist/color-support.d.ts.map +0 -1
- package/dist/color-support.js +0 -67
- package/dist/color-support.js.map +0 -1
- package/dist/commands-logger.d.ts +0 -71
- package/dist/commands-logger.d.ts.map +0 -1
- package/dist/commands-logger.js +0 -256
- package/dist/commands-logger.js.map +0 -1
- package/dist/commit-message-utils.d.ts +0 -26
- package/dist/commit-message-utils.d.ts.map +0 -1
- package/dist/commit-message-utils.js +0 -44
- package/dist/commit-message-utils.js.map +0 -1
- package/dist/compliance-parser.d.ts +0 -125
- package/dist/compliance-parser.d.ts.map +0 -1
- package/dist/compliance-parser.js +0 -457
- package/dist/compliance-parser.js.map +0 -1
- package/dist/constants/backlog-patterns.d.ts +0 -21
- package/dist/constants/backlog-patterns.d.ts.map +0 -1
- package/dist/constants/backlog-patterns.js +0 -26
- package/dist/constants/backlog-patterns.js.map +0 -1
- package/dist/constants/dora-constants.d.ts +0 -50
- package/dist/constants/dora-constants.d.ts.map +0 -1
- package/dist/constants/dora-constants.js +0 -56
- package/dist/constants/dora-constants.js.map +0 -1
- package/dist/constants/gate-constants.d.ts +0 -16
- package/dist/constants/gate-constants.d.ts.map +0 -1
- package/dist/constants/gate-constants.js +0 -18
- package/dist/constants/gate-constants.js.map +0 -1
- package/dist/constants/linter-constants.d.ts +0 -17
- package/dist/constants/linter-constants.d.ts.map +0 -1
- package/dist/constants/linter-constants.js +0 -19
- package/dist/constants/linter-constants.js.map +0 -1
- package/dist/constants/tokenizer-constants.d.ts +0 -16
- package/dist/constants/tokenizer-constants.d.ts.map +0 -1
- package/dist/constants/tokenizer-constants.js +0 -18
- package/dist/constants/tokenizer-constants.js.map +0 -1
- package/dist/context/context-computer.d.ts +0 -36
- package/dist/context/context-computer.d.ts.map +0 -1
- package/dist/context/context-computer.js +0 -128
- package/dist/context/context-computer.js.map +0 -1
- package/dist/context/git-state-reader.d.ts +0 -37
- package/dist/context/git-state-reader.d.ts.map +0 -1
- package/dist/context/git-state-reader.js +0 -64
- package/dist/context/git-state-reader.js.map +0 -1
- package/dist/context/index.d.ts +0 -18
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -20
- package/dist/context/index.js.map +0 -1
- package/dist/context/location-resolver.d.ts +0 -34
- package/dist/context/location-resolver.d.ts.map +0 -1
- package/dist/context/location-resolver.js +0 -179
- package/dist/context/location-resolver.js.map +0 -1
- package/dist/context/wu-state-reader.d.ts +0 -30
- package/dist/context/wu-state-reader.d.ts.map +0 -1
- package/dist/context/wu-state-reader.js +0 -126
- package/dist/context/wu-state-reader.js.map +0 -1
- package/dist/context-di.d.ts +0 -185
- package/dist/context-di.d.ts.map +0 -1
- package/dist/context-di.js +0 -165
- package/dist/context-di.js.map +0 -1
- package/dist/context-validation-integration.d.ts +0 -69
- package/dist/context-validation-integration.d.ts.map +0 -1
- package/dist/context-validation-integration.js +0 -161
- package/dist/context-validation-integration.js.map +0 -1
- package/dist/core/scope-checker.d.ts +0 -80
- package/dist/core/scope-checker.d.ts.map +0 -1
- package/dist/core/scope-checker.js +0 -166
- package/dist/core/scope-checker.js.map +0 -1
- package/dist/core/tool-runner.d.ts +0 -136
- package/dist/core/tool-runner.d.ts.map +0 -1
- package/dist/core/tool-runner.js +0 -396
- package/dist/core/tool-runner.js.map +0 -1
- package/dist/core/tool.constants.d.ts +0 -106
- package/dist/core/tool.constants.d.ts.map +0 -1
- package/dist/core/tool.constants.js +0 -104
- package/dist/core/tool.constants.js.map +0 -1
- package/dist/core/tool.schemas.d.ts +0 -227
- package/dist/core/tool.schemas.d.ts.map +0 -1
- package/dist/core/tool.schemas.js +0 -229
- package/dist/core/tool.schemas.js.map +0 -1
- package/dist/core/worktree-guard.d.ts +0 -115
- package/dist/core/worktree-guard.d.ts.map +0 -1
- package/dist/core/worktree-guard.js +0 -245
- package/dist/core/worktree-guard.js.map +0 -1
- package/dist/coverage-gate.d.ts +0 -126
- package/dist/coverage-gate.d.ts.map +0 -1
- package/dist/coverage-gate.js +0 -209
- package/dist/coverage-gate.js.map +0 -1
- package/dist/cycle-detector.d.ts +0 -52
- package/dist/cycle-detector.d.ts.map +0 -1
- package/dist/cycle-detector.js +0 -84
- package/dist/cycle-detector.js.map +0 -1
- package/dist/date-utils.d.ts +0 -66
- package/dist/date-utils.d.ts.map +0 -1
- package/dist/date-utils.js +0 -143
- package/dist/date-utils.js.map +0 -1
- package/dist/delegation-escalation.d.ts +0 -71
- package/dist/delegation-escalation.d.ts.map +0 -1
- package/dist/delegation-escalation.js +0 -264
- package/dist/delegation-escalation.js.map +0 -1
- package/dist/delegation-monitor.d.ts +0 -262
- package/dist/delegation-monitor.d.ts.map +0 -1
- package/dist/delegation-monitor.js +0 -678
- package/dist/delegation-monitor.js.map +0 -1
- package/dist/delegation-recovery.d.ts +0 -62
- package/dist/delegation-recovery.d.ts.map +0 -1
- package/dist/delegation-recovery.js +0 -304
- package/dist/delegation-recovery.js.map +0 -1
- package/dist/delegation-registry-schema.d.ts +0 -75
- package/dist/delegation-registry-schema.d.ts.map +0 -1
- package/dist/delegation-registry-schema.js +0 -93
- package/dist/delegation-registry-schema.js.map +0 -1
- package/dist/delegation-registry-store.d.ts +0 -145
- package/dist/delegation-registry-store.d.ts.map +0 -1
- package/dist/delegation-registry-store.js +0 -308
- package/dist/delegation-registry-store.js.map +0 -1
- package/dist/delegation-tree.d.ts +0 -52
- package/dist/delegation-tree.d.ts.map +0 -1
- package/dist/delegation-tree.js +0 -205
- package/dist/delegation-tree.js.map +0 -1
- package/dist/dependency-graph.d.ts +0 -169
- package/dist/dependency-graph.d.ts.map +0 -1
- package/dist/dependency-graph.js +0 -612
- package/dist/dependency-graph.js.map +0 -1
- package/dist/dependency-guard.d.ts +0 -41
- package/dist/dependency-guard.d.ts.map +0 -1
- package/dist/dependency-guard.js +0 -145
- package/dist/dependency-guard.js.map +0 -1
- package/dist/dependency-validator.d.ts +0 -89
- package/dist/dependency-validator.d.ts.map +0 -1
- package/dist/dependency-validator.js +0 -155
- package/dist/dependency-validator.js.map +0 -1
- package/dist/docs-path-validator.d.ts +0 -16
- package/dist/docs-path-validator.d.ts.map +0 -1
- package/dist/docs-path-validator.js +0 -98
- package/dist/docs-path-validator.js.map +0 -1
- package/dist/domain/context.schemas.d.ts +0 -170
- package/dist/domain/context.schemas.d.ts.map +0 -1
- package/dist/domain/context.schemas.js +0 -151
- package/dist/domain/context.schemas.js.map +0 -1
- package/dist/domain/index.d.ts +0 -15
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js +0 -23
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/orchestration.constants.d.ts +0 -111
- package/dist/domain/orchestration.constants.d.ts.map +0 -1
- package/dist/domain/orchestration.constants.js +0 -130
- package/dist/domain/orchestration.constants.js.map +0 -1
- package/dist/domain/orchestration.schemas.d.ts +0 -307
- package/dist/domain/orchestration.schemas.d.ts.map +0 -1
- package/dist/domain/orchestration.schemas.js +0 -214
- package/dist/domain/orchestration.schemas.js.map +0 -1
- package/dist/domain/orchestration.types.d.ts +0 -134
- package/dist/domain/orchestration.types.d.ts.map +0 -1
- package/dist/domain/orchestration.types.js +0 -5
- package/dist/domain/orchestration.types.js.map +0 -1
- package/dist/domain/recovery.schemas.d.ts +0 -164
- package/dist/domain/recovery.schemas.d.ts.map +0 -1
- package/dist/domain/recovery.schemas.js +0 -134
- package/dist/domain/recovery.schemas.js.map +0 -1
- package/dist/domain/validation.schemas.d.ts +0 -147
- package/dist/domain/validation.schemas.d.ts.map +0 -1
- package/dist/domain/validation.schemas.js +0 -117
- package/dist/domain/validation.schemas.js.map +0 -1
- package/dist/error-handler.d.ts +0 -144
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js +0 -214
- package/dist/error-handler.js.map +0 -1
- package/dist/file-classifiers.d.ts +0 -63
- package/dist/file-classifiers.d.ts.map +0 -1
- package/dist/file-classifiers.js +0 -111
- package/dist/file-classifiers.js.map +0 -1
- package/dist/force-bypass-audit.d.ts +0 -47
- package/dist/force-bypass-audit.d.ts.map +0 -1
- package/dist/force-bypass-audit.js +0 -146
- package/dist/force-bypass-audit.js.map +0 -1
- package/dist/gates-agent-mode.d.ts +0 -107
- package/dist/gates-agent-mode.d.ts.map +0 -1
- package/dist/gates-agent-mode.js +0 -138
- package/dist/gates-agent-mode.js.map +0 -1
- package/dist/gates-config.d.ts +0 -268
- package/dist/gates-config.d.ts.map +0 -1
- package/dist/gates-config.js +0 -644
- package/dist/gates-config.js.map +0 -1
- package/dist/generate-traceability.d.ts +0 -106
- package/dist/generate-traceability.d.ts.map +0 -1
- package/dist/generate-traceability.js +0 -387
- package/dist/generate-traceability.js.map +0 -1
- package/dist/git-adapter.d.ts +0 -406
- package/dist/git-adapter.d.ts.map +0 -1
- package/dist/git-adapter.js +0 -686
- package/dist/git-adapter.js.map +0 -1
- package/dist/git-context-extractor.d.ts +0 -102
- package/dist/git-context-extractor.d.ts.map +0 -1
- package/dist/git-context-extractor.js +0 -571
- package/dist/git-context-extractor.js.map +0 -1
- package/dist/git-staged-validator.d.ts +0 -33
- package/dist/git-staged-validator.d.ts.map +0 -1
- package/dist/git-staged-validator.js +0 -52
- package/dist/git-staged-validator.js.map +0 -1
- package/dist/hardcoded-strings.d.ts +0 -67
- package/dist/hardcoded-strings.d.ts.map +0 -1
- package/dist/hardcoded-strings.js +0 -276
- package/dist/hardcoded-strings.js.map +0 -1
- package/dist/incremental-lint.d.ts +0 -71
- package/dist/incremental-lint.d.ts.map +0 -1
- package/dist/incremental-lint.js +0 -132
- package/dist/incremental-lint.js.map +0 -1
- package/dist/incremental-test.d.ts +0 -33
- package/dist/incremental-test.d.ts.map +0 -1
- package/dist/incremental-test.js +0 -64
- package/dist/incremental-test.js.map +0 -1
- package/dist/index.d.ts +0 -104
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/invariants/check-automated-tests.d.ts +0 -42
- package/dist/invariants/check-automated-tests.d.ts.map +0 -1
- package/dist/invariants/check-automated-tests.js +0 -171
- package/dist/invariants/check-automated-tests.js.map +0 -1
- package/dist/invariants-runner.d.ts +0 -108
- package/dist/invariants-runner.d.ts.map +0 -1
- package/dist/invariants-runner.js +0 -547
- package/dist/invariants-runner.js.map +0 -1
- package/dist/lane-checker.d.ts +0 -132
- package/dist/lane-checker.d.ts.map +0 -1
- package/dist/lane-checker.js +0 -743
- package/dist/lane-checker.js.map +0 -1
- package/dist/lane-inference.d.ts +0 -29
- package/dist/lane-inference.d.ts.map +0 -1
- package/dist/lane-inference.js +0 -210
- package/dist/lane-inference.js.map +0 -1
- package/dist/lane-lock.d.ts +0 -220
- package/dist/lane-lock.d.ts.map +0 -1
- package/dist/lane-lock.js +0 -499
- package/dist/lane-lock.js.map +0 -1
- package/dist/lane-suggest-prompt.d.ts +0 -97
- package/dist/lane-suggest-prompt.d.ts.map +0 -1
- package/dist/lane-suggest-prompt.js +0 -362
- package/dist/lane-suggest-prompt.js.map +0 -1
- package/dist/lane-validator.d.ts +0 -49
- package/dist/lane-validator.d.ts.map +0 -1
- package/dist/lane-validator.js +0 -117
- package/dist/lane-validator.js.map +0 -1
- package/dist/logs-lib.d.ts +0 -89
- package/dist/logs-lib.d.ts.map +0 -1
- package/dist/logs-lib.js +0 -214
- package/dist/logs-lib.js.map +0 -1
- package/dist/lumenflow-config-schema.d.ts +0 -1428
- package/dist/lumenflow-config-schema.d.ts.map +0 -1
- package/dist/lumenflow-config-schema.js +0 -1255
- package/dist/lumenflow-config-schema.js.map +0 -1
- package/dist/lumenflow-config.d.ts +0 -94
- package/dist/lumenflow-config.d.ts.map +0 -1
- package/dist/lumenflow-config.js +0 -253
- package/dist/lumenflow-config.js.map +0 -1
- package/dist/lumenflow-home.d.ts +0 -118
- package/dist/lumenflow-home.d.ts.map +0 -1
- package/dist/lumenflow-home.js +0 -214
- package/dist/lumenflow-home.js.map +0 -1
- package/dist/manual-test-validator.d.ts +0 -84
- package/dist/manual-test-validator.d.ts.map +0 -1
- package/dist/manual-test-validator.js +0 -206
- package/dist/manual-test-validator.js.map +0 -1
- package/dist/merge-lock.d.ts +0 -107
- package/dist/merge-lock.d.ts.map +0 -1
- package/dist/merge-lock.js +0 -263
- package/dist/merge-lock.js.map +0 -1
- package/dist/micro-worktree-shared.d.ts +0 -128
- package/dist/micro-worktree-shared.d.ts.map +0 -1
- package/dist/micro-worktree-shared.js +0 -352
- package/dist/micro-worktree-shared.js.map +0 -1
- package/dist/micro-worktree.d.ts +0 -165
- package/dist/micro-worktree.d.ts.map +0 -1
- package/dist/micro-worktree.js +0 -463
- package/dist/micro-worktree.js.map +0 -1
- package/dist/migration-deployer.d.ts +0 -70
- package/dist/migration-deployer.d.ts.map +0 -1
- package/dist/migration-deployer.js +0 -152
- package/dist/migration-deployer.js.map +0 -1
- package/dist/normalize-config-keys.d.ts +0 -10
- package/dist/normalize-config-keys.d.ts.map +0 -1
- package/dist/normalize-config-keys.js +0 -70
- package/dist/normalize-config-keys.js.map +0 -1
- package/dist/orchestration-advisory-loader.d.ts +0 -19
- package/dist/orchestration-advisory-loader.d.ts.map +0 -1
- package/dist/orchestration-advisory-loader.js +0 -94
- package/dist/orchestration-advisory-loader.js.map +0 -1
- package/dist/orchestration-advisory.d.ts +0 -49
- package/dist/orchestration-advisory.d.ts.map +0 -1
- package/dist/orchestration-advisory.js +0 -97
- package/dist/orchestration-advisory.js.map +0 -1
- package/dist/orchestration-di.d.ts +0 -36
- package/dist/orchestration-di.d.ts.map +0 -1
- package/dist/orchestration-di.js +0 -60
- package/dist/orchestration-di.js.map +0 -1
- package/dist/orchestration-rules.d.ts +0 -60
- package/dist/orchestration-rules.d.ts.map +0 -1
- package/dist/orchestration-rules.js +0 -212
- package/dist/orchestration-rules.js.map +0 -1
- package/dist/orphan-detector.d.ts +0 -148
- package/dist/orphan-detector.d.ts.map +0 -1
- package/dist/orphan-detector.js +0 -253
- package/dist/orphan-detector.js.map +0 -1
- package/dist/pack-authoring-template-engine.d.ts +0 -54
- package/dist/pack-authoring-template-engine.d.ts.map +0 -1
- package/dist/pack-authoring-template-engine.js +0 -510
- package/dist/pack-authoring-template-engine.js.map +0 -1
- package/dist/path-classifiers.d.ts +0 -58
- package/dist/path-classifiers.d.ts.map +0 -1
- package/dist/path-classifiers.js +0 -96
- package/dist/path-classifiers.js.map +0 -1
- package/dist/patrol-loop.d.ts +0 -171
- package/dist/patrol-loop.d.ts.map +0 -1
- package/dist/patrol-loop.js +0 -197
- package/dist/patrol-loop.js.map +0 -1
- package/dist/piped-command-detector.d.ts +0 -25
- package/dist/piped-command-detector.d.ts.map +0 -1
- package/dist/piped-command-detector.js +0 -67
- package/dist/piped-command-detector.js.map +0 -1
- package/dist/ports/context.ports.d.ts +0 -136
- package/dist/ports/context.ports.d.ts.map +0 -1
- package/dist/ports/context.ports.js +0 -4
- package/dist/ports/context.ports.js.map +0 -1
- package/dist/ports/core-tools.ports.d.ts +0 -282
- package/dist/ports/core-tools.ports.d.ts.map +0 -1
- package/dist/ports/core-tools.ports.js +0 -4
- package/dist/ports/core-tools.ports.js.map +0 -1
- package/dist/ports/dashboard-renderer.port.d.ts +0 -113
- package/dist/ports/dashboard-renderer.port.d.ts.map +0 -1
- package/dist/ports/dashboard-renderer.port.js +0 -4
- package/dist/ports/dashboard-renderer.port.js.map +0 -1
- package/dist/ports/git-validator.ports.d.ts +0 -114
- package/dist/ports/git-validator.ports.d.ts.map +0 -1
- package/dist/ports/git-validator.ports.js +0 -4
- package/dist/ports/git-validator.ports.js.map +0 -1
- package/dist/ports/index.d.ts +0 -21
- package/dist/ports/index.d.ts.map +0 -1
- package/dist/ports/index.js +0 -23
- package/dist/ports/index.js.map +0 -1
- package/dist/ports/metrics-collector.port.d.ts +0 -133
- package/dist/ports/metrics-collector.port.d.ts.map +0 -1
- package/dist/ports/metrics-collector.port.js +0 -4
- package/dist/ports/metrics-collector.port.js.map +0 -1
- package/dist/ports/recovery.ports.d.ts +0 -59
- package/dist/ports/recovery.ports.d.ts.map +0 -1
- package/dist/ports/recovery.ports.js +0 -4
- package/dist/ports/recovery.ports.js.map +0 -1
- package/dist/ports/validation.ports.d.ts +0 -75
- package/dist/ports/validation.ports.d.ts.map +0 -1
- package/dist/ports/validation.ports.js +0 -4
- package/dist/ports/validation.ports.js.map +0 -1
- package/dist/ports/wu-helpers.ports.d.ts +0 -227
- package/dist/ports/wu-helpers.ports.d.ts.map +0 -1
- package/dist/ports/wu-helpers.ports.js +0 -4
- package/dist/ports/wu-helpers.ports.js.map +0 -1
- package/dist/process-detector.d.ts +0 -69
- package/dist/process-detector.d.ts.map +0 -1
- package/dist/process-detector.js +0 -175
- package/dist/process-detector.js.map +0 -1
- package/dist/prompt-linter.d.ts +0 -66
- package/dist/prompt-linter.d.ts.map +0 -1
- package/dist/prompt-linter.js +0 -323
- package/dist/prompt-linter.js.map +0 -1
- package/dist/prompt-monitor.d.ts +0 -6
- package/dist/prompt-monitor.d.ts.map +0 -1
- package/dist/prompt-monitor.js +0 -218
- package/dist/prompt-monitor.js.map +0 -1
- package/dist/rebase-artifact-cleanup.d.ts +0 -156
- package/dist/rebase-artifact-cleanup.d.ts.map +0 -1
- package/dist/rebase-artifact-cleanup.js +0 -475
- package/dist/rebase-artifact-cleanup.js.map +0 -1
- package/dist/recovery/index.d.ts +0 -12
- package/dist/recovery/index.d.ts.map +0 -1
- package/dist/recovery/index.js +0 -14
- package/dist/recovery/index.js.map +0 -1
- package/dist/recovery/recovery-analyzer.d.ts +0 -49
- package/dist/recovery/recovery-analyzer.d.ts.map +0 -1
- package/dist/recovery/recovery-analyzer.js +0 -149
- package/dist/recovery/recovery-analyzer.js.map +0 -1
- package/dist/resolve-policy.d.ts +0 -257
- package/dist/resolve-policy.d.ts.map +0 -1
- package/dist/resolve-policy.js +0 -269
- package/dist/resolve-policy.js.map +0 -1
- package/dist/retry-strategy.d.ts +0 -191
- package/dist/retry-strategy.d.ts.map +0 -1
- package/dist/retry-strategy.js +0 -286
- package/dist/retry-strategy.js.map +0 -1
- package/dist/risk-detector.d.ts +0 -109
- package/dist/risk-detector.d.ts.map +0 -1
- package/dist/risk-detector.js +0 -253
- package/dist/risk-detector.js.map +0 -1
- package/dist/rollback-utils.d.ts +0 -129
- package/dist/rollback-utils.d.ts.map +0 -1
- package/dist/rollback-utils.js +0 -217
- package/dist/rollback-utils.js.map +0 -1
- package/dist/sandbox-allowlist.d.ts +0 -16
- package/dist/sandbox-allowlist.d.ts.map +0 -1
- package/dist/sandbox-allowlist.js +0 -77
- package/dist/sandbox-allowlist.js.map +0 -1
- package/dist/sandbox-backend-linux.d.ts +0 -6
- package/dist/sandbox-backend-linux.d.ts.map +0 -1
- package/dist/sandbox-backend-linux.js +0 -67
- package/dist/sandbox-backend-linux.js.map +0 -1
- package/dist/sandbox-backend-macos.d.ts +0 -6
- package/dist/sandbox-backend-macos.d.ts.map +0 -1
- package/dist/sandbox-backend-macos.js +0 -66
- package/dist/sandbox-backend-macos.js.map +0 -1
- package/dist/sandbox-backend-windows.d.ts +0 -6
- package/dist/sandbox-backend-windows.d.ts.map +0 -1
- package/dist/sandbox-backend-windows.js +0 -30
- package/dist/sandbox-backend-windows.js.map +0 -1
- package/dist/sandbox-profile.d.ts +0 -53
- package/dist/sandbox-profile.d.ts.map +0 -1
- package/dist/sandbox-profile.js +0 -64
- package/dist/sandbox-profile.js.map +0 -1
- package/dist/schemas/arg-validators.d.ts +0 -58
- package/dist/schemas/arg-validators.d.ts.map +0 -1
- package/dist/schemas/arg-validators.js +0 -193
- package/dist/schemas/arg-validators.js.map +0 -1
- package/dist/schemas/command-schemas.d.ts +0 -171
- package/dist/schemas/command-schemas.d.ts.map +0 -1
- package/dist/schemas/command-schemas.js +0 -145
- package/dist/schemas/command-schemas.js.map +0 -1
- package/dist/schemas/flow-arg-validators.d.ts +0 -32
- package/dist/schemas/flow-arg-validators.d.ts.map +0 -1
- package/dist/schemas/flow-arg-validators.js +0 -57
- package/dist/schemas/flow-arg-validators.js.map +0 -1
- package/dist/schemas/flow-schemas.d.ts +0 -152
- package/dist/schemas/flow-schemas.d.ts.map +0 -1
- package/dist/schemas/flow-schemas.js +0 -105
- package/dist/schemas/flow-schemas.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -33
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -96
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/initiative-arg-validators.d.ts +0 -64
- package/dist/schemas/initiative-arg-validators.d.ts.map +0 -1
- package/dist/schemas/initiative-arg-validators.js +0 -65
- package/dist/schemas/initiative-arg-validators.js.map +0 -1
- package/dist/schemas/initiative-schemas.d.ts +0 -256
- package/dist/schemas/initiative-schemas.d.ts.map +0 -1
- package/dist/schemas/initiative-schemas.js +0 -186
- package/dist/schemas/initiative-schemas.js.map +0 -1
- package/dist/schemas/memory-arg-validators.d.ts +0 -91
- package/dist/schemas/memory-arg-validators.d.ts.map +0 -1
- package/dist/schemas/memory-arg-validators.js +0 -75
- package/dist/schemas/memory-arg-validators.js.map +0 -1
- package/dist/schemas/memory-schemas.d.ts +0 -287
- package/dist/schemas/memory-schemas.d.ts.map +0 -1
- package/dist/schemas/memory-schemas.js +0 -242
- package/dist/schemas/memory-schemas.js.map +0 -1
- package/dist/schemas/schema-utils.d.ts +0 -87
- package/dist/schemas/schema-utils.d.ts.map +0 -1
- package/dist/schemas/schema-utils.js +0 -320
- package/dist/schemas/schema-utils.js.map +0 -1
- package/dist/schemas/setup-arg-validators.d.ts +0 -91
- package/dist/schemas/setup-arg-validators.d.ts.map +0 -1
- package/dist/schemas/setup-arg-validators.js +0 -98
- package/dist/schemas/setup-arg-validators.js.map +0 -1
- package/dist/schemas/setup-schemas.d.ts +0 -335
- package/dist/schemas/setup-schemas.d.ts.map +0 -1
- package/dist/schemas/setup-schemas.js +0 -260
- package/dist/schemas/setup-schemas.js.map +0 -1
- package/dist/schemas/validation-arg-validators.d.ts +0 -18
- package/dist/schemas/validation-arg-validators.d.ts.map +0 -1
- package/dist/schemas/validation-arg-validators.js +0 -59
- package/dist/schemas/validation-arg-validators.js.map +0 -1
- package/dist/schemas/validation-schemas.d.ts +0 -80
- package/dist/schemas/validation-schemas.d.ts.map +0 -1
- package/dist/schemas/validation-schemas.js +0 -88
- package/dist/schemas/validation-schemas.js.map +0 -1
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts +0 -118
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts.map +0 -1
- package/dist/schemas/wu-lifecycle-arg-validators.js +0 -82
- package/dist/schemas/wu-lifecycle-arg-validators.js.map +0 -1
- package/dist/schemas/wu-lifecycle-schemas.d.ts +0 -362
- package/dist/schemas/wu-lifecycle-schemas.d.ts.map +0 -1
- package/dist/schemas/wu-lifecycle-schemas.js +0 -284
- package/dist/schemas/wu-lifecycle-schemas.js.map +0 -1
- package/dist/section-headings.d.ts +0 -35
- package/dist/section-headings.d.ts.map +0 -1
- package/dist/section-headings.js +0 -54
- package/dist/section-headings.js.map +0 -1
- package/dist/spawn-escalation.d.ts +0 -91
- package/dist/spawn-escalation.d.ts.map +0 -1
- package/dist/spawn-escalation.js +0 -258
- package/dist/spawn-escalation.js.map +0 -1
- package/dist/spawn-monitor.d.ts +0 -230
- package/dist/spawn-monitor.d.ts.map +0 -1
- package/dist/spawn-monitor.js +0 -675
- package/dist/spawn-monitor.js.map +0 -1
- package/dist/spawn-prompt-schema.d.ts +0 -107
- package/dist/spawn-prompt-schema.d.ts.map +0 -1
- package/dist/spawn-prompt-schema.js +0 -163
- package/dist/spawn-prompt-schema.js.map +0 -1
- package/dist/spawn-recovery.d.ts +0 -83
- package/dist/spawn-recovery.d.ts.map +0 -1
- package/dist/spawn-recovery.js +0 -299
- package/dist/spawn-recovery.js.map +0 -1
- package/dist/spawn-registry-schema.d.ts +0 -122
- package/dist/spawn-registry-schema.d.ts.map +0 -1
- package/dist/spawn-registry-schema.js +0 -129
- package/dist/spawn-registry-schema.js.map +0 -1
- package/dist/spawn-registry-store.d.ts +0 -161
- package/dist/spawn-registry-store.d.ts.map +0 -1
- package/dist/spawn-registry-store.js +0 -301
- package/dist/spawn-registry-store.js.map +0 -1
- package/dist/spawn-strategy.d.ts +0 -60
- package/dist/spawn-strategy.d.ts.map +0 -1
- package/dist/spawn-strategy.js +0 -112
- package/dist/spawn-strategy.js.map +0 -1
- package/dist/spawn-tree.d.ts +0 -125
- package/dist/spawn-tree.d.ts.map +0 -1
- package/dist/spawn-tree.js +0 -286
- package/dist/spawn-tree.js.map +0 -1
- package/dist/stamp-status-validator.d.ts +0 -77
- package/dist/stamp-status-validator.d.ts.map +0 -1
- package/dist/stamp-status-validator.js +0 -138
- package/dist/stamp-status-validator.js.map +0 -1
- package/dist/stamp-tracking.d.ts +0 -12
- package/dist/stamp-tracking.d.ts.map +0 -1
- package/dist/stamp-tracking.js +0 -43
- package/dist/stamp-tracking.js.map +0 -1
- package/dist/stamp-utils.d.ts +0 -94
- package/dist/stamp-utils.d.ts.map +0 -1
- package/dist/stamp-utils.js +0 -245
- package/dist/stamp-utils.js.map +0 -1
- package/dist/state-cleanup-core.d.ts +0 -206
- package/dist/state-cleanup-core.d.ts.map +0 -1
- package/dist/state-cleanup-core.js +0 -225
- package/dist/state-cleanup-core.js.map +0 -1
- package/dist/state-doctor-core.d.ts +0 -177
- package/dist/state-doctor-core.d.ts.map +0 -1
- package/dist/state-doctor-core.js +0 -395
- package/dist/state-doctor-core.js.map +0 -1
- package/dist/state-machine.d.ts +0 -10
- package/dist/state-machine.d.ts.map +0 -1
- package/dist/state-machine.js +0 -89
- package/dist/state-machine.js.map +0 -1
- package/dist/stream-error-handler.d.ts +0 -68
- package/dist/stream-error-handler.d.ts.map +0 -1
- package/dist/stream-error-handler.js +0 -77
- package/dist/stream-error-handler.js.map +0 -1
- package/dist/system-map-validator.d.ts +0 -111
- package/dist/system-map-validator.d.ts.map +0 -1
- package/dist/system-map-validator.js +0 -383
- package/dist/system-map-validator.js.map +0 -1
- package/dist/telemetry.d.ts +0 -81
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js +0 -219
- package/dist/telemetry.js.map +0 -1
- package/dist/template-loader.d.ts +0 -151
- package/dist/template-loader.d.ts.map +0 -1
- package/dist/template-loader.js +0 -400
- package/dist/template-loader.js.map +0 -1
- package/dist/test-baseline.d.ts +0 -177
- package/dist/test-baseline.d.ts.map +0 -1
- package/dist/test-baseline.js +0 -286
- package/dist/test-baseline.js.map +0 -1
- package/dist/token-counter.d.ts +0 -50
- package/dist/token-counter.d.ts.map +0 -1
- package/dist/token-counter.js +0 -144
- package/dist/token-counter.js.map +0 -1
- package/dist/usecases/analyze-recovery.usecase.d.ts +0 -43
- package/dist/usecases/analyze-recovery.usecase.d.ts.map +0 -1
- package/dist/usecases/analyze-recovery.usecase.js +0 -34
- package/dist/usecases/analyze-recovery.usecase.js.map +0 -1
- package/dist/usecases/compute-context.usecase.d.ts +0 -63
- package/dist/usecases/compute-context.usecase.d.ts.map +0 -1
- package/dist/usecases/compute-context.usecase.js +0 -91
- package/dist/usecases/compute-context.usecase.js.map +0 -1
- package/dist/usecases/get-dashboard-data.usecase.d.ts +0 -53
- package/dist/usecases/get-dashboard-data.usecase.d.ts.map +0 -1
- package/dist/usecases/get-dashboard-data.usecase.js +0 -54
- package/dist/usecases/get-dashboard-data.usecase.js.map +0 -1
- package/dist/usecases/get-suggestions.usecase.d.ts +0 -101
- package/dist/usecases/get-suggestions.usecase.d.ts.map +0 -1
- package/dist/usecases/get-suggestions.usecase.js +0 -148
- package/dist/usecases/get-suggestions.usecase.js.map +0 -1
- package/dist/usecases/index.d.ts +0 -15
- package/dist/usecases/index.d.ts.map +0 -1
- package/dist/usecases/index.js +0 -21
- package/dist/usecases/index.js.map +0 -1
- package/dist/usecases/validate-command.usecase.d.ts +0 -56
- package/dist/usecases/validate-command.usecase.d.ts.map +0 -1
- package/dist/usecases/validate-command.usecase.js +0 -143
- package/dist/usecases/validate-command.usecase.js.map +0 -1
- package/dist/user-normalizer.d.ts +0 -36
- package/dist/user-normalizer.d.ts.map +0 -1
- package/dist/user-normalizer.js +0 -149
- package/dist/user-normalizer.js.map +0 -1
- package/dist/validation/command-registry.d.ts +0 -26
- package/dist/validation/command-registry.d.ts.map +0 -1
- package/dist/validation/command-registry.js +0 -269
- package/dist/validation/command-registry.js.map +0 -1
- package/dist/validation/index.d.ts +0 -16
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -18
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/types.d.ts +0 -140
- package/dist/validation/types.d.ts.map +0 -1
- package/dist/validation/types.js +0 -4
- package/dist/validation/types.js.map +0 -1
- package/dist/validation/validate-command.d.ts +0 -16
- package/dist/validation/validate-command.d.ts.map +0 -1
- package/dist/validation/validate-command.js +0 -163
- package/dist/validation/validate-command.js.map +0 -1
- package/dist/validators/backlog-sync.d.ts +0 -11
- package/dist/validators/backlog-sync.d.ts.map +0 -1
- package/dist/validators/backlog-sync.js +0 -65
- package/dist/validators/backlog-sync.js.map +0 -1
- package/dist/validators/phi-constants.d.ts +0 -98
- package/dist/validators/phi-constants.d.ts.map +0 -1
- package/dist/validators/phi-constants.js +0 -153
- package/dist/validators/phi-constants.js.map +0 -1
- package/dist/validators/phi-scanner.d.ts +0 -59
- package/dist/validators/phi-scanner.d.ts.map +0 -1
- package/dist/validators/phi-scanner.js +0 -222
- package/dist/validators/phi-scanner.js.map +0 -1
- package/dist/validators/supabase-docs-linter.d.ts +0 -15
- package/dist/validators/supabase-docs-linter.d.ts.map +0 -1
- package/dist/validators/supabase-docs-linter.js +0 -45
- package/dist/validators/supabase-docs-linter.js.map +0 -1
- package/dist/validators/wu-tasks.d.ts +0 -21
- package/dist/validators/wu-tasks.d.ts.map +0 -1
- package/dist/validators/wu-tasks.js +0 -93
- package/dist/validators/wu-tasks.js.map +0 -1
- package/dist/work-classifier.d.ts +0 -95
- package/dist/work-classifier.d.ts.map +0 -1
- package/dist/work-classifier.js +0 -408
- package/dist/work-classifier.js.map +0 -1
- package/dist/worktree-ownership.d.ts +0 -51
- package/dist/worktree-ownership.d.ts.map +0 -1
- package/dist/worktree-ownership.js +0 -77
- package/dist/worktree-ownership.js.map +0 -1
- package/dist/worktree-scanner.d.ts +0 -118
- package/dist/worktree-scanner.d.ts.map +0 -1
- package/dist/worktree-scanner.js +0 -171
- package/dist/worktree-scanner.js.map +0 -1
- package/dist/worktree-symlink.d.ts +0 -86
- package/dist/worktree-symlink.d.ts.map +0 -1
- package/dist/worktree-symlink.js +0 -349
- package/dist/worktree-symlink.js.map +0 -1
- package/dist/wu-backlog-updater.d.ts +0 -10
- package/dist/wu-backlog-updater.d.ts.map +0 -1
- package/dist/wu-backlog-updater.js +0 -40
- package/dist/wu-backlog-updater.js.map +0 -1
- package/dist/wu-checkpoint.d.ts +0 -110
- package/dist/wu-checkpoint.d.ts.map +0 -1
- package/dist/wu-checkpoint.js +0 -236
- package/dist/wu-checkpoint.js.map +0 -1
- package/dist/wu-claim-helpers.d.ts +0 -21
- package/dist/wu-claim-helpers.d.ts.map +0 -1
- package/dist/wu-claim-helpers.js +0 -66
- package/dist/wu-claim-helpers.js.map +0 -1
- package/dist/wu-claim-resume.d.ts +0 -106
- package/dist/wu-claim-resume.d.ts.map +0 -1
- package/dist/wu-claim-resume.js +0 -279
- package/dist/wu-claim-resume.js.map +0 -1
- package/dist/wu-cli-constants.d.ts +0 -425
- package/dist/wu-cli-constants.d.ts.map +0 -1
- package/dist/wu-cli-constants.js +0 -430
- package/dist/wu-cli-constants.js.map +0 -1
- package/dist/wu-consistency-checker.d.ts +0 -189
- package/dist/wu-consistency-checker.d.ts.map +0 -1
- package/dist/wu-consistency-checker.js +0 -1026
- package/dist/wu-consistency-checker.js.map +0 -1
- package/dist/wu-constants.d.ts +0 -29
- package/dist/wu-constants.d.ts.map +0 -1
- package/dist/wu-constants.js +0 -37
- package/dist/wu-constants.js.map +0 -1
- package/dist/wu-context-constants.d.ts +0 -270
- package/dist/wu-context-constants.d.ts.map +0 -1
- package/dist/wu-context-constants.js +0 -267
- package/dist/wu-context-constants.js.map +0 -1
- package/dist/wu-create-defaults.d.ts +0 -11
- package/dist/wu-create-defaults.d.ts.map +0 -1
- package/dist/wu-create-defaults.js +0 -13
- package/dist/wu-create-defaults.js.map +0 -1
- package/dist/wu-create-validators.d.ts +0 -89
- package/dist/wu-create-validators.d.ts.map +0 -1
- package/dist/wu-create-validators.js +0 -215
- package/dist/wu-create-validators.js.map +0 -1
- package/dist/wu-domain-constants.d.ts +0 -295
- package/dist/wu-domain-constants.d.ts.map +0 -1
- package/dist/wu-domain-constants.js +0 -399
- package/dist/wu-domain-constants.js.map +0 -1
- package/dist/wu-done-branch-only.d.ts +0 -120
- package/dist/wu-done-branch-only.d.ts.map +0 -1
- package/dist/wu-done-branch-only.js +0 -412
- package/dist/wu-done-branch-only.js.map +0 -1
- package/dist/wu-done-branch-utils.d.ts +0 -8
- package/dist/wu-done-branch-utils.d.ts.map +0 -1
- package/dist/wu-done-branch-utils.js +0 -34
- package/dist/wu-done-branch-utils.js.map +0 -1
- package/dist/wu-done-cleanup.d.ts +0 -6
- package/dist/wu-done-cleanup.d.ts.map +0 -1
- package/dist/wu-done-cleanup.js +0 -161
- package/dist/wu-done-cleanup.js.map +0 -1
- package/dist/wu-done-concurrent-merge.d.ts +0 -103
- package/dist/wu-done-concurrent-merge.d.ts.map +0 -1
- package/dist/wu-done-concurrent-merge.js +0 -375
- package/dist/wu-done-concurrent-merge.js.map +0 -1
- package/dist/wu-done-docs-generate.d.ts +0 -72
- package/dist/wu-done-docs-generate.d.ts.map +0 -1
- package/dist/wu-done-docs-generate.js +0 -129
- package/dist/wu-done-docs-generate.js.map +0 -1
- package/dist/wu-done-docs-only.d.ts +0 -16
- package/dist/wu-done-docs-only.d.ts.map +0 -1
- package/dist/wu-done-docs-only.js +0 -68
- package/dist/wu-done-docs-only.js.map +0 -1
- package/dist/wu-done-errors.d.ts +0 -13
- package/dist/wu-done-errors.d.ts.map +0 -1
- package/dist/wu-done-errors.js +0 -27
- package/dist/wu-done-errors.js.map +0 -1
- package/dist/wu-done-initiative-sync.d.ts +0 -13
- package/dist/wu-done-initiative-sync.d.ts.map +0 -1
- package/dist/wu-done-initiative-sync.js +0 -235
- package/dist/wu-done-initiative-sync.js.map +0 -1
- package/dist/wu-done-inputs.d.ts +0 -10
- package/dist/wu-done-inputs.d.ts.map +0 -1
- package/dist/wu-done-inputs.js +0 -55
- package/dist/wu-done-inputs.js.map +0 -1
- package/dist/wu-done-machine.d.ts +0 -175
- package/dist/wu-done-machine.d.ts.map +0 -1
- package/dist/wu-done-machine.js +0 -227
- package/dist/wu-done-machine.js.map +0 -1
- package/dist/wu-done-merged-worktree.d.ts +0 -65
- package/dist/wu-done-merged-worktree.d.ts.map +0 -1
- package/dist/wu-done-merged-worktree.js +0 -197
- package/dist/wu-done-merged-worktree.js.map +0 -1
- package/dist/wu-done-messages.d.ts +0 -120
- package/dist/wu-done-messages.d.ts.map +0 -1
- package/dist/wu-done-messages.js +0 -191
- package/dist/wu-done-messages.js.map +0 -1
- package/dist/wu-done-metadata.d.ts +0 -123
- package/dist/wu-done-metadata.d.ts.map +0 -1
- package/dist/wu-done-metadata.js +0 -240
- package/dist/wu-done-metadata.js.map +0 -1
- package/dist/wu-done-paths.d.ts +0 -87
- package/dist/wu-done-paths.d.ts.map +0 -1
- package/dist/wu-done-paths.js +0 -263
- package/dist/wu-done-paths.js.map +0 -1
- package/dist/wu-done-pr.d.ts +0 -76
- package/dist/wu-done-pr.d.ts.map +0 -1
- package/dist/wu-done-pr.js +0 -189
- package/dist/wu-done-pr.js.map +0 -1
- package/dist/wu-done-preflight.d.ts +0 -65
- package/dist/wu-done-preflight.d.ts.map +0 -1
- package/dist/wu-done-preflight.js +0 -205
- package/dist/wu-done-preflight.js.map +0 -1
- package/dist/wu-done-retry-helpers.d.ts +0 -75
- package/dist/wu-done-retry-helpers.d.ts.map +0 -1
- package/dist/wu-done-retry-helpers.js +0 -175
- package/dist/wu-done-retry-helpers.js.map +0 -1
- package/dist/wu-done-ui.d.ts +0 -29
- package/dist/wu-done-ui.d.ts.map +0 -1
- package/dist/wu-done-ui.js +0 -74
- package/dist/wu-done-ui.js.map +0 -1
- package/dist/wu-done-validation.d.ts +0 -128
- package/dist/wu-done-validation.d.ts.map +0 -1
- package/dist/wu-done-validation.js +0 -530
- package/dist/wu-done-validation.js.map +0 -1
- package/dist/wu-done-validators.d.ts +0 -16
- package/dist/wu-done-validators.d.ts.map +0 -1
- package/dist/wu-done-validators.js +0 -16
- package/dist/wu-done-validators.js.map +0 -1
- package/dist/wu-done-worktree-services.d.ts +0 -174
- package/dist/wu-done-worktree-services.d.ts.map +0 -1
- package/dist/wu-done-worktree-services.js +0 -274
- package/dist/wu-done-worktree-services.js.map +0 -1
- package/dist/wu-done-worktree.d.ts +0 -229
- package/dist/wu-done-worktree.d.ts.map +0 -1
- package/dist/wu-done-worktree.js +0 -1290
- package/dist/wu-done-worktree.js.map +0 -1
- package/dist/wu-events-cleanup.d.ts +0 -131
- package/dist/wu-events-cleanup.d.ts.map +0 -1
- package/dist/wu-events-cleanup.js +0 -404
- package/dist/wu-events-cleanup.js.map +0 -1
- package/dist/wu-git-constants.d.ts +0 -176
- package/dist/wu-git-constants.d.ts.map +0 -1
- package/dist/wu-git-constants.js +0 -178
- package/dist/wu-git-constants.js.map +0 -1
- package/dist/wu-helpers.d.ts +0 -133
- package/dist/wu-helpers.d.ts.map +0 -1
- package/dist/wu-helpers.js +0 -268
- package/dist/wu-helpers.js.map +0 -1
- package/dist/wu-id-generator.d.ts +0 -51
- package/dist/wu-id-generator.d.ts.map +0 -1
- package/dist/wu-id-generator.js +0 -110
- package/dist/wu-id-generator.js.map +0 -1
- package/dist/wu-lint.d.ts +0 -191
- package/dist/wu-lint.d.ts.map +0 -1
- package/dist/wu-lint.js +0 -338
- package/dist/wu-lint.js.map +0 -1
- package/dist/wu-list.d.ts +0 -76
- package/dist/wu-list.d.ts.map +0 -1
- package/dist/wu-list.js +0 -181
- package/dist/wu-list.js.map +0 -1
- package/dist/wu-paths-constants.d.ts +0 -264
- package/dist/wu-paths-constants.d.ts.map +0 -1
- package/dist/wu-paths-constants.js +0 -272
- package/dist/wu-paths-constants.js.map +0 -1
- package/dist/wu-paths.d.ts +0 -211
- package/dist/wu-paths.d.ts.map +0 -1
- package/dist/wu-paths.js +0 -223
- package/dist/wu-paths.js.map +0 -1
- package/dist/wu-preflight-validators.d.ts +0 -64
- package/dist/wu-preflight-validators.d.ts.map +0 -1
- package/dist/wu-preflight-validators.js +0 -277
- package/dist/wu-preflight-validators.js.map +0 -1
- package/dist/wu-recovery.d.ts +0 -220
- package/dist/wu-recovery.d.ts.map +0 -1
- package/dist/wu-recovery.js +0 -470
- package/dist/wu-recovery.js.map +0 -1
- package/dist/wu-repair-core.d.ts +0 -150
- package/dist/wu-repair-core.d.ts.map +0 -1
- package/dist/wu-repair-core.js +0 -718
- package/dist/wu-repair-core.js.map +0 -1
- package/dist/wu-rules-core.d.ts +0 -95
- package/dist/wu-rules-core.d.ts.map +0 -1
- package/dist/wu-rules-core.js +0 -401
- package/dist/wu-rules-core.js.map +0 -1
- package/dist/wu-rules-engine.d.ts +0 -29
- package/dist/wu-rules-engine.d.ts.map +0 -1
- package/dist/wu-rules-engine.js +0 -61
- package/dist/wu-rules-engine.js.map +0 -1
- package/dist/wu-rules-resolvers.d.ts +0 -19
- package/dist/wu-rules-resolvers.d.ts.map +0 -1
- package/dist/wu-rules-resolvers.js +0 -210
- package/dist/wu-rules-resolvers.js.map +0 -1
- package/dist/wu-schema-normalization.d.ts +0 -18
- package/dist/wu-schema-normalization.d.ts.map +0 -1
- package/dist/wu-schema-normalization.js +0 -87
- package/dist/wu-schema-normalization.js.map +0 -1
- package/dist/wu-schema.d.ts +0 -772
- package/dist/wu-schema.d.ts.map +0 -1
- package/dist/wu-schema.js +0 -897
- package/dist/wu-schema.js.map +0 -1
- package/dist/wu-spawn-context.d.ts +0 -66
- package/dist/wu-spawn-context.d.ts.map +0 -1
- package/dist/wu-spawn-context.js +0 -185
- package/dist/wu-spawn-context.js.map +0 -1
- package/dist/wu-spawn-helpers.d.ts +0 -110
- package/dist/wu-spawn-helpers.d.ts.map +0 -1
- package/dist/wu-spawn-helpers.js +0 -276
- package/dist/wu-spawn-helpers.js.map +0 -1
- package/dist/wu-spawn-skills.d.ts +0 -39
- package/dist/wu-spawn-skills.d.ts.map +0 -1
- package/dist/wu-spawn-skills.js +0 -214
- package/dist/wu-spawn-skills.js.map +0 -1
- package/dist/wu-spawn.d.ts +0 -394
- package/dist/wu-spawn.d.ts.map +0 -1
- package/dist/wu-spawn.js +0 -1977
- package/dist/wu-spawn.js.map +0 -1
- package/dist/wu-state-schema.d.ts +0 -237
- package/dist/wu-state-schema.d.ts.map +0 -1
- package/dist/wu-state-schema.js +0 -172
- package/dist/wu-state-schema.js.map +0 -1
- package/dist/wu-state-store.d.ts +0 -275
- package/dist/wu-state-store.d.ts.map +0 -1
- package/dist/wu-state-store.js +0 -1057
- package/dist/wu-state-store.js.map +0 -1
- package/dist/wu-status-transition.d.ts +0 -58
- package/dist/wu-status-transition.d.ts.map +0 -1
- package/dist/wu-status-transition.js +0 -370
- package/dist/wu-status-transition.js.map +0 -1
- package/dist/wu-status-updater.d.ts +0 -18
- package/dist/wu-status-updater.d.ts.map +0 -1
- package/dist/wu-status-updater.js +0 -123
- package/dist/wu-status-updater.js.map +0 -1
- package/dist/wu-statuses.d.ts +0 -154
- package/dist/wu-statuses.d.ts.map +0 -1
- package/dist/wu-statuses.js +0 -176
- package/dist/wu-statuses.js.map +0 -1
- package/dist/wu-transaction-collectors.d.ts +0 -116
- package/dist/wu-transaction-collectors.d.ts.map +0 -1
- package/dist/wu-transaction-collectors.js +0 -273
- package/dist/wu-transaction-collectors.js.map +0 -1
- package/dist/wu-transaction.d.ts +0 -172
- package/dist/wu-transaction.d.ts.map +0 -1
- package/dist/wu-transaction.js +0 -288
- package/dist/wu-transaction.js.map +0 -1
- package/dist/wu-type-helpers.d.ts +0 -26
- package/dist/wu-type-helpers.d.ts.map +0 -1
- package/dist/wu-type-helpers.js +0 -45
- package/dist/wu-type-helpers.js.map +0 -1
- package/dist/wu-ui-constants.d.ts +0 -235
- package/dist/wu-ui-constants.d.ts.map +0 -1
- package/dist/wu-ui-constants.js +0 -237
- package/dist/wu-ui-constants.js.map +0 -1
- package/dist/wu-validation-constants.d.ts +0 -61
- package/dist/wu-validation-constants.d.ts.map +0 -1
- package/dist/wu-validation-constants.js +0 -69
- package/dist/wu-validation-constants.js.map +0 -1
- package/dist/wu-validation.d.ts +0 -121
- package/dist/wu-validation.d.ts.map +0 -1
- package/dist/wu-validation.js +0 -266
- package/dist/wu-validation.js.map +0 -1
- package/dist/wu-validator.d.ts +0 -128
- package/dist/wu-validator.d.ts.map +0 -1
- package/dist/wu-validator.js +0 -445
- package/dist/wu-validator.js.map +0 -1
- package/dist/wu-yaml-fixer.d.ts +0 -74
- package/dist/wu-yaml-fixer.d.ts.map +0 -1
- package/dist/wu-yaml-fixer.js +0 -273
- package/dist/wu-yaml-fixer.js.map +0 -1
- package/dist/wu-yaml.d.ts +0 -110
- package/dist/wu-yaml.d.ts.map +0 -1
- package/dist/wu-yaml.js +0 -300
- package/dist/wu-yaml.js.map +0 -1
package/dist/lane-lock.js
DELETED
|
@@ -1,499 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Copyright (c) 2026 Hellmai Ltd
|
|
3
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
4
|
-
/**
|
|
5
|
-
* Lane Lock Module
|
|
6
|
-
*
|
|
7
|
-
* Provides atomic file-based locking to prevent TOCTOU (Time Of Check To Time Of Use)
|
|
8
|
-
* race conditions when multiple agents try to claim WUs in the same lane simultaneously.
|
|
9
|
-
*
|
|
10
|
-
* The lock file is created atomically using the 'wx' flag (exclusive create),
|
|
11
|
-
* which fails if the file already exists. This prevents the race condition where
|
|
12
|
-
* parallel agents could both read status.md before either updates it.
|
|
13
|
-
*
|
|
14
|
-
* Lock file location: .lumenflow/locks/<lane-kebab>.lock
|
|
15
|
-
* Lock file format: JSON with wuId, timestamp, agentSession, pid
|
|
16
|
-
*
|
|
17
|
-
* Lock policy support (WU-1323):
|
|
18
|
-
* - 'all' (default): Lock held through entire WU lifecycle
|
|
19
|
-
* - 'active': Lock released on block, re-acquired on unblock (CLI behavior)
|
|
20
|
-
* - 'none': No lock files created, WIP checking disabled for the lane
|
|
21
|
-
*
|
|
22
|
-
* @see WU-1603 - Race condition fix for wu:claim
|
|
23
|
-
* @see WU-1323 - Lock policy integration tests
|
|
24
|
-
*/
|
|
25
|
-
import { openSync, closeSync, writeFileSync, readFileSync, unlinkSync, existsSync, mkdirSync, } from 'node:fs';
|
|
26
|
-
import path from 'node:path';
|
|
27
|
-
import { toKebab, LUMENFLOW_PATHS, getProjectRoot } from './wu-constants.js';
|
|
28
|
-
// WU-1325: Import lock policy getter
|
|
29
|
-
import { getLockPolicyForLane } from './lane-checker.js';
|
|
30
|
-
/** Log prefix for lane-lock messages */
|
|
31
|
-
const LOG_PREFIX = '[lane-lock]';
|
|
32
|
-
/** Directory for lock files relative to project root */
|
|
33
|
-
const LOCKS_DIR = LUMENFLOW_PATHS.LOCKS_DIR;
|
|
34
|
-
/** Default stale lock threshold in hours (WU-1949: reduced from 24h to 2h) */
|
|
35
|
-
const DEFAULT_STALE_LOCK_THRESHOLD_HOURS = 2;
|
|
36
|
-
/**
|
|
37
|
-
* Get the stale lock threshold in milliseconds.
|
|
38
|
-
*
|
|
39
|
-
* WU-1949: Default is 2 hours. Can be overridden via STALE_LOCK_THRESHOLD_HOURS env var.
|
|
40
|
-
*
|
|
41
|
-
* @returns {number} Threshold in milliseconds
|
|
42
|
-
*/
|
|
43
|
-
export function getStaleThresholdMs() {
|
|
44
|
-
const envValue = process.env.STALE_LOCK_THRESHOLD_HOURS;
|
|
45
|
-
if (envValue) {
|
|
46
|
-
const hours = parseFloat(envValue);
|
|
47
|
-
if (!Number.isNaN(hours) && hours > 0) {
|
|
48
|
-
return hours * 60 * 60 * 1000;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return DEFAULT_STALE_LOCK_THRESHOLD_HOURS * 60 * 60 * 1000;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* @typedef {Object} LockMetadata
|
|
55
|
-
* @property {string} wuId - WU ID that holds the lock (e.g., "WU-123")
|
|
56
|
-
* @property {string} timestamp - ISO timestamp when lock was acquired
|
|
57
|
-
* @property {string|null} agentSession - Agent session ID if available
|
|
58
|
-
* @property {number} pid - Process ID that acquired the lock
|
|
59
|
-
* @property {string} lane - Original lane name
|
|
60
|
-
*/
|
|
61
|
-
/**
|
|
62
|
-
* @typedef {Object} LockResult
|
|
63
|
-
* @property {boolean} acquired - Whether lock was successfully acquired
|
|
64
|
-
* @property {string|null} error - Error message if acquisition failed
|
|
65
|
-
* @property {LockMetadata|null} existingLock - Existing lock metadata if lock already exists
|
|
66
|
-
* @property {boolean} isStale - Whether the existing lock is stale (>2h old by default)
|
|
67
|
-
*/
|
|
68
|
-
/**
|
|
69
|
-
* @typedef {Object} UnlockResult
|
|
70
|
-
* @property {boolean} released - Whether lock was successfully released
|
|
71
|
-
* @property {string|null} error - Error message if release failed
|
|
72
|
-
* @property {boolean} notFound - Whether lock file was not found
|
|
73
|
-
*/
|
|
74
|
-
/**
|
|
75
|
-
* Get the path to the locks directory
|
|
76
|
-
* @param {string} [baseDir] - Optional base directory (defaults to project root)
|
|
77
|
-
* @returns {string} Absolute path to locks directory
|
|
78
|
-
*/
|
|
79
|
-
export function getLocksDir(baseDir = null) {
|
|
80
|
-
const projectRoot = baseDir || getProjectRoot(import.meta.url);
|
|
81
|
-
return path.join(projectRoot, LOCKS_DIR);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Get the path to a lock file for a specific lane
|
|
85
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
86
|
-
* @param {string} [baseDir] - Optional base directory
|
|
87
|
-
* @returns {string} Absolute path to lock file
|
|
88
|
-
*/
|
|
89
|
-
export function getLockFilePath(lane, baseDir = null) {
|
|
90
|
-
const laneKebab = toKebab(lane);
|
|
91
|
-
const locksDir = getLocksDir(baseDir);
|
|
92
|
-
return path.join(locksDir, `${laneKebab}.lock`);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Ensure the locks directory exists
|
|
96
|
-
* @param {string} [baseDir] - Optional base directory
|
|
97
|
-
*/
|
|
98
|
-
function ensureLocksDir(baseDir = null) {
|
|
99
|
-
const locksDir = getLocksDir(baseDir);
|
|
100
|
-
if (!existsSync(locksDir)) {
|
|
101
|
-
mkdirSync(locksDir, { recursive: true });
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Check if a lock is stale (>2 hours old by default, configurable via env var)
|
|
106
|
-
*
|
|
107
|
-
* WU-1949: Reduced threshold from 24h to 2h. Zombie detection (PID check)
|
|
108
|
-
* remains the fast-path for immediate recovery when process has exited.
|
|
109
|
-
*
|
|
110
|
-
* @param {LockMetadata} metadata - Lock metadata
|
|
111
|
-
* @returns {boolean} True if lock is stale
|
|
112
|
-
*/
|
|
113
|
-
export function isLockStale(metadata) {
|
|
114
|
-
if (!metadata || !metadata.timestamp) {
|
|
115
|
-
return true; // Invalid metadata is considered stale
|
|
116
|
-
}
|
|
117
|
-
const lockTime = new Date(metadata.timestamp).getTime();
|
|
118
|
-
const now = Date.now();
|
|
119
|
-
return now - lockTime > getStaleThresholdMs();
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* WU-1808: Check if a lock is a "zombie" (PID no longer running)
|
|
123
|
-
*
|
|
124
|
-
* A zombie lock occurs when the process that acquired the lock has crashed
|
|
125
|
-
* or exited without releasing it. This function checks if the process
|
|
126
|
-
* identified by the lock's PID is still running.
|
|
127
|
-
*
|
|
128
|
-
* @param {LockMetadata} metadata - Lock metadata
|
|
129
|
-
* @returns {boolean} True if lock is a zombie (PID not running)
|
|
130
|
-
*/
|
|
131
|
-
export function isZombieLock(metadata) {
|
|
132
|
-
if (!metadata || typeof metadata.pid !== 'number') {
|
|
133
|
-
return true; // Invalid metadata is considered zombie
|
|
134
|
-
}
|
|
135
|
-
// Check if process is running by sending signal 0
|
|
136
|
-
// This doesn't actually send a signal, but checks if the process exists
|
|
137
|
-
try {
|
|
138
|
-
process.kill(metadata.pid, 0);
|
|
139
|
-
return false; // Process exists
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
// ESRCH = no such process (zombie)
|
|
143
|
-
// EPERM = process exists but we don't have permission (not zombie)
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Read lock metadata from a lock file
|
|
149
|
-
* @param {string} lockPath - Path to lock file
|
|
150
|
-
* @returns {LockMetadata|null} Lock metadata or null if file doesn't exist/is invalid
|
|
151
|
-
*/
|
|
152
|
-
export function readLockMetadata(lockPath) {
|
|
153
|
-
try {
|
|
154
|
-
if (!existsSync(lockPath)) {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
const content = readFileSync(lockPath, { encoding: 'utf-8' });
|
|
158
|
-
return JSON.parse(content);
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
// Invalid JSON or read error - treat as no lock
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Acquire a lane lock atomically
|
|
167
|
-
*
|
|
168
|
-
* Uses the 'wx' flag for atomic file creation - fails if file already exists.
|
|
169
|
-
* This prevents TOCTOU race conditions where multiple agents could both
|
|
170
|
-
* read an empty lock state before either writes.
|
|
171
|
-
*
|
|
172
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
173
|
-
* @param {string} wuId - WU ID being claimed (e.g., "WU-123")
|
|
174
|
-
* @param {Object} [options] - Optional parameters
|
|
175
|
-
* @param {string} [options.agentSession] - Agent session ID
|
|
176
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
177
|
-
* @returns {LockResult} Result of lock acquisition attempt
|
|
178
|
-
*/
|
|
179
|
-
// eslint-disable-next-line sonarjs/cognitive-complexity -- WU-1808: Added zombie lock detection increases complexity but all paths are necessary
|
|
180
|
-
export function acquireLaneLock(lane, wuId, options = {}) {
|
|
181
|
-
const { agentSession = null, baseDir = null } = options;
|
|
182
|
-
// WU-1325: Check lock policy before acquiring
|
|
183
|
-
const lockPolicy = getLockPolicyForLane(lane);
|
|
184
|
-
if (lockPolicy === 'none') {
|
|
185
|
-
console.log(`${LOG_PREFIX} Skipping lock acquisition for "${lane}" (lock_policy=none)`);
|
|
186
|
-
return {
|
|
187
|
-
acquired: true,
|
|
188
|
-
error: null,
|
|
189
|
-
existingLock: null,
|
|
190
|
-
isStale: false,
|
|
191
|
-
skipped: true,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
try {
|
|
195
|
-
ensureLocksDir(baseDir);
|
|
196
|
-
const lockPath = getLockFilePath(lane, baseDir);
|
|
197
|
-
// Build lock metadata
|
|
198
|
-
const metadata = {
|
|
199
|
-
wuId,
|
|
200
|
-
timestamp: new Date().toISOString(),
|
|
201
|
-
agentSession,
|
|
202
|
-
pid: process.pid,
|
|
203
|
-
lane,
|
|
204
|
-
};
|
|
205
|
-
try {
|
|
206
|
-
// Attempt atomic file creation with 'wx' flag
|
|
207
|
-
// 'wx' = write exclusive - fails if file exists
|
|
208
|
-
const fd = openSync(lockPath, 'wx');
|
|
209
|
-
// Write metadata and close
|
|
210
|
-
writeFileSync(lockPath, JSON.stringify(metadata, null, 2), { encoding: 'utf-8' });
|
|
211
|
-
closeSync(fd);
|
|
212
|
-
console.log(`${LOG_PREFIX} Acquired lane lock for "${lane}" (${wuId})`);
|
|
213
|
-
return {
|
|
214
|
-
acquired: true,
|
|
215
|
-
error: null,
|
|
216
|
-
existingLock: null,
|
|
217
|
-
isStale: false,
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
catch (err) {
|
|
221
|
-
// File already exists - check if it's our lock or another agent's
|
|
222
|
-
if (err.code === 'EEXIST') {
|
|
223
|
-
const existingLock = readLockMetadata(lockPath);
|
|
224
|
-
const stale = existingLock ? isLockStale(existingLock) : true;
|
|
225
|
-
const zombie = existingLock ? isZombieLock(existingLock) : true;
|
|
226
|
-
// Check if it's the same WU (re-claim attempt)
|
|
227
|
-
if (existingLock && existingLock.wuId === wuId) {
|
|
228
|
-
console.log(`${LOG_PREFIX} Lock already held by same WU (${wuId})`);
|
|
229
|
-
return {
|
|
230
|
-
acquired: true, // Allow re-claim of same WU
|
|
231
|
-
error: null,
|
|
232
|
-
existingLock,
|
|
233
|
-
isStale: stale,
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
// WU-1901: Auto-clear only when lock is BOTH stale AND zombie.
|
|
237
|
-
// A dead PID alone is not sufficient because wu:claim is a short-lived
|
|
238
|
-
// process whose PID immediately becomes invalid after creating the worktree.
|
|
239
|
-
// Requiring staleness (>2h) prevents clearing live persistent locks that
|
|
240
|
-
// were legitimately acquired by a now-exited wu:claim process.
|
|
241
|
-
if (zombie && stale) {
|
|
242
|
-
console.warn(`${LOG_PREFIX} Detected stale zombie lock for "${lane}" (PID ${existingLock?.pid} not running, lock age > threshold)`);
|
|
243
|
-
console.warn(`${LOG_PREFIX} Previous owner: ${existingLock?.wuId}`);
|
|
244
|
-
console.warn(`${LOG_PREFIX} Lock timestamp: ${existingLock?.timestamp}`);
|
|
245
|
-
console.warn(`${LOG_PREFIX} Auto-clearing stale zombie lock...`);
|
|
246
|
-
// Remove the stale zombie lock
|
|
247
|
-
try {
|
|
248
|
-
unlinkSync(lockPath);
|
|
249
|
-
}
|
|
250
|
-
catch {
|
|
251
|
-
// Ignore errors - file might have been removed by another process
|
|
252
|
-
}
|
|
253
|
-
// Retry acquisition
|
|
254
|
-
return acquireLaneLock(lane, wuId, options);
|
|
255
|
-
}
|
|
256
|
-
return {
|
|
257
|
-
acquired: false,
|
|
258
|
-
error: existingLock
|
|
259
|
-
? `Lane "${lane}" is locked by ${existingLock.wuId} (since ${existingLock.timestamp})`
|
|
260
|
-
: `Lane "${lane}" has an invalid lock file`,
|
|
261
|
-
existingLock,
|
|
262
|
-
isStale: stale,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
// Other error (permissions, etc.)
|
|
266
|
-
throw err;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
catch (err) {
|
|
270
|
-
const errMessage = err instanceof Error ? err.message : String(err);
|
|
271
|
-
return {
|
|
272
|
-
acquired: false,
|
|
273
|
-
error: `Failed to acquire lane lock: ${errMessage}`,
|
|
274
|
-
existingLock: null,
|
|
275
|
-
isStale: false,
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Release a lane lock
|
|
281
|
-
*
|
|
282
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
283
|
-
* @param {Object} [options] - Optional parameters
|
|
284
|
-
* @param {string} [options.wuId] - WU ID to validate ownership (optional)
|
|
285
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
286
|
-
* @param {boolean} [options.force] - Force release even if not owner
|
|
287
|
-
* @returns {UnlockResult} Result of lock release attempt
|
|
288
|
-
*/
|
|
289
|
-
export function releaseLaneLock(lane, options = {}) {
|
|
290
|
-
const { wuId = null, baseDir = null, force = false } = options;
|
|
291
|
-
try {
|
|
292
|
-
const lockPath = getLockFilePath(lane, baseDir);
|
|
293
|
-
if (!existsSync(lockPath)) {
|
|
294
|
-
// Lock doesn't exist - not an error, just nothing to release
|
|
295
|
-
return {
|
|
296
|
-
released: true,
|
|
297
|
-
error: null,
|
|
298
|
-
notFound: true,
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
// Validate ownership if wuId provided
|
|
302
|
-
if (wuId && !force) {
|
|
303
|
-
const existingLock = readLockMetadata(lockPath);
|
|
304
|
-
if (existingLock && existingLock.wuId !== wuId) {
|
|
305
|
-
return {
|
|
306
|
-
released: false,
|
|
307
|
-
error: `Cannot release lock: owned by ${existingLock.wuId}, not ${wuId}`,
|
|
308
|
-
notFound: false,
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
// Remove the lock file
|
|
313
|
-
unlinkSync(lockPath);
|
|
314
|
-
console.log(`${LOG_PREFIX} Released lane lock for "${lane}"`);
|
|
315
|
-
return {
|
|
316
|
-
released: true,
|
|
317
|
-
error: null,
|
|
318
|
-
notFound: false,
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
catch (err) {
|
|
322
|
-
const errMessage = err instanceof Error ? err.message : String(err);
|
|
323
|
-
return {
|
|
324
|
-
released: false,
|
|
325
|
-
error: `Failed to release lane lock: ${errMessage}`,
|
|
326
|
-
notFound: false,
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Check if a lane is currently locked
|
|
332
|
-
*
|
|
333
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
334
|
-
* @param {Object} [options] - Optional parameters
|
|
335
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
336
|
-
* @returns {{ locked: boolean, metadata: LockMetadata|null, isStale: boolean }}
|
|
337
|
-
*/
|
|
338
|
-
export function checkLaneLock(lane, options = {}) {
|
|
339
|
-
const { baseDir = null } = options;
|
|
340
|
-
const lockPath = getLockFilePath(lane, baseDir);
|
|
341
|
-
const metadata = readLockMetadata(lockPath);
|
|
342
|
-
if (!metadata) {
|
|
343
|
-
return {
|
|
344
|
-
locked: false,
|
|
345
|
-
metadata: null,
|
|
346
|
-
isStale: false,
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
return {
|
|
350
|
-
locked: true,
|
|
351
|
-
metadata,
|
|
352
|
-
isStale: isLockStale(metadata),
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Force-remove a stale lock with warning
|
|
357
|
-
*
|
|
358
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
359
|
-
* @param {Object} [options] - Optional parameters
|
|
360
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
361
|
-
* @returns {UnlockResult} Result of forced removal
|
|
362
|
-
*/
|
|
363
|
-
export function forceRemoveStaleLock(lane, options = {}) {
|
|
364
|
-
const { baseDir = null } = options;
|
|
365
|
-
const lockPath = getLockFilePath(lane, baseDir);
|
|
366
|
-
const existingLock = readLockMetadata(lockPath);
|
|
367
|
-
if (!existingLock) {
|
|
368
|
-
return {
|
|
369
|
-
released: true,
|
|
370
|
-
error: null,
|
|
371
|
-
notFound: true,
|
|
372
|
-
};
|
|
373
|
-
}
|
|
374
|
-
if (!isLockStale(existingLock)) {
|
|
375
|
-
return {
|
|
376
|
-
released: false,
|
|
377
|
-
error: `Cannot force-remove: lock is not stale (${existingLock.wuId} since ${existingLock.timestamp})`,
|
|
378
|
-
notFound: false,
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
console.warn(`${LOG_PREFIX} ⚠️ Force-removing stale lock for "${lane}"`);
|
|
382
|
-
console.warn(`${LOG_PREFIX} Previous owner: ${existingLock.wuId}`);
|
|
383
|
-
console.warn(`${LOG_PREFIX} Lock timestamp: ${existingLock.timestamp}`);
|
|
384
|
-
return releaseLaneLock(lane, { baseDir, force: true });
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Get all current lane locks
|
|
388
|
-
*
|
|
389
|
-
* @param {Object} [options] - Optional parameters
|
|
390
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
391
|
-
* @returns {Map<string, LockMetadata>} Map of lane name to lock metadata
|
|
392
|
-
*/
|
|
393
|
-
export function getAllLaneLocks(options = {}) {
|
|
394
|
-
const { baseDir = null } = options;
|
|
395
|
-
const locksDir = getLocksDir(baseDir);
|
|
396
|
-
const locks = new Map();
|
|
397
|
-
if (!existsSync(locksDir)) {
|
|
398
|
-
return locks;
|
|
399
|
-
}
|
|
400
|
-
try {
|
|
401
|
-
const files = require('node:fs').readdirSync(locksDir);
|
|
402
|
-
for (const file of files) {
|
|
403
|
-
if (!file.endsWith('.lock'))
|
|
404
|
-
continue;
|
|
405
|
-
const lockPath = path.join(locksDir, file);
|
|
406
|
-
const metadata = readLockMetadata(lockPath);
|
|
407
|
-
if (metadata && metadata.lane) {
|
|
408
|
-
locks.set(metadata.lane, metadata);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
catch {
|
|
413
|
-
// Ignore errors reading directory
|
|
414
|
-
}
|
|
415
|
-
return locks;
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* @typedef {Object} AuditedUnlockResult
|
|
419
|
-
* @property {boolean} released - Whether lock was successfully released
|
|
420
|
-
* @property {string|null} error - Error message if release failed
|
|
421
|
-
* @property {boolean} notFound - Whether lock file was not found
|
|
422
|
-
* @property {string} [reason] - The provided reason for unlocking
|
|
423
|
-
* @property {boolean} [forced] - Whether --force was used
|
|
424
|
-
* @property {LockMetadata|null} [previousLock] - Metadata of the removed lock
|
|
425
|
-
*/
|
|
426
|
-
/**
|
|
427
|
-
* WU-1808: Audited unlock command for operators to safely clear lane locks
|
|
428
|
-
*
|
|
429
|
-
* This function provides a dedicated command for operators to clear locks with
|
|
430
|
-
* proper audit logging. It follows a safety-first approach:
|
|
431
|
-
*
|
|
432
|
-
* - Zombie locks (PID not running): Can be unlocked without --force
|
|
433
|
-
* - Stale locks (>2h old by default): Can be unlocked without --force
|
|
434
|
-
* - Active locks (recent, PID running): Require --force to unlock
|
|
435
|
-
*
|
|
436
|
-
* All unlocks require a reason parameter for audit purposes.
|
|
437
|
-
*
|
|
438
|
-
* @param {string} lane - Lane name (e.g., "Operations: Tooling")
|
|
439
|
-
* @param {Object} options - Required options
|
|
440
|
-
* @param {string} options.reason - Reason for unlocking (required for audit)
|
|
441
|
-
* @param {string} [options.baseDir] - Base directory for lock files
|
|
442
|
-
* @param {boolean} [options.force] - Force unlock even if lock is active
|
|
443
|
-
* @returns {AuditedUnlockResult} Result of audited unlock attempt
|
|
444
|
-
*/
|
|
445
|
-
export function auditedUnlock(lane, options) {
|
|
446
|
-
const { reason, baseDir = null, force = false } = options;
|
|
447
|
-
// Require reason for audit trail
|
|
448
|
-
if (!reason) {
|
|
449
|
-
return {
|
|
450
|
-
released: false,
|
|
451
|
-
error: 'Reason is required for audited unlock. Use --reason "<text>"',
|
|
452
|
-
notFound: false,
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
const lockPath = getLockFilePath(lane, baseDir);
|
|
456
|
-
const existingLock = readLockMetadata(lockPath);
|
|
457
|
-
// Handle non-existent lock
|
|
458
|
-
if (!existingLock) {
|
|
459
|
-
return {
|
|
460
|
-
released: true,
|
|
461
|
-
error: null,
|
|
462
|
-
notFound: true,
|
|
463
|
-
reason,
|
|
464
|
-
};
|
|
465
|
-
}
|
|
466
|
-
const stale = isLockStale(existingLock);
|
|
467
|
-
const zombie = isZombieLock(existingLock);
|
|
468
|
-
const safeToRemove = stale || zombie;
|
|
469
|
-
// If lock is active (not stale, not zombie), require --force
|
|
470
|
-
if (!safeToRemove && !force) {
|
|
471
|
-
return {
|
|
472
|
-
released: false,
|
|
473
|
-
error: `Cannot unlock active lock for "${lane}" (${existingLock.wuId}).\n` +
|
|
474
|
-
`Lock is recent (${existingLock.timestamp}) and PID ${existingLock.pid} is running.\n` +
|
|
475
|
-
`Use --force to override (emergency only).`,
|
|
476
|
-
notFound: false,
|
|
477
|
-
previousLock: existingLock,
|
|
478
|
-
};
|
|
479
|
-
}
|
|
480
|
-
// Log the unlock for audit purposes
|
|
481
|
-
const unlockType = force ? 'FORCED' : zombie ? 'ZOMBIE' : 'STALE';
|
|
482
|
-
console.log(`${LOG_PREFIX} Audited unlock (${unlockType}) for "${lane}"`);
|
|
483
|
-
console.log(`${LOG_PREFIX} Previous owner: ${existingLock.wuId}`);
|
|
484
|
-
console.log(`${LOG_PREFIX} Lock timestamp: ${existingLock.timestamp}`);
|
|
485
|
-
console.log(`${LOG_PREFIX} Lock PID: ${existingLock.pid}`);
|
|
486
|
-
console.log(`${LOG_PREFIX} Reason: ${reason}`);
|
|
487
|
-
if (force && !safeToRemove) {
|
|
488
|
-
console.warn(`${LOG_PREFIX} ⚠️ WARNING: Forced unlock of active lock!`);
|
|
489
|
-
}
|
|
490
|
-
// Release the lock
|
|
491
|
-
const releaseResult = releaseLaneLock(lane, { baseDir, force: true });
|
|
492
|
-
return {
|
|
493
|
-
...releaseResult,
|
|
494
|
-
reason,
|
|
495
|
-
forced: force && !safeToRemove,
|
|
496
|
-
previousLock: existingLock,
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
//# sourceMappingURL=lane-lock.js.map
|
package/dist/lane-lock.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lane-lock.js","sourceRoot":"","sources":["../src/lane-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Schema for a single lane suggestion from the LLM
|
|
4
|
-
*/
|
|
5
|
-
export declare const LaneSuggestionSchema: z.ZodObject<{
|
|
6
|
-
lane: z.ZodString;
|
|
7
|
-
description: z.ZodString;
|
|
8
|
-
rationale: z.ZodString;
|
|
9
|
-
code_paths: z.ZodArray<z.ZodString>;
|
|
10
|
-
keywords: z.ZodArray<z.ZodString>;
|
|
11
|
-
}, z.core.$strip>;
|
|
12
|
-
export type LaneSuggestion = z.infer<typeof LaneSuggestionSchema>;
|
|
13
|
-
/**
|
|
14
|
-
* Schema for the complete LLM response
|
|
15
|
-
*/
|
|
16
|
-
export declare const LaneSuggestResponseSchema: z.ZodObject<{
|
|
17
|
-
suggestions: z.ZodArray<z.ZodObject<{
|
|
18
|
-
lane: z.ZodString;
|
|
19
|
-
description: z.ZodString;
|
|
20
|
-
rationale: z.ZodString;
|
|
21
|
-
code_paths: z.ZodArray<z.ZodString>;
|
|
22
|
-
keywords: z.ZodArray<z.ZodString>;
|
|
23
|
-
}, z.core.$strip>>;
|
|
24
|
-
}, z.core.$strip>;
|
|
25
|
-
export type LaneSuggestResponse = z.infer<typeof LaneSuggestResponseSchema>;
|
|
26
|
-
/**
|
|
27
|
-
* Project context gathered for LLM analysis
|
|
28
|
-
*/
|
|
29
|
-
export interface ProjectContext {
|
|
30
|
-
/** Names of packages found (for monorepos) */
|
|
31
|
-
packageNames: string[];
|
|
32
|
-
/** Top-level directory structure */
|
|
33
|
-
directoryStructure: string[];
|
|
34
|
-
/** Content of README.md if present */
|
|
35
|
-
readme: string | null;
|
|
36
|
-
/** Content of package.json if present */
|
|
37
|
-
packageJson: {
|
|
38
|
-
name?: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
workspaces?: string[];
|
|
41
|
-
} | null;
|
|
42
|
-
/** Existing lane definitions if UnsafeAny */
|
|
43
|
-
existingLanes: string[];
|
|
44
|
-
/** Whether docs directory exists */
|
|
45
|
-
hasDocsDir: boolean;
|
|
46
|
-
/** Whether apps directory exists (common in monorepos) */
|
|
47
|
-
hasAppsDir: boolean;
|
|
48
|
-
/** Whether packages directory exists (monorepo indicator) */
|
|
49
|
-
hasPackagesDir: boolean;
|
|
50
|
-
/** Whether it's a monorepo */
|
|
51
|
-
isMonorepo: boolean;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Result of lane suggestion including suggestions and metadata
|
|
55
|
-
*/
|
|
56
|
-
export interface LaneSuggestResult {
|
|
57
|
-
suggestions: LaneSuggestion[];
|
|
58
|
-
context: {
|
|
59
|
-
packageCount: number;
|
|
60
|
-
docsFound: boolean;
|
|
61
|
-
existingConfig: boolean;
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Gather project context from the filesystem
|
|
66
|
-
*/
|
|
67
|
-
export declare function gatherProjectContext(projectRoot: string): ProjectContext;
|
|
68
|
-
/**
|
|
69
|
-
* Generate the system prompt for lane suggestion
|
|
70
|
-
*/
|
|
71
|
-
export declare function generateSystemPrompt(): string;
|
|
72
|
-
/**
|
|
73
|
-
* Generate the user prompt with project context
|
|
74
|
-
*/
|
|
75
|
-
export declare function generateUserPrompt(context: ProjectContext): string;
|
|
76
|
-
/**
|
|
77
|
-
* Parse and validate LLM response
|
|
78
|
-
*/
|
|
79
|
-
export declare function parseLLMResponse(response: string): LaneSuggestResponse;
|
|
80
|
-
/**
|
|
81
|
-
* Validate that a lane name follows the "Parent: Sublane" format
|
|
82
|
-
*/
|
|
83
|
-
export declare function isValidLaneFormat(lane: string): boolean;
|
|
84
|
-
/**
|
|
85
|
-
* Generate a dry-run preview of what would be sent to the LLM
|
|
86
|
-
*/
|
|
87
|
-
export declare function generateDryRunPreview(projectRoot: string): {
|
|
88
|
-
context: ProjectContext;
|
|
89
|
-
systemPrompt: string;
|
|
90
|
-
userPrompt: string;
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Get default lane suggestions for a minimal project
|
|
94
|
-
* Used when LLM is not available or for dry-run
|
|
95
|
-
*/
|
|
96
|
-
export declare function getDefaultSuggestions(context: ProjectContext): LaneSuggestion[];
|
|
97
|
-
//# sourceMappingURL=lane-suggest-prompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lane-suggest-prompt.d.ts","sourceRoot":"","sources":["../src/lane-suggest-prompt.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;iBAM/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;iBAEpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,sCAAsC;IACtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,yCAAyC;IACzC,WAAW,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,IAAI,CAAC;IACT,6CAA6C;IAC7C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,UAAU,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAuHD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAkBxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAmC7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAuElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAoBtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC1D,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAUA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,EAAE,CAqD/E"}
|