@lumenflow/cli 2.20.1 → 2.21.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.
Files changed (111) hide show
  1. package/README.md +8 -4
  2. package/dist/hooks/enforcement-checks.js +120 -0
  3. package/dist/hooks/enforcement-checks.js.map +1 -1
  4. package/dist/init-lane-validation.js +141 -0
  5. package/dist/init-lane-validation.js.map +1 -0
  6. package/dist/init-templates.js +36 -8
  7. package/dist/init-templates.js.map +1 -1
  8. package/dist/init.js +27 -58
  9. package/dist/init.js.map +1 -1
  10. package/dist/initiative-create.js +35 -4
  11. package/dist/initiative-create.js.map +1 -1
  12. package/dist/lane-lifecycle-process.js +364 -0
  13. package/dist/lane-lifecycle-process.js.map +1 -0
  14. package/dist/lane-lock.js +41 -0
  15. package/dist/lane-lock.js.map +1 -0
  16. package/dist/lane-setup.js +55 -0
  17. package/dist/lane-setup.js.map +1 -0
  18. package/dist/lane-status.js +38 -0
  19. package/dist/lane-status.js.map +1 -0
  20. package/dist/lane-validate.js +43 -0
  21. package/dist/lane-validate.js.map +1 -0
  22. package/dist/onboarding-smoke-test.js +17 -0
  23. package/dist/onboarding-smoke-test.js.map +1 -1
  24. package/dist/public-manifest.js +28 -0
  25. package/dist/public-manifest.js.map +1 -1
  26. package/dist/wu-claim-cloud.js +16 -0
  27. package/dist/wu-claim-cloud.js.map +1 -1
  28. package/dist/wu-claim.js +12 -2
  29. package/dist/wu-claim.js.map +1 -1
  30. package/dist/wu-create-content.js +8 -2
  31. package/dist/wu-create-content.js.map +1 -1
  32. package/dist/wu-create-validation.js +5 -3
  33. package/dist/wu-create-validation.js.map +1 -1
  34. package/dist/wu-create.js +21 -1
  35. package/dist/wu-create.js.map +1 -1
  36. package/dist/wu-done.js +57 -8
  37. package/dist/wu-done.js.map +1 -1
  38. package/dist/wu-prep.js +22 -0
  39. package/dist/wu-prep.js.map +1 -1
  40. package/package.json +15 -11
  41. package/dist/__tests__/agent-log-issue.test.js +0 -56
  42. package/dist/__tests__/agent-spawn-coordination.test.js +0 -451
  43. package/dist/__tests__/backlog-prune.test.js +0 -478
  44. package/dist/__tests__/cli-entry-point.test.js +0 -160
  45. package/dist/__tests__/cli-subprocess.test.js +0 -89
  46. package/dist/__tests__/commands/integrate.test.js +0 -165
  47. package/dist/__tests__/commands.test.js +0 -271
  48. package/dist/__tests__/deps-operations.test.js +0 -206
  49. package/dist/__tests__/doctor.test.js +0 -510
  50. package/dist/__tests__/file-operations.test.js +0 -906
  51. package/dist/__tests__/flow-report.test.js +0 -24
  52. package/dist/__tests__/gates-config.test.js +0 -303
  53. package/dist/__tests__/gates-integration-tests.test.js +0 -112
  54. package/dist/__tests__/git-operations.test.js +0 -668
  55. package/dist/__tests__/guard-main-branch.test.js +0 -79
  56. package/dist/__tests__/guards-validation.test.js +0 -416
  57. package/dist/__tests__/hooks/enforcement.test.js +0 -279
  58. package/dist/__tests__/init-config-lanes.test.js +0 -131
  59. package/dist/__tests__/init-docs-structure.test.js +0 -152
  60. package/dist/__tests__/init-greenfield.test.js +0 -247
  61. package/dist/__tests__/init-lane-inference.test.js +0 -125
  62. package/dist/__tests__/init-onboarding-docs.test.js +0 -132
  63. package/dist/__tests__/init-quick-ref.test.js +0 -144
  64. package/dist/__tests__/init-scripts.test.js +0 -207
  65. package/dist/__tests__/init-template-portability.test.js +0 -96
  66. package/dist/__tests__/init.test.js +0 -968
  67. package/dist/__tests__/initiative-add-wu.test.js +0 -490
  68. package/dist/__tests__/initiative-e2e.test.js +0 -442
  69. package/dist/__tests__/initiative-plan-replacement.test.js +0 -161
  70. package/dist/__tests__/initiative-plan.test.js +0 -340
  71. package/dist/__tests__/initiative-remove-wu.test.js +0 -458
  72. package/dist/__tests__/lumenflow-upgrade.test.js +0 -260
  73. package/dist/__tests__/mem-cleanup-execution.test.js +0 -19
  74. package/dist/__tests__/memory-integration.test.js +0 -333
  75. package/dist/__tests__/merge-block.test.js +0 -220
  76. package/dist/__tests__/metrics-cli.test.js +0 -619
  77. package/dist/__tests__/metrics-snapshot.test.js +0 -24
  78. package/dist/__tests__/no-beacon-references-docs.test.js +0 -30
  79. package/dist/__tests__/no-beacon-references.test.js +0 -39
  80. package/dist/__tests__/onboarding-smoke-test.test.js +0 -211
  81. package/dist/__tests__/path-centralization-cli.test.js +0 -234
  82. package/dist/__tests__/plan-create.test.js +0 -126
  83. package/dist/__tests__/plan-edit.test.js +0 -157
  84. package/dist/__tests__/plan-link.test.js +0 -239
  85. package/dist/__tests__/plan-promote.test.js +0 -181
  86. package/dist/__tests__/release.test.js +0 -372
  87. package/dist/__tests__/rotate-progress.test.js +0 -127
  88. package/dist/__tests__/safe-git.test.js +0 -190
  89. package/dist/__tests__/session-coordinator.test.js +0 -109
  90. package/dist/__tests__/state-bootstrap.test.js +0 -432
  91. package/dist/__tests__/state-doctor.test.js +0 -328
  92. package/dist/__tests__/sync-templates.test.js +0 -255
  93. package/dist/__tests__/templates-sync.test.js +0 -219
  94. package/dist/__tests__/trace-gen.test.js +0 -115
  95. package/dist/__tests__/wu-create-required-fields.test.js +0 -143
  96. package/dist/__tests__/wu-create-strict.test.js +0 -118
  97. package/dist/__tests__/wu-create.test.js +0 -121
  98. package/dist/__tests__/wu-done-auto-cleanup.test.js +0 -135
  99. package/dist/__tests__/wu-done-docs-only-policy.test.js +0 -20
  100. package/dist/__tests__/wu-done-staging-whitelist.test.js +0 -35
  101. package/dist/__tests__/wu-done.test.js +0 -36
  102. package/dist/__tests__/wu-edit-strict.test.js +0 -109
  103. package/dist/__tests__/wu-edit.test.js +0 -119
  104. package/dist/__tests__/wu-lifecycle-integration.test.js +0 -388
  105. package/dist/__tests__/wu-prep-default-exec.test.js +0 -35
  106. package/dist/__tests__/wu-prep.test.js +0 -140
  107. package/dist/__tests__/wu-proto.test.js +0 -97
  108. package/dist/__tests__/wu-validate-strict.test.js +0 -113
  109. package/dist/__tests__/wu-validate.test.js +0 -36
  110. package/dist/spawn-list.js +0 -143
  111. package/dist/spawn-list.js.map +0 -1
@@ -1,206 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Tests for deps-add and deps-remove CLI commands
4
- *
5
- * WU-1112: INIT-003 Phase 6 - Migrate remaining Tier 1 tools
6
- *
7
- * These commands provide safe wrappers for pnpm add/remove that enforce
8
- * worktree discipline - dependencies can only be modified in worktrees,
9
- * not on the main checkout.
10
- */
11
- import { describe, it, expect, vi, beforeEach } from 'vitest';
12
- // Import functions under test
13
- import { parseDepsAddArgs, parseDepsRemoveArgs, validateWorktreeContext, buildPnpmAddCommand, buildPnpmRemoveCommand, } from '../deps-add.js';
14
- describe('deps-add', () => {
15
- beforeEach(() => {
16
- vi.clearAllMocks();
17
- });
18
- describe('parseDepsAddArgs', () => {
19
- it('should parse package name from positional argument', () => {
20
- const args = parseDepsAddArgs(['node', 'deps-add.js', 'react']);
21
- expect(args.packages).toEqual(['react']);
22
- });
23
- it('should parse multiple packages', () => {
24
- const args = parseDepsAddArgs(['node', 'deps-add.js', 'react', 'react-dom', 'typescript']);
25
- expect(args.packages).toEqual(['react', 'react-dom', 'typescript']);
26
- });
27
- it('should parse --dev flag', () => {
28
- const args = parseDepsAddArgs(['node', 'deps-add.js', 'vitest', '--dev']);
29
- expect(args.dev).toBe(true);
30
- expect(args.packages).toEqual(['vitest']);
31
- });
32
- it('should parse -D flag as dev dependency', () => {
33
- const args = parseDepsAddArgs(['node', 'deps-add.js', '-D', 'vitest']);
34
- expect(args.dev).toBe(true);
35
- expect(args.packages).toEqual(['vitest']);
36
- });
37
- it('should parse --filter flag', () => {
38
- const args = parseDepsAddArgs(['node', 'deps-add.js', '--filter', '@lumenflow/cli', 'chalk']);
39
- expect(args.filter).toBe('@lumenflow/cli');
40
- expect(args.packages).toEqual(['chalk']);
41
- });
42
- it('should parse --exact flag', () => {
43
- const args = parseDepsAddArgs(['node', 'deps-add.js', '--exact', 'react@18.2.0']);
44
- expect(args.exact).toBe(true);
45
- });
46
- it('should set help flag', () => {
47
- const args = parseDepsAddArgs(['node', 'deps-add.js', '--help']);
48
- expect(args.help).toBe(true);
49
- });
50
- it('should return empty packages array when no packages specified', () => {
51
- const args = parseDepsAddArgs(['node', 'deps-add.js']);
52
- expect(args.packages).toEqual([]);
53
- });
54
- });
55
- describe('validateWorktreeContext', () => {
56
- it('should return valid when cwd contains worktrees/', () => {
57
- const result = validateWorktreeContext('/home/user/project/worktrees/framework-cli-wu-1112');
58
- expect(result.valid).toBe(true);
59
- expect(result.error).toBeUndefined();
60
- });
61
- it('should return invalid when cwd is main checkout', () => {
62
- const result = validateWorktreeContext('/home/user/project');
63
- expect(result.valid).toBe(false);
64
- expect(result.error).toContain('main checkout');
65
- });
66
- it('should provide fix command when invalid', () => {
67
- const result = validateWorktreeContext('/home/user/project');
68
- expect(result.fixCommand).toBeDefined();
69
- expect(result.fixCommand).toContain('wu:claim');
70
- });
71
- });
72
- describe('buildPnpmAddCommand', () => {
73
- it('should build basic add command', () => {
74
- const args = { packages: ['react'] };
75
- const cmd = buildPnpmAddCommand(args);
76
- expect(cmd).toBe('pnpm add react');
77
- });
78
- it('should add --save-dev for dev dependencies', () => {
79
- const args = { packages: ['vitest'], dev: true };
80
- const cmd = buildPnpmAddCommand(args);
81
- expect(cmd).toBe('pnpm add --save-dev vitest');
82
- });
83
- it('should add --filter for workspace packages', () => {
84
- const args = { packages: ['chalk'], filter: '@lumenflow/cli' };
85
- const cmd = buildPnpmAddCommand(args);
86
- expect(cmd).toBe('pnpm add --filter @lumenflow/cli chalk');
87
- });
88
- it('should add --save-exact for exact versions', () => {
89
- const args = { packages: ['react@18.2.0'], exact: true };
90
- const cmd = buildPnpmAddCommand(args);
91
- expect(cmd).toBe('pnpm add --save-exact react@18.2.0');
92
- });
93
- it('should combine multiple flags', () => {
94
- const args = {
95
- packages: ['vitest'],
96
- dev: true,
97
- filter: '@lumenflow/cli',
98
- exact: true,
99
- };
100
- const cmd = buildPnpmAddCommand(args);
101
- expect(cmd).toContain('--save-dev');
102
- expect(cmd).toContain('--filter @lumenflow/cli');
103
- expect(cmd).toContain('--save-exact');
104
- expect(cmd).toContain('vitest');
105
- });
106
- it('should handle multiple packages', () => {
107
- const args = { packages: ['react', 'react-dom'] };
108
- const cmd = buildPnpmAddCommand(args);
109
- expect(cmd).toBe('pnpm add react react-dom');
110
- });
111
- });
112
- });
113
- describe('deps-remove', () => {
114
- beforeEach(() => {
115
- vi.clearAllMocks();
116
- });
117
- describe('parseDepsRemoveArgs', () => {
118
- it('should parse package name from positional argument', () => {
119
- const args = parseDepsRemoveArgs(['node', 'deps-remove.js', 'lodash']);
120
- expect(args.packages).toEqual(['lodash']);
121
- });
122
- it('should parse multiple packages', () => {
123
- const args = parseDepsRemoveArgs(['node', 'deps-remove.js', 'lodash', 'moment']);
124
- expect(args.packages).toEqual(['lodash', 'moment']);
125
- });
126
- it('should parse --filter flag', () => {
127
- const args = parseDepsRemoveArgs([
128
- 'node',
129
- 'deps-remove.js',
130
- '--filter',
131
- '@lumenflow/core',
132
- 'lodash',
133
- ]);
134
- expect(args.filter).toBe('@lumenflow/core');
135
- expect(args.packages).toEqual(['lodash']);
136
- });
137
- it('should set help flag', () => {
138
- const args = parseDepsRemoveArgs(['node', 'deps-remove.js', '--help']);
139
- expect(args.help).toBe(true);
140
- });
141
- });
142
- describe('buildPnpmRemoveCommand', () => {
143
- it('should build basic remove command', () => {
144
- const args = { packages: ['lodash'] };
145
- const cmd = buildPnpmRemoveCommand(args);
146
- expect(cmd).toBe('pnpm remove lodash');
147
- });
148
- it('should add --filter for workspace packages', () => {
149
- const args = { packages: ['lodash'], filter: '@lumenflow/core' };
150
- const cmd = buildPnpmRemoveCommand(args);
151
- expect(cmd).toBe('pnpm remove --filter @lumenflow/core lodash');
152
- });
153
- it('should handle multiple packages', () => {
154
- const args = { packages: ['lodash', 'moment'] };
155
- const cmd = buildPnpmRemoveCommand(args);
156
- expect(cmd).toBe('pnpm remove lodash moment');
157
- });
158
- it('should handle empty packages array', () => {
159
- const args = { packages: [] };
160
- const cmd = buildPnpmRemoveCommand(args);
161
- expect(cmd).toBe('pnpm remove');
162
- });
163
- });
164
- describe('parseDepsAddArgs edge cases', () => {
165
- it('should handle -h flag', () => {
166
- const args = parseDepsAddArgs(['node', 'deps-add.js', '-h']);
167
- expect(args.help).toBe(true);
168
- });
169
- it('should handle -E flag for exact', () => {
170
- const args = parseDepsAddArgs(['node', 'deps-add.js', '-E', 'react']);
171
- expect(args.exact).toBe(true);
172
- });
173
- it('should handle -F flag for filter', () => {
174
- const args = parseDepsAddArgs(['node', 'deps-add.js', '-F', '@lumenflow/cli', 'chalk']);
175
- expect(args.filter).toBe('@lumenflow/cli');
176
- });
177
- });
178
- describe('parseDepsRemoveArgs edge cases', () => {
179
- it('should handle -h flag', () => {
180
- const args = parseDepsRemoveArgs(['node', 'deps-remove.js', '-h']);
181
- expect(args.help).toBe(true);
182
- });
183
- it('should handle -F flag for filter', () => {
184
- const args = parseDepsRemoveArgs([
185
- 'node',
186
- 'deps-remove.js',
187
- '-F',
188
- '@lumenflow/cli',
189
- 'lodash',
190
- ]);
191
- expect(args.filter).toBe('@lumenflow/cli');
192
- });
193
- });
194
- describe('buildPnpmAddCommand edge cases', () => {
195
- it('should handle empty packages array', () => {
196
- const args = { packages: [] };
197
- const cmd = buildPnpmAddCommand(args);
198
- expect(cmd).toBe('pnpm add');
199
- });
200
- it('should handle undefined packages', () => {
201
- const args = {};
202
- const cmd = buildPnpmAddCommand(args);
203
- expect(cmd).toBe('pnpm add');
204
- });
205
- });
206
- });