@lumenflow/cli 2.18.3 → 2.20.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.
- package/README.md +44 -42
- package/dist/agent-session.js +1 -1
- package/dist/agent-session.js.map +1 -1
- package/dist/commands/integrate.js +1 -0
- package/dist/commands/integrate.js.map +1 -1
- package/dist/commands.js +1 -0
- package/dist/commands.js.map +1 -1
- package/dist/delegation-list.js +140 -0
- package/dist/delegation-list.js.map +1 -0
- package/dist/docs-sync.js +1 -0
- package/dist/docs-sync.js.map +1 -1
- package/dist/doctor.js +36 -99
- package/dist/doctor.js.map +1 -1
- package/dist/gates-plan-resolvers.js +150 -0
- package/dist/gates-plan-resolvers.js.map +1 -0
- package/dist/gates-runners.js +533 -0
- package/dist/gates-runners.js.map +1 -0
- package/dist/gates-types.js +3 -0
- package/dist/gates-types.js.map +1 -1
- package/dist/gates-utils.js +316 -0
- package/dist/gates-utils.js.map +1 -0
- package/dist/gates.js +44 -1016
- package/dist/gates.js.map +1 -1
- package/dist/hooks/enforcement-generator.js +16 -880
- package/dist/hooks/enforcement-generator.js.map +1 -1
- package/dist/hooks/enforcement-sync.js +6 -5
- package/dist/hooks/enforcement-sync.js.map +1 -1
- package/dist/hooks/generators/auto-checkpoint.js +123 -0
- package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
- package/dist/hooks/generators/enforce-worktree.js +188 -0
- package/dist/hooks/generators/enforce-worktree.js.map +1 -0
- package/dist/hooks/generators/index.js +16 -0
- package/dist/hooks/generators/index.js.map +1 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js +134 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
- package/dist/hooks/generators/require-wu.js +115 -0
- package/dist/hooks/generators/require-wu.js.map +1 -0
- package/dist/hooks/generators/session-start-recovery.js +101 -0
- package/dist/hooks/generators/session-start-recovery.js.map +1 -0
- package/dist/hooks/generators/signal-utils.js +52 -0
- package/dist/hooks/generators/signal-utils.js.map +1 -0
- package/dist/hooks/generators/warn-incomplete.js +65 -0
- package/dist/hooks/generators/warn-incomplete.js.map +1 -0
- package/dist/init-detection.js +228 -0
- package/dist/init-detection.js.map +1 -0
- package/dist/init-scaffolding.js +146 -0
- package/dist/init-scaffolding.js.map +1 -0
- package/dist/init-templates.js +1928 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.js +137 -2425
- package/dist/init.js.map +1 -1
- package/dist/initiative-edit.js +42 -11
- package/dist/initiative-edit.js.map +1 -1
- package/dist/initiative-remove-wu.js +0 -0
- package/dist/initiative-status.js +29 -2
- package/dist/initiative-status.js.map +1 -1
- package/dist/mem-context.js +22 -9
- package/dist/mem-context.js.map +1 -1
- package/dist/orchestrate-init-status.js +32 -1
- package/dist/orchestrate-init-status.js.map +1 -1
- package/dist/orchestrate-initiative.js +2 -2
- package/dist/orchestrate-initiative.js.map +1 -1
- package/dist/orchestrate-monitor.js +38 -38
- package/dist/orchestrate-monitor.js.map +1 -1
- package/dist/plan-link.js +7 -14
- package/dist/plan-link.js.map +1 -1
- package/dist/public-manifest.js +19 -5
- package/dist/public-manifest.js.map +1 -1
- package/dist/shared-validators.js +1 -0
- package/dist/shared-validators.js.map +1 -1
- package/dist/spawn-list.js +0 -0
- package/dist/sync-templates.js +2 -1
- package/dist/sync-templates.js.map +1 -1
- package/dist/wu-claim-branch.js +121 -0
- package/dist/wu-claim-branch.js.map +1 -0
- package/dist/wu-claim-output.js +83 -0
- package/dist/wu-claim-output.js.map +1 -0
- package/dist/wu-claim-resume-handler.js +85 -0
- package/dist/wu-claim-resume-handler.js.map +1 -0
- package/dist/wu-claim-state.js +572 -0
- package/dist/wu-claim-state.js.map +1 -0
- package/dist/wu-claim-validation.js +439 -0
- package/dist/wu-claim-validation.js.map +1 -0
- package/dist/wu-claim-worktree.js +221 -0
- package/dist/wu-claim-worktree.js.map +1 -0
- package/dist/wu-claim.js +96 -1394
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-code-path-coverage.js +81 -0
- package/dist/wu-code-path-coverage.js.map +1 -0
- package/dist/wu-create-content.js +256 -0
- package/dist/wu-create-content.js.map +1 -0
- package/dist/wu-create-readiness.js +57 -0
- package/dist/wu-create-readiness.js.map +1 -0
- package/dist/wu-create-validation.js +124 -0
- package/dist/wu-create-validation.js.map +1 -0
- package/dist/wu-create.js +45 -442
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-done.js +151 -249
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-edit-operations.js +401 -0
- package/dist/wu-edit-operations.js.map +1 -0
- package/dist/wu-edit-validators.js +280 -0
- package/dist/wu-edit-validators.js.map +1 -0
- package/dist/wu-edit.js +43 -759
- package/dist/wu-edit.js.map +1 -1
- package/dist/wu-prep.js +43 -127
- package/dist/wu-prep.js.map +1 -1
- package/dist/wu-repair.js +1 -1
- package/dist/wu-repair.js.map +1 -1
- package/dist/wu-sandbox.js +253 -0
- package/dist/wu-sandbox.js.map +1 -0
- package/dist/wu-spawn-prompt-builders.js +1124 -0
- package/dist/wu-spawn-prompt-builders.js.map +1 -0
- package/dist/wu-spawn-strategy-resolver.js +319 -0
- package/dist/wu-spawn-strategy-resolver.js.map +1 -0
- package/dist/wu-spawn.js +9 -1398
- package/dist/wu-spawn.js.map +1 -1
- package/dist/wu-status.js +4 -0
- package/dist/wu-status.js.map +1 -1
- package/dist/wu-validate.js +1 -1
- package/dist/wu-validate.js.map +1 -1
- package/package.json +15 -11
- package/templates/core/LUMENFLOW.md.template +29 -99
- package/templates/core/UPGRADING.md.template +2 -2
- package/templates/core/ai/onboarding/agent-invocation-guide.md.template +1 -1
- package/templates/core/ai/onboarding/quick-ref-commands.md.template +29 -4
- package/templates/core/ai/onboarding/release-process.md.template +1 -1
- package/templates/vendors/claude/.claude/skills/orchestration/SKILL.md.template +8 -8
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@lumenflow/cli)
|
|
4
4
|
[](https://www.npmjs.com/package/@lumenflow/cli)
|
|
5
|
-
[](https://github.com/hellmai/
|
|
5
|
+
[](https://github.com/hellmai/lumenflow/blob/main/LICENSE)
|
|
6
6
|
[](https://nodejs.org)
|
|
7
7
|
|
|
8
8
|
> Command-line interface for LumenFlow workflow framework
|
|
@@ -71,6 +71,7 @@ This package provides CLI commands for the LumenFlow workflow framework, includi
|
|
|
71
71
|
| `wu-recover` | Analyze and fix WU state inconsistencies |
|
|
72
72
|
| `wu-release` | Release orphaned WU (in_progress to ready) |
|
|
73
73
|
| `wu-repair` | Repair WU state issues |
|
|
74
|
+
| `wu-sandbox` | Run command through hardened WU sandbox backend |
|
|
74
75
|
| `wu-status` | Show WU status, location, valid commands |
|
|
75
76
|
| `wu-unblock` | Unblock WU |
|
|
76
77
|
| `wu-unlock-lane` | Unlock stuck lane |
|
|
@@ -78,51 +79,54 @@ This package provides CLI commands for the LumenFlow workflow framework, includi
|
|
|
78
79
|
|
|
79
80
|
### Memory & Session
|
|
80
81
|
|
|
81
|
-
| Command
|
|
82
|
-
|
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
87
|
-
| `mem-
|
|
88
|
-
| `mem-
|
|
89
|
-
| `mem-
|
|
90
|
-
| `mem-
|
|
91
|
-
| `mem-
|
|
92
|
-
| `mem-
|
|
93
|
-
| `mem-
|
|
94
|
-
| `mem-
|
|
95
|
-
| `mem-
|
|
96
|
-
| `mem-
|
|
97
|
-
| `
|
|
98
|
-
| `mem-start` | Start a memory session |
|
|
99
|
-
| `mem-summarize` | Summarize memory context |
|
|
100
|
-
| `mem-triage` | Triage discovered bugs |
|
|
82
|
+
| Command | Description |
|
|
83
|
+
| ---------------- | ------------------------------------------ |
|
|
84
|
+
| `mem-checkpoint` | Save progress checkpoint |
|
|
85
|
+
| `mem-cleanup` | Clean up stale memory data |
|
|
86
|
+
| `mem-context` | Get context for current lane/WU |
|
|
87
|
+
| `mem-create` | Create memory node (bug discovery) |
|
|
88
|
+
| `mem-delete` | Delete/archive a memory node |
|
|
89
|
+
| `mem-export` | Export memory as markdown |
|
|
90
|
+
| `mem-inbox` | Check coordination signals |
|
|
91
|
+
| `mem-init` | Initialize memory for WU |
|
|
92
|
+
| `mem-ready` | Check pending memory nodes |
|
|
93
|
+
| `mem-recover` | Generate recovery context after compaction |
|
|
94
|
+
| `mem-signal` | Broadcast coordination signal |
|
|
95
|
+
| `mem-start` | Start a memory session |
|
|
96
|
+
| `mem-summarize` | Summarize memory context |
|
|
97
|
+
| `mem-triage` | Triage discovered bugs |
|
|
98
|
+
| `signal-cleanup` | Clean up stale signals |
|
|
101
99
|
|
|
102
100
|
### Initiative Orchestration
|
|
103
101
|
|
|
104
|
-
| Command | Description
|
|
105
|
-
| ---------------------------- |
|
|
106
|
-
| `
|
|
107
|
-
| `
|
|
108
|
-
| `
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
111
|
-
| `initiative-
|
|
112
|
-
| `initiative-
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
102
|
+
| Command | Description |
|
|
103
|
+
| ---------------------------- | ----------------------------------------- |
|
|
104
|
+
| `agent-issues-query` | Query GitHub issues for agent work |
|
|
105
|
+
| `agent-log-issue` | Log issue during agent session |
|
|
106
|
+
| `agent-session` | Start agent session |
|
|
107
|
+
| `agent-session-end` | End agent session |
|
|
108
|
+
| `delegation-list` | List active delegation records |
|
|
109
|
+
| `initiative-add-wu` | Add WU to initiative |
|
|
110
|
+
| `initiative-bulk-assign-wus` | Bulk assign WUs to initiative |
|
|
111
|
+
| `initiative-create` | Create new initiative |
|
|
112
|
+
| `initiative-edit` | Edit initiative fields and phase metadata |
|
|
113
|
+
| `initiative-list` | List all initiatives |
|
|
114
|
+
| `initiative-plan` | Link plan to initiative |
|
|
115
|
+
| `initiative-remove-wu` | Remove WU from initiative |
|
|
116
|
+
| `initiative-status` | Show initiative status |
|
|
117
|
+
| `orchestrate-init-status` | Compact initiative progress view |
|
|
118
|
+
| `orchestrate-initiative` | Orchestrate initiative execution |
|
|
119
|
+
| `orchestrate-monitor` | Monitor spawn/agent activity |
|
|
117
120
|
|
|
118
121
|
### Metrics & Analytics
|
|
119
122
|
|
|
120
|
-
| Command
|
|
121
|
-
|
|
|
122
|
-
| `flow-bottlenecks`
|
|
123
|
-
| `flow-report`
|
|
124
|
-
| `metrics`
|
|
125
|
-
| `metrics
|
|
123
|
+
| Command | Description |
|
|
124
|
+
| ------------------- | ----------------------------- |
|
|
125
|
+
| `flow-bottlenecks` | Identify flow bottlenecks |
|
|
126
|
+
| `flow-report` | Generate flow metrics report |
|
|
127
|
+
| `lumenflow-metrics` | View workflow metrics (alias) |
|
|
128
|
+
| `metrics` | View workflow metrics |
|
|
129
|
+
| `metrics-snapshot` | Capture metrics snapshot |
|
|
126
130
|
|
|
127
131
|
### Lane Tooling
|
|
128
132
|
|
|
@@ -152,7 +156,6 @@ This package provides CLI commands for the LumenFlow workflow framework, includi
|
|
|
152
156
|
| `lumenflow-doctor` | Diagnose LumenFlow configuration |
|
|
153
157
|
| `lumenflow-init` | Initialize LumenFlow in a project (alias) |
|
|
154
158
|
| `lumenflow-integrate` | Generate enforcement hooks for client |
|
|
155
|
-
| `lumenflow-metrics` | View workflow metrics (alias) |
|
|
156
159
|
| `lumenflow-release` | Run release workflow |
|
|
157
160
|
| `lumenflow-sync-templates` | Sync templates to project |
|
|
158
161
|
| `lumenflow-upgrade` | Upgrade LumenFlow packages |
|
|
@@ -160,7 +163,6 @@ This package provides CLI commands for the LumenFlow workflow framework, includi
|
|
|
160
163
|
| `plan-edit` | Edit plan content |
|
|
161
164
|
| `plan-link` | Link plan to WU or initiative |
|
|
162
165
|
| `plan-promote` | Promote plan to WU |
|
|
163
|
-
| `signal-cleanup` | Clean up stale signals |
|
|
164
166
|
| `state-bootstrap` | Bootstrap state store |
|
|
165
167
|
| `state-cleanup` | Clean up stale state data |
|
|
166
168
|
| `state-doctor` | Diagnose state store issues |
|
package/dist/agent-session.js
CHANGED
|
@@ -16,7 +16,7 @@ const program = new Command()
|
|
|
16
16
|
.description('Start an agent session')
|
|
17
17
|
.requiredOption('--wu <id>', 'WU ID to work on (e.g., WU-1234)')
|
|
18
18
|
.requiredOption('--tier <tier>', 'Context tier (1, 2, or 3)')
|
|
19
|
-
.option('--agent-type <type>', 'Agent type', 'claude-code')
|
|
19
|
+
.option('--agent-type <type>', 'Agent type (e.g. claude-code, codex-cli, gemini-cli)', 'claude-code')
|
|
20
20
|
.action(async (opts) => {
|
|
21
21
|
try {
|
|
22
22
|
// Check for existing session
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../src/agent-session.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wBAAwB,CAAC;KACrC,cAAc,CAAC,WAAW,EAAE,kCAAkC,CAAC;KAC/D,cAAc,CAAC,eAAe,EAAE,2BAA2B,CAAC;KAC5D,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../src/agent-session.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,wBAAwB,CAAC;KACrC,cAAc,CAAC,WAAW,EAAE,kCAAkC,CAAC;KAC/D,cAAc,CAAC,eAAe,EAAE,2BAA2B,CAAC;KAC5D,MAAM,CACL,qBAAqB,EACrB,sDAAsD,EACtD,aAAa,CACd;KACA,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands.js
CHANGED
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Delegation List Command (WU-1950, WU-1674)
|
|
4
|
+
*
|
|
5
|
+
* Displays delegation trees for WUs or initiatives.
|
|
6
|
+
* WU-1604: Includes explicit delegation lineage records from wu:delegate.
|
|
7
|
+
* Shows parent-child relationships with status indicators.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* pnpm delegation:list --wu WU-XXX # Delegations for a specific WU
|
|
11
|
+
* pnpm delegation:list --initiative INIT-XXX # All delegations in an initiative
|
|
12
|
+
* pnpm delegation:list --json # JSON output
|
|
13
|
+
*/
|
|
14
|
+
import { createWUParser, WU_OPTIONS } from '@lumenflow/core/arg-parser';
|
|
15
|
+
import { die } from '@lumenflow/core/error-handler';
|
|
16
|
+
import { PATTERNS, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
17
|
+
import { WU_PATHS } from '@lumenflow/core/wu-paths';
|
|
18
|
+
/** Local EMOJI constants for delegation-list output */
|
|
19
|
+
const EMOJI = {
|
|
20
|
+
WARNING: '⚠️',
|
|
21
|
+
ERROR: '❌',
|
|
22
|
+
};
|
|
23
|
+
/** Custom options for delegation-list command */
|
|
24
|
+
const DELEGATION_LIST_OPTIONS = {
|
|
25
|
+
initiative: {
|
|
26
|
+
name: 'initiative',
|
|
27
|
+
flags: '--initiative <initId>',
|
|
28
|
+
description: 'Initiative ID to show all delegations for (e.g., INIT-001)',
|
|
29
|
+
},
|
|
30
|
+
json: {
|
|
31
|
+
name: 'json',
|
|
32
|
+
flags: '--json',
|
|
33
|
+
description: 'Output as JSON',
|
|
34
|
+
default: false,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
import { buildDelegationTree, formatDelegationTree, getDelegationsByWU, getDelegationsByInitiative, treeToJSON, STATUS_INDICATORS, } from '@lumenflow/core/delegation-tree';
|
|
38
|
+
import { DelegationStatus } from '@lumenflow/core/delegation-registry-schema';
|
|
39
|
+
import { runCLI } from './cli-entry-point.js';
|
|
40
|
+
const LOG_PREFIX = '[delegation:list]';
|
|
41
|
+
/** Default paths for delegation registry and WU files (WU-1301: uses config-based paths) */
|
|
42
|
+
const DEFAULT_PATHS = Object.freeze({
|
|
43
|
+
REGISTRY_DIR: LUMENFLOW_PATHS.STATE_DIR,
|
|
44
|
+
WU_DIR: WU_PATHS.WU_DIR(),
|
|
45
|
+
});
|
|
46
|
+
/** Initiative ID pattern */
|
|
47
|
+
const INIT_PATTERN = /^INIT-\d+$/;
|
|
48
|
+
/**
|
|
49
|
+
* Prints the legend for status indicators
|
|
50
|
+
*/
|
|
51
|
+
function printLegend() {
|
|
52
|
+
console.log('\nLegend:');
|
|
53
|
+
console.log(` ${STATUS_INDICATORS[DelegationStatus.PENDING]} pending`);
|
|
54
|
+
console.log(` ${STATUS_INDICATORS[DelegationStatus.COMPLETED]} completed`);
|
|
55
|
+
console.log(` ${STATUS_INDICATORS[DelegationStatus.TIMEOUT]} timeout`);
|
|
56
|
+
console.log(` ${STATUS_INDICATORS[DelegationStatus.CRASHED]} crashed`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Main entry point
|
|
60
|
+
*/
|
|
61
|
+
async function main() {
|
|
62
|
+
const args = createWUParser({
|
|
63
|
+
name: 'delegation-list',
|
|
64
|
+
description: 'Display delegation trees for WUs or initiatives',
|
|
65
|
+
options: [WU_OPTIONS.wu, DELEGATION_LIST_OPTIONS.initiative, DELEGATION_LIST_OPTIONS.json],
|
|
66
|
+
required: [],
|
|
67
|
+
allowPositionalId: false,
|
|
68
|
+
});
|
|
69
|
+
const { wu, initiative, json } = args;
|
|
70
|
+
// Validate: exactly one of --wu or --initiative required
|
|
71
|
+
if (!wu && !initiative) {
|
|
72
|
+
die('Either --wu or --initiative is required.\n\nUsage:\n pnpm delegation:list --wu WU-XXX\n pnpm delegation:list --initiative INIT-XXX');
|
|
73
|
+
}
|
|
74
|
+
if (wu && initiative) {
|
|
75
|
+
die('Cannot specify both --wu and --initiative. Choose one.');
|
|
76
|
+
}
|
|
77
|
+
// Handle --wu
|
|
78
|
+
if (wu) {
|
|
79
|
+
const wuId = wu.toUpperCase();
|
|
80
|
+
if (!PATTERNS.WU_ID.test(wuId)) {
|
|
81
|
+
die(`Invalid WU ID format: ${wu}. Expected format: WU-XXX`);
|
|
82
|
+
}
|
|
83
|
+
const delegations = await getDelegationsByWU(wuId, DEFAULT_PATHS.REGISTRY_DIR);
|
|
84
|
+
if (json) {
|
|
85
|
+
const tree = buildDelegationTree(delegations, wuId);
|
|
86
|
+
console.log(JSON.stringify(treeToJSON(tree), null, 2));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (delegations.length === 0) {
|
|
90
|
+
console.log(`${LOG_PREFIX} ${EMOJI.WARNING} No delegations found for ${wuId}`);
|
|
91
|
+
console.log(`\n${wuId} (root)`);
|
|
92
|
+
console.log(' (no delegations)');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
console.log(`${LOG_PREFIX} Delegation tree for ${wuId}:\n`);
|
|
96
|
+
const tree = buildDelegationTree(delegations, wuId);
|
|
97
|
+
console.log(formatDelegationTree(tree));
|
|
98
|
+
printLegend();
|
|
99
|
+
console.log(`\nTotal: ${delegations.length} delegation(s)`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Handle --initiative
|
|
103
|
+
if (initiative) {
|
|
104
|
+
const initId = initiative.toUpperCase();
|
|
105
|
+
if (!INIT_PATTERN.test(initId)) {
|
|
106
|
+
die(`Invalid initiative ID format: ${initiative}. Expected format: INIT-XXX`);
|
|
107
|
+
}
|
|
108
|
+
const delegations = await getDelegationsByInitiative(initId, DEFAULT_PATHS.REGISTRY_DIR, DEFAULT_PATHS.WU_DIR);
|
|
109
|
+
if (json) {
|
|
110
|
+
// For initiative, output flat list since there may be multiple root WUs
|
|
111
|
+
console.log(JSON.stringify(delegations, null, 2));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (delegations.length === 0) {
|
|
115
|
+
console.log(`${LOG_PREFIX} ${EMOJI.WARNING} No delegations found for ${initId}`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Group delegations by parent WU and display trees
|
|
119
|
+
console.log(`${LOG_PREFIX} Delegations for ${initId}:\n`);
|
|
120
|
+
// Find unique root WUs (parents that are not targets of other delegations)
|
|
121
|
+
const typedDelegations = delegations;
|
|
122
|
+
const targetWuIds = new Set(typedDelegations.map((s) => s.targetWuId));
|
|
123
|
+
const rootWuIds = [...new Set(typedDelegations.map((s) => s.parentWuId))].filter((id) => !targetWuIds.has(id));
|
|
124
|
+
for (const rootWuId of rootWuIds) {
|
|
125
|
+
const tree = buildDelegationTree(delegations, rootWuId);
|
|
126
|
+
console.log(formatDelegationTree(tree));
|
|
127
|
+
console.log('');
|
|
128
|
+
}
|
|
129
|
+
printLegend();
|
|
130
|
+
console.log(`\nTotal: ${delegations.length} delegation(s) across ${rootWuIds.length} root WU(s)`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// WU-1181: Use import.meta.main instead of process.argv[1] comparison
|
|
134
|
+
// The old pattern fails with pnpm symlinks because process.argv[1] is the symlink
|
|
135
|
+
// path but import.meta.url resolves to the real path - they never match
|
|
136
|
+
// WU-1537: Use import.meta.main + runCLI for consistent EPIPE and error handling
|
|
137
|
+
if (import.meta.main) {
|
|
138
|
+
void runCLI(main);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=delegation-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-list.js","sourceRoot":"","sources":["../src/delegation-list.ts"],"names":[],"mappings":"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"}
|
package/dist/docs-sync.js
CHANGED
package/dist/docs-sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-sync.js","sourceRoot":"","sources":["../src/docs-sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"docs-sync.js","sourceRoot":"","sources":["../src/docs-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
/**
|
|
2
3
|
* @file doctor.ts
|
|
3
4
|
* LumenFlow health check command (WU-1177)
|
|
@@ -8,7 +9,7 @@
|
|
|
8
9
|
import * as fs from 'node:fs';
|
|
9
10
|
import * as path from 'node:path';
|
|
10
11
|
import { execFileSync } from 'node:child_process';
|
|
11
|
-
import { createWUParser } from '@lumenflow/core';
|
|
12
|
+
import { createWUParser, getResolvedPaths, detectOrphanWorktrees, detectMissingTrackedWorktrees, } from '@lumenflow/core';
|
|
12
13
|
import { loadLaneDefinitions, detectLaneOverlaps } from './lane-health.js';
|
|
13
14
|
import { runCLI } from './cli-entry-point.js';
|
|
14
15
|
/**
|
|
@@ -88,17 +89,27 @@ function checkHusky(projectDir) {
|
|
|
88
89
|
* Check if safe-git wrapper is present
|
|
89
90
|
*/
|
|
90
91
|
function checkSafeGit(projectDir) {
|
|
91
|
-
|
|
92
|
+
// WU-1654: Read safe-git path from config instead of hardcoding
|
|
93
|
+
let safeGitPath;
|
|
94
|
+
try {
|
|
95
|
+
const resolved = getResolvedPaths({ projectRoot: projectDir });
|
|
96
|
+
safeGitPath = resolved.safeGitPath;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Graceful fallback if config can't be loaded
|
|
100
|
+
safeGitPath = path.join(projectDir, 'scripts', 'safe-git');
|
|
101
|
+
}
|
|
102
|
+
const relativePath = path.relative(projectDir, safeGitPath);
|
|
92
103
|
if (!fs.existsSync(safeGitPath)) {
|
|
93
104
|
return {
|
|
94
105
|
passed: false,
|
|
95
106
|
message: 'Safe-git wrapper missing',
|
|
96
|
-
details:
|
|
107
|
+
details: `The ${relativePath} file should exist to block destructive git commands`,
|
|
97
108
|
};
|
|
98
109
|
}
|
|
99
110
|
return {
|
|
100
111
|
passed: true,
|
|
101
|
-
message:
|
|
112
|
+
message: `Safe-git wrapper present (${relativePath})`,
|
|
102
113
|
};
|
|
103
114
|
}
|
|
104
115
|
/**
|
|
@@ -351,44 +362,10 @@ async function checkManagedFilesDirty(projectDir) {
|
|
|
351
362
|
};
|
|
352
363
|
}
|
|
353
364
|
}
|
|
354
|
-
function parseWorktreePruneOutput(output) {
|
|
355
|
-
// Parse summary line for orphan directories: "Orphan directories: N"
|
|
356
|
-
const orphanSummaryMatch = output.match(/Orphan directories:\s*(\d+)/);
|
|
357
|
-
const orphansFromSummary = orphanSummaryMatch ? parseInt(orphanSummaryMatch[1], 10) : 0;
|
|
358
|
-
// Also count "orphan director" mentions (the detailed output)
|
|
359
|
-
const orphanDetailMatches = output.match(/orphan director/gi) || [];
|
|
360
|
-
const orphansFromDetail = orphanDetailMatches.length;
|
|
361
|
-
// Use the higher count (summary is authoritative, but detail catches other mentions)
|
|
362
|
-
const orphans = Math.max(orphansFromSummary, orphansFromDetail > 0 ? 1 : 0);
|
|
363
|
-
// Parse specific worktree warnings from wu:prune output
|
|
364
|
-
// These appear as "Stale worktree:", "Blocked worktree:", "Unclaimed worktree:"
|
|
365
|
-
const staleCount = (output.match(/Stale worktree:/gi) || []).length;
|
|
366
|
-
const blockedCount = (output.match(/Blocked worktree:/gi) || []).length;
|
|
367
|
-
const unclaimedCount = (output.match(/Unclaimed worktree:/gi) || []).length;
|
|
368
|
-
// Parse missing tracked worktrees: "Missing tracked worktree" header
|
|
369
|
-
const missingMatch = output.match(/Missing tracked worktree/gi) || [];
|
|
370
|
-
const missingCount = missingMatch.length > 0 ? 1 : 0; // At least one if header present
|
|
371
|
-
// Also count specific missing path lines
|
|
372
|
-
const missingPathMatches = output.match(/worktrees \(tracked by git but directory missing\)/gi);
|
|
373
|
-
const missingFromDetail = missingPathMatches ? missingPathMatches.length : 0;
|
|
374
|
-
// Parse summary warnings and errors
|
|
375
|
-
const warningSummaryMatch = output.match(/Warnings:\s*(\d+)/);
|
|
376
|
-
const warnings = warningSummaryMatch ? parseInt(warningSummaryMatch[1], 10) : 0;
|
|
377
|
-
const errorSummaryMatch = output.match(/Errors:\s*(\d+)/);
|
|
378
|
-
const errors = errorSummaryMatch ? parseInt(errorSummaryMatch[1], 10) : 0;
|
|
379
|
-
return {
|
|
380
|
-
orphans,
|
|
381
|
-
stale: staleCount,
|
|
382
|
-
blocked: blockedCount,
|
|
383
|
-
unclaimed: unclaimedCount,
|
|
384
|
-
missing: Math.max(missingCount, missingFromDetail),
|
|
385
|
-
warnings,
|
|
386
|
-
errors,
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
365
|
/**
|
|
390
|
-
* WU-
|
|
391
|
-
*
|
|
366
|
+
* WU-1654: Check worktree sanity using @lumenflow/core orphan-detector directly.
|
|
367
|
+
* Replaces the previous approach of shelling out to wu:prune and parsing text with regexes.
|
|
368
|
+
* Library-first: uses structured detectOrphanWorktrees() and detectMissingTrackedWorktrees().
|
|
392
369
|
*/
|
|
393
370
|
async function checkWorktreeSanity(projectDir) {
|
|
394
371
|
try {
|
|
@@ -399,70 +376,30 @@ async function checkWorktreeSanity(projectDir) {
|
|
|
399
376
|
encoding: 'utf-8',
|
|
400
377
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
401
378
|
});
|
|
402
|
-
//
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
412
|
-
timeout: 30000, // 30 second timeout
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
catch (e) {
|
|
416
|
-
const execError = e;
|
|
417
|
-
pruneOutput = (execError.stdout || '') + (execError.stderr || '');
|
|
418
|
-
// Check if this is a "command not found" type error vs wu:prune finding issues
|
|
419
|
-
// If pnpm can't run the script (no package.json, script not defined, etc.), gracefully skip
|
|
420
|
-
const errorMsg = execError.message || pruneOutput || '';
|
|
421
|
-
if (errorMsg.includes('ERR_PNPM') ||
|
|
422
|
-
errorMsg.includes('ENOENT') ||
|
|
423
|
-
errorMsg.includes('Missing script') ||
|
|
424
|
-
errorMsg.includes('command not found') ||
|
|
425
|
-
!pruneOutput.includes('[wu-prune]')) {
|
|
426
|
-
// Command couldn't run - gracefully skip
|
|
427
|
-
return {
|
|
428
|
-
passed: true,
|
|
429
|
-
orphans: 0,
|
|
430
|
-
stale: 0,
|
|
431
|
-
message: 'Worktree check skipped (wu:prune not available)',
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
// Otherwise, wu:prune ran but found issues (non-zero exit)
|
|
435
|
-
commandFailed = true;
|
|
436
|
-
}
|
|
437
|
-
// WU-1387: Enhanced parsing for all worktree issue types
|
|
438
|
-
const parsed = parseWorktreePruneOutput(pruneOutput);
|
|
439
|
-
// Calculate total issues (orphans count as issues, plus stale, blocked, unclaimed, missing)
|
|
440
|
-
const totalIssues = parsed.orphans + parsed.stale + parsed.blocked + parsed.unclaimed + parsed.missing;
|
|
441
|
-
const hasIssues = totalIssues > 0 || parsed.warnings > 0 || parsed.errors > 0;
|
|
442
|
-
const passed = !hasIssues && !commandFailed;
|
|
443
|
-
// Build descriptive message
|
|
379
|
+
// WU-1654: Call orphan-detector functions directly instead of shelling out to wu:prune
|
|
380
|
+
const orphanResult = await detectOrphanWorktrees(projectDir);
|
|
381
|
+
const missingTracked = await detectMissingTrackedWorktrees(projectDir);
|
|
382
|
+
const orphanCount = orphanResult.orphans.length;
|
|
383
|
+
const missingCount = missingTracked.length;
|
|
384
|
+
const errorCount = orphanResult.errors.length;
|
|
385
|
+
const totalIssues = orphanCount + missingCount + errorCount;
|
|
386
|
+
const passed = totalIssues === 0;
|
|
387
|
+
// Build descriptive message preserving WorktreeSanityResult contract
|
|
444
388
|
let message = 'All worktrees are valid';
|
|
445
389
|
if (!passed) {
|
|
446
390
|
const parts = [];
|
|
447
|
-
if (
|
|
448
|
-
parts.push(`${
|
|
449
|
-
if (
|
|
450
|
-
parts.push(`${
|
|
451
|
-
if (
|
|
452
|
-
parts.push(`${
|
|
453
|
-
|
|
454
|
-
parts.push(`${parsed.blocked} blocked`);
|
|
455
|
-
if (parsed.unclaimed > 0)
|
|
456
|
-
parts.push(`${parsed.unclaimed} unclaimed`);
|
|
457
|
-
if (parts.length === 0 && (parsed.warnings > 0 || parsed.errors > 0)) {
|
|
458
|
-
parts.push(`${parsed.warnings} warning(s), ${parsed.errors} error(s)`);
|
|
459
|
-
}
|
|
460
|
-
message = parts.length > 0 ? `Worktree issues: ${parts.join(', ')}` : 'Worktree issues found';
|
|
391
|
+
if (orphanCount > 0)
|
|
392
|
+
parts.push(`${orphanCount} orphan(s)`);
|
|
393
|
+
if (missingCount > 0)
|
|
394
|
+
parts.push(`${missingCount} missing`);
|
|
395
|
+
if (errorCount > 0)
|
|
396
|
+
parts.push(`${errorCount} error(s)`);
|
|
397
|
+
message = `Worktree issues: ${parts.join(', ')}`;
|
|
461
398
|
}
|
|
462
399
|
return {
|
|
463
400
|
passed,
|
|
464
|
-
orphans:
|
|
465
|
-
stale:
|
|
401
|
+
orphans: orphanCount,
|
|
402
|
+
stale: missingCount, // Combined non-orphan issues for API compat
|
|
466
403
|
message,
|
|
467
404
|
};
|
|
468
405
|
}
|