@lumenflow/core 2.19.0 → 2.20.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 +2 -2
- package/dist/active-wu-detector.d.ts.map +1 -1
- package/dist/active-wu-detector.js +1 -1
- package/dist/active-wu-detector.js.map +1 -1
- package/dist/adapters/context-adapters.d.ts +10 -0
- package/dist/adapters/context-adapters.d.ts.map +1 -1
- package/dist/adapters/context-adapters.js +15 -3
- package/dist/adapters/context-adapters.js.map +1 -1
- package/dist/adapters/filesystem-metrics.adapter.d.ts.map +1 -1
- package/dist/adapters/filesystem-metrics.adapter.js +13 -7
- package/dist/adapters/filesystem-metrics.adapter.js.map +1 -1
- package/dist/adapters/mock-dashboard-renderer.adapter.d.ts +1 -1
- package/dist/adapters/mock-dashboard-renderer.adapter.js +1 -1
- package/dist/agent-patterns-registry.d.ts +2 -2
- package/dist/agent-patterns-registry.js +5 -5
- package/dist/agent-patterns-registry.js.map +1 -1
- package/dist/arg-parser.d.ts.map +1 -1
- package/dist/arg-parser.js +4 -2
- package/dist/arg-parser.js.map +1 -1
- package/dist/backlog-editor.d.ts +21 -17
- package/dist/backlog-editor.d.ts.map +1 -1
- package/dist/backlog-editor.js +6 -29
- package/dist/backlog-editor.js.map +1 -1
- package/dist/backlog-generator.d.ts +14 -8
- package/dist/backlog-generator.d.ts.map +1 -1
- package/dist/backlog-generator.js +53 -20
- package/dist/backlog-generator.js.map +1 -1
- package/dist/backlog-parser.d.ts +2 -2
- package/dist/backlog-parser.d.ts.map +1 -1
- package/dist/backlog-parser.js.map +1 -1
- package/dist/backlog-sync-validator.d.ts +19 -10
- package/dist/backlog-sync-validator.d.ts.map +1 -1
- package/dist/backlog-sync-validator.js +41 -16
- package/dist/backlog-sync-validator.js.map +1 -1
- package/dist/branch-drift.d.ts +1 -1
- package/dist/branch-drift.d.ts.map +1 -1
- package/dist/branch-drift.js.map +1 -1
- package/dist/cleanup-lock.d.ts +4 -4
- package/dist/cleanup-lock.d.ts.map +1 -1
- package/dist/cleanup-lock.js.map +1 -1
- package/dist/cloud-detect.d.ts +1 -1
- package/dist/cloud-detect.d.ts.map +1 -1
- package/dist/code-path-validator.d.ts.map +1 -1
- package/dist/code-path-validator.js +15 -4
- package/dist/code-path-validator.js.map +1 -1
- package/dist/code-paths-overlap.d.ts +6 -3
- package/dist/code-paths-overlap.d.ts.map +1 -1
- package/dist/code-paths-overlap.js +1 -1
- package/dist/code-paths-overlap.js.map +1 -1
- package/dist/color-support.d.ts +1 -1
- package/dist/color-support.js +2 -2
- package/dist/color-support.js.map +1 -1
- package/dist/commands-logger.d.ts +11 -4
- package/dist/commands-logger.d.ts.map +1 -1
- package/dist/commands-logger.js +1 -1
- package/dist/commands-logger.js.map +1 -1
- package/dist/commit-message-utils.d.ts +1 -1
- package/dist/commit-message-utils.d.ts.map +1 -1
- package/dist/commit-message-utils.js.map +1 -1
- package/dist/compliance-parser.d.ts +86 -112
- package/dist/compliance-parser.d.ts.map +1 -1
- package/dist/compliance-parser.js +10 -61
- package/dist/compliance-parser.js.map +1 -1
- package/dist/constants/backlog-patterns.d.ts +1 -1
- package/dist/constants/backlog-patterns.d.ts.map +1 -1
- package/dist/constants/backlog-patterns.js.map +1 -1
- package/dist/context/location-resolver.js +1 -1
- package/dist/context/location-resolver.js.map +1 -1
- package/dist/context/wu-state-reader.d.ts +2 -0
- package/dist/context/wu-state-reader.d.ts.map +1 -1
- package/dist/context/wu-state-reader.js +3 -0
- package/dist/context/wu-state-reader.js.map +1 -1
- package/dist/context-validation-integration.d.ts +1 -1
- package/dist/context-validation-integration.d.ts.map +1 -1
- package/dist/context-validation-integration.js +1 -1
- package/dist/context-validation-integration.js.map +1 -1
- package/dist/core/scope-checker.d.ts +4 -4
- package/dist/core/scope-checker.d.ts.map +1 -1
- package/dist/core/scope-checker.js.map +1 -1
- package/dist/core/tool.schemas.d.ts +1 -1
- package/dist/core/tool.schemas.d.ts.map +1 -1
- package/dist/core/worktree-guard.d.ts +1 -1
- package/dist/core/worktree-guard.d.ts.map +1 -1
- package/dist/core/worktree-guard.js.map +1 -1
- package/dist/coverage-gate.d.ts +14 -9
- package/dist/coverage-gate.d.ts.map +1 -1
- package/dist/coverage-gate.js +2 -2
- package/dist/coverage-gate.js.map +1 -1
- package/dist/date-utils.d.ts +3 -3
- package/dist/date-utils.d.ts.map +1 -1
- package/dist/date-utils.js.map +1 -1
- package/dist/delegation-escalation.d.ts +2 -2
- package/dist/delegation-escalation.d.ts.map +1 -1
- package/dist/delegation-escalation.js +6 -2
- package/dist/delegation-escalation.js.map +1 -1
- package/dist/delegation-monitor.d.ts +76 -22
- package/dist/delegation-monitor.d.ts.map +1 -1
- package/dist/delegation-monitor.js +3 -2
- package/dist/delegation-monitor.js.map +1 -1
- package/dist/delegation-recovery.d.ts +2 -2
- package/dist/delegation-recovery.d.ts.map +1 -1
- package/dist/delegation-recovery.js +4 -1
- package/dist/delegation-recovery.js.map +1 -1
- package/dist/delegation-registry-schema.d.ts +4 -4
- package/dist/delegation-registry-store.d.ts.map +1 -1
- package/dist/delegation-registry-store.js +8 -1
- package/dist/delegation-registry-store.js.map +1 -1
- package/dist/delegation-tree.d.ts +1 -1
- package/dist/delegation-tree.d.ts.map +1 -1
- package/dist/delegation-tree.js.map +1 -1
- package/dist/dependency-graph.d.ts +44 -24
- package/dist/dependency-graph.d.ts.map +1 -1
- package/dist/dependency-graph.js +60 -32
- package/dist/dependency-graph.js.map +1 -1
- package/dist/dependency-guard.d.ts +2 -2
- package/dist/dependency-guard.d.ts.map +1 -1
- package/dist/dependency-guard.js.map +1 -1
- package/dist/dependency-validator.d.ts +4 -4
- package/dist/dependency-validator.d.ts.map +1 -1
- package/dist/dependency-validator.js +2 -1
- package/dist/dependency-validator.js.map +1 -1
- package/dist/docs-path-validator.d.ts +1 -1
- package/dist/docs-path-validator.d.ts.map +1 -1
- package/dist/docs-path-validator.js.map +1 -1
- package/dist/domain/orchestration.constants.d.ts +2 -2
- package/dist/domain/orchestration.constants.js +2 -2
- package/dist/domain/orchestration.schemas.d.ts +2 -2
- package/dist/domain/recovery.schemas.js +2 -2
- package/dist/domain/recovery.schemas.js.map +1 -1
- package/dist/domain/validation.schemas.js +1 -1
- package/dist/domain/validation.schemas.js.map +1 -1
- package/dist/error-handler.d.ts +3 -3
- package/dist/error-handler.d.ts.map +1 -1
- package/dist/error-handler.js.map +1 -1
- package/dist/file-classifiers.d.ts +3 -3
- package/dist/file-classifiers.d.ts.map +1 -1
- package/dist/file-classifiers.js.map +1 -1
- package/dist/force-bypass-audit.d.ts.map +1 -1
- package/dist/force-bypass-audit.js.map +1 -1
- package/dist/gates-config.d.ts +1 -1
- package/dist/gates-config.js +1 -1
- package/dist/gates-config.js.map +1 -1
- package/dist/generate-traceability.d.ts +61 -51
- package/dist/generate-traceability.d.ts.map +1 -1
- package/dist/generate-traceability.js +34 -61
- package/dist/generate-traceability.js.map +1 -1
- package/dist/git-adapter.d.ts +3 -16
- package/dist/git-adapter.d.ts.map +1 -1
- package/dist/git-adapter.js +1 -1
- package/dist/git-adapter.js.map +1 -1
- package/dist/git-context-extractor.d.ts.map +1 -1
- package/dist/git-context-extractor.js +21 -10
- package/dist/git-context-extractor.js.map +1 -1
- package/dist/git-staged-validator.d.ts +1 -1
- package/dist/git-staged-validator.d.ts.map +1 -1
- package/dist/git-staged-validator.js +3 -2
- package/dist/git-staged-validator.js.map +1 -1
- package/dist/hardcoded-strings.d.ts +8 -3
- package/dist/hardcoded-strings.d.ts.map +1 -1
- package/dist/hardcoded-strings.js +4 -1
- package/dist/hardcoded-strings.js.map +1 -1
- package/dist/incremental-lint.d.ts +2 -2
- package/dist/incremental-lint.d.ts.map +1 -1
- package/dist/incremental-lint.js.map +1 -1
- package/dist/incremental-test.d.ts +1 -1
- package/dist/incremental-test.d.ts.map +1 -1
- package/dist/incremental-test.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/invariants/check-automated-tests.d.ts +11 -4
- package/dist/invariants/check-automated-tests.d.ts.map +1 -1
- package/dist/invariants/check-automated-tests.js +1 -1
- package/dist/invariants/check-automated-tests.js.map +1 -1
- package/dist/invariants-runner.d.ts +32 -7
- package/dist/invariants-runner.d.ts.map +1 -1
- package/dist/invariants-runner.js +20 -6
- package/dist/invariants-runner.js.map +1 -1
- package/dist/lane-checker.d.ts.map +1 -1
- package/dist/lane-checker.js +3 -0
- package/dist/lane-checker.js.map +1 -1
- package/dist/lane-inference.d.ts +7 -6
- package/dist/lane-inference.d.ts.map +1 -1
- package/dist/lane-inference.js +16 -9
- package/dist/lane-inference.js.map +1 -1
- package/dist/lane-suggest-prompt.d.ts +1 -1
- package/dist/lane-suggest-prompt.d.ts.map +1 -1
- package/dist/lane-validator.d.ts +5 -5
- package/dist/lane-validator.d.ts.map +1 -1
- package/dist/lane-validator.js +6 -6
- package/dist/lane-validator.js.map +1 -1
- package/dist/logs-lib.d.ts +1 -1
- package/dist/logs-lib.d.ts.map +1 -1
- package/dist/logs-lib.js +4 -1
- package/dist/logs-lib.js.map +1 -1
- package/dist/lumenflow-config-schema.d.ts +57 -57
- package/dist/lumenflow-config-schema.js +1 -1
- package/dist/lumenflow-config-schema.js.map +1 -1
- package/dist/manual-test-validator.d.ts +9 -9
- package/dist/manual-test-validator.d.ts.map +1 -1
- package/dist/manual-test-validator.js +4 -4
- package/dist/manual-test-validator.js.map +1 -1
- package/dist/merge-lock.d.ts +2 -2
- package/dist/merge-lock.d.ts.map +1 -1
- package/dist/merge-lock.js.map +1 -1
- package/dist/micro-worktree.d.ts +2 -2
- package/dist/micro-worktree.js +3 -3
- package/dist/micro-worktree.js.map +1 -1
- package/dist/orchestration-advisory-loader.d.ts +2 -2
- package/dist/orchestration-advisory-loader.d.ts.map +1 -1
- package/dist/orchestration-advisory-loader.js +1 -1
- package/dist/orchestration-advisory-loader.js.map +1 -1
- package/dist/orchestration-rules.d.ts +21 -9
- package/dist/orchestration-rules.d.ts.map +1 -1
- package/dist/orchestration-rules.js +1 -1
- package/dist/orchestration-rules.js.map +1 -1
- package/dist/orphan-detector.d.ts +11 -11
- package/dist/orphan-detector.d.ts.map +1 -1
- package/dist/orphan-detector.js.map +1 -1
- package/dist/path-classifiers.d.ts +2 -2
- package/dist/path-classifiers.d.ts.map +1 -1
- package/dist/path-classifiers.js.map +1 -1
- package/dist/piped-command-detector.d.ts +3 -3
- package/dist/piped-command-detector.d.ts.map +1 -1
- package/dist/piped-command-detector.js +1 -1
- package/dist/piped-command-detector.js.map +1 -1
- package/dist/ports/core-tools.ports.d.ts +1 -1
- package/dist/ports/core-tools.ports.js +1 -1
- package/dist/ports/dashboard-renderer.port.d.ts +2 -2
- package/dist/ports/dashboard-renderer.port.js +1 -1
- package/dist/ports/git-validator.ports.d.ts +70 -271
- package/dist/ports/git-validator.ports.d.ts.map +1 -1
- package/dist/ports/git-validator.ports.js +4 -5
- package/dist/ports/git-validator.ports.js.map +1 -1
- package/dist/ports/validation.ports.d.ts +1 -1
- package/dist/process-detector.d.ts +6 -10
- package/dist/process-detector.d.ts.map +1 -1
- package/dist/process-detector.js.map +1 -1
- package/dist/prompt-linter.d.ts +1 -1
- package/dist/prompt-linter.d.ts.map +1 -1
- package/dist/prompt-linter.js +4 -3
- package/dist/prompt-linter.js.map +1 -1
- package/dist/prompt-monitor.d.ts.map +1 -1
- package/dist/prompt-monitor.js +2 -2
- package/dist/prompt-monitor.js.map +1 -1
- package/dist/rebase-artifact-cleanup.d.ts +42 -33
- package/dist/rebase-artifact-cleanup.d.ts.map +1 -1
- package/dist/rebase-artifact-cleanup.js +8 -9
- package/dist/rebase-artifact-cleanup.js.map +1 -1
- package/dist/recovery/recovery-analyzer.d.ts +2 -2
- package/dist/recovery/recovery-analyzer.d.ts.map +1 -1
- package/dist/recovery/recovery-analyzer.js +1 -1
- package/dist/recovery/recovery-analyzer.js.map +1 -1
- package/dist/resolve-policy.d.ts +1 -1
- package/dist/resolve-policy.d.ts.map +1 -1
- package/dist/resolve-policy.js +3 -5
- package/dist/resolve-policy.js.map +1 -1
- package/dist/retry-strategy.d.ts +43 -27
- package/dist/retry-strategy.d.ts.map +1 -1
- package/dist/retry-strategy.js.map +1 -1
- package/dist/risk-detector.d.ts +1 -1
- package/dist/risk-detector.js +1 -1
- package/dist/rollback-utils.d.ts +6 -6
- package/dist/rollback-utils.d.ts.map +1 -1
- package/dist/rollback-utils.js +2 -2
- package/dist/rollback-utils.js.map +1 -1
- package/dist/sandbox-allowlist.d.ts +16 -0
- package/dist/sandbox-allowlist.d.ts.map +1 -0
- package/dist/sandbox-allowlist.js +75 -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 +65 -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 +64 -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 +28 -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 +62 -0
- package/dist/sandbox-profile.js.map +1 -0
- package/dist/schemas/flow-arg-validators.d.ts +18 -18
- package/dist/schemas/initiative-arg-validators.d.ts +28 -28
- package/dist/schemas/memory-arg-validators.d.ts +40 -40
- package/dist/schemas/schema-utils.js.map +1 -1
- package/dist/schemas/setup-arg-validators.d.ts +32 -32
- package/dist/schemas/setup-schemas.js +1 -1
- package/dist/schemas/setup-schemas.js.map +1 -1
- package/dist/schemas/validation-arg-validators.d.ts +4 -4
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts +51 -51
- package/dist/schemas/wu-lifecycle-schemas.js +1 -1
- package/dist/schemas/wu-lifecycle-schemas.js.map +1 -1
- package/dist/section-headings.d.ts +6 -6
- package/dist/section-headings.d.ts.map +1 -1
- package/dist/section-headings.js +7 -5
- package/dist/section-headings.js.map +1 -1
- package/dist/spawn-strategy.d.ts +1 -1
- package/dist/spawn-strategy.js +1 -1
- package/dist/stamp-status-validator.d.ts +7 -4
- package/dist/stamp-status-validator.d.ts.map +1 -1
- package/dist/stamp-status-validator.js.map +1 -1
- package/dist/stamp-utils.d.ts +15 -21
- package/dist/stamp-utils.d.ts.map +1 -1
- package/dist/stamp-utils.js +21 -5
- package/dist/stamp-utils.js.map +1 -1
- package/dist/state-machine.d.ts +1 -1
- package/dist/state-machine.d.ts.map +1 -1
- package/dist/state-machine.js +4 -2
- package/dist/state-machine.js.map +1 -1
- package/dist/system-map-validator.d.ts +25 -13
- package/dist/system-map-validator.d.ts.map +1 -1
- package/dist/system-map-validator.js +43 -21
- package/dist/system-map-validator.js.map +1 -1
- package/dist/telemetry.d.ts +9 -9
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +6 -5
- package/dist/telemetry.js.map +1 -1
- package/dist/template-loader.d.ts.map +1 -1
- package/dist/template-loader.js +13 -8
- package/dist/template-loader.js.map +1 -1
- package/dist/token-counter.d.ts +19 -13
- package/dist/token-counter.d.ts.map +1 -1
- package/dist/token-counter.js +1 -1
- package/dist/token-counter.js.map +1 -1
- package/dist/usecases/get-dashboard-data.usecase.d.ts +1 -1
- package/dist/usecases/get-dashboard-data.usecase.js +1 -1
- package/dist/usecases/get-suggestions.usecase.d.ts.map +1 -1
- package/dist/usecases/get-suggestions.usecase.js +4 -2
- package/dist/usecases/get-suggestions.usecase.js.map +1 -1
- package/dist/user-normalizer.d.ts +4 -4
- package/dist/user-normalizer.d.ts.map +1 -1
- package/dist/user-normalizer.js +2 -2
- package/dist/user-normalizer.js.map +1 -1
- package/dist/validation/command-registry.d.ts +1 -1
- package/dist/validation/command-registry.js +3 -3
- package/dist/validation/command-registry.js.map +1 -1
- package/dist/validation/types.d.ts +3 -1
- package/dist/validation/types.d.ts.map +1 -1
- package/dist/worktree-ownership.d.ts +4 -4
- package/dist/worktree-ownership.d.ts.map +1 -1
- package/dist/worktree-ownership.js +1 -1
- package/dist/worktree-ownership.js.map +1 -1
- package/dist/worktree-scanner.d.ts +36 -8
- package/dist/worktree-scanner.d.ts.map +1 -1
- package/dist/worktree-scanner.js +2 -2
- package/dist/worktree-scanner.js.map +1 -1
- package/dist/worktree-symlink.d.ts +25 -29
- package/dist/worktree-symlink.d.ts.map +1 -1
- package/dist/worktree-symlink.js +12 -7
- package/dist/worktree-symlink.js.map +1 -1
- package/dist/wu-backlog-updater.d.ts +1 -1
- package/dist/wu-backlog-updater.d.ts.map +1 -1
- package/dist/wu-backlog-updater.js.map +1 -1
- package/dist/wu-checkpoint.d.ts +6 -6
- package/dist/wu-checkpoint.d.ts.map +1 -1
- package/dist/wu-checkpoint.js.map +1 -1
- package/dist/wu-claim-helpers.d.ts +2 -2
- package/dist/wu-claim-helpers.d.ts.map +1 -1
- package/dist/wu-claim-helpers.js.map +1 -1
- package/dist/wu-claim-resume.d.ts +22 -8
- package/dist/wu-claim-resume.d.ts.map +1 -1
- package/dist/wu-claim-resume.js.map +1 -1
- package/dist/wu-cli-constants.d.ts +1 -3
- package/dist/wu-cli-constants.d.ts.map +1 -1
- package/dist/wu-cli-constants.js +1 -3
- package/dist/wu-cli-constants.js.map +1 -1
- package/dist/wu-consistency-checker.d.ts +83 -8
- package/dist/wu-consistency-checker.d.ts.map +1 -1
- package/dist/wu-consistency-checker.js +15 -8
- package/dist/wu-consistency-checker.js.map +1 -1
- package/dist/wu-constants.d.ts +2 -2
- package/dist/wu-constants.d.ts.map +1 -1
- package/dist/wu-constants.js +2 -2
- package/dist/wu-constants.js.map +1 -1
- package/dist/wu-context-constants.d.ts +4 -0
- package/dist/wu-context-constants.d.ts.map +1 -1
- package/dist/wu-context-constants.js +4 -0
- package/dist/wu-context-constants.js.map +1 -1
- package/dist/wu-create-validators.d.ts +3 -3
- package/dist/wu-create-validators.d.ts.map +1 -1
- package/dist/wu-create-validators.js +1 -1
- package/dist/wu-create-validators.js.map +1 -1
- package/dist/wu-domain-constants.d.ts +3 -3
- package/dist/wu-domain-constants.d.ts.map +1 -1
- package/dist/wu-domain-constants.js +7 -11
- package/dist/wu-domain-constants.js.map +1 -1
- package/dist/wu-done-branch-only.d.ts +16 -13
- package/dist/wu-done-branch-only.d.ts.map +1 -1
- package/dist/wu-done-branch-only.js +1 -1
- package/dist/wu-done-branch-only.js.map +1 -1
- package/dist/wu-done-branch-utils.d.ts +1 -1
- package/dist/wu-done-branch-utils.d.ts.map +1 -1
- package/dist/wu-done-branch-utils.js.map +1 -1
- package/dist/wu-done-cleanup.d.ts +1 -1
- package/dist/wu-done-cleanup.d.ts.map +1 -1
- package/dist/wu-done-cleanup.js.map +1 -1
- package/dist/wu-done-concurrent-merge.d.ts +1 -1
- package/dist/wu-done-concurrent-merge.d.ts.map +1 -1
- package/dist/wu-done-concurrent-merge.js +4 -2
- package/dist/wu-done-concurrent-merge.js.map +1 -1
- package/dist/wu-done-docs-generate.d.ts +2 -2
- package/dist/wu-done-docs-generate.js +2 -2
- package/dist/wu-done-docs-only.d.ts +1 -1
- package/dist/wu-done-docs-only.d.ts.map +1 -1
- package/dist/wu-done-docs-only.js.map +1 -1
- package/dist/wu-done-errors.d.ts +3 -3
- package/dist/wu-done-errors.d.ts.map +1 -1
- package/dist/wu-done-errors.js.map +1 -1
- package/dist/wu-done-inputs.d.ts +1 -1
- package/dist/wu-done-inputs.d.ts.map +1 -1
- package/dist/wu-done-inputs.js.map +1 -1
- package/dist/wu-done-machine.d.ts +2 -2
- package/dist/wu-done-messages.d.ts +30 -30
- package/dist/wu-done-messages.d.ts.map +1 -1
- package/dist/wu-done-messages.js +16 -13
- package/dist/wu-done-messages.js.map +1 -1
- package/dist/wu-done-metadata.d.ts +46 -35
- package/dist/wu-done-metadata.d.ts.map +1 -1
- package/dist/wu-done-metadata.js +12 -10
- package/dist/wu-done-metadata.js.map +1 -1
- package/dist/wu-done-paths.d.ts +33 -19
- package/dist/wu-done-paths.d.ts.map +1 -1
- package/dist/wu-done-paths.js +15 -9
- package/dist/wu-done-paths.js.map +1 -1
- package/dist/wu-done-pr.d.ts +9 -5
- package/dist/wu-done-pr.d.ts.map +1 -1
- package/dist/wu-done-pr.js +1 -1
- package/dist/wu-done-pr.js.map +1 -1
- package/dist/wu-done-preflight.d.ts +33 -27
- package/dist/wu-done-preflight.d.ts.map +1 -1
- package/dist/wu-done-preflight.js +24 -8
- package/dist/wu-done-preflight.js.map +1 -1
- package/dist/wu-done-retry-helpers.d.ts +5 -5
- package/dist/wu-done-retry-helpers.d.ts.map +1 -1
- package/dist/wu-done-retry-helpers.js +2 -2
- package/dist/wu-done-retry-helpers.js.map +1 -1
- package/dist/wu-done-ui.d.ts +5 -5
- package/dist/wu-done-ui.d.ts.map +1 -1
- package/dist/wu-done-ui.js +4 -2
- package/dist/wu-done-ui.js.map +1 -1
- package/dist/wu-done-validation.d.ts +34 -18
- package/dist/wu-done-validation.d.ts.map +1 -1
- package/dist/wu-done-validation.js +30 -16
- package/dist/wu-done-validation.js.map +1 -1
- package/dist/wu-done-worktree-services.d.ts +1 -1
- package/dist/wu-done-worktree-services.js +2 -2
- package/dist/wu-done-worktree-services.js.map +1 -1
- package/dist/wu-done-worktree.d.ts +60 -29
- package/dist/wu-done-worktree.d.ts.map +1 -1
- package/dist/wu-done-worktree.js +62 -45
- package/dist/wu-done-worktree.js.map +1 -1
- package/dist/wu-events-cleanup.d.ts.map +1 -1
- package/dist/wu-events-cleanup.js +6 -2
- package/dist/wu-events-cleanup.js.map +1 -1
- package/dist/wu-helpers.d.ts +21 -25
- package/dist/wu-helpers.d.ts.map +1 -1
- package/dist/wu-helpers.js +6 -4
- package/dist/wu-helpers.js.map +1 -1
- package/dist/wu-id-generator.d.ts.map +1 -1
- package/dist/wu-id-generator.js +5 -1
- package/dist/wu-id-generator.js.map +1 -1
- package/dist/wu-lint.d.ts +110 -48
- package/dist/wu-lint.d.ts.map +1 -1
- package/dist/wu-lint.js +86 -143
- package/dist/wu-lint.js.map +1 -1
- package/dist/wu-paths-constants.d.ts +1 -39
- package/dist/wu-paths-constants.d.ts.map +1 -1
- package/dist/wu-paths-constants.js +1 -39
- package/dist/wu-paths-constants.js.map +1 -1
- package/dist/wu-preflight-validators.d.ts +49 -107
- package/dist/wu-preflight-validators.d.ts.map +1 -1
- package/dist/wu-preflight-validators.js +97 -134
- package/dist/wu-preflight-validators.js.map +1 -1
- package/dist/wu-recovery.d.ts +49 -36
- package/dist/wu-recovery.d.ts.map +1 -1
- package/dist/wu-recovery.js +22 -14
- package/dist/wu-recovery.js.map +1 -1
- package/dist/wu-repair-core.d.ts +62 -32
- package/dist/wu-repair-core.d.ts.map +1 -1
- package/dist/wu-repair-core.js +31 -19
- package/dist/wu-repair-core.js.map +1 -1
- 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 +399 -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 +59 -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 +208 -0
- package/dist/wu-rules-resolvers.js.map +1 -0
- package/dist/wu-schema-normalization.d.ts +1 -1
- package/dist/wu-schema-normalization.d.ts.map +1 -1
- package/dist/wu-schema-normalization.js +5 -2
- package/dist/wu-schema-normalization.js.map +1 -1
- package/dist/wu-schema.d.ts +155 -186
- package/dist/wu-schema.d.ts.map +1 -1
- package/dist/wu-schema.js +36 -36
- package/dist/wu-schema.js.map +1 -1
- package/dist/wu-spawn-helpers.d.ts +7 -7
- package/dist/wu-spawn-helpers.d.ts.map +1 -1
- package/dist/wu-spawn-helpers.js.map +1 -1
- package/dist/wu-spawn-skills.d.ts +6 -6
- package/dist/wu-spawn-skills.d.ts.map +1 -1
- package/dist/wu-spawn-skills.js.map +1 -1
- package/dist/wu-spawn.d.ts +29 -8
- package/dist/wu-spawn.d.ts.map +1 -1
- package/dist/wu-spawn.js +33 -20
- package/dist/wu-spawn.js.map +1 -1
- package/dist/wu-state-schema.d.ts +4 -4
- package/dist/wu-state-schema.d.ts.map +1 -1
- package/dist/wu-state-schema.js.map +1 -1
- package/dist/wu-state-store.d.ts.map +1 -1
- package/dist/wu-state-store.js +10 -2
- package/dist/wu-state-store.js.map +1 -1
- package/dist/wu-status-transition.d.ts +21 -13
- package/dist/wu-status-transition.d.ts.map +1 -1
- package/dist/wu-status-transition.js +15 -8
- package/dist/wu-status-transition.js.map +1 -1
- package/dist/wu-status-updater.d.ts +2 -2
- package/dist/wu-status-updater.d.ts.map +1 -1
- package/dist/wu-status-updater.js +7 -2
- package/dist/wu-status-updater.js.map +1 -1
- package/dist/wu-transaction-collectors.d.ts +35 -37
- package/dist/wu-transaction-collectors.d.ts.map +1 -1
- package/dist/wu-transaction-collectors.js +7 -2
- package/dist/wu-transaction-collectors.js.map +1 -1
- package/dist/wu-transaction.d.ts +3 -3
- package/dist/wu-transaction.d.ts.map +1 -1
- package/dist/wu-transaction.js +4 -9
- package/dist/wu-transaction.js.map +1 -1
- package/dist/wu-type-helpers.d.ts +1 -1
- package/dist/wu-type-helpers.js +1 -1
- package/dist/wu-validation.d.ts +26 -10
- package/dist/wu-validation.d.ts.map +1 -1
- package/dist/wu-validation.js +3 -3
- package/dist/wu-validation.js.map +1 -1
- package/dist/wu-validator.d.ts +29 -15
- package/dist/wu-validator.d.ts.map +1 -1
- package/dist/wu-validator.js +23 -15
- package/dist/wu-validator.js.map +1 -1
- package/dist/wu-yaml-fixer.d.ts +26 -35
- package/dist/wu-yaml-fixer.d.ts.map +1 -1
- package/dist/wu-yaml-fixer.js +8 -5
- package/dist/wu-yaml-fixer.js.map +1 -1
- package/dist/wu-yaml.d.ts +9 -9
- package/dist/wu-yaml.d.ts.map +1 -1
- package/dist/wu-yaml.js +2 -1
- package/dist/wu-yaml.js.map +1 -1
- package/package.json +5 -11
|
@@ -1,129 +1,71 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Preflight validation functions for wu:preflight
|
|
3
|
+
* Preflight validation functions for wu:preflight and wu:done.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* This catches YAML mismatches early, saving time compared to full wu:done validation.
|
|
9
|
-
*
|
|
10
|
-
* Key validations:
|
|
11
|
-
* - WU YAML schema is valid (full canonical schema, not just required fields)
|
|
12
|
-
* - created field is YYYY-MM-DD format (fails fast on ISO timestamps)
|
|
13
|
-
* - code_paths files exist
|
|
14
|
-
* - test file paths exist (unit, e2e, integration - not manual)
|
|
15
|
-
*
|
|
16
|
-
* Design goals:
|
|
17
|
-
* - Complete in under 5 seconds
|
|
18
|
-
* - Clear error messages pointing to missing files
|
|
19
|
-
* - Reusable by wu:done for early validation
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
|
-
* Result structure for preflight validation
|
|
23
|
-
* @typedef {object} PreflightResult
|
|
24
|
-
* @property {boolean} valid - Whether all validations passed
|
|
25
|
-
* @property {string[]} errors - List of error messages
|
|
26
|
-
* @property {string[]} missingCodePaths - Code paths that don't exist
|
|
27
|
-
* @property {string[]} missingTestPaths - Test file paths that don't exist
|
|
5
|
+
* Uses phase-aware rules from wu-rules-engine:
|
|
6
|
+
* - intent/structural: syntax + policy intent checks
|
|
7
|
+
* - reality: disk/diff/parity/test existence checks
|
|
28
8
|
*/
|
|
9
|
+
import { type ValidationPhase } from './wu-rules-engine.js';
|
|
10
|
+
interface PreflightResultData {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
errors: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
missingCodePaths: string[];
|
|
15
|
+
missingCoverageCodePaths: string[];
|
|
16
|
+
missingTestPaths: string[];
|
|
17
|
+
changedFiles: string[];
|
|
18
|
+
suggestedTestPaths: Record<string, string[]>;
|
|
19
|
+
}
|
|
20
|
+
interface CreatePreflightResultInput {
|
|
21
|
+
valid: boolean;
|
|
22
|
+
errors?: string[];
|
|
23
|
+
warnings?: string[];
|
|
24
|
+
missingCodePaths?: string[];
|
|
25
|
+
missingCoverageCodePaths?: string[];
|
|
26
|
+
missingTestPaths?: string[];
|
|
27
|
+
changedFiles?: string[];
|
|
28
|
+
suggestedTestPaths?: Record<string, string[]>;
|
|
29
|
+
}
|
|
30
|
+
interface PathValidationResult {
|
|
31
|
+
valid: boolean;
|
|
32
|
+
errors: string[];
|
|
33
|
+
missing: string[];
|
|
34
|
+
}
|
|
29
35
|
/**
|
|
30
36
|
* Create a PreflightResult object
|
|
31
|
-
*
|
|
32
|
-
* @param {object} params - Result parameters
|
|
33
|
-
* @param {boolean} params.valid - Whether validation passed
|
|
34
|
-
* @param {string[]} [params.errors=[]] - Error messages
|
|
35
|
-
* @param {string[]} [params.missingCodePaths=[]] - Missing code paths
|
|
36
|
-
* @param {string[]} [params.missingTestPaths=[]] - Missing test paths
|
|
37
|
-
* @param {Record<string, string[]>} [params.suggestedTestPaths={}] - Suggested test paths
|
|
38
|
-
* @returns {PreflightResult}
|
|
39
37
|
*/
|
|
40
|
-
export declare function createPreflightResult({ valid, errors, missingCodePaths, missingTestPaths, suggestedTestPaths, }:
|
|
41
|
-
valid: any;
|
|
42
|
-
errors?: any[];
|
|
43
|
-
missingCodePaths?: any[];
|
|
44
|
-
missingTestPaths?: any[];
|
|
45
|
-
suggestedTestPaths?: {};
|
|
46
|
-
}): {
|
|
47
|
-
valid: any;
|
|
48
|
-
errors: any[];
|
|
49
|
-
missingCodePaths: any[];
|
|
50
|
-
missingTestPaths: any[];
|
|
51
|
-
suggestedTestPaths: {};
|
|
52
|
-
};
|
|
38
|
+
export declare function createPreflightResult({ valid, errors, warnings, missingCodePaths, missingCoverageCodePaths, missingTestPaths, changedFiles, suggestedTestPaths, }: CreatePreflightResultInput): PreflightResultData;
|
|
53
39
|
/**
|
|
54
|
-
* Validate code_paths files exist
|
|
55
|
-
*
|
|
56
|
-
* WU-1329: Exported for use by wu:create strict validation.
|
|
57
|
-
*
|
|
58
|
-
* @param {string[]} codePaths - List of code paths from WU YAML
|
|
59
|
-
* @param {string} rootDir - Root directory to resolve paths against
|
|
60
|
-
* @returns {{ valid: boolean, errors: string[], missing: string[] }}
|
|
40
|
+
* Validate code_paths files/globs exist on disk.
|
|
61
41
|
*/
|
|
62
|
-
export declare function validateCodePathsExistence(codePaths:
|
|
63
|
-
valid: boolean;
|
|
64
|
-
errors: string[];
|
|
65
|
-
missing: any[];
|
|
66
|
-
};
|
|
42
|
+
export declare function validateCodePathsExistence(codePaths: unknown, rootDir: string): PathValidationResult;
|
|
67
43
|
/**
|
|
68
|
-
* Validate test file paths exist
|
|
69
|
-
*
|
|
70
|
-
* Manual tests are descriptions, not file paths, so they're skipped.
|
|
71
|
-
*
|
|
72
|
-
* WU-1329: Exported for use by wu:create strict validation.
|
|
44
|
+
* Validate automated test file paths/globs exist.
|
|
73
45
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* @returns {{ valid: boolean, errors: string[], missing: string[] }}
|
|
77
|
-
*/
|
|
78
|
-
export declare function validateTestPathsExistence(tests: any, rootDir: any): {
|
|
79
|
-
valid: boolean;
|
|
80
|
-
errors: string[];
|
|
81
|
-
missing: any[];
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Run preflight validation for a WU
|
|
85
|
-
*
|
|
86
|
-
* Validates:
|
|
87
|
-
* 1. WU YAML schema is valid
|
|
88
|
-
* 2. code_paths files exist
|
|
89
|
-
* 3. test file paths exist (unit, e2e, integration)
|
|
90
|
-
*
|
|
91
|
-
* WU-1830: When worktreePath is provided, YAML is read from worktree (not rootDir).
|
|
92
|
-
* This ensures that when agent runs wu:edit to update code_paths in worktree,
|
|
93
|
-
* preflight validation uses the updated YAML, not stale main.
|
|
94
|
-
*
|
|
95
|
-
* @param {string} id - WU ID (e.g., 'WU-999')
|
|
96
|
-
* @param {ValidatePreflightOptions} [options={}] - Options
|
|
97
|
-
* @returns {Promise<PreflightResult>}
|
|
46
|
+
* Non-path-like prose entries are ignored here; they are classified by
|
|
47
|
+
* reality-phase rule R-007.
|
|
98
48
|
*/
|
|
49
|
+
export declare function validateTestPathsExistence(tests: unknown, rootDir: string): PathValidationResult;
|
|
99
50
|
export interface ValidatePreflightOptions {
|
|
100
51
|
/** Root directory for path resolution (fallback) */
|
|
101
52
|
rootDir?: string;
|
|
102
53
|
/** Worktree path (preferred source for YAML and file checks) */
|
|
103
54
|
worktreePath?: string | null;
|
|
55
|
+
/** Validation phase (default: reality for preflight entrypoints) */
|
|
56
|
+
phase?: ValidationPhase;
|
|
57
|
+
/** Optional git base ref for reality diff-aware checks */
|
|
58
|
+
baseRef?: string;
|
|
59
|
+
/** Optional git head ref for reality diff-aware checks */
|
|
60
|
+
headRef?: string;
|
|
104
61
|
}
|
|
105
|
-
export declare function validatePreflight(id:
|
|
106
|
-
|
|
107
|
-
errors: any[];
|
|
108
|
-
missingCodePaths: any[];
|
|
109
|
-
missingTestPaths: any[];
|
|
110
|
-
suggestedTestPaths: {};
|
|
111
|
-
}>;
|
|
62
|
+
export declare function validatePreflight(id: string, options?: ValidatePreflightOptions): Promise<PreflightResultData>;
|
|
63
|
+
export declare function formatPreflightResult(id: string, result: PreflightResultData): string;
|
|
112
64
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* @param {string} id - WU ID
|
|
116
|
-
* @param {PreflightResult} result - Validation result
|
|
117
|
-
* @returns {string} Formatted message
|
|
65
|
+
* Build display lines for preflight warnings with a consistent shape.
|
|
118
66
|
*/
|
|
119
|
-
export declare function
|
|
67
|
+
export declare function formatPreflightWarnings(warnings: string[] | undefined, header?: string): string[];
|
|
120
68
|
export declare const PreflightResult: {};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
*
|
|
124
|
-
* @param {string[]} missingPaths - List of missing test paths
|
|
125
|
-
* @param {string} rootDir - Root directory to search in
|
|
126
|
-
* @returns {Promise<Record<string, string[]>>} Map of missing path -> suggestions
|
|
127
|
-
*/
|
|
128
|
-
export declare function findSuggestedTestPaths(missingPaths: any, rootDir: any): Promise<{}>;
|
|
69
|
+
export declare function findSuggestedTestPaths(missingPaths: string[], rootDir: string): Promise<Record<string, string[]>>;
|
|
70
|
+
export {};
|
|
129
71
|
//# sourceMappingURL=wu-preflight-validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-preflight-validators.d.ts","sourceRoot":"","sources":["../src/wu-preflight-validators.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"wu-preflight-validators.d.ts","sourceRoot":"","sources":["../src/wu-preflight-validators.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AASH,OAAO,EAIL,KAAK,eAAe,EAIrB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,mBAAmB;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED,UAAU,0BAA0B;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/C;AAYD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,MAAW,EACX,QAAa,EACb,gBAAqB,EACrB,wBAA6B,EAC7B,gBAAqB,EACrB,YAAiB,EACjB,kBAAuB,GACxB,EAAE,0BAA0B,GAAG,mBAAmB,CAWlD;AAwCD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,GACd,oBAAoB,CAwBtB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAgChG;AAED,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAgF9B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAiDrF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAC9B,MAAM,SAAuD,GAC5D,MAAM,EAAE,CAMV;AAED,eAAO,MAAM,eAAe,IAAK,CAAC;AAElC,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAiCnC"}
|
|
@@ -1,83 +1,45 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Preflight validation functions for wu:preflight
|
|
3
|
+
* Preflight validation functions for wu:preflight and wu:done.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* This catches YAML mismatches early, saving time compared to full wu:done validation.
|
|
9
|
-
*
|
|
10
|
-
* Key validations:
|
|
11
|
-
* - WU YAML schema is valid (full canonical schema, not just required fields)
|
|
12
|
-
* - created field is YYYY-MM-DD format (fails fast on ISO timestamps)
|
|
13
|
-
* - code_paths files exist
|
|
14
|
-
* - test file paths exist (unit, e2e, integration - not manual)
|
|
15
|
-
*
|
|
16
|
-
* Design goals:
|
|
17
|
-
* - Complete in under 5 seconds
|
|
18
|
-
* - Clear error messages pointing to missing files
|
|
19
|
-
* - Reusable by wu:done for early validation
|
|
5
|
+
* Uses phase-aware rules from wu-rules-engine:
|
|
6
|
+
* - intent/structural: syntax + policy intent checks
|
|
7
|
+
* - reality: disk/diff/parity/test existence checks
|
|
20
8
|
*/
|
|
21
|
-
import { existsSync } from 'node:fs';
|
|
22
|
-
import path from 'node:path';
|
|
23
9
|
import { WU_PATHS } from './wu-paths.js';
|
|
24
10
|
import { readWURaw } from './wu-yaml.js';
|
|
25
11
|
import { TEST_TYPES, LOG_PREFIX, EMOJI } from './wu-constants.js';
|
|
26
|
-
// WU-1810: Import canonical schema for full validation
|
|
27
12
|
import { BaseWUSchema } from './wu-schema.js';
|
|
28
|
-
// WU-1810: Import fixer to detect fixable issues
|
|
29
13
|
import { detectFixableIssues, FIXABLE_ISSUES } from './wu-yaml-fixer.js';
|
|
30
14
|
import fg from 'fast-glob';
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
import { isPathLikeTestEntry, pathReferenceExistsSync, validationIssueToDisplayLines, validateWURules, validateWURulesSync, } from './wu-rules-engine.js';
|
|
17
|
+
function getUnknownErrorMessage(error) {
|
|
18
|
+
if (error instanceof Error) {
|
|
19
|
+
return error.message;
|
|
20
|
+
}
|
|
21
|
+
return String(error);
|
|
22
|
+
}
|
|
39
23
|
/**
|
|
40
24
|
* Create a PreflightResult object
|
|
41
|
-
*
|
|
42
|
-
* @param {object} params - Result parameters
|
|
43
|
-
* @param {boolean} params.valid - Whether validation passed
|
|
44
|
-
* @param {string[]} [params.errors=[]] - Error messages
|
|
45
|
-
* @param {string[]} [params.missingCodePaths=[]] - Missing code paths
|
|
46
|
-
* @param {string[]} [params.missingTestPaths=[]] - Missing test paths
|
|
47
|
-
* @param {Record<string, string[]>} [params.suggestedTestPaths={}] - Suggested test paths
|
|
48
|
-
* @returns {PreflightResult}
|
|
49
25
|
*/
|
|
50
|
-
export function createPreflightResult({ valid, errors = [], missingCodePaths = [], missingTestPaths = [], suggestedTestPaths = {}, }) {
|
|
26
|
+
export function createPreflightResult({ valid, errors = [], warnings = [], missingCodePaths = [], missingCoverageCodePaths = [], missingTestPaths = [], changedFiles = [], suggestedTestPaths = {}, }) {
|
|
51
27
|
return {
|
|
52
28
|
valid,
|
|
53
29
|
errors,
|
|
30
|
+
warnings,
|
|
54
31
|
missingCodePaths,
|
|
32
|
+
missingCoverageCodePaths,
|
|
55
33
|
missingTestPaths,
|
|
34
|
+
changedFiles,
|
|
56
35
|
suggestedTestPaths,
|
|
57
36
|
};
|
|
58
37
|
}
|
|
59
|
-
/**
|
|
60
|
-
* WU-1810: Validate WU YAML schema using canonical Zod schema
|
|
61
|
-
*
|
|
62
|
-
* Uses BaseWUSchema (structural validation) rather than minimal required fields.
|
|
63
|
-
* This catches created format issues, invalid type/status enums, etc. early.
|
|
64
|
-
*
|
|
65
|
-
* Special handling for created field:
|
|
66
|
-
* - Detects ISO timestamps and Date scalars via wu-yaml-fixer
|
|
67
|
-
* - Provides actionable error message suggesting auto-fix
|
|
68
|
-
*
|
|
69
|
-
* @param {object} doc - Parsed WU YAML document
|
|
70
|
-
* @param {string} id - Expected WU ID
|
|
71
|
-
* @returns {{ valid: boolean, errors: string[] }}
|
|
72
|
-
*/
|
|
73
38
|
function validateSchema(doc, id) {
|
|
74
39
|
const errors = [];
|
|
75
|
-
// Check ID matches (before schema validation for clear error)
|
|
76
40
|
if (doc.id !== id) {
|
|
77
41
|
errors.push(`WU ID mismatch: expected ${id}, found ${doc.id}`);
|
|
78
42
|
}
|
|
79
|
-
// WU-1810: Check for fixable issues (especially created field)
|
|
80
|
-
// This provides better error messages than raw Zod schema errors
|
|
81
43
|
const fixableIssues = detectFixableIssues(doc);
|
|
82
44
|
const createdIssue = fixableIssues.find((issue) => issue.type === FIXABLE_ISSUES.DATE_ISO_TIMESTAMP);
|
|
83
45
|
if (createdIssue) {
|
|
@@ -85,14 +47,11 @@ function validateSchema(doc, id) {
|
|
|
85
47
|
`Expected YYYY-MM-DD format. Suggested fix: change to "${createdIssue.suggested}". ` +
|
|
86
48
|
`Fix by editing the WU YAML file (created: '${createdIssue.suggested}').`);
|
|
87
49
|
}
|
|
88
|
-
// WU-1810: Validate against canonical Zod schema
|
|
89
50
|
const schemaResult = BaseWUSchema.safeParse(doc);
|
|
90
51
|
if (!schemaResult.success) {
|
|
91
|
-
// Format Zod errors with field paths
|
|
92
52
|
for (const issue of schemaResult.error.issues) {
|
|
93
53
|
const fieldPath = issue.path.join('.');
|
|
94
54
|
const message = issue.message;
|
|
95
|
-
// Skip created errors if we already reported a fixable issue
|
|
96
55
|
if (fieldPath === 'created' && createdIssue) {
|
|
97
56
|
continue;
|
|
98
57
|
}
|
|
@@ -102,13 +61,7 @@ function validateSchema(doc, id) {
|
|
|
102
61
|
return { valid: errors.length === 0, errors };
|
|
103
62
|
}
|
|
104
63
|
/**
|
|
105
|
-
* Validate code_paths files exist
|
|
106
|
-
*
|
|
107
|
-
* WU-1329: Exported for use by wu:create strict validation.
|
|
108
|
-
*
|
|
109
|
-
* @param {string[]} codePaths - List of code paths from WU YAML
|
|
110
|
-
* @param {string} rootDir - Root directory to resolve paths against
|
|
111
|
-
* @returns {{ valid: boolean, errors: string[], missing: string[] }}
|
|
64
|
+
* Validate code_paths files/globs exist on disk.
|
|
112
65
|
*/
|
|
113
66
|
export function validateCodePathsExistence(codePaths, rootDir) {
|
|
114
67
|
if (!codePaths || !Array.isArray(codePaths) || codePaths.length === 0) {
|
|
@@ -118,14 +71,13 @@ export function validateCodePathsExistence(codePaths, rootDir) {
|
|
|
118
71
|
for (const filePath of codePaths) {
|
|
119
72
|
if (!filePath || typeof filePath !== 'string')
|
|
120
73
|
continue;
|
|
121
|
-
|
|
122
|
-
if (!existsSync(fullPath)) {
|
|
74
|
+
if (!pathReferenceExistsSync(filePath, rootDir)) {
|
|
123
75
|
missing.push(filePath);
|
|
124
76
|
}
|
|
125
77
|
}
|
|
126
78
|
if (missing.length > 0) {
|
|
127
79
|
const errors = [
|
|
128
|
-
`code_paths validation failed - ${missing.length}
|
|
80
|
+
`code_paths validation failed - ${missing.length} path(s) not found:`,
|
|
129
81
|
...missing.map((p) => ` - ${p}`),
|
|
130
82
|
];
|
|
131
83
|
return { valid: false, errors, missing };
|
|
@@ -133,39 +85,35 @@ export function validateCodePathsExistence(codePaths, rootDir) {
|
|
|
133
85
|
return { valid: true, errors: [], missing: [] };
|
|
134
86
|
}
|
|
135
87
|
/**
|
|
136
|
-
* Validate test file paths exist
|
|
137
|
-
*
|
|
138
|
-
* Manual tests are descriptions, not file paths, so they're skipped.
|
|
139
|
-
*
|
|
140
|
-
* WU-1329: Exported for use by wu:create strict validation.
|
|
88
|
+
* Validate automated test file paths/globs exist.
|
|
141
89
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* @returns {{ valid: boolean, errors: string[], missing: string[] }}
|
|
90
|
+
* Non-path-like prose entries are ignored here; they are classified by
|
|
91
|
+
* reality-phase rule R-007.
|
|
145
92
|
*/
|
|
146
93
|
export function validateTestPathsExistence(tests, rootDir) {
|
|
147
94
|
if (!tests || typeof tests !== 'object') {
|
|
148
95
|
return { valid: true, errors: [], missing: [] };
|
|
149
96
|
}
|
|
97
|
+
const normalizedTests = tests;
|
|
150
98
|
const missing = [];
|
|
151
|
-
// Test types that are file paths (not manual descriptions)
|
|
152
99
|
const fileTestTypes = [TEST_TYPES.UNIT, TEST_TYPES.E2E, TEST_TYPES.INTEGRATION];
|
|
153
100
|
for (const testType of fileTestTypes) {
|
|
154
|
-
const paths =
|
|
101
|
+
const paths = normalizedTests[testType];
|
|
155
102
|
if (!paths || !Array.isArray(paths))
|
|
156
103
|
continue;
|
|
157
104
|
for (const filePath of paths) {
|
|
158
105
|
if (!filePath || typeof filePath !== 'string')
|
|
159
106
|
continue;
|
|
160
|
-
|
|
161
|
-
|
|
107
|
+
if (!isPathLikeTestEntry(filePath))
|
|
108
|
+
continue;
|
|
109
|
+
if (!pathReferenceExistsSync(filePath, rootDir)) {
|
|
162
110
|
missing.push(filePath);
|
|
163
111
|
}
|
|
164
112
|
}
|
|
165
113
|
}
|
|
166
114
|
if (missing.length > 0) {
|
|
167
115
|
const errors = [
|
|
168
|
-
`test paths validation failed - ${missing.length} test
|
|
116
|
+
`test paths validation failed - ${missing.length} automated test path(s) not found:`,
|
|
169
117
|
...missing.map((p) => ` - ${p}`),
|
|
170
118
|
];
|
|
171
119
|
return { valid: false, errors, missing };
|
|
@@ -175,48 +123,51 @@ export function validateTestPathsExistence(tests, rootDir) {
|
|
|
175
123
|
export async function validatePreflight(id, options = {}) {
|
|
176
124
|
const rootDir = options.rootDir || process.cwd();
|
|
177
125
|
const worktreePath = options.worktreePath || rootDir;
|
|
126
|
+
const phase = options.phase || 'reality';
|
|
178
127
|
const allErrors = [];
|
|
128
|
+
const allWarnings = [];
|
|
179
129
|
const missingCodePaths = [];
|
|
130
|
+
const missingCoverageCodePaths = [];
|
|
180
131
|
const missingTestPaths = [];
|
|
181
|
-
|
|
182
|
-
// When worktreePath is provided, read YAML from there to get latest code_paths
|
|
132
|
+
const changedFiles = [];
|
|
183
133
|
const wuPath = path.join(worktreePath, WU_PATHS.WU(id));
|
|
184
|
-
// Debug logging for YAML source (WU-1830)
|
|
185
|
-
if (options.worktreePath && options.worktreePath !== rootDir) {
|
|
186
|
-
if (process.env.DEBUG)
|
|
187
|
-
console.log(`[wu-preflight] Reading WU YAML from worktree: ${wuPath}`);
|
|
188
|
-
}
|
|
189
134
|
let doc;
|
|
190
135
|
try {
|
|
191
|
-
// First try to read raw (without ID validation) to provide better errors
|
|
192
136
|
doc = readWURaw(wuPath);
|
|
193
137
|
}
|
|
194
138
|
catch (err) {
|
|
195
139
|
return createPreflightResult({
|
|
196
140
|
valid: false,
|
|
197
|
-
errors: [`Failed to read WU YAML: ${err
|
|
141
|
+
errors: [`Failed to read WU YAML: ${getUnknownErrorMessage(err)}`],
|
|
198
142
|
});
|
|
199
143
|
}
|
|
200
|
-
// Step 2: Validate schema
|
|
201
144
|
const schemaResult = validateSchema(doc, id);
|
|
202
145
|
if (!schemaResult.valid) {
|
|
203
146
|
allErrors.push(...schemaResult.errors);
|
|
204
147
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
148
|
+
const rulesContext = {
|
|
149
|
+
id,
|
|
150
|
+
type: doc.type,
|
|
151
|
+
status: doc.status,
|
|
152
|
+
code_paths: doc.code_paths,
|
|
153
|
+
tests: doc.tests || doc.test_paths || {},
|
|
154
|
+
cwd: worktreePath,
|
|
155
|
+
baseRef: options.baseRef,
|
|
156
|
+
headRef: options.headRef,
|
|
157
|
+
};
|
|
158
|
+
const rulesResult = phase === 'reality'
|
|
159
|
+
? await validateWURules(rulesContext, { phase })
|
|
160
|
+
: validateWURulesSync(rulesContext, { phase });
|
|
161
|
+
for (const issue of rulesResult.errors) {
|
|
162
|
+
allErrors.push(...validationIssueToDisplayLines(issue));
|
|
210
163
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const testsObj = doc.tests || doc.test_paths || {};
|
|
214
|
-
const testPathsResult = validateTestPathsExistence(testsObj, worktreePath);
|
|
215
|
-
if (!testPathsResult.valid) {
|
|
216
|
-
allErrors.push(...testPathsResult.errors);
|
|
217
|
-
missingTestPaths.push(...testPathsResult.missing);
|
|
164
|
+
for (const issue of rulesResult.warnings) {
|
|
165
|
+
allWarnings.push(...validationIssueToDisplayLines(issue));
|
|
218
166
|
}
|
|
219
|
-
|
|
167
|
+
missingCodePaths.push(...rulesResult.metadata.missingCodePaths);
|
|
168
|
+
missingCoverageCodePaths.push(...rulesResult.metadata.missingCoverageCodePaths);
|
|
169
|
+
missingTestPaths.push(...rulesResult.metadata.missingTestPaths);
|
|
170
|
+
changedFiles.push(...rulesResult.metadata.changedFiles);
|
|
220
171
|
let suggestedTestPaths = {};
|
|
221
172
|
if (missingTestPaths.length > 0) {
|
|
222
173
|
const searchRoot = worktreePath || rootDir;
|
|
@@ -224,63 +175,80 @@ export async function validatePreflight(id, options = {}) {
|
|
|
224
175
|
suggestedTestPaths = await findSuggestedTestPaths(missingTestPaths, searchRoot);
|
|
225
176
|
}
|
|
226
177
|
catch (err) {
|
|
227
|
-
if (process.env.DEBUG)
|
|
228
|
-
console.log(`[wu-preflight] Failed to find suggestions: ${err
|
|
178
|
+
if (process.env.DEBUG) {
|
|
179
|
+
console.log(`[wu-preflight] Failed to find suggestions: ${getUnknownErrorMessage(err)}`);
|
|
180
|
+
}
|
|
229
181
|
}
|
|
230
182
|
}
|
|
231
183
|
return createPreflightResult({
|
|
232
184
|
valid: allErrors.length === 0,
|
|
233
185
|
errors: allErrors,
|
|
186
|
+
warnings: allWarnings,
|
|
234
187
|
missingCodePaths,
|
|
188
|
+
missingCoverageCodePaths,
|
|
235
189
|
missingTestPaths,
|
|
190
|
+
changedFiles,
|
|
236
191
|
suggestedTestPaths,
|
|
237
192
|
});
|
|
238
193
|
}
|
|
239
|
-
/**
|
|
240
|
-
* Format preflight result as user-friendly message
|
|
241
|
-
*
|
|
242
|
-
* @param {string} id - WU ID
|
|
243
|
-
* @param {PreflightResult} result - Validation result
|
|
244
|
-
* @returns {string} Formatted message
|
|
245
|
-
*/
|
|
246
194
|
export function formatPreflightResult(id, result) {
|
|
247
195
|
if (result.valid) {
|
|
248
|
-
|
|
196
|
+
const lines = [
|
|
197
|
+
`${LOG_PREFIX.PREFLIGHT} ${EMOJI.SUCCESS} Preflight validation passed for ${id}`,
|
|
198
|
+
];
|
|
199
|
+
if (Array.isArray(result.warnings) && result.warnings.length > 0) {
|
|
200
|
+
lines.push('');
|
|
201
|
+
lines.push(`${LOG_PREFIX.PREFLIGHT} ${EMOJI.WARNING} Warnings:`);
|
|
202
|
+
lines.push(...result.warnings.map((warning) => ` - ${warning}`));
|
|
203
|
+
}
|
|
204
|
+
return lines.join('\n');
|
|
249
205
|
}
|
|
250
206
|
const lines = [
|
|
251
207
|
`${LOG_PREFIX.PREFLIGHT} ${EMOJI.FAILURE} Preflight validation failed for ${id}`,
|
|
252
208
|
'',
|
|
253
209
|
...result.errors,
|
|
254
210
|
];
|
|
211
|
+
if (Array.isArray(result.warnings) && result.warnings.length > 0) {
|
|
212
|
+
lines.push('');
|
|
213
|
+
lines.push(`${LOG_PREFIX.PREFLIGHT} ${EMOJI.WARNING} Warnings:`);
|
|
214
|
+
lines.push(...result.warnings.map((warning) => ` - ${warning}`));
|
|
215
|
+
}
|
|
255
216
|
if (result.missingCodePaths.length > 0) {
|
|
256
217
|
lines.push('');
|
|
257
|
-
lines.push('Fix options:');
|
|
258
|
-
lines.push(' 1. Create the missing files');
|
|
218
|
+
lines.push('Fix options for missing code_paths:');
|
|
219
|
+
lines.push(' 1. Create the missing files/glob targets');
|
|
259
220
|
lines.push(` 2. Update code_paths in ${id}.yaml to match actual files`);
|
|
260
221
|
}
|
|
222
|
+
if (result.missingCoverageCodePaths.length > 0) {
|
|
223
|
+
lines.push('');
|
|
224
|
+
lines.push('Fix options for code_paths coverage vs branch diff:');
|
|
225
|
+
lines.push(' 1. Commit changes that touch each missing scoped code_path');
|
|
226
|
+
lines.push(` 2. Update code_paths in ${id}.yaml to match actual branch scope`);
|
|
227
|
+
lines.push(` 3. Re-run: pnpm wu:prep --id ${id}`);
|
|
228
|
+
}
|
|
261
229
|
if (result.missingTestPaths.length > 0) {
|
|
262
230
|
lines.push('');
|
|
263
|
-
lines.push('
|
|
264
|
-
lines.push(' 1. Create the missing test files');
|
|
231
|
+
lines.push('Fix options for automated test paths:');
|
|
232
|
+
lines.push(' 1. Create the missing test files/glob targets');
|
|
265
233
|
lines.push(` 2. Update tests in ${id}.yaml to match actual files`);
|
|
266
|
-
lines.push(' 3.
|
|
234
|
+
lines.push(' 3. Move prose/non-path test notes into tests.manual');
|
|
267
235
|
}
|
|
268
236
|
return lines.join('\n');
|
|
269
237
|
}
|
|
270
|
-
// Export PreflightResult type for documentation
|
|
271
|
-
export const PreflightResult = {};
|
|
272
238
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
* @param {string[]} missingPaths - List of missing test paths
|
|
276
|
-
* @param {string} rootDir - Root directory to search in
|
|
277
|
-
* @returns {Promise<Record<string, string[]>>} Map of missing path -> suggestions
|
|
239
|
+
* Build display lines for preflight warnings with a consistent shape.
|
|
278
240
|
*/
|
|
241
|
+
export function formatPreflightWarnings(warnings, header = `${LOG_PREFIX.PREFLIGHT} ${EMOJI.WARNING} Warnings:`) {
|
|
242
|
+
if (!Array.isArray(warnings) || warnings.length === 0) {
|
|
243
|
+
return [];
|
|
244
|
+
}
|
|
245
|
+
return [header, ...warnings.map((warning) => ` - ${warning}`)];
|
|
246
|
+
}
|
|
247
|
+
export const PreflightResult = {};
|
|
279
248
|
export async function findSuggestedTestPaths(missingPaths, rootDir) {
|
|
280
249
|
const suggestions = {};
|
|
281
250
|
if (missingPaths.length === 0)
|
|
282
251
|
return suggestions;
|
|
283
|
-
// Cache strict searches to avoid re-reading fs
|
|
284
252
|
const globOptions = {
|
|
285
253
|
cwd: rootDir,
|
|
286
254
|
caseSensitiveMatch: false,
|
|
@@ -288,23 +256,18 @@ export async function findSuggestedTestPaths(missingPaths, rootDir) {
|
|
|
288
256
|
ignore: ['**/node_modules/**'],
|
|
289
257
|
};
|
|
290
258
|
for (const missingPath of missingPaths) {
|
|
291
|
-
const filename =
|
|
292
|
-
const basename =
|
|
259
|
+
const filename = missingPath.split('/').pop() || missingPath;
|
|
260
|
+
const basename = filename.replace(/\.[^/.]+$/, '');
|
|
293
261
|
const cleanBasename = basename.replace(/(\.test|\.spec)$/, '');
|
|
294
|
-
// Strategy 1: Search for exact filename elsewhere
|
|
295
262
|
let matches = await fg(`**/${filename}`, globOptions);
|
|
296
|
-
// Strategy 2: Search for filename with different extension (ts/js/mjs)
|
|
297
263
|
if (matches.length === 0) {
|
|
298
264
|
matches = await fg(`**/${basename}.{ts,js,mjs,tsx,jsx}`, globOptions);
|
|
299
265
|
}
|
|
300
|
-
// Strategy 3: Search for fuzzy match on basename (without .test/.spec)
|
|
301
266
|
if (matches.length === 0) {
|
|
302
|
-
// Look for the code file the test might be for
|
|
303
267
|
matches = await fg(`**/${cleanBasename}.{ts,js,mjs,tsx,jsx}`, globOptions);
|
|
304
268
|
}
|
|
305
269
|
if (matches.length > 0) {
|
|
306
|
-
|
|
307
|
-
suggestions[missingPath] = matches.filter((m) => m !== missingPath);
|
|
270
|
+
suggestions[missingPath] = matches.filter((matchPath) => matchPath !== missingPath);
|
|
308
271
|
}
|
|
309
272
|
}
|
|
310
273
|
return suggestions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-preflight-validators.js","sourceRoot":"","sources":["../src/wu-preflight-validators.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"wu-preflight-validators.js","sourceRoot":"","sources":["../src/wu-preflight-validators.ts"],"names":[],"mappings":"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"}
|