@context-forge/cli 0.8.5 → 0.9.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/dist/commands/arch.d.ts +7 -0
- package/dist/commands/arch.d.ts.map +1 -0
- package/dist/commands/arch.js +169 -0
- package/dist/commands/arch.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +27 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/build.d.ts +24 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +146 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +250 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/commandInstaller.d.ts +28 -0
- package/dist/commands/commandInstaller.d.ts.map +1 -0
- package/dist/commands/commandInstaller.js +136 -0
- package/dist/commands/commandInstaller.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +116 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/future.d.ts +3 -0
- package/dist/commands/future.d.ts.map +1 -0
- package/dist/commands/future.js +96 -0
- package/dist/commands/future.js.map +1 -0
- package/dist/commands/guides.d.ts +9 -0
- package/dist/commands/guides.d.ts.map +1 -0
- package/dist/commands/guides.js +156 -0
- package/dist/commands/guides.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +124 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +97 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/next.d.ts +3 -0
- package/dist/commands/next.d.ts.map +1 -0
- package/dist/commands/next.js +52 -0
- package/dist/commands/next.js.map +1 -0
- package/dist/commands/plan.d.ts +7 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +102 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/project.d.ts +25 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +550 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/prompt.d.ts +3 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/prompt.js +112 -0
- package/dist/commands/prompt.js.map +1 -0
- package/dist/commands/setup-ide.d.ts +15 -0
- package/dist/commands/setup-ide.d.ts.map +1 -0
- package/dist/commands/setup-ide.js +250 -0
- package/dist/commands/setup-ide.js.map +1 -0
- package/dist/commands/slice.d.ts +7 -0
- package/dist/commands/slice.d.ts.map +1 -0
- package/dist/commands/slice.js +151 -0
- package/dist/commands/slice.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +210 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/task.d.ts +13 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +207 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/update.d.ts +27 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +172 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/workflow.d.ts +3 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +204 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/commands/worktree.d.ts +3 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +371 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +16 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +29 -0
- package/dist/options.js.map +1 -0
- package/dist/output/entryStatusDisplay.d.ts +12 -0
- package/dist/output/entryStatusDisplay.d.ts.map +1 -0
- package/dist/output/entryStatusDisplay.js +24 -0
- package/dist/output/entryStatusDisplay.js.map +1 -0
- package/dist/output/formatter.d.ts +6 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +9 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/styles.d.ts +15 -0
- package/dist/output/styles.d.ts.map +1 -0
- package/dist/output/styles.js +16 -0
- package/dist/output/styles.js.map +1 -0
- package/dist/output/tables.d.ts +6 -0
- package/dist/output/tables.d.ts.map +1 -0
- package/dist/output/tables.js +45 -0
- package/dist/output/tables.js.map +1 -0
- package/dist/utils/archIndex.d.ts +7 -0
- package/dist/utils/archIndex.d.ts.map +1 -0
- package/dist/utils/archIndex.js +14 -0
- package/dist/utils/archIndex.js.map +1 -0
- package/dist/utils/breaking-changes.d.ts +14 -0
- package/dist/utils/breaking-changes.d.ts.map +1 -0
- package/dist/utils/breaking-changes.js +11 -0
- package/dist/utils/breaking-changes.js.map +1 -0
- package/dist/utils/commandCatalog.d.ts +25 -0
- package/dist/utils/commandCatalog.d.ts.map +1 -0
- package/dist/utils/commandCatalog.js +32 -0
- package/dist/utils/commandCatalog.js.map +1 -0
- package/dist/utils/confirm.d.ts +3 -0
- package/dist/utils/confirm.d.ts.map +1 -0
- package/dist/utils/confirm.js +12 -0
- package/dist/utils/confirm.js.map +1 -0
- package/dist/utils/errors.d.ts +22 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +63 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/phaseShorthand.d.ts +23 -0
- package/dist/utils/phaseShorthand.d.ts.map +1 -0
- package/dist/utils/phaseShorthand.js +68 -0
- package/dist/utils/phaseShorthand.js.map +1 -0
- package/dist/utils/project.d.ts +60 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +140 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/worktree-overlay.d.ts +31 -0
- package/dist/utils/worktree-overlay.d.ts.map +1 -0
- package/dist/utils/worktree-overlay.js +63 -0
- package/dist/utils/worktree-overlay.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { dirname, join, resolve } from 'node:path';
|
|
5
|
+
import { handleError } from '../utils/errors.js';
|
|
6
|
+
import { withJsonOption, withYesOption } from '../options.js';
|
|
7
|
+
import { askConfirmation } from '../utils/confirm.js';
|
|
8
|
+
import { printJson } from '../output/formatter.js';
|
|
9
|
+
import { label, value, dim, success, warn } from '../output/styles.js';
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const { version: currentVersion } = require('../../package.json');
|
|
12
|
+
/**
|
|
13
|
+
* Compare two semver strings (major.minor.patch).
|
|
14
|
+
* Returns -1 if a < b, 0 if equal, 1 if a > b.
|
|
15
|
+
*/
|
|
16
|
+
export function compareSemver(a, b) {
|
|
17
|
+
const partsA = a.split('.').map(Number);
|
|
18
|
+
const partsB = b.split('.').map(Number);
|
|
19
|
+
for (let i = 0; i < 3; i++) {
|
|
20
|
+
const segA = partsA[i] ?? 0;
|
|
21
|
+
const segB = partsB[i] ?? 0;
|
|
22
|
+
if (segA < segB)
|
|
23
|
+
return -1;
|
|
24
|
+
if (segA > segB)
|
|
25
|
+
return 1;
|
|
26
|
+
}
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch the latest published version of a package from the npm registry.
|
|
31
|
+
* Returns null on any failure (network, non-200, malformed JSON).
|
|
32
|
+
*/
|
|
33
|
+
export async function fetchLatestVersion(packageName) {
|
|
34
|
+
try {
|
|
35
|
+
const response = await globalThis.fetch(`https://registry.npmjs.org/${packageName}/latest`, { signal: AbortSignal.timeout(10_000) });
|
|
36
|
+
if (!response.ok)
|
|
37
|
+
return null;
|
|
38
|
+
const data = await response.json();
|
|
39
|
+
if (typeof data === 'object' && data !== null && 'version' in data) {
|
|
40
|
+
const ver = data.version;
|
|
41
|
+
if (typeof ver === 'string')
|
|
42
|
+
return ver;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect how cf was installed globally.
|
|
52
|
+
* Returns the package manager method and whether this is a local/dev install.
|
|
53
|
+
*/
|
|
54
|
+
export function detectInstallMethod() {
|
|
55
|
+
const scriptPath = process.argv[1] ?? '';
|
|
56
|
+
// pnpm global install (check first — pnpm global paths also contain node_modules)
|
|
57
|
+
if (scriptPath.includes('.pnpm') || scriptPath.includes('pnpm/global')) {
|
|
58
|
+
return { method: 'pnpm', isLocal: false };
|
|
59
|
+
}
|
|
60
|
+
// Check for global npm install (system-level node_modules)
|
|
61
|
+
const isGlobalNpm = /\/(usr|opt)\/(local\/)?lib\/node_modules\//.test(scriptPath)
|
|
62
|
+
|| /\/lib\/node_modules\//.test(scriptPath);
|
|
63
|
+
if (isGlobalNpm) {
|
|
64
|
+
return { method: 'npm', isLocal: false };
|
|
65
|
+
}
|
|
66
|
+
// Local/dev install: project-local node_modules or relative path
|
|
67
|
+
if (scriptPath.includes('node_modules') || !scriptPath.startsWith('/')) {
|
|
68
|
+
return { method: 'unknown', isLocal: true };
|
|
69
|
+
}
|
|
70
|
+
// Heuristic: if a package.json exists in the script's ancestor directories
|
|
71
|
+
// (within 4 levels), this is likely a local dev install (e.g., `node packages/cli/dist/index.js`)
|
|
72
|
+
if (isLocalDevPath(scriptPath)) {
|
|
73
|
+
return { method: 'unknown', isLocal: true };
|
|
74
|
+
}
|
|
75
|
+
// Default to npm global (absolute path not matching known patterns)
|
|
76
|
+
return { method: 'npm', isLocal: false };
|
|
77
|
+
}
|
|
78
|
+
/** Check if the script path is under a local project by looking for package.json nearby. */
|
|
79
|
+
function isLocalDevPath(scriptPath) {
|
|
80
|
+
let dir = dirname(resolve(scriptPath));
|
|
81
|
+
for (let i = 0; i < 4; i++) {
|
|
82
|
+
if (existsSync(join(dir, 'package.json')))
|
|
83
|
+
return true;
|
|
84
|
+
const parent = dirname(dir);
|
|
85
|
+
if (parent === dir)
|
|
86
|
+
break;
|
|
87
|
+
dir = parent;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Run the global install command to update the CLI package.
|
|
93
|
+
* Uses execSync so the user sees output directly. Throws on failure.
|
|
94
|
+
*/
|
|
95
|
+
export function runUpdate(method) {
|
|
96
|
+
const cmd = method === 'pnpm'
|
|
97
|
+
? 'pnpm add -g @context-forge/cli@latest'
|
|
98
|
+
: 'npm install -g @context-forge/cli@latest';
|
|
99
|
+
execSync(cmd, { stdio: 'inherit' });
|
|
100
|
+
}
|
|
101
|
+
/** Register the `cf update` command. */
|
|
102
|
+
export function registerUpdateCommand(program) {
|
|
103
|
+
const updateCmd = program
|
|
104
|
+
.command('update')
|
|
105
|
+
.description('Check for updates and install the latest version');
|
|
106
|
+
withYesOption(updateCmd);
|
|
107
|
+
withJsonOption(updateCmd);
|
|
108
|
+
updateCmd.action(async (opts) => {
|
|
109
|
+
try {
|
|
110
|
+
const install = detectInstallMethod();
|
|
111
|
+
// Local/dev install — skip update
|
|
112
|
+
if (install.isLocal) {
|
|
113
|
+
console.log(warn('Local development install detected — skipping self-update.'));
|
|
114
|
+
console.log(dim(' To update, pull the latest changes and rebuild.'));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Fetch latest version from npm
|
|
118
|
+
const latest = await fetchLatestVersion('@context-forge/cli');
|
|
119
|
+
if (!latest) {
|
|
120
|
+
handleError(new Error('Could not reach npm registry — check your network connection.'));
|
|
121
|
+
}
|
|
122
|
+
const cmp = compareSemver(currentVersion, latest);
|
|
123
|
+
// JSON output — no side effects
|
|
124
|
+
if (opts.json) {
|
|
125
|
+
printJson({
|
|
126
|
+
current: currentVersion,
|
|
127
|
+
latest,
|
|
128
|
+
updateAvailable: cmp < 0,
|
|
129
|
+
installMethod: install.method,
|
|
130
|
+
});
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Already up to date
|
|
134
|
+
if (cmp >= 0) {
|
|
135
|
+
console.log(success(`@context-forge/cli v${currentVersion} is up to date.`));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Update available
|
|
139
|
+
console.log(`${label('Update available:')} ${value(currentVersion)} → ${value(latest)}`);
|
|
140
|
+
console.log('');
|
|
141
|
+
const isTTY = process.stdin.isTTY;
|
|
142
|
+
if (opts.yes) {
|
|
143
|
+
// --yes: proceed without prompt
|
|
144
|
+
}
|
|
145
|
+
else if (isTTY) {
|
|
146
|
+
// Interactive: prompt
|
|
147
|
+
const confirmed = await askConfirmation('Install now? (y/N) ');
|
|
148
|
+
if (!confirmed) {
|
|
149
|
+
console.log(dim('Update skipped.'));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Non-TTY without --yes: inform and exit
|
|
155
|
+
console.log(dim('Run with --yes to install non-interactively.'));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (install.method === 'unknown') {
|
|
159
|
+
console.log(warn('Could not determine install method. Run manually:'));
|
|
160
|
+
console.log(dim(' npm install -g @context-forge/cli@latest'));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
runUpdate(install.method);
|
|
164
|
+
console.log('');
|
|
165
|
+
console.log(success(`✓ Updated @context-forge/cli to ${latest}`));
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
handleError(err);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CACrC,8BAA8B,WAAW,SAAS,EAClD,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CACxC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACnE,MAAM,GAAG,GAAI,IAA6B,CAAC,OAAO,CAAC;YACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,kFAAkF;IAClF,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,2DAA2D;IAC3D,MAAM,WAAW,GAAG,4CAA4C,CAAC,IAAI,CAAC,UAAU,CAAC;WAC5E,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,iEAAiE;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,2EAA2E;IAC3E,kGAAkG;IAClG,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,4FAA4F;AAC5F,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,MAAM;QAC3B,CAAC,CAAC,uCAAuC;QACzC,CAAC,CAAC,0CAA0C,CAAC;IAC/C,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC,CAAC;IACnE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzB,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;QAC/D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;YAEtC,kCAAkC;YAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,WAAW,CAAC,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAElD,gCAAgC;YAChC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,SAAS,CAAC;oBACR,OAAO,EAAE,cAAc;oBACvB,MAAM;oBACN,eAAe,EAAE,GAAG,GAAG,CAAC;oBACxB,aAAa,EAAE,OAAO,CAAC,MAAM;iBAC9B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,qBAAqB;YACrB,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,cAAc,iBAAiB,CAAC,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YAED,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAElC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,gCAAgC;YAClC,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,sBAAsB;gBACtB,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,qBAAqB,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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;AAuEpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I/D"}
|
|
@@ -0,0 +1,204 @@
|
|
|
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, UserError } from '../utils/errors.js';
|
|
8
|
+
import { warn } from '../output/styles.js';
|
|
9
|
+
/** Validate that a compound command argument is a numeric index. */
|
|
10
|
+
function requireNumericIndex(value, commandName) {
|
|
11
|
+
if (!/^\d+$/.test(value)) {
|
|
12
|
+
throw new UserError(`'cf ${commandName}' requires a numeric index, got '${value}'.`, 'INVALID_ARGUMENT', `Use: cf ${commandName} <index> (e.g. cf ${commandName} 200)\n` +
|
|
13
|
+
` To list: cf list ${commandName === 'implement' ? 'slices' : commandName === 'tasks' ? 'tasks' : commandName + 's'}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Warn to stderr if an artifact already exists for the given index. */
|
|
17
|
+
async function warnIfArtifactExists(projectPath, index, field, label) {
|
|
18
|
+
try {
|
|
19
|
+
const docs = await detectDocuments(projectPath, index);
|
|
20
|
+
const value = docs[field];
|
|
21
|
+
const exists = Array.isArray(value) ? value.length > 0 : value !== null;
|
|
22
|
+
if (exists) {
|
|
23
|
+
process.stderr.write(warn(`${label} already exists for index ${index}. Building prompt anyway.\n`));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Detection failure is not fatal
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Warn to stderr if the concept document already exists. */
|
|
31
|
+
async function warnIfConceptExists(opts) {
|
|
32
|
+
try {
|
|
33
|
+
const store = new FileProjectStore();
|
|
34
|
+
const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
|
|
35
|
+
const project = await resolveProject(store, id, worktreeId);
|
|
36
|
+
if (!project?.projectPath || !project.fileConcept)
|
|
37
|
+
return;
|
|
38
|
+
const opPath = resolveOperationPath(project, worktreeId) ?? project.projectPath;
|
|
39
|
+
const exists = await checkFileExists(opPath, project.fileConcept);
|
|
40
|
+
if (exists) {
|
|
41
|
+
process.stderr.write(warn('Concept document already exists. Building concept prompt anyway.\n'));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Detection failure is not fatal
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Resolve the operation path for artifact detection. */
|
|
49
|
+
async function getOperationPath(opts) {
|
|
50
|
+
try {
|
|
51
|
+
const store = new FileProjectStore();
|
|
52
|
+
const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
|
|
53
|
+
const project = await resolveProject(store, id, worktreeId);
|
|
54
|
+
if (!project?.projectPath)
|
|
55
|
+
return undefined;
|
|
56
|
+
return resolveOperationPath(project, worktreeId) ?? project.projectPath;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function registerWorkflowCommands(program) {
|
|
63
|
+
// cf concept
|
|
64
|
+
program
|
|
65
|
+
.command('concept')
|
|
66
|
+
.description('Set phase to Concept and build prompt')
|
|
67
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
68
|
+
.option('--project-level', 'Force project-level field updates')
|
|
69
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
70
|
+
.action(async (opts) => {
|
|
71
|
+
try {
|
|
72
|
+
await warnIfConceptExists(opts);
|
|
73
|
+
await projectSetAction('developmentPhase', 'Phase 0: Concept', opts);
|
|
74
|
+
await buildAndPrint({ ...opts, commandHint: 'concept' });
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
handleError(err);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
// cf initiatives
|
|
81
|
+
program
|
|
82
|
+
.command('initiatives')
|
|
83
|
+
.description('Set phase to Initiative Plan and build prompt')
|
|
84
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
85
|
+
.option('--project-level', 'Force project-level field updates')
|
|
86
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
87
|
+
.action(async (opts) => {
|
|
88
|
+
try {
|
|
89
|
+
await projectSetAction('developmentPhase', 'Phase 1: Initiative Plan', opts);
|
|
90
|
+
await buildAndPrint({ ...opts, commandHint: 'initiatives' });
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
handleError(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// cf arch <index>
|
|
97
|
+
program
|
|
98
|
+
.command('arch <index>')
|
|
99
|
+
.description('Set architecture initiative and build prompt')
|
|
100
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
101
|
+
.option('--project-level', 'Force project-level field updates')
|
|
102
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
103
|
+
.action(async (index, opts) => {
|
|
104
|
+
try {
|
|
105
|
+
requireNumericIndex(index, 'arch');
|
|
106
|
+
await projectSetAction('fileArch', index, opts);
|
|
107
|
+
await projectSetAction('developmentPhase', 'Phase 2: Architecture', opts);
|
|
108
|
+
const opPath = await getOperationPath(opts);
|
|
109
|
+
if (opPath) {
|
|
110
|
+
await warnIfArtifactExists(opPath, parseInt(index, 10), 'architecture', 'Architecture document');
|
|
111
|
+
}
|
|
112
|
+
await buildAndPrint({ ...opts, commandHint: `arch ${index}` });
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
handleError(err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// cf plan <index>
|
|
119
|
+
program
|
|
120
|
+
.command('plan <index>')
|
|
121
|
+
.description('Set slice plan and build prompt')
|
|
122
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
123
|
+
.option('--project-level', 'Force project-level field updates')
|
|
124
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
125
|
+
.action(async (index, opts) => {
|
|
126
|
+
try {
|
|
127
|
+
requireNumericIndex(index, 'plan');
|
|
128
|
+
await projectSetAction('fileSlicePlan', index, opts);
|
|
129
|
+
await projectSetAction('developmentPhase', 'Phase 3: Slice Planning', opts);
|
|
130
|
+
const opPath = await getOperationPath(opts);
|
|
131
|
+
if (opPath) {
|
|
132
|
+
await warnIfArtifactExists(opPath, parseInt(index, 10), 'slicePlan', 'Slice plan');
|
|
133
|
+
}
|
|
134
|
+
await buildAndPrint({ ...opts, commandHint: `plan ${index}` });
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
handleError(err);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
// cf slice <index>
|
|
141
|
+
program
|
|
142
|
+
.command('slice <index>')
|
|
143
|
+
.description('Set active slice and build prompt')
|
|
144
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
145
|
+
.option('--project-level', 'Force project-level field updates')
|
|
146
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
147
|
+
.action(async (index, opts) => {
|
|
148
|
+
try {
|
|
149
|
+
requireNumericIndex(index, 'slice');
|
|
150
|
+
await projectSetAction('fileSlice', index, opts);
|
|
151
|
+
await projectSetAction('developmentPhase', 'Phase 4: Slice Design', opts);
|
|
152
|
+
const opPath = await getOperationPath(opts);
|
|
153
|
+
if (opPath) {
|
|
154
|
+
await warnIfArtifactExists(opPath, parseInt(index, 10), 'sliceDesign', 'Slice design');
|
|
155
|
+
}
|
|
156
|
+
await buildAndPrint({ ...opts, commandHint: `slice ${index}` });
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
handleError(err);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
// cf tasks <index>
|
|
163
|
+
program
|
|
164
|
+
.command('tasks <index>')
|
|
165
|
+
.description('Set active task file and build prompt')
|
|
166
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
167
|
+
.option('--project-level', 'Force project-level field updates')
|
|
168
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
169
|
+
.action(async (index, opts) => {
|
|
170
|
+
try {
|
|
171
|
+
requireNumericIndex(index, 'tasks');
|
|
172
|
+
await projectSetAction('fileTasks', index, opts);
|
|
173
|
+
await projectSetAction('developmentPhase', 'Phase 5: Task Breakdown', opts);
|
|
174
|
+
const opPath = await getOperationPath(opts);
|
|
175
|
+
if (opPath) {
|
|
176
|
+
await warnIfArtifactExists(opPath, parseInt(index, 10), 'taskFile', 'Task file');
|
|
177
|
+
}
|
|
178
|
+
await buildAndPrint({ ...opts, commandHint: `tasks ${index}` });
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
handleError(err);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
// cf implement <index>
|
|
185
|
+
program
|
|
186
|
+
.command('implement <index>')
|
|
187
|
+
.description('Set active slice for implementation and build prompt')
|
|
188
|
+
.option('--project <name|id>', 'Project name or ID')
|
|
189
|
+
.option('--project-level', 'Force project-level field updates')
|
|
190
|
+
.option('--json', 'Output context as JSON to stdout')
|
|
191
|
+
.action(async (index, opts) => {
|
|
192
|
+
try {
|
|
193
|
+
requireNumericIndex(index, 'implement');
|
|
194
|
+
await projectSetAction('fileSlice', index, opts);
|
|
195
|
+
await projectSetAction('developmentPhase', 'Phase 6: Implementation', opts);
|
|
196
|
+
// No artifact warning for implement — implementation is always continuation
|
|
197
|
+
await buildAndPrint({ ...opts, commandHint: `implement ${index}` });
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
handleError(err);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/commands/worktree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAia9D"}
|