@context-forge/cli 0.8.3 → 0.8.5
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/package.json +2 -2
- package/dist/commands/arch.d.ts +0 -7
- package/dist/commands/arch.d.ts.map +0 -1
- package/dist/commands/arch.js +0 -160
- package/dist/commands/arch.js.map +0 -1
- package/dist/commands/backup.d.ts +0 -3
- package/dist/commands/backup.d.ts.map +0 -1
- package/dist/commands/backup.js +0 -27
- package/dist/commands/backup.js.map +0 -1
- package/dist/commands/build.d.ts +0 -24
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/build.js +0 -146
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/check.d.ts +0 -3
- package/dist/commands/check.d.ts.map +0 -1
- package/dist/commands/check.js +0 -211
- package/dist/commands/check.js.map +0 -1
- package/dist/commands/commandInstaller.d.ts +0 -28
- package/dist/commands/commandInstaller.d.ts.map +0 -1
- package/dist/commands/commandInstaller.js +0 -136
- package/dist/commands/commandInstaller.js.map +0 -1
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -69
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/future.d.ts +0 -3
- package/dist/commands/future.d.ts.map +0 -1
- package/dist/commands/future.js +0 -96
- package/dist/commands/future.js.map +0 -1
- package/dist/commands/guides.d.ts +0 -9
- package/dist/commands/guides.d.ts.map +0 -1
- package/dist/commands/guides.js +0 -156
- package/dist/commands/guides.js.map +0 -1
- package/dist/commands/init.d.ts +0 -3
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -124
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts +0 -3
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -93
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/next.d.ts +0 -3
- package/dist/commands/next.d.ts.map +0 -1
- package/dist/commands/next.js +0 -51
- package/dist/commands/next.js.map +0 -1
- package/dist/commands/plan.d.ts +0 -7
- package/dist/commands/plan.d.ts.map +0 -1
- package/dist/commands/plan.js +0 -102
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/project.d.ts +0 -25
- package/dist/commands/project.d.ts.map +0 -1
- package/dist/commands/project.js +0 -550
- package/dist/commands/project.js.map +0 -1
- package/dist/commands/prompt.d.ts +0 -3
- package/dist/commands/prompt.d.ts.map +0 -1
- package/dist/commands/prompt.js +0 -112
- package/dist/commands/prompt.js.map +0 -1
- package/dist/commands/setup-ide.d.ts +0 -15
- package/dist/commands/setup-ide.d.ts.map +0 -1
- package/dist/commands/setup-ide.js +0 -250
- package/dist/commands/setup-ide.js.map +0 -1
- package/dist/commands/slice.d.ts +0 -6
- package/dist/commands/slice.d.ts.map +0 -1
- package/dist/commands/slice.js +0 -100
- package/dist/commands/slice.js.map +0 -1
- package/dist/commands/status.d.ts +0 -3
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -209
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/task.d.ts +0 -12
- package/dist/commands/task.d.ts.map +0 -1
- package/dist/commands/task.js +0 -185
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/update.d.ts +0 -27
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -172
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/workflow.d.ts +0 -3
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/workflow.js +0 -204
- package/dist/commands/workflow.js.map +0 -1
- package/dist/commands/worktree.d.ts +0 -3
- package/dist/commands/worktree.d.ts.map +0 -1
- package/dist/commands/worktree.js +0 -371
- package/dist/commands/worktree.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -167
- package/dist/index.js.map +0 -1
- package/dist/options.d.ts +0 -16
- package/dist/options.d.ts.map +0 -1
- package/dist/options.js +0 -29
- package/dist/options.js.map +0 -1
- package/dist/output/formatter.d.ts +0 -6
- package/dist/output/formatter.d.ts.map +0 -1
- package/dist/output/formatter.js +0 -9
- package/dist/output/formatter.js.map +0 -1
- package/dist/output/styles.d.ts +0 -15
- package/dist/output/styles.d.ts.map +0 -1
- package/dist/output/styles.js +0 -16
- package/dist/output/styles.js.map +0 -1
- package/dist/output/tables.d.ts +0 -6
- package/dist/output/tables.d.ts.map +0 -1
- package/dist/output/tables.js +0 -45
- package/dist/output/tables.js.map +0 -1
- package/dist/utils/breaking-changes.d.ts +0 -14
- package/dist/utils/breaking-changes.d.ts.map +0 -1
- package/dist/utils/breaking-changes.js +0 -11
- package/dist/utils/breaking-changes.js.map +0 -1
- package/dist/utils/commandCatalog.d.ts +0 -25
- package/dist/utils/commandCatalog.d.ts.map +0 -1
- package/dist/utils/commandCatalog.js +0 -32
- package/dist/utils/commandCatalog.js.map +0 -1
- package/dist/utils/confirm.d.ts +0 -3
- package/dist/utils/confirm.d.ts.map +0 -1
- package/dist/utils/confirm.js +0 -12
- package/dist/utils/confirm.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -22
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -63
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/phaseShorthand.d.ts +0 -23
- package/dist/utils/phaseShorthand.d.ts.map +0 -1
- package/dist/utils/phaseShorthand.js +0 -68
- package/dist/utils/phaseShorthand.js.map +0 -1
- package/dist/utils/project.d.ts +0 -60
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/project.js +0 -140
- package/dist/utils/project.js.map +0 -1
- package/dist/utils/worktree-overlay.d.ts +0 -31
- package/dist/utils/worktree-overlay.d.ts.map +0 -1
- package/dist/utils/worktree-overlay.js +0 -63
- package/dist/utils/worktree-overlay.js.map +0 -1
package/dist/commands/init.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import * as fs from 'node:fs';
|
|
2
|
-
import * as path from 'node:path';
|
|
3
|
-
import { execFileSync } from 'node:child_process';
|
|
4
|
-
import { FileProjectStore } from '@context-forge/core/node';
|
|
5
|
-
import { buildProjectCreationDefaults } from '@context-forge/core';
|
|
6
|
-
import { handleError } from '../utils/errors.js';
|
|
7
|
-
import { success, warn, dim } from '../output/styles.js';
|
|
8
|
-
import { guidesInstallAction } from './guides.js';
|
|
9
|
-
import { setupIdeAction } from './setup-ide.js';
|
|
10
|
-
import { installCommandsAction } from './commandInstaller.js';
|
|
11
|
-
/**
|
|
12
|
-
* Returns true if the cwd is a git worktree whose main worktree is already
|
|
13
|
-
* registered as a CF project.
|
|
14
|
-
*/
|
|
15
|
-
function isGitWorktreeOf(cwd, registeredPaths) {
|
|
16
|
-
try {
|
|
17
|
-
const output = execFileSync('git', ['worktree', 'list', '--porcelain'], {
|
|
18
|
-
cwd,
|
|
19
|
-
encoding: 'utf8',
|
|
20
|
-
});
|
|
21
|
-
const worktreePaths = [];
|
|
22
|
-
for (const line of output.split('\n')) {
|
|
23
|
-
if (line.startsWith('worktree ')) {
|
|
24
|
-
worktreePaths.push(line.slice('worktree '.length).trim());
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const mainWorktreePath = worktreePaths[0];
|
|
28
|
-
if (!mainWorktreePath)
|
|
29
|
-
return false;
|
|
30
|
-
return registeredPaths.includes(mainWorktreePath) && mainWorktreePath !== cwd;
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export function registerInitCommand(program) {
|
|
37
|
-
program
|
|
38
|
-
.command('init')
|
|
39
|
-
.description('Initialize a Context Forge project in the current directory')
|
|
40
|
-
.option('--name <name>', 'Project name (defaults to directory basename)')
|
|
41
|
-
.option('--lite', 'Create project entry only, skip guides/commands/IDE setup')
|
|
42
|
-
.option('--ide <target>', 'IDE target for setup (default: claude)')
|
|
43
|
-
.option('--no-ide', 'Skip IDE configuration step')
|
|
44
|
-
.action(async (opts) => {
|
|
45
|
-
try {
|
|
46
|
-
const cwd = path.resolve(process.cwd());
|
|
47
|
-
const store = new FileProjectStore();
|
|
48
|
-
const all = await store.getAll();
|
|
49
|
-
// Detection 1: No .git directory → git init
|
|
50
|
-
if (!fs.existsSync(path.join(cwd, '.git'))) {
|
|
51
|
-
try {
|
|
52
|
-
execFileSync('git', ['init'], { cwd, stdio: 'inherit' });
|
|
53
|
-
console.log(success('git initialized'));
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
console.log(warn('git init failed, continuing without git'));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Detection 2: CF project already registered at CWD — skip creation but continue setup
|
|
60
|
-
const existing = all.find((p) => p.projectPath === cwd);
|
|
61
|
-
if (existing) {
|
|
62
|
-
console.log(dim(`Project '${existing.name}' already registered — running setup steps`));
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
// Detection 3: Git worktree of a registered project
|
|
66
|
-
const registeredPaths = all
|
|
67
|
-
.filter((p) => p.projectPath)
|
|
68
|
-
.map((p) => p.projectPath);
|
|
69
|
-
if (isGitWorktreeOf(cwd, registeredPaths)) {
|
|
70
|
-
console.log(warn('This looks like a worktree. Run cf worktree init instead.'));
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
// Create project
|
|
74
|
-
const projectName = opts.name || path.basename(cwd);
|
|
75
|
-
await store.create(buildProjectCreationDefaults({
|
|
76
|
-
name: projectName,
|
|
77
|
-
projectPath: cwd,
|
|
78
|
-
}));
|
|
79
|
-
console.log(success(`Project '${projectName}' registered`));
|
|
80
|
-
}
|
|
81
|
-
if (!opts.lite) {
|
|
82
|
-
// Step 2: Install guides
|
|
83
|
-
try {
|
|
84
|
-
await guidesInstallAction(cwd);
|
|
85
|
-
console.log(success('Guides installed'));
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
const msg = err.message ?? '';
|
|
89
|
-
if (msg.toLowerCase().includes('already installed')) {
|
|
90
|
-
console.log(dim(' Guides already installed — skipping'));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
console.log(warn(`Guides install failed: ${msg}`));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// Step 3: Install commands
|
|
97
|
-
try {
|
|
98
|
-
installCommandsAction();
|
|
99
|
-
console.log(success('Commands installed'));
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
console.log(warn(`Commands install failed: ${err.message}`));
|
|
103
|
-
}
|
|
104
|
-
// Step 4: IDE setup (--no-ide sets opts.ide to false via commander negation)
|
|
105
|
-
if (opts.ide !== false) {
|
|
106
|
-
const ideTarget = typeof opts.ide === 'string' ? opts.ide : 'claude';
|
|
107
|
-
try {
|
|
108
|
-
await setupIdeAction(cwd, ideTarget, { yes: true });
|
|
109
|
-
console.log(success(`IDE configured for ${ideTarget}`));
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
console.log(warn(`IDE setup failed: ${err.message}`));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
console.log(dim('──────────────────────────────────────'));
|
|
117
|
-
console.log('Your project is ready. Run cf next to see recommended next steps.');
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
handleError(err);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF1D"}
|
package/dist/commands/list.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { projectListAction } from './project.js';
|
|
2
|
-
import { archListAction } from './arch.js';
|
|
3
|
-
import { planListAction } from './plan.js';
|
|
4
|
-
import { sliceListAction } from './slice.js';
|
|
5
|
-
import { taskListAction, taskItemsAction } from './task.js';
|
|
6
|
-
import { handleError } from '../utils/errors.js';
|
|
7
|
-
import { withJsonOption, withAllOption, withProjectOption } from '../options.js';
|
|
8
|
-
export function registerListCommand(program) {
|
|
9
|
-
const cmd = program
|
|
10
|
-
.command('list')
|
|
11
|
-
.description('List project artifacts');
|
|
12
|
-
const projectsCmd = cmd.command('projects').description('List all projects');
|
|
13
|
-
withJsonOption(projectsCmd);
|
|
14
|
-
projectsCmd.action(async (opts) => {
|
|
15
|
-
try {
|
|
16
|
-
await projectListAction(opts);
|
|
17
|
-
}
|
|
18
|
-
catch (err) {
|
|
19
|
-
handleError(err);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const initiativesCmd = cmd.command('initiatives').description('List architecture initiatives');
|
|
23
|
-
withJsonOption(initiativesCmd);
|
|
24
|
-
withAllOption(initiativesCmd);
|
|
25
|
-
withProjectOption(initiativesCmd);
|
|
26
|
-
initiativesCmd.action(async (opts) => {
|
|
27
|
-
try {
|
|
28
|
-
await archListAction(opts);
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
handleError(err);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
const archCmd = cmd.command('arch').description('Alias for "cf list initiatives"');
|
|
35
|
-
withJsonOption(archCmd);
|
|
36
|
-
withAllOption(archCmd);
|
|
37
|
-
withProjectOption(archCmd);
|
|
38
|
-
archCmd.action(async (opts) => {
|
|
39
|
-
try {
|
|
40
|
-
await archListAction(opts);
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
handleError(err);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
const plansCmd = cmd.command('plans').description('List slice plan files');
|
|
47
|
-
withJsonOption(plansCmd);
|
|
48
|
-
withAllOption(plansCmd);
|
|
49
|
-
withProjectOption(plansCmd);
|
|
50
|
-
plansCmd.action(async (opts) => {
|
|
51
|
-
try {
|
|
52
|
-
await planListAction(opts);
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
handleError(err);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
const slicesCmd = cmd.command('slices').description('List slices from active plan');
|
|
59
|
-
withJsonOption(slicesCmd);
|
|
60
|
-
withProjectOption(slicesCmd);
|
|
61
|
-
slicesCmd.action(async (opts) => {
|
|
62
|
-
try {
|
|
63
|
-
await sliceListAction(opts);
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
handleError(err);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
const tasksCmd = cmd.command('tasks').description('List task files from plan');
|
|
70
|
-
withJsonOption(tasksCmd);
|
|
71
|
-
withAllOption(tasksCmd);
|
|
72
|
-
withProjectOption(tasksCmd);
|
|
73
|
-
tasksCmd.action(async (opts) => {
|
|
74
|
-
try {
|
|
75
|
-
await taskListAction(opts);
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
handleError(err);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
const itemsCmd = cmd.command('items').description('Show items from active task file');
|
|
82
|
-
withJsonOption(itemsCmd);
|
|
83
|
-
withProjectOption(itemsCmd);
|
|
84
|
-
itemsCmd.action(async (opts) => {
|
|
85
|
-
try {
|
|
86
|
-
await taskItemsAction(opts);
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
handleError(err);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEjF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC7E,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAC/F,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/B,aAAa,CAAC,cAAc,CAAC,CAAC;IAC9B,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;QACxF,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IACnF,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;QACjF,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAC3E,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;QAClF,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;IACpF,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1B,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAA0C,EAAE,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAC/E,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;QAClF,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC;IACtF,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAA0C,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/next.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6C1D"}
|
package/dist/commands/next.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { FileProjectStore, WorkflowNavigator } from '@context-forge/core/node';
|
|
2
|
-
import { resolveProject } from '@context-forge/core';
|
|
3
|
-
import { resolveProjectWorktree } from '../utils/project.js';
|
|
4
|
-
import { handleError, UserError } from '../utils/errors.js';
|
|
5
|
-
import { withJsonOption, withProjectOption } from '../options.js';
|
|
6
|
-
import { printJson } from '../output/formatter.js';
|
|
7
|
-
import { label, value as valueStyle, dim, warn } from '../output/styles.js';
|
|
8
|
-
export function registerNextCommand(program) {
|
|
9
|
-
const nextCmd = program
|
|
10
|
-
.command('next')
|
|
11
|
-
.description('Show recommended next action for the active project');
|
|
12
|
-
withJsonOption(nextCmd);
|
|
13
|
-
withProjectOption(nextCmd);
|
|
14
|
-
nextCmd.action(async (opts) => {
|
|
15
|
-
try {
|
|
16
|
-
const store = new FileProjectStore();
|
|
17
|
-
const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
|
|
18
|
-
const project = await resolveProject(store, id, worktreeId);
|
|
19
|
-
if (!project) {
|
|
20
|
-
throw new UserError(`Project not found: '${id}'. Run cf project list to see available projects.`);
|
|
21
|
-
}
|
|
22
|
-
const nav = new WorkflowNavigator();
|
|
23
|
-
const result = await nav.getNext(project);
|
|
24
|
-
if (opts.json) {
|
|
25
|
-
printJson(result);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (result.warnings?.length) {
|
|
29
|
-
for (const w of result.warnings) {
|
|
30
|
-
console.log(warn('Warning: ') + dim(w));
|
|
31
|
-
}
|
|
32
|
-
console.log('');
|
|
33
|
-
}
|
|
34
|
-
console.log(label('Next: ') + valueStyle(result.recommendation));
|
|
35
|
-
if (result.slice) {
|
|
36
|
-
console.log(label('Slice: ') + valueStyle(result.slice));
|
|
37
|
-
}
|
|
38
|
-
if (result.phase) {
|
|
39
|
-
console.log(label('Phase: ') + valueStyle(result.phase));
|
|
40
|
-
}
|
|
41
|
-
console.log(label('Rationale: ') + dim(result.rationale));
|
|
42
|
-
if (result.suggestedCommand) {
|
|
43
|
-
console.log(label('Run: ') + valueStyle(result.suggestedCommand));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
handleError(err);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=next.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/plan.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAcA,qDAAqD;AACrD,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,CAuG7G"}
|
package/dist/commands/plan.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
2
|
-
import { readdir } from 'node:fs/promises';
|
|
3
|
-
import { FileProjectStore, parseSlicePlan, } from '@context-forge/core/node';
|
|
4
|
-
import { resolveProjectWorktree } from '../utils/project.js';
|
|
5
|
-
import { resolveProject } from '@context-forge/core';
|
|
6
|
-
import { resolveOperationPath, getWorktreeIndexRange, isInIndexRange, resolveAllOperationPaths } from '../utils/worktree-overlay.js';
|
|
7
|
-
import { UserError } from '../utils/errors.js';
|
|
8
|
-
import { printJson } from '../output/formatter.js';
|
|
9
|
-
import { renderTable } from '../output/tables.js';
|
|
10
|
-
import { label, success, dim } from '../output/styles.js';
|
|
11
|
-
/** Shared action handler for listing slice plans. */
|
|
12
|
-
export async function planListAction(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.projectPath) {
|
|
24
|
-
throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
|
|
25
|
-
}
|
|
26
|
-
let scanPaths;
|
|
27
|
-
let indexRange;
|
|
28
|
-
if (opts.all && rawProject.worktrees?.length) {
|
|
29
|
-
scanPaths = resolveAllOperationPaths(rawProject);
|
|
30
|
-
// No index filtering in --all mode
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
const operationPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
|
|
34
|
-
scanPaths = [operationPath];
|
|
35
|
-
indexRange = getWorktreeIndexRange(rawProject, worktreeId);
|
|
36
|
-
}
|
|
37
|
-
// Collect plan files from all scan paths, deduplicate by filename
|
|
38
|
-
const seen = new Set();
|
|
39
|
-
const planFiles = [];
|
|
40
|
-
for (const sp of scanPaths) {
|
|
41
|
-
const archDir = join(sp, 'project-documents/user/architecture');
|
|
42
|
-
let files;
|
|
43
|
-
try {
|
|
44
|
-
files = await readdir(archDir);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
for (const f of files) {
|
|
50
|
-
if (!/^\d+-slices\..*\.md$/.test(f))
|
|
51
|
-
continue;
|
|
52
|
-
const m = /^(\d+)-/.exec(f);
|
|
53
|
-
if (m && !isInIndexRange(parseInt(m[1], 10), indexRange))
|
|
54
|
-
continue;
|
|
55
|
-
if (!seen.has(f)) {
|
|
56
|
-
seen.add(f);
|
|
57
|
-
planFiles.push({ filename: f, archDir });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
planFiles.sort((a, b) => a.filename.localeCompare(b.filename));
|
|
62
|
-
if (planFiles.length === 0) {
|
|
63
|
-
if (opts.json) {
|
|
64
|
-
console.log(JSON.stringify([]));
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
console.log(dim('No slice plans found in project.'));
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// Determine active plan stem (without .md)
|
|
71
|
-
const activeStem = project.fileSlicePlan ?? null;
|
|
72
|
-
const entries = await Promise.all(planFiles.map(async ({ filename, archDir }) => {
|
|
73
|
-
const stem = filename.replace(/\.md$/, '');
|
|
74
|
-
const indexMatch = /^(\d+)-/.exec(filename);
|
|
75
|
-
const index = indexMatch ? indexMatch[1] : '—';
|
|
76
|
-
const planPath = join(archDir, filename);
|
|
77
|
-
const result = await parseSlicePlan(planPath);
|
|
78
|
-
const isActive = stem === activeStem;
|
|
79
|
-
return {
|
|
80
|
-
index,
|
|
81
|
-
file: stem,
|
|
82
|
-
completed: result.completedSlices,
|
|
83
|
-
total: result.totalSlices,
|
|
84
|
-
isActive,
|
|
85
|
-
};
|
|
86
|
-
}));
|
|
87
|
-
if (opts.json) {
|
|
88
|
-
printJson(entries);
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
console.log(label('\nSlice Plans'));
|
|
92
|
-
const rows = entries.map((e) => {
|
|
93
|
-
const progress = e.total > 0
|
|
94
|
-
? `${e.completed}/${e.total}`
|
|
95
|
-
: '—';
|
|
96
|
-
const active = e.isActive ? success(' ← active') : '';
|
|
97
|
-
const icon = e.total > 0 && e.completed === e.total ? success('✓') : dim('○');
|
|
98
|
-
return [e.index, icon + ' ' + e.file, progress + active];
|
|
99
|
-
});
|
|
100
|
-
console.log(renderTable(['#', 'Plan', 'Progress'], rows));
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=plan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
/** Generate help text showing settable fields grouped by category. */
|
|
3
|
-
export declare function buildSettableFieldsHelp(): string;
|
|
4
|
-
/** Shared action handler for `cf set` and `cf project set`. */
|
|
5
|
-
export declare function projectSetAction(field: string, val: string, opts: {
|
|
6
|
-
project?: string;
|
|
7
|
-
projectLevel?: boolean;
|
|
8
|
-
}): Promise<void>;
|
|
9
|
-
/** Shared action handler for `cf unset` and `cf project unset`. */
|
|
10
|
-
export declare function projectUnsetAction(field: string, opts: {
|
|
11
|
-
project?: string;
|
|
12
|
-
projectLevel?: boolean;
|
|
13
|
-
}): Promise<void>;
|
|
14
|
-
/** Shared action handler for `cf get` and `cf project get`. */
|
|
15
|
-
export declare function projectGetAction(opts: {
|
|
16
|
-
json?: boolean;
|
|
17
|
-
project?: string;
|
|
18
|
-
projectLevel?: boolean;
|
|
19
|
-
}): Promise<void>;
|
|
20
|
-
/** Shared action handler for listing all projects. */
|
|
21
|
-
export declare function projectListAction(opts: {
|
|
22
|
-
json?: boolean;
|
|
23
|
-
}): Promise<void>;
|
|
24
|
-
export declare function registerProjectCommand(program: Command): void;
|
|
25
|
-
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoKpC,sEAAsE;AACtE,wBAAgB,uBAAuB,IAAI,MAAM,CA0BhD;AAED,+DAA+D;AAC/D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAqMf;AAED,mEAAmE;AACnE,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA6CD,+DAA+D;AAC/D,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,sDAAsD;AACtD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG7D"}
|