@lumenflow/cli 1.0.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 (129) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +116 -0
  3. package/dist/gates.d.ts +41 -0
  4. package/dist/gates.d.ts.map +1 -0
  5. package/dist/gates.js +684 -0
  6. package/dist/gates.js.map +1 -0
  7. package/dist/initiative-add-wu.d.ts +22 -0
  8. package/dist/initiative-add-wu.d.ts.map +1 -0
  9. package/dist/initiative-add-wu.js +234 -0
  10. package/dist/initiative-add-wu.js.map +1 -0
  11. package/dist/initiative-create.d.ts +28 -0
  12. package/dist/initiative-create.d.ts.map +1 -0
  13. package/dist/initiative-create.js +172 -0
  14. package/dist/initiative-create.js.map +1 -0
  15. package/dist/initiative-edit.d.ts +34 -0
  16. package/dist/initiative-edit.d.ts.map +1 -0
  17. package/dist/initiative-edit.js +440 -0
  18. package/dist/initiative-edit.js.map +1 -0
  19. package/dist/initiative-list.d.ts +12 -0
  20. package/dist/initiative-list.d.ts.map +1 -0
  21. package/dist/initiative-list.js +101 -0
  22. package/dist/initiative-list.js.map +1 -0
  23. package/dist/initiative-status.d.ts +11 -0
  24. package/dist/initiative-status.d.ts.map +1 -0
  25. package/dist/initiative-status.js +221 -0
  26. package/dist/initiative-status.js.map +1 -0
  27. package/dist/mem-checkpoint.d.ts +16 -0
  28. package/dist/mem-checkpoint.d.ts.map +1 -0
  29. package/dist/mem-checkpoint.js +237 -0
  30. package/dist/mem-checkpoint.js.map +1 -0
  31. package/dist/mem-cleanup.d.ts +29 -0
  32. package/dist/mem-cleanup.d.ts.map +1 -0
  33. package/dist/mem-cleanup.js +267 -0
  34. package/dist/mem-cleanup.js.map +1 -0
  35. package/dist/mem-create.d.ts +17 -0
  36. package/dist/mem-create.d.ts.map +1 -0
  37. package/dist/mem-create.js +265 -0
  38. package/dist/mem-create.js.map +1 -0
  39. package/dist/mem-inbox.d.ts +35 -0
  40. package/dist/mem-inbox.d.ts.map +1 -0
  41. package/dist/mem-inbox.js +373 -0
  42. package/dist/mem-inbox.js.map +1 -0
  43. package/dist/mem-init.d.ts +15 -0
  44. package/dist/mem-init.d.ts.map +1 -0
  45. package/dist/mem-init.js +146 -0
  46. package/dist/mem-init.js.map +1 -0
  47. package/dist/mem-ready.d.ts +16 -0
  48. package/dist/mem-ready.d.ts.map +1 -0
  49. package/dist/mem-ready.js +224 -0
  50. package/dist/mem-ready.js.map +1 -0
  51. package/dist/mem-signal.d.ts +16 -0
  52. package/dist/mem-signal.d.ts.map +1 -0
  53. package/dist/mem-signal.js +204 -0
  54. package/dist/mem-signal.js.map +1 -0
  55. package/dist/mem-start.d.ts +16 -0
  56. package/dist/mem-start.d.ts.map +1 -0
  57. package/dist/mem-start.js +158 -0
  58. package/dist/mem-start.js.map +1 -0
  59. package/dist/mem-summarize.d.ts +22 -0
  60. package/dist/mem-summarize.d.ts.map +1 -0
  61. package/dist/mem-summarize.js +213 -0
  62. package/dist/mem-summarize.js.map +1 -0
  63. package/dist/mem-triage.d.ts +22 -0
  64. package/dist/mem-triage.d.ts.map +1 -0
  65. package/dist/mem-triage.js +328 -0
  66. package/dist/mem-triage.js.map +1 -0
  67. package/dist/spawn-list.d.ts +16 -0
  68. package/dist/spawn-list.d.ts.map +1 -0
  69. package/dist/spawn-list.js +140 -0
  70. package/dist/spawn-list.js.map +1 -0
  71. package/dist/wu-block.d.ts +16 -0
  72. package/dist/wu-block.d.ts.map +1 -0
  73. package/dist/wu-block.js +241 -0
  74. package/dist/wu-block.js.map +1 -0
  75. package/dist/wu-claim.d.ts +32 -0
  76. package/dist/wu-claim.d.ts.map +1 -0
  77. package/dist/wu-claim.js +1106 -0
  78. package/dist/wu-claim.js.map +1 -0
  79. package/dist/wu-cleanup.d.ts +17 -0
  80. package/dist/wu-cleanup.d.ts.map +1 -0
  81. package/dist/wu-cleanup.js +194 -0
  82. package/dist/wu-cleanup.js.map +1 -0
  83. package/dist/wu-create.d.ts +38 -0
  84. package/dist/wu-create.d.ts.map +1 -0
  85. package/dist/wu-create.js +520 -0
  86. package/dist/wu-create.js.map +1 -0
  87. package/dist/wu-deps.d.ts +13 -0
  88. package/dist/wu-deps.d.ts.map +1 -0
  89. package/dist/wu-deps.js +119 -0
  90. package/dist/wu-deps.js.map +1 -0
  91. package/dist/wu-done.d.ts +153 -0
  92. package/dist/wu-done.d.ts.map +1 -0
  93. package/dist/wu-done.js +2096 -0
  94. package/dist/wu-done.js.map +1 -0
  95. package/dist/wu-edit.d.ts +29 -0
  96. package/dist/wu-edit.d.ts.map +1 -0
  97. package/dist/wu-edit.js +852 -0
  98. package/dist/wu-edit.js.map +1 -0
  99. package/dist/wu-infer-lane.d.ts +17 -0
  100. package/dist/wu-infer-lane.d.ts.map +1 -0
  101. package/dist/wu-infer-lane.js +135 -0
  102. package/dist/wu-infer-lane.js.map +1 -0
  103. package/dist/wu-preflight.d.ts +47 -0
  104. package/dist/wu-preflight.d.ts.map +1 -0
  105. package/dist/wu-preflight.js +167 -0
  106. package/dist/wu-preflight.js.map +1 -0
  107. package/dist/wu-prune.d.ts +16 -0
  108. package/dist/wu-prune.d.ts.map +1 -0
  109. package/dist/wu-prune.js +259 -0
  110. package/dist/wu-prune.js.map +1 -0
  111. package/dist/wu-repair.d.ts +60 -0
  112. package/dist/wu-repair.d.ts.map +1 -0
  113. package/dist/wu-repair.js +226 -0
  114. package/dist/wu-repair.js.map +1 -0
  115. package/dist/wu-spawn-completion.d.ts +10 -0
  116. package/dist/wu-spawn-completion.js +30 -0
  117. package/dist/wu-spawn.d.ts +168 -0
  118. package/dist/wu-spawn.d.ts.map +1 -0
  119. package/dist/wu-spawn.js +1327 -0
  120. package/dist/wu-spawn.js.map +1 -0
  121. package/dist/wu-unblock.d.ts +16 -0
  122. package/dist/wu-unblock.d.ts.map +1 -0
  123. package/dist/wu-unblock.js +234 -0
  124. package/dist/wu-unblock.js.map +1 -0
  125. package/dist/wu-validate.d.ts +16 -0
  126. package/dist/wu-validate.d.ts.map +1 -0
  127. package/dist/wu-validate.js +193 -0
  128. package/dist/wu-validate.js.map +1 -0
  129. package/package.json +92 -0
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * WU Dependency Visualization (WU-1247)
4
+ *
5
+ * Shows dependency graph for a WU in ASCII or Mermaid format.
6
+ *
7
+ * Usage:
8
+ * pnpm wu:deps WU-1247 # ASCII format
9
+ * pnpm wu:deps WU-1247 --format mermaid # Mermaid diagram
10
+ * pnpm wu:deps WU-1247 --depth 5 # Deeper traversal
11
+ * pnpm wu:deps WU-1247 --direction up # Only upstream deps
12
+ */
13
+ import { createWUParser, WU_OPTIONS } from '@lumenflow/core/dist/arg-parser.js';
14
+ import { die } from '@lumenflow/core/dist/error-handler.js';
15
+ import { buildDependencyGraph, renderASCII, renderMermaid, validateGraph, } from '@lumenflow/core/dist/dependency-graph.js';
16
+ import { OUTPUT_FORMATS } from '@lumenflow/initiatives/dist/initiative-constants.js';
17
+ import { PATTERNS } from '@lumenflow/core/dist/wu-constants.js';
18
+ async function main() {
19
+ const args = createWUParser({
20
+ name: 'wu-deps',
21
+ description: 'Visualize WU dependency graph',
22
+ options: [WU_OPTIONS.id, WU_OPTIONS.format, WU_OPTIONS.depth, WU_OPTIONS.direction],
23
+ required: [],
24
+ allowPositionalId: true,
25
+ });
26
+ const wuId = args.id;
27
+ if (!wuId) {
28
+ die('WU ID is required.\n\nUsage: pnpm wu:deps WU-1247');
29
+ }
30
+ if (!PATTERNS.WU_ID.test(wuId)) {
31
+ die(`Invalid WU ID format: "${wuId}"\n\nExpected format: WU-<number> (e.g., WU-1247)`);
32
+ }
33
+ console.log(`[wu:deps] Building dependency graph...`);
34
+ const graph = buildDependencyGraph();
35
+ if (!graph.has(wuId)) {
36
+ die(`WU not found in graph: ${wuId}\n\nEnsure the WU exists in docs/04-operations/tasks/wu/`);
37
+ }
38
+ const format = args.format || OUTPUT_FORMATS.ASCII;
39
+ const depth = args.depth ? parseInt(args.depth, 10) : 3;
40
+ const direction = args.direction || 'both';
41
+ // Validate direction
42
+ if (!['up', 'down', 'both'].includes(direction)) {
43
+ die(`Invalid direction: "${direction}"\n\nValid options: up, down, both`);
44
+ }
45
+ let output;
46
+ switch (format) {
47
+ case OUTPUT_FORMATS.MERMAID:
48
+ output = renderMermaid(graph, { rootId: wuId, direction: 'TD', depth });
49
+ break;
50
+ case OUTPUT_FORMATS.JSON:
51
+ output = renderGraphJSON(graph, wuId, depth, direction);
52
+ break;
53
+ case OUTPUT_FORMATS.ASCII:
54
+ default:
55
+ output = renderASCII(graph, wuId, { direction, depth });
56
+ break;
57
+ }
58
+ console.log('');
59
+ console.log(output);
60
+ // Validate and warn about issues
61
+ const validation = validateGraph(graph);
62
+ if (validation.hasCycle) {
63
+ console.log('\n⚠️ Warning: Circular dependencies detected in graph!');
64
+ console.log('Run with --validate for full validation report.');
65
+ }
66
+ }
67
+ function renderGraphJSON(graph, rootId, depth, direction) {
68
+ const node = graph.get(rootId);
69
+ if (!node)
70
+ return JSON.stringify({ error: 'WU not found' }, null, 2);
71
+ const visited = new Set();
72
+ const collectDeps = (id, currentDepth, isUpstream) => {
73
+ if (currentDepth > depth || visited.has(id))
74
+ return null;
75
+ visited.add(id);
76
+ const n = graph.get(id);
77
+ if (!n)
78
+ return { id, status: 'unknown', deps: [] };
79
+ const deps = isUpstream ? n.blockedBy : n.blocks;
80
+ return {
81
+ id,
82
+ title: n.title,
83
+ status: n.status,
84
+ deps: deps
85
+ .filter((d) => graph.has(d))
86
+ .map((d) => collectDeps(d, currentDepth + 1, isUpstream))
87
+ .filter(Boolean),
88
+ };
89
+ };
90
+ const output = {
91
+ root: {
92
+ id: node.id,
93
+ title: node.title,
94
+ status: node.status,
95
+ },
96
+ };
97
+ visited.clear();
98
+ if (direction === 'up' || direction === 'both') {
99
+ visited.add(rootId);
100
+ output.upstream = node.blockedBy
101
+ .filter((d) => graph.has(d))
102
+ .map((d) => collectDeps(d, 1, true))
103
+ .filter(Boolean);
104
+ }
105
+ visited.clear();
106
+ if (direction === 'down' || direction === 'both') {
107
+ visited.add(rootId);
108
+ output.downstream = node.blocks
109
+ .filter((d) => graph.has(d))
110
+ .map((d) => collectDeps(d, 1, false))
111
+ .filter(Boolean);
112
+ }
113
+ return JSON.stringify(output, null, 2);
114
+ }
115
+ // Guard main() for testability (WU-1366)
116
+ import { fileURLToPath } from 'node:url';
117
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
118
+ main();
119
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-deps.js","sourceRoot":"","sources":["../src/wu-deps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * WU Done Helper
4
+ *
5
+ * Canonical sequence (Worktree mode - DEFAULT):
6
+ * 1) Run gates in lane worktree (validates the change, not just main)
7
+ * 2) Pre-flight validation: run ALL pre-commit hooks before merge (prevents partial completion)
8
+ * 3) cd into worktree
9
+ * 4) Auto-update WU YAML/backlog/status to Done in worktree (unless --no-auto)
10
+ * 5) Create `.beacon/stamps/WU-{id}.done` in worktree
11
+ * 6) Validate staged files against whitelist
12
+ * 7) Commit metadata changes in worktree (on lane branch)
13
+ * 8) cd back to main
14
+ * 9) Merge lane branch to main with --ff-only (metadata + code merged atomically)
15
+ * 10) Push to `main`
16
+ * 11) Remove the associated worktree (unless --no-remove)
17
+ * 12) Optionally delete the lane branch (with --delete-branch)
18
+ * 13) Emit telemetry to .beacon/flow.log
19
+ *
20
+ * Canonical sequence (Branch-Only mode - LEGACY):
21
+ * 1) Run gates on lane branch (in main checkout)
22
+ * 2) Pre-flight validation
23
+ * 3) Merge lane branch to main
24
+ * 4) Update metadata on main
25
+ * 5) Commit and push
26
+ * 6) Delete lane branch
27
+ *
28
+ * Usage:
29
+ * pnpm wu:done --id WU-334 [--worktree worktrees/intelligence-wu-334] [--no-auto] [--no-remove] [--no-merge] [--delete-branch]
30
+ *
31
+ * WU-2542: This script imports utilities from @lumenflow/core package.
32
+ * Full migration to thin shim pending @lumenflow/core CLI export implementation.
33
+ */
34
+ /**
35
+ * WU-1999: Print exposure validation warnings.
36
+ *
37
+ * Validates exposure field and UI pairing for user-facing WUs.
38
+ * Non-blocking - logs warnings but doesn't prevent completion.
39
+ *
40
+ * Checks:
41
+ * - exposure field is present (warn if missing)
42
+ * - If exposure=api, warns if no ui_pairing_wus specified
43
+ * - If exposure=api, checks acceptance criteria for UI verification mention
44
+ * - If exposure=ui, recommends user_journey field if not present
45
+ *
46
+ * @param {object} wu - WU YAML document
47
+ * @param {object} options - Validation options
48
+ * @param {boolean} [options.skipExposureCheck=false] - Skip all exposure validation
49
+ * @returns {void}
50
+ */
51
+ interface ExposureOptions {
52
+ skipExposureCheck?: boolean;
53
+ }
54
+ export declare function printExposureWarnings(wu: Record<string, unknown>, options?: ExposureOptions): void;
55
+ /**
56
+ * WU-2022: Validate feature accessibility for UI-exposed WUs.
57
+ *
58
+ * BLOCKING validation - prevents wu:done if exposure=ui but feature is not accessible.
59
+ * This prevents "orphaned code" where UI features exist but users cannot navigate to them.
60
+ *
61
+ * Accessibility is verified by ANY of:
62
+ * 1. navigation_path field is specified (explicit route)
63
+ * 2. code_paths includes a page.tsx file (Next.js page)
64
+ * 3. tests.manual includes navigation/accessibility verification
65
+ *
66
+ * @param {object} wu - WU YAML document
67
+ * @param {object} options - Validation options
68
+ * @param {boolean} [options.skipAccessibilityCheck=false] - Skip accessibility validation
69
+ * @returns {void} Calls die() if validation fails
70
+ */
71
+ interface AccessibilityOptions {
72
+ skipAccessibilityCheck?: boolean;
73
+ }
74
+ export declare function validateAccessibilityOrDie(wu: Record<string, unknown>, options?: AccessibilityOptions): void;
75
+ /**
76
+ * WU-1946: Update spawn registry on WU completion.
77
+ * Non-blocking wrapper - failures logged as warnings.
78
+ *
79
+ * When a WU is completed via wu:done, this function updates the spawn registry
80
+ * to mark the spawned entry as completed (if one exists). This allows orchestrators
81
+ * to track sub-agent spawn completion status.
82
+ *
83
+ * Gracefully skips if:
84
+ * - No spawn entry found for this WU (legacy WU created before registry)
85
+ * - Registry file doesn't exist
86
+ * - Any error during update
87
+ *
88
+ * @param {string} id - WU ID being completed
89
+ * @param {string} baseDir - Base directory containing .beacon/state/
90
+ * @returns {Promise<void>}
91
+ */
92
+ export declare function updateSpawnRegistryOnCompletion(id: any, baseDir?: string): Promise<void>;
93
+ /**
94
+ * WU-1234: Normalize username for ownership comparison
95
+ * Extracts username from email address for comparison.
96
+ * This allows tom@hellm.ai to match 'tom' assigned_to field.
97
+ *
98
+ * @param {string|null|undefined} value - Email address or username
99
+ * @returns {string} Normalized username (lowercase)
100
+ */
101
+ export declare function normalizeUsername(value: any): string;
102
+ /**
103
+ * WU-1234: Detect if branch is already merged to main
104
+ * Checks if branch tip is an ancestor of main HEAD (i.e., already merged).
105
+ * This prevents merge loops when code was merged via emergency fix or manual merge.
106
+ *
107
+ * @param {string} branch - Lane branch name
108
+ * @returns {Promise<boolean>} True if branch is already merged to main
109
+ */
110
+ export declare function isBranchAlreadyMerged(branch: any): Promise<boolean>;
111
+ export { shouldSkipWebTests as isDocsOnlyByPaths } from '@lumenflow/core/dist/path-classifiers.js';
112
+ /**
113
+ * WU-1234: Pre-flight check for backlog state consistency
114
+ * Fails fast if the WU appears in both Done and In Progress sections.
115
+ *
116
+ * @param {string} id - WU ID to check
117
+ * @param {string} backlogPath - Path to backlog.md
118
+ * @returns {{ valid: boolean, error: string|null }}
119
+ */
120
+ export declare function checkBacklogConsistencyForWU(id: any, backlogPath: any): {
121
+ valid: boolean;
122
+ error: string;
123
+ };
124
+ export declare function emitTelemetry(event: any): void;
125
+ /**
126
+ * WU-1983: Print migration deployment nudge when WU includes supabase changes.
127
+ * Notifies agent to deploy new migrations to production via MCP tools.
128
+ * Conditional output - only prints when migrations are in scope and new migrations exist.
129
+ *
130
+ * @param {string[]} codePaths - WU code_paths array
131
+ * @param {string} baseDir - Base directory for migration discovery
132
+ * @returns {Promise<void>}
133
+ */
134
+ export declare function printMigrationDeploymentNudge(codePaths: any, baseDir: any): Promise<void>;
135
+ /**
136
+ * WU-1763: Print discovery summary nudge when discoveries exist for this WU.
137
+ * Conditional output - only prints when discoveryCount > 0.
138
+ * Non-blocking, single-line output to avoid flooding the console.
139
+ *
140
+ * @param {string} id - WU ID being completed
141
+ * @param {number} discoveryCount - Number of open discoveries for this WU
142
+ * @param {string[]} discoveryIds - List of discovery IDs (limited to 5 in output)
143
+ */
144
+ export declare function printDiscoveryNudge(id: any, discoveryCount: any, discoveryIds: any): void;
145
+ /**
146
+ * WU-1763: Print documentation validation nudge when docs changed.
147
+ * Conditional output - only prints when changedDocPaths.length > 0.
148
+ * Non-blocking, single-line output to avoid flooding the console.
149
+ *
150
+ * @param {string} id - WU ID being completed
151
+ * @param {string[]} changedDocPaths - List of documentation paths that changed
152
+ */
153
+ export declare function printDocValidationNudge(id: any, changedDocPaths: any): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-done.d.ts","sourceRoot":"","sources":["../src/wu-done.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAmLH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,KAAA,EAAE,OAAO,KAAK,QAerD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,KAAA,EAAE,OAAO,KAAK,QAgB1D;AAgID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,+BAA+B,CAAC,EAAE,KAAA,EAAE,OAAO,SAAgB,iBA0BhF;AASD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,KAAA,UAQtC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,KAAA,oBA0BjD;AAKD,OAAO,EAAE,kBAAkB,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAElG;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,KAAA,EAAE,WAAW,KAAA;;;EA+B3D;AAiVD,wBAAgB,aAAa,CAAC,KAAK,KAAA,QAMlC;AA67CD;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,SAAS,KAAA,EAAE,OAAO,KAAA,iBA4BrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,KAAA,EAAE,cAAc,KAAA,EAAE,YAAY,KAAA,QASnE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,KAAA,EAAE,eAAe,KAAA,QAK1D"}