@context-forge/cli 0.6.20 → 0.6.22

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 (38) hide show
  1. package/dist/commands/arch.d.ts +6 -2
  2. package/dist/commands/arch.d.ts.map +1 -1
  3. package/dist/commands/arch.js +76 -91
  4. package/dist/commands/arch.js.map +1 -1
  5. package/dist/commands/build.d.ts +6 -0
  6. package/dist/commands/build.d.ts.map +1 -1
  7. package/dist/commands/build.js +31 -0
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +18 -17
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/list.d.ts +3 -0
  13. package/dist/commands/list.d.ts.map +1 -0
  14. package/dist/commands/list.js +106 -0
  15. package/dist/commands/list.js.map +1 -0
  16. package/dist/commands/plan.d.ts +6 -2
  17. package/dist/commands/plan.d.ts.map +1 -1
  18. package/dist/commands/plan.js +86 -101
  19. package/dist/commands/plan.js.map +1 -1
  20. package/dist/commands/project.d.ts +4 -0
  21. package/dist/commands/project.d.ts.map +1 -1
  22. package/dist/commands/project.js +37 -33
  23. package/dist/commands/project.js.map +1 -1
  24. package/dist/commands/slice.d.ts +5 -2
  25. package/dist/commands/slice.d.ts.map +1 -1
  26. package/dist/commands/slice.js +80 -94
  27. package/dist/commands/slice.js.map +1 -1
  28. package/dist/commands/task.d.ts +11 -2
  29. package/dist/commands/task.d.ts.map +1 -1
  30. package/dist/commands/task.js +39 -63
  31. package/dist/commands/task.js.map +1 -1
  32. package/dist/commands/workflow.d.ts +3 -0
  33. package/dist/commands/workflow.d.ts.map +1 -0
  34. package/dist/commands/workflow.js +185 -0
  35. package/dist/commands/workflow.js.map +1 -0
  36. package/dist/index.js +7 -9
  37. package/dist/index.js.map +1 -1
  38. package/package.json +2 -2
@@ -4,106 +4,92 @@ import { extractSliceIndex } from '@context-forge/core/node';
4
4
  import { resolveProjectWorktree } from '../utils/project.js';
5
5
  import { resolveProject } from '@context-forge/core';
6
6
  import { resolveOperationPath, getWorktreeIndexRange, isInIndexRange } from '../utils/worktree-overlay.js';
7
- import { handleError, UserError } from '../utils/errors.js';
7
+ import { UserError } from '../utils/errors.js';
8
8
  import { printJson } from '../output/formatter.js';
9
9
  import { renderTable } from '../output/tables.js';
10
10
  import { label, success, dim } from '../output/styles.js';
11
- export function registerSliceCommand(program) {
12
- const cmd = program
13
- .command('slice')
14
- .description('Manage slices');
15
- cmd
16
- .command('list')
17
- .description('List slices from the active slice plan')
18
- .option('--json', 'Output as JSON')
19
- .option('--project <name|id>', 'Project name or ID (overrides default)')
20
- .action(async (opts) => {
11
+ /** Shared action handler for listing slices from the active slice plan. */
12
+ export async function sliceListAction(opts) {
13
+ const store = new FileProjectStore();
14
+ const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
15
+ const rawProject = await store.getById(id);
16
+ if (!rawProject) {
17
+ throw new UserError(`Project not found: '${id}'.`);
18
+ }
19
+ const project = await resolveProject(store, id, worktreeId);
20
+ if (!project) {
21
+ throw new UserError(`Project not found: '${id}'.`);
22
+ }
23
+ if (!project.fileSlicePlan) {
24
+ throw new UserError('No slice plan configured. Set one with: cf set slicePlan <path>');
25
+ }
26
+ if (!project.projectPath) {
27
+ throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
28
+ }
29
+ const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
30
+ const indexRange = getWorktreeIndexRange(rawProject, worktreeId);
31
+ const planRelPath = resolveArtifactPath('fileSlicePlan', project.fileSlicePlan);
32
+ if (!planRelPath) {
33
+ throw new UserError('Could not resolve slice plan path.');
34
+ }
35
+ const planPath = join(operationPath, planRelPath);
36
+ const introspector = new ArtifactIntrospector();
37
+ const planResult = await introspector.parseSlicePlan(planPath);
38
+ // Determine active slice index
39
+ const activeIndex = extractSliceIndex(project.fileSlice);
40
+ // Filter entries by worktree index range
41
+ const filteredEntries = planResult.entries.filter((e) => isInIndexRange(e.index, indexRange));
42
+ // Check for design files per entry
43
+ const entries = await Promise.all(filteredEntries.map(async (entry) => {
44
+ let designFile = null;
21
45
  try {
22
- const store = new FileProjectStore();
23
- const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
24
- const rawProject = await store.getById(id);
25
- if (!rawProject) {
26
- throw new UserError(`Project not found: '${id}'.`);
27
- }
28
- const project = await resolveProject(store, id, worktreeId);
29
- if (!project) {
30
- throw new UserError(`Project not found: '${id}'.`);
31
- }
32
- if (!project.fileSlicePlan) {
33
- throw new UserError('No slice plan configured. Set one with: cf set slicePlan <path>');
34
- }
35
- if (!project.projectPath) {
36
- throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
37
- }
38
- const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
39
- const indexRange = getWorktreeIndexRange(rawProject, worktreeId);
40
- const planRelPath = resolveArtifactPath('fileSlicePlan', project.fileSlicePlan);
41
- if (!planRelPath) {
42
- throw new UserError('Could not resolve slice plan path.');
43
- }
44
- const planPath = join(operationPath, planRelPath);
45
- const introspector = new ArtifactIntrospector();
46
- const planResult = await introspector.parseSlicePlan(planPath);
47
- // Determine active slice index
48
- const activeIndex = extractSliceIndex(project.fileSlice);
49
- // Filter entries by worktree index range
50
- const filteredEntries = planResult.entries.filter((e) => isInIndexRange(e.index, indexRange));
51
- // Check for design files per entry
52
- const entries = await Promise.all(filteredEntries.map(async (entry) => {
53
- let designFile = null;
54
- try {
55
- const docs = await introspector.detectDocuments(operationPath, entry.index);
56
- designFile = docs.sliceDesign;
57
- }
58
- catch {
59
- // skip
60
- }
61
- const isActive = activeIndex !== null && entry.index === activeIndex;
62
- const isNext = !isActive && !entry.isChecked && activeIndex === null;
63
- return { ...entry, designFile, isActive, isNext };
64
- }));
65
- // Mark first unchecked as next if no active match
66
- if (!entries.some((e) => e.isActive)) {
67
- const firstUnchecked = entries.find((e) => !e.isChecked);
68
- if (firstUnchecked) {
69
- firstUnchecked.isNext = true;
70
- }
71
- }
72
- if (opts.json) {
73
- const planName = project.fileSlicePlan.split('/').pop() ?? project.fileSlicePlan;
74
- printJson({
75
- slicePlan: planName,
76
- total: planResult.totalSlices,
77
- completed: planResult.completedSlices,
78
- entries: entries.map((e) => ({
79
- index: e.index,
80
- name: e.name,
81
- isChecked: e.isChecked,
82
- designFile: e.designFile,
83
- isActive: e.isActive,
84
- isNext: e.isNext,
85
- })),
86
- });
87
- return;
88
- }
89
- // Render table
90
- const planName = project.fileSlicePlan.split('/').pop() ?? project.fileSlicePlan;
91
- console.log(label(`\nSlice Plan: ${planName}`));
92
- const rows = entries.map((e) => {
93
- const status = e.isChecked
94
- ? success('✓ complete')
95
- : dim('○ not started');
96
- const file = e.designFile
97
- ? dim(e.designFile.split('/').pop() ?? e.designFile)
98
- : dim('—');
99
- const indicator = e.isActive ? success(' ← active') : e.isNext ? dim(' ← next') : '';
100
- return [String(e.index), e.name, status, file + indicator];
101
- });
102
- console.log(renderTable(['#', 'Slice', 'Status', 'File'], rows));
46
+ const docs = await introspector.detectDocuments(operationPath, entry.index);
47
+ designFile = docs.sliceDesign;
103
48
  }
104
- catch (err) {
105
- handleError(err);
49
+ catch {
50
+ // skip
106
51
  }
52
+ const isActive = activeIndex !== null && entry.index === activeIndex;
53
+ const isNext = !isActive && !entry.isChecked && activeIndex === null;
54
+ return { ...entry, designFile, isActive, isNext };
55
+ }));
56
+ // Mark first unchecked as next if no active match
57
+ if (!entries.some((e) => e.isActive)) {
58
+ const firstUnchecked = entries.find((e) => !e.isChecked);
59
+ if (firstUnchecked) {
60
+ firstUnchecked.isNext = true;
61
+ }
62
+ }
63
+ if (opts.json) {
64
+ const planName = project.fileSlicePlan.split('/').pop() ?? project.fileSlicePlan;
65
+ printJson({
66
+ slicePlan: planName,
67
+ total: planResult.totalSlices,
68
+ completed: planResult.completedSlices,
69
+ entries: entries.map((e) => ({
70
+ index: e.index,
71
+ name: e.name,
72
+ isChecked: e.isChecked,
73
+ designFile: e.designFile,
74
+ isActive: e.isActive,
75
+ isNext: e.isNext,
76
+ })),
77
+ });
78
+ return;
79
+ }
80
+ // Render table
81
+ const planName = project.fileSlicePlan.split('/').pop() ?? project.fileSlicePlan;
82
+ console.log(label(`\nSlice Plan: ${planName}`));
83
+ const rows = entries.map((e) => {
84
+ const status = e.isChecked
85
+ ? success('✓ complete')
86
+ : dim('○ not started');
87
+ const file = e.designFile
88
+ ? dim(e.designFile.split('/').pop() ?? e.designFile)
89
+ : dim('—');
90
+ const indicator = e.isActive ? success(' ← active') : e.isNext ? dim(' ← next') : '';
91
+ return [String(e.index), e.name, status, file + indicator];
107
92
  });
93
+ console.log(renderTable(['#', 'Slice', 'Status', 'File'], rows));
108
94
  }
109
95
  //# sourceMappingURL=slice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
- import { Command } from 'commander';
2
- export declare function registerTaskCommand(program: Command): void;
1
+ /** Shared action handler for listing task files. */
2
+ export declare function taskListAction(opts: {
3
+ json?: boolean;
4
+ all?: boolean;
5
+ project?: string;
6
+ }): Promise<void>;
7
+ /** Shared action handler for listing task items from the active task file. */
8
+ export declare function taskItemsAction(opts: {
9
+ json?: boolean;
10
+ project?: string;
11
+ }): Promise<void>;
3
12
  //# sourceMappingURL=task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwE1D"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAgBA,oDAAoD;AACpD,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7G;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/F"}
@@ -4,71 +4,47 @@ import { FileProjectStore, resolveArtifactPath, extractSliceIndex, parseSlicePla
4
4
  import { resolveProjectWorktree } from '../utils/project.js';
5
5
  import { resolveProject } from '@context-forge/core';
6
6
  import { resolveOperationPath, getWorktreeIndexRange, isInIndexRange, resolveAllOperationPaths } from '../utils/worktree-overlay.js';
7
- import { handleError, UserError } from '../utils/errors.js';
7
+ import { UserError } from '../utils/errors.js';
8
8
  import { printJson } from '../output/formatter.js';
9
9
  import { label, success, dim } from '../output/styles.js';
10
- export function registerTaskCommand(program) {
11
- const cmd = program
12
- .command('tasks')
13
- .description('Manage tasks');
14
- cmd
15
- .command('list')
16
- .description('List task files from the slice plan')
17
- .option('--json', 'Output as JSON')
18
- .option('--all', 'Show task files from all worktrees')
19
- .option('--project <name|id>', 'Project name or ID (overrides default)')
20
- .action(async (opts) => {
21
- try {
22
- const store = new FileProjectStore();
23
- const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
24
- const rawProject = await store.getById(id);
25
- if (!rawProject) {
26
- throw new UserError(`Project not found: '${id}'.`);
27
- }
28
- const project = await resolveProject(store, id, worktreeId);
29
- if (!project) {
30
- throw new UserError(`Project not found: '${id}'.`);
31
- }
32
- if (!project.projectPath) {
33
- throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
34
- }
35
- if (opts.all && rawProject.worktrees?.length) {
36
- const paths = resolveAllOperationPaths(rawProject);
37
- await listTaskFiles(project, paths, undefined, opts.json);
38
- }
39
- else {
40
- const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
41
- const indexRange = getWorktreeIndexRange(rawProject, worktreeId);
42
- await listTaskFiles(project, [operationPath], indexRange, opts.json);
43
- }
44
- }
45
- catch (err) {
46
- handleError(err);
47
- }
48
- });
49
- cmd
50
- .command('items')
51
- .description('Show individual task items from the active task file')
52
- .option('--json', 'Output as JSON')
53
- .option('--project <name|id>', 'Project name or ID (overrides default)')
54
- .action(async (opts) => {
55
- try {
56
- const store = new FileProjectStore();
57
- const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
58
- const project = await resolveProject(store, id, worktreeId);
59
- if (!project) {
60
- throw new UserError(`Project not found: '${id}'.`);
61
- }
62
- if (!project.projectPath) {
63
- throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
64
- }
65
- const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
66
- await listTaskItems(project, operationPath, opts.json);
67
- }
68
- catch (err) {
69
- handleError(err);
70
- }
71
- });
10
+ /** Shared action handler for listing task files. */
11
+ export async function taskListAction(opts) {
12
+ const store = new FileProjectStore();
13
+ const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
14
+ const rawProject = await store.getById(id);
15
+ if (!rawProject) {
16
+ throw new UserError(`Project not found: '${id}'.`);
17
+ }
18
+ const project = await resolveProject(store, id, worktreeId);
19
+ if (!project) {
20
+ throw new UserError(`Project not found: '${id}'.`);
21
+ }
22
+ if (!project.projectPath) {
23
+ throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
24
+ }
25
+ if (opts.all && rawProject.worktrees?.length) {
26
+ const paths = resolveAllOperationPaths(rawProject);
27
+ await listTaskFiles(project, paths, undefined, opts.json);
28
+ }
29
+ else {
30
+ const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
31
+ const indexRange = getWorktreeIndexRange(rawProject, worktreeId);
32
+ await listTaskFiles(project, [operationPath], indexRange, opts.json);
33
+ }
34
+ }
35
+ /** Shared action handler for listing task items from the active task file. */
36
+ export async function taskItemsAction(opts) {
37
+ const store = new FileProjectStore();
38
+ const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
39
+ const project = await resolveProject(store, id, worktreeId);
40
+ if (!project) {
41
+ throw new UserError(`Project not found: '${id}'.`);
42
+ }
43
+ if (!project.projectPath) {
44
+ throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
45
+ }
46
+ const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
47
+ await listTaskItems(project, operationPath, opts.json);
72
48
  }
73
49
  async function listTaskItems(project, operationPath, json) {
74
50
  if (!project.fileTasks) {
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWorkflowCommands(program: Command): void;
3
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgI/D"}
@@ -0,0 +1,185 @@
1
+ import { FileProjectStore, detectDocuments, checkFileExists } from '@context-forge/core/node';
2
+ import { resolveProject } from '@context-forge/core';
3
+ import { projectSetAction } from './project.js';
4
+ import { buildAndPrint } from './build.js';
5
+ import { resolveProjectWorktree } from '../utils/project.js';
6
+ import { resolveOperationPath } from '../utils/worktree-overlay.js';
7
+ import { handleError } from '../utils/errors.js';
8
+ import { warn } from '../output/styles.js';
9
+ /** Warn to stderr if an artifact already exists for the given index. */
10
+ async function warnIfArtifactExists(projectPath, index, field, label) {
11
+ try {
12
+ const docs = await detectDocuments(projectPath, index);
13
+ const value = docs[field];
14
+ const exists = Array.isArray(value) ? value.length > 0 : value !== null;
15
+ if (exists) {
16
+ process.stderr.write(warn(`${label} already exists for index ${index}. Building prompt anyway.\n`));
17
+ }
18
+ }
19
+ catch {
20
+ // Detection failure is not fatal
21
+ }
22
+ }
23
+ /** Warn to stderr if the concept document already exists. */
24
+ async function warnIfConceptExists(opts) {
25
+ try {
26
+ const store = new FileProjectStore();
27
+ const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
28
+ const project = await resolveProject(store, id, worktreeId);
29
+ if (!project?.projectPath || !project.fileConcept)
30
+ return;
31
+ const opPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
32
+ const exists = await checkFileExists(opPath, project.fileConcept);
33
+ if (exists) {
34
+ process.stderr.write(warn('Concept document already exists. Building concept prompt anyway.\n'));
35
+ }
36
+ }
37
+ catch {
38
+ // Detection failure is not fatal
39
+ }
40
+ }
41
+ /** Resolve the operation path for artifact detection. */
42
+ async function getOperationPath(opts) {
43
+ try {
44
+ const store = new FileProjectStore();
45
+ const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
46
+ const project = await resolveProject(store, id, worktreeId);
47
+ if (!project?.projectPath)
48
+ return undefined;
49
+ return resolveOperationPath(project, worktreeId) ?? project.projectPath;
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ }
55
+ export function registerWorkflowCommands(program) {
56
+ // cf concept
57
+ program
58
+ .command('concept')
59
+ .description('Set phase to Concept and build prompt')
60
+ .option('--project <name|id>', 'Project name or ID')
61
+ .option('--project-level', 'Force project-level field updates')
62
+ .action(async (opts) => {
63
+ try {
64
+ await warnIfConceptExists(opts);
65
+ await projectSetAction('developmentPhase', 'Phase 0: Concept', opts);
66
+ await buildAndPrint(opts);
67
+ }
68
+ catch (err) {
69
+ handleError(err);
70
+ }
71
+ });
72
+ // cf initiatives
73
+ program
74
+ .command('initiatives')
75
+ .description('Set phase to Initiative Plan and build prompt')
76
+ .option('--project <name|id>', 'Project name or ID')
77
+ .option('--project-level', 'Force project-level field updates')
78
+ .action(async (opts) => {
79
+ try {
80
+ await projectSetAction('developmentPhase', 'Phase 1: Initiative Plan', opts);
81
+ await buildAndPrint(opts);
82
+ }
83
+ catch (err) {
84
+ handleError(err);
85
+ }
86
+ });
87
+ // cf arch <index>
88
+ program
89
+ .command('arch <index>')
90
+ .description('Set architecture initiative and build prompt')
91
+ .option('--project <name|id>', 'Project name or ID')
92
+ .option('--project-level', 'Force project-level field updates')
93
+ .action(async (index, opts) => {
94
+ try {
95
+ await projectSetAction('fileArch', index, opts);
96
+ await projectSetAction('developmentPhase', 'Phase 2: Architecture', opts);
97
+ const opPath = await getOperationPath(opts);
98
+ if (opPath) {
99
+ await warnIfArtifactExists(opPath, parseInt(index, 10), 'architecture', 'Architecture document');
100
+ }
101
+ await buildAndPrint(opts);
102
+ }
103
+ catch (err) {
104
+ handleError(err);
105
+ }
106
+ });
107
+ // cf plan <index>
108
+ program
109
+ .command('plan <index>')
110
+ .description('Set slice plan and build prompt')
111
+ .option('--project <name|id>', 'Project name or ID')
112
+ .option('--project-level', 'Force project-level field updates')
113
+ .action(async (index, opts) => {
114
+ try {
115
+ await projectSetAction('fileSlicePlan', index, opts);
116
+ await projectSetAction('developmentPhase', 'Phase 3: Slice Planning', opts);
117
+ const opPath = await getOperationPath(opts);
118
+ if (opPath) {
119
+ await warnIfArtifactExists(opPath, parseInt(index, 10), 'slicePlan', 'Slice plan');
120
+ }
121
+ await buildAndPrint(opts);
122
+ }
123
+ catch (err) {
124
+ handleError(err);
125
+ }
126
+ });
127
+ // cf slice <index>
128
+ program
129
+ .command('slice <index>')
130
+ .description('Set active slice and build prompt')
131
+ .option('--project <name|id>', 'Project name or ID')
132
+ .option('--project-level', 'Force project-level field updates')
133
+ .action(async (index, opts) => {
134
+ try {
135
+ await projectSetAction('fileSlice', index, opts);
136
+ await projectSetAction('developmentPhase', 'Phase 4: Slice Design', opts);
137
+ const opPath = await getOperationPath(opts);
138
+ if (opPath) {
139
+ await warnIfArtifactExists(opPath, parseInt(index, 10), 'sliceDesign', 'Slice design');
140
+ }
141
+ await buildAndPrint(opts);
142
+ }
143
+ catch (err) {
144
+ handleError(err);
145
+ }
146
+ });
147
+ // cf tasks <index>
148
+ program
149
+ .command('tasks <index>')
150
+ .description('Set active task file and build prompt')
151
+ .option('--project <name|id>', 'Project name or ID')
152
+ .option('--project-level', 'Force project-level field updates')
153
+ .action(async (index, opts) => {
154
+ try {
155
+ await projectSetAction('fileTasks', index, opts);
156
+ await projectSetAction('developmentPhase', 'Phase 5: Task Breakdown', opts);
157
+ const opPath = await getOperationPath(opts);
158
+ if (opPath) {
159
+ await warnIfArtifactExists(opPath, parseInt(index, 10), 'taskFile', 'Task file');
160
+ }
161
+ await buildAndPrint(opts);
162
+ }
163
+ catch (err) {
164
+ handleError(err);
165
+ }
166
+ });
167
+ // cf implement <index>
168
+ program
169
+ .command('implement <index>')
170
+ .description('Set active slice for implementation and build prompt')
171
+ .option('--project <name|id>', 'Project name or ID')
172
+ .option('--project-level', 'Force project-level field updates')
173
+ .action(async (index, opts) => {
174
+ try {
175
+ await projectSetAction('fileSlice', index, opts);
176
+ await projectSetAction('developmentPhase', 'Phase 6: Implementation', opts);
177
+ // No artifact warning for implement — implementation is always continuation
178
+ await buildAndPrint(opts);
179
+ }
180
+ catch (err) {
181
+ handleError(err);
182
+ }
183
+ });
184
+ }
185
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,10 +9,8 @@ import { registerNextCommand } from './commands/next.js';
9
9
  import { registerProjectCommand, projectSetAction, projectGetAction, projectUnsetAction, buildSettableFieldsHelp } from './commands/project.js';
10
10
  import { registerPromptCommand } from './commands/prompt.js';
11
11
  import { registerStatusCommand } from './commands/status.js';
12
- import { registerArchCommand } from './commands/arch.js';
13
- import { registerPlanCommand } from './commands/plan.js';
14
- import { registerSliceCommand } from './commands/slice.js';
15
- import { registerTaskCommand } from './commands/task.js';
12
+ import { registerListCommand } from './commands/list.js';
13
+ import { registerWorkflowCommands } from './commands/workflow.js';
16
14
  import { registerWorktreeCommand } from './commands/worktree.js';
17
15
  import { registerBackupCommand } from './commands/backup.js';
18
16
  import { registerConfigCommand } from './commands/config.js';
@@ -98,11 +96,11 @@ program
98
96
  handleError(err);
99
97
  }
100
98
  });
101
- // Artifact commands
102
- registerArchCommand(program);
103
- registerPlanCommand(program);
104
- registerSliceCommand(program);
105
- registerTaskCommand(program);
99
+ // Compound workflow commands
100
+ registerWorkflowCommands(program);
101
+ // Artifact listing
102
+ registerListCommand(program);
103
+ // Worktree management
106
104
  registerWorktreeCommand(program);
107
105
  // Setup and administration
108
106
  registerBackupCommand(program);