@lumenflow/cli 2.4.0 → 2.5.0

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.
Files changed (124) hide show
  1. package/dist/__tests__/init-config-lanes.test.js +131 -0
  2. package/dist/__tests__/init-docs-structure.test.js +119 -0
  3. package/dist/__tests__/init-lane-inference.test.js +125 -0
  4. package/dist/__tests__/init-onboarding-docs.test.js +132 -0
  5. package/dist/__tests__/init-quick-ref.test.js +145 -0
  6. package/dist/__tests__/init-scripts.test.js +96 -0
  7. package/dist/__tests__/init-template-portability.test.js +97 -0
  8. package/dist/__tests__/init.test.js +7 -2
  9. package/dist/__tests__/initiative-add-wu.test.js +420 -0
  10. package/dist/__tests__/initiative-plan-replacement.test.js +162 -0
  11. package/dist/__tests__/initiative-remove-wu.test.js +458 -0
  12. package/dist/__tests__/onboarding-smoke-test.test.js +211 -0
  13. package/dist/__tests__/path-centralization-cli.test.js +234 -0
  14. package/dist/__tests__/plan-create.test.js +126 -0
  15. package/dist/__tests__/plan-edit.test.js +157 -0
  16. package/dist/__tests__/plan-link.test.js +239 -0
  17. package/dist/__tests__/plan-promote.test.js +181 -0
  18. package/dist/__tests__/wu-create-strict.test.js +118 -0
  19. package/dist/__tests__/wu-edit-strict.test.js +109 -0
  20. package/dist/__tests__/wu-validate-strict.test.js +113 -0
  21. package/dist/flow-bottlenecks.js +4 -2
  22. package/dist/gates.js +22 -0
  23. package/dist/init.js +580 -87
  24. package/dist/initiative-add-wu.js +112 -16
  25. package/dist/initiative-remove-wu.js +248 -0
  26. package/dist/onboarding-smoke-test.js +400 -0
  27. package/dist/plan-create.js +199 -0
  28. package/dist/plan-edit.js +235 -0
  29. package/dist/plan-link.js +233 -0
  30. package/dist/plan-promote.js +231 -0
  31. package/dist/wu-block.js +16 -5
  32. package/dist/wu-claim.js +15 -9
  33. package/dist/wu-create.js +50 -2
  34. package/dist/wu-deps.js +3 -1
  35. package/dist/wu-done.js +14 -5
  36. package/dist/wu-edit.js +35 -0
  37. package/dist/wu-spawn.js +8 -0
  38. package/dist/wu-unblock.js +34 -2
  39. package/dist/wu-validate.js +25 -17
  40. package/package.json +10 -6
  41. package/templates/core/AGENTS.md.template +2 -2
  42. package/dist/__tests__/init-plan.test.js +0 -340
  43. package/dist/agent-issues-query.d.ts +0 -16
  44. package/dist/agent-log-issue.d.ts +0 -10
  45. package/dist/agent-session-end.d.ts +0 -10
  46. package/dist/agent-session.d.ts +0 -10
  47. package/dist/backlog-prune.d.ts +0 -84
  48. package/dist/cli-entry-point.d.ts +0 -8
  49. package/dist/deps-add.d.ts +0 -91
  50. package/dist/deps-remove.d.ts +0 -17
  51. package/dist/docs-sync.d.ts +0 -50
  52. package/dist/file-delete.d.ts +0 -84
  53. package/dist/file-edit.d.ts +0 -82
  54. package/dist/file-read.d.ts +0 -92
  55. package/dist/file-write.d.ts +0 -90
  56. package/dist/flow-bottlenecks.d.ts +0 -16
  57. package/dist/flow-report.d.ts +0 -16
  58. package/dist/gates.d.ts +0 -94
  59. package/dist/git-branch.d.ts +0 -65
  60. package/dist/git-diff.d.ts +0 -58
  61. package/dist/git-log.d.ts +0 -69
  62. package/dist/git-status.d.ts +0 -58
  63. package/dist/guard-locked.d.ts +0 -62
  64. package/dist/guard-main-branch.d.ts +0 -50
  65. package/dist/guard-worktree-commit.d.ts +0 -59
  66. package/dist/index.d.ts +0 -10
  67. package/dist/init-plan.d.ts +0 -80
  68. package/dist/init-plan.js +0 -337
  69. package/dist/init.d.ts +0 -46
  70. package/dist/initiative-add-wu.d.ts +0 -22
  71. package/dist/initiative-bulk-assign-wus.d.ts +0 -16
  72. package/dist/initiative-create.d.ts +0 -28
  73. package/dist/initiative-edit.d.ts +0 -34
  74. package/dist/initiative-list.d.ts +0 -12
  75. package/dist/initiative-status.d.ts +0 -11
  76. package/dist/lumenflow-upgrade.d.ts +0 -103
  77. package/dist/mem-checkpoint.d.ts +0 -16
  78. package/dist/mem-cleanup.d.ts +0 -29
  79. package/dist/mem-create.d.ts +0 -17
  80. package/dist/mem-export.d.ts +0 -10
  81. package/dist/mem-inbox.d.ts +0 -35
  82. package/dist/mem-init.d.ts +0 -15
  83. package/dist/mem-ready.d.ts +0 -16
  84. package/dist/mem-signal.d.ts +0 -16
  85. package/dist/mem-start.d.ts +0 -16
  86. package/dist/mem-summarize.d.ts +0 -22
  87. package/dist/mem-triage.d.ts +0 -22
  88. package/dist/metrics-cli.d.ts +0 -90
  89. package/dist/metrics-snapshot.d.ts +0 -18
  90. package/dist/orchestrate-init-status.d.ts +0 -11
  91. package/dist/orchestrate-initiative.d.ts +0 -12
  92. package/dist/orchestrate-monitor.d.ts +0 -11
  93. package/dist/release.d.ts +0 -117
  94. package/dist/rotate-progress.d.ts +0 -48
  95. package/dist/session-coordinator.d.ts +0 -74
  96. package/dist/spawn-list.d.ts +0 -16
  97. package/dist/state-bootstrap.d.ts +0 -92
  98. package/dist/sync-templates.d.ts +0 -52
  99. package/dist/trace-gen.d.ts +0 -84
  100. package/dist/validate-agent-skills.d.ts +0 -50
  101. package/dist/validate-agent-sync.d.ts +0 -36
  102. package/dist/validate-backlog-sync.d.ts +0 -37
  103. package/dist/validate-skills-spec.d.ts +0 -40
  104. package/dist/validate.d.ts +0 -60
  105. package/dist/wu-block.d.ts +0 -16
  106. package/dist/wu-claim.d.ts +0 -74
  107. package/dist/wu-cleanup.d.ts +0 -35
  108. package/dist/wu-create.d.ts +0 -69
  109. package/dist/wu-delete.d.ts +0 -21
  110. package/dist/wu-deps.d.ts +0 -13
  111. package/dist/wu-done.d.ts +0 -225
  112. package/dist/wu-edit.d.ts +0 -63
  113. package/dist/wu-infer-lane.d.ts +0 -17
  114. package/dist/wu-preflight.d.ts +0 -47
  115. package/dist/wu-prune.d.ts +0 -16
  116. package/dist/wu-recover.d.ts +0 -37
  117. package/dist/wu-release.d.ts +0 -19
  118. package/dist/wu-repair.d.ts +0 -60
  119. package/dist/wu-spawn-completion.d.ts +0 -10
  120. package/dist/wu-spawn.d.ts +0 -192
  121. package/dist/wu-status.d.ts +0 -25
  122. package/dist/wu-unblock.d.ts +0 -16
  123. package/dist/wu-unlock-lane.d.ts +0 -19
  124. package/dist/wu-validate.d.ts +0 -16
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Recovery Command
4
- *
5
- * WU-1090: Context-aware state machine for WU lifecycle commands
6
- *
7
- * Analyzes WU state inconsistencies and offers recovery actions:
8
- * - resume: Reconcile state and continue working (preserves work)
9
- * - reset: Discard worktree and reset WU to ready
10
- * - nuke: Remove all artifacts completely (requires --force)
11
- * - cleanup: Remove leftover worktree for done WUs
12
- *
13
- * Usage:
14
- * pnpm wu:recover --id WU-123 # Analyze issues
15
- * pnpm wu:recover --id WU-123 --action resume # Apply fix
16
- * pnpm wu:recover --id WU-123 --action nuke --force # Destructive
17
- */
18
- import { type RecoveryAnalysis } from '@lumenflow/core/dist/recovery/recovery-analyzer.js';
19
- /**
20
- * Check if action requires --force flag
21
- */
22
- export declare function requiresForceFlag(action: string): boolean;
23
- /**
24
- * Validate recovery action
25
- */
26
- export declare function validateRecoveryAction(action: string): {
27
- valid: boolean;
28
- error?: string;
29
- };
30
- /**
31
- * Format recovery analysis output
32
- */
33
- export declare function formatRecoveryOutput(analysis: RecoveryAnalysis): string;
34
- /**
35
- * Get exit code for recovery command
36
- */
37
- export declare function getRecoveryExitCode(analysis: RecoveryAnalysis, actionFailed: boolean): number;
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Release Command (WU-1080)
4
- *
5
- * Releases an orphaned WU from in_progress back to ready state.
6
- * Use when an agent is interrupted mid-WU and the WU needs to be reclaimed.
7
- *
8
- * Sequence (micro-worktree pattern):
9
- * 1) Validate WU is in_progress
10
- * 2) Create micro-worktree from main
11
- * 3) Append release event to state store
12
- * 4) Regenerate backlog.md and status.md
13
- * 5) Commit in micro-worktree, push directly to origin/main
14
- * 6) Optionally remove the work worktree
15
- *
16
- * Usage:
17
- * pnpm wu:release --id WU-1080 --reason "Agent interrupted"
18
- */
19
- export {};
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU State Repair Tool (Unified - WU-1826, WU-2240)
4
- *
5
- * Layer 2 defense-in-depth: detect and repair WU state inconsistencies.
6
- *
7
- * This unified tool consolidates four repair modes:
8
- * - Consistency mode (default): detect/repair state inconsistencies
9
- * - Claim mode (--claim): repair missing claim metadata in worktrees
10
- * - Admin mode (--admin): administrative fixes for done WUs
11
- * - State mode (--repair-state): repair corrupted wu-events.jsonl (WU-2240)
12
- *
13
- * Usage:
14
- * # Consistency mode (default)
15
- * pnpm wu:repair --id WU-123 # Repair single WU
16
- * pnpm wu:repair --id WU-123 --check # Audit only, no changes
17
- * pnpm wu:repair --all # Batch repair all WUs
18
- * pnpm wu:repair --all --check # Audit all WUs
19
- *
20
- * # Claim mode
21
- * pnpm wu:repair --claim --id WU-123 # Repair claim metadata
22
- * pnpm wu:repair --claim --id WU-123 --check # Check only
23
- * pnpm wu:repair --claim --id WU-123 --worktree /path/to/worktree
24
- *
25
- * # Admin mode
26
- * pnpm wu:repair --admin --id WU-123 --lane "Operations: Tooling"
27
- * pnpm wu:repair --admin --id WU-123 --status cancelled
28
- * pnpm wu:repair --admin --id WU-123 --notes "Administrative fix"
29
- * pnpm wu:repair --admin --id WU-123 --initiative INIT-001
30
- *
31
- * # State mode (WU-2240)
32
- * pnpm wu:repair --repair-state # Repair default state file
33
- * pnpm wu:repair --repair-state --path /path/to/wu-events.jsonl # Repair specific file
34
- *
35
- * Exit codes:
36
- * 0: Success (no issues or all repaired)
37
- * 1: Issues detected (--check mode)
38
- * 2: Repair failed
39
- *
40
- * DEPRECATION NOTICE:
41
- * - pnpm wu:repair-claim is deprecated. Use: pnpm wu:repair --claim
42
- * - pnpm wu:admin-repair is deprecated. Use: pnpm wu:repair --admin
43
- *
44
- * @see {@link tools/lib/wu-repair-core.mjs} - Core repair logic
45
- * @see {@link tools/lib/wu-consistency-checker.mjs} - Consistency detection/repair
46
- * @see {@link tools/lib/wu-state-store.mjs} - State file repair (repairStateFile)
47
- */
48
- /**
49
- * Normalise WU ID to uppercase with WU- prefix
50
- * @param {string} id - Raw WU ID
51
- * @returns {string} Normalised WU ID
52
- */
53
- declare function normaliseWUId(id: any): any;
54
- /**
55
- * Validate WU ID format
56
- * @param {string} id - WU ID to validate
57
- * @returns {boolean} True if valid
58
- */
59
- declare function isValidWUId(id: any): boolean;
60
- export { normaliseWUId, isValidWUId };
@@ -1,10 +0,0 @@
1
- /**
2
- * Generate the Completion Workflow section for sub-agents (WU-2682).
3
- *
4
- * Explicitly instructs sub-agents to run wu:done autonomously after gates pass.
5
- * This prevents agents from asking permission instead of completing.
6
- *
7
- * @param {string} id - WU ID
8
- * @returns {string} Completion Workflow section
9
- */
10
- export declare function generateCompletionWorkflowSection(id: string): string;
@@ -1,192 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Spawn Helper
4
- *
5
- * Generates ready-to-use Task tool invocations for sub-agent WU execution.
6
- * Includes context loading preamble, skills selection guidance, and constraints block.
7
- *
8
- * Usage:
9
- * pnpm wu:spawn --id WU-123
10
- * pnpm wu:spawn --id WU-123 --codex
11
- *
12
- * Output:
13
- * A complete Task tool invocation block with:
14
- * - Context loading preamble (.claude/CLAUDE.md, README, lumenflow, WU YAML)
15
- * - WU details and acceptance criteria
16
- * - Skills Selection section (sub-agent reads catalogue and selects at runtime)
17
- * - Mandatory agent advisory
18
- * - Constraints block at end (Lost in the Middle research)
19
- *
20
- * Skills Selection:
21
- * This command is AGENT-FACING. Unlike /wu-prompt (human-facing, skills selected
22
- * at generation time), wu:spawn instructs the sub-agent to read the skill catalogue
23
- * and select skills at execution time based on WU context.
24
- *
25
- * Codex Mode:
26
- * When --codex is used, outputs a Codex/GPT-friendly Markdown prompt (no antml/XML escaping).
27
- *
28
- * @see {@link docs/04-operations/_frameworks/lumenflow/agent/onboarding/agent-invocation-guide.md} - Context loading templates
29
- */
30
- import { getConfig } from '@lumenflow/core/dist/lumenflow-config.js';
31
- import type { ClientConfig } from '@lumenflow/core/dist/lumenflow-config-schema.js';
32
- /**
33
- * WU-1131: Truncation prevention constants
34
- *
35
- * These constants help detect when spawn output has been truncated during
36
- * copy-paste operations or context loading. The warning banner alerts users
37
- * to the truncation risk, and the end sentinel allows verification that
38
- * the full output was received.
39
- */
40
- export declare const TRUNCATION_WARNING_BANNER = "<!-- LUMENFLOW_TRUNCATION_WARNING -->\n<!--\n \u26A0\uFE0F CRITICAL: DO NOT TRUNCATE THIS OUTPUT\n\n This spawn prompt MUST be copied verbatim. Truncation causes:\n - Missing constraints (agents ignore safety rules)\n - Missing TDD directives (agents skip tests)\n - Degraded agent performance\n\n VERIFICATION: The output MUST end with: <!-- LUMENFLOW_SPAWN_END -->\n If you don't see that sentinel at the end, the output was truncated.\n-->\n";
41
- export declare const SPAWN_END_SENTINEL = "<!-- LUMENFLOW_SPAWN_END -->";
42
- /**
43
- * Generate effort scaling rules section (WU-1986)
44
- *
45
- * Based on Anthropic multi-agent research: helps agents decide when to
46
- * spawn sub-agents vs handle inline.
47
- *
48
- * @returns {string} Effort scaling section
49
- */
50
- export declare function generateEffortScalingRules(): string;
51
- /**
52
- * Generate parallel tool call guidance (WU-1986)
53
- *
54
- * Based on Anthropic research: 3+ parallel tool calls significantly improve performance.
55
- *
56
- * @returns {string} Parallel tool call guidance
57
- */
58
- export declare function generateParallelToolCallGuidance(): string;
59
- /**
60
- * Generate iterative search heuristics (WU-1986)
61
- *
62
- * Based on Anthropic research: start broad, narrow focus.
63
- *
64
- * @returns {string} Search heuristics section
65
- */
66
- export declare function generateIterativeSearchHeuristics(): string;
67
- /**
68
- * Generate token budget awareness section (WU-1986)
69
- *
70
- * @param {string} id - WU ID
71
- * @returns {string} Token budget section
72
- */
73
- export declare function generateTokenBudgetAwareness(id: any): string;
74
- /**
75
- * Generate structured completion format (WU-1986)
76
- *
77
- * @param {string} id - WU ID
78
- * @returns {string} Completion format section
79
- */
80
- export declare function generateCompletionFormat(_id: any): string;
81
- /**
82
- * Generate agent coordination section (WU-1987)
83
- *
84
- * Provides guidance on mem:signal for parallel agent coordination,
85
- * orchestrate:status for dashboard checks, and abandoned WU handling.
86
- *
87
- * @param {string} id - WU ID
88
- * @returns {string} Agent coordination section
89
- */
90
- export declare function generateAgentCoordinationSection(id: any): string;
91
- /**
92
- * Generate quick fix commands section (WU-1987)
93
- *
94
- * Provides format/lint/typecheck commands for quick fixes before gates.
95
- *
96
- * @returns {string} Quick fix commands section
97
- */
98
- export declare function generateQuickFixCommands(): string;
99
- /**
100
- * Generate Lane Selection section (WU-2107)
101
- *
102
- * Provides guidance on lane selection when creating new WUs.
103
- * Points agents to wu:infer-lane for automated lane suggestions.
104
- *
105
- * @returns {string} Lane Selection section
106
- */
107
- export declare function generateLaneSelectionSection(): string;
108
- /**
109
- * Generate Worktree Path Guidance section (WU-2362)
110
- *
111
- * Provides guidance for sub-agents on working within worktrees, including
112
- * how to determine the worktree root and where to create stamps.
113
- *
114
- * Problem: CLAUDE_PROJECT_DIR is hook-only; sub-agents inherit parent cwd (main).
115
- * Solution: Use git rev-parse --show-toplevel to determine actual worktree root.
116
- *
117
- * @param {string|undefined} worktreePath - Worktree path from WU YAML
118
- * @returns {string} Worktree path guidance section
119
- */
120
- export declare function generateWorktreePathGuidance(worktreePath: any): string;
121
- /**
122
- * Generate the Action section based on WU claim status (WU-1745).
123
- *
124
- * If WU is already claimed (has claimed_at and worktree_path), tells agent
125
- * to continue in the existing worktree.
126
- *
127
- * If WU is unclaimed (status: ready), tells agent to run wu:claim first.
128
- *
129
- * @param {object} doc - WU YAML document
130
- * @param {string} id - WU ID
131
- * @returns {string} Action section content
132
- */
133
- export declare function generateActionSection(doc: any, id: any): string;
134
- /**
135
- * Generate the Completion Workflow section for sub-agents (WU-2682).
136
- *
137
- * Explicitly instructs sub-agents to run wu:done autonomously after gates pass.
138
- * This prevents agents from asking permission instead of completing.
139
- *
140
- * @param {string} id - WU ID
141
- * @returns {string} Completion Workflow section
142
- */
143
- export declare function generateCompletionWorkflowSection(id: string): string;
144
- interface ClientContext {
145
- name: string;
146
- config?: ClientConfig;
147
- }
148
- interface SpawnOptions {
149
- thinking?: boolean;
150
- noThinking?: boolean;
151
- budget?: string;
152
- client?: ClientContext;
153
- config?: ReturnType<typeof getConfig>;
154
- }
155
- /**
156
- * Generate the complete Task tool invocation
157
- *
158
- * @param {object} doc - WU YAML document
159
- * @param {string} id - WU ID
160
- * @param {SpawnStrategy} strategy - Client strategy
161
- * @param {object} [options={}] - Thinking mode options
162
- * @param {boolean} [options.thinking] - Whether extended thinking is enabled
163
- * @param {boolean} [options.noThinking] - Whether thinking is explicitly disabled
164
- * @param {string} [options.budget] - Token budget for thinking
165
- * @returns {string} Complete Task tool invocation
166
- */
167
- export declare function generateTaskInvocation(doc: any, id: any, strategy: any, options?: SpawnOptions): string;
168
- export declare function generateCodexPrompt(doc: any, id: any, strategy: any, options?: SpawnOptions): string;
169
- /**
170
- * WU-1603: Check if a lane is currently occupied by another WU
171
- *
172
- * @param {string} lane - Lane name (e.g., "Operations: Tooling")
173
- * @returns {import('@lumenflow/core/dist/lane-lock.js').LockMetadata|null} Lock metadata if occupied, null otherwise
174
- */
175
- export declare function checkLaneOccupation(lane: any): import("@lumenflow/core/dist/lane-lock.js").LockMetadata;
176
- /**
177
- * WU-1603: Generate a warning message when lane is occupied
178
- *
179
- * @param {import('@lumenflow/core/dist/lane-lock.js').LockMetadata} lockMetadata - Lock metadata
180
- * @param {string} targetWuId - WU ID being spawned
181
- * @param {Object} [options={}] - Options
182
- * @param {boolean} [options.isStale] - Whether the lock is stale (>24h old)
183
- * @returns {string} Warning message
184
- */
185
- interface LaneOccupationOptions {
186
- isStale?: boolean;
187
- }
188
- export declare function generateLaneOccupationWarning(lockMetadata: {
189
- lane: string;
190
- wuId: string;
191
- }, targetWuId: string, options?: LaneOccupationOptions): string;
192
- export {};
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Status Command
4
- *
5
- * WU-1090: Context-aware state machine for WU lifecycle commands
6
- *
7
- * Shows:
8
- * - Current location (main checkout vs worktree)
9
- * - WU state if in worktree or --id provided
10
- * - Git state (branch, dirty, ahead/behind)
11
- * - Valid commands for current context
12
- *
13
- * Usage:
14
- * pnpm wu:status # Auto-detect from current directory
15
- * pnpm wu:status --id WU-123 # Show status for specific WU
16
- */
17
- import type { WuContext } from '@lumenflow/core/dist/validation/types.js';
18
- /**
19
- * Format complete status output
20
- */
21
- export declare function formatStatusOutput(context: WuContext): string;
22
- /**
23
- * Get exit code based on context state
24
- */
25
- export declare function getStatusExitCode(context: WuContext): number;
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Unblock Helper
4
- *
5
- * Sequence (micro-worktree pattern):
6
- * 1) Create micro-worktree from main
7
- * 2) Auto-update WU YAML/backlog/status to In Progress in micro-worktree
8
- * 3) Commit in micro-worktree, push directly to origin/main
9
- * 4) Optionally create a fresh work worktree/branch (default: skip unless --create-worktree)
10
- *
11
- * Uses micro-worktree pattern to avoid pre-commit hook blocking commits to main.
12
- *
13
- * Usage:
14
- * pnpm wu:unblock --id WU-334 [--reason "Dependency cleared"] [--create-worktree] [--worktree ...] [--branch ...] [--no-auto]
15
- */
16
- export {};
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Unlock Lane Helper
4
- *
5
- * Provides a dedicated audited command for operators to safely clear lane locks.
6
- *
7
- * Safety-first approach:
8
- * - Zombie locks (PID not running): Can be unlocked without --force
9
- * - Stale locks (>24h old): Can be unlocked without --force
10
- * - Active locks (recent, PID running): Require --force to unlock
11
- *
12
- * All unlocks require a --reason parameter for audit purposes.
13
- *
14
- * Usage:
15
- * pnpm wu:unlock-lane --lane "Core" --reason "Process crashed"
16
- * pnpm wu:unlock-lane --lane "Core" --reason "Emergency" --force
17
- * pnpm wu:unlock-lane --list # List all current locks
18
- */
19
- export {};
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * WU Validation Tool
4
- *
5
- * Validates WU YAML files against schema and checks for quality warnings.
6
- * Returns exit code 0 if valid (warnings are advisory, not blocking).
7
- * Returns exit code 1 only for schema errors.
8
- *
9
- * Usage:
10
- * pnpm wu:validate --id WU-123 # Validate specific WU
11
- * pnpm wu:validate --all # Validate all WUs
12
- * pnpm wu:validate --all --strict # Fail on warnings too
13
- *
14
- * @see {@link tools/lib/wu-schema.mjs} - Schema definitions
15
- */
16
- export {};