@context-forge/cli 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -8
- package/dist/commands/arch.d.ts.map +1 -1
- package/dist/commands/arch.js +6 -4
- package/dist/commands/arch.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +9 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +59 -21
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/next.d.ts.map +1 -1
- package/dist/commands/next.js +6 -4
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +6 -4
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/project.d.ts +2 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +144 -36
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/slice.d.ts.map +1 -1
- package/dist/commands/slice.js +6 -4
- package/dist/commands/slice.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +148 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +11 -8
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/worktree.d.ts +3 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +332 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- 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/project.d.ts +40 -7
- package/dist/utils/project.d.ts.map +1 -1
- package/dist/utils/project.js +97 -19
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/worktree-overlay.d.ts +2 -0
- package/dist/utils/worktree-overlay.d.ts.map +1 -0
- package/dist/utils/worktree-overlay.js +3 -0
- package/dist/utils/worktree-overlay.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D1D"}
|
package/dist/commands/task.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
import { readdir } from 'node:fs/promises';
|
|
3
3
|
import { FileProjectStore, resolveArtifactPath, extractSliceIndex, parseSlicePlan, parseTaskFile, } from '@context-forge/core/node';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveProjectWorktree } from '../utils/project.js';
|
|
5
|
+
import { applyWorktreeOverlay } from '../utils/worktree-overlay.js';
|
|
5
6
|
import { handleError, UserError } from '../utils/errors.js';
|
|
6
7
|
import { printJson } from '../output/formatter.js';
|
|
7
8
|
import { label, success, dim } from '../output/styles.js';
|
|
8
9
|
export function registerTaskCommand(program) {
|
|
9
10
|
const cmd = program
|
|
10
|
-
.command('
|
|
11
|
+
.command('tasks')
|
|
11
12
|
.description('Manage tasks');
|
|
12
13
|
cmd
|
|
13
14
|
.command('list')
|
|
@@ -17,11 +18,12 @@ export function registerTaskCommand(program) {
|
|
|
17
18
|
.action(async (opts) => {
|
|
18
19
|
try {
|
|
19
20
|
const store = new FileProjectStore();
|
|
20
|
-
const { id } = await
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
21
|
+
const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
|
|
22
|
+
const rawProject = await store.getById(id);
|
|
23
|
+
if (!rawProject) {
|
|
23
24
|
throw new UserError(`Project not found: '${id}'.`);
|
|
24
25
|
}
|
|
26
|
+
const project = worktreeId ? applyWorktreeOverlay(rawProject, worktreeId) : rawProject;
|
|
25
27
|
if (!project.projectPath) {
|
|
26
28
|
throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
|
|
27
29
|
}
|
|
@@ -39,11 +41,12 @@ export function registerTaskCommand(program) {
|
|
|
39
41
|
.action(async (opts) => {
|
|
40
42
|
try {
|
|
41
43
|
const store = new FileProjectStore();
|
|
42
|
-
const { id } = await
|
|
43
|
-
const
|
|
44
|
-
if (!
|
|
44
|
+
const { id, worktreeId } = await resolveProjectWorktree({ project: opts.project }, store);
|
|
45
|
+
const rawProject = await store.getById(id);
|
|
46
|
+
if (!rawProject) {
|
|
45
47
|
throw new UserError(`Project not found: '${id}'.`);
|
|
46
48
|
}
|
|
49
|
+
const project = worktreeId ? applyWorktreeOverlay(rawProject, worktreeId) : rawProject;
|
|
47
50
|
if (!project.projectPath) {
|
|
48
51
|
throw new UserError('No projectPath configured. Set one with: cf set projectPath /path/to/project');
|
|
49
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.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":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuX9D"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import * as os from 'node:os';
|
|
2
|
+
import { FileProjectStore, WorktreeService, GitWorktreeDiscovery, resolveFileByIndex, } from '@context-forge/core/node';
|
|
3
|
+
import { resolveProjectWorktree, findWorktreeByNameOrId } from '../utils/project.js';
|
|
4
|
+
import { handleError, UserError } from '../utils/errors.js';
|
|
5
|
+
import { askConfirmation } from '../utils/confirm.js';
|
|
6
|
+
import { printJson } from '../output/formatter.js';
|
|
7
|
+
import { renderTable } from '../output/tables.js';
|
|
8
|
+
import { success, dim, warn } from '../output/styles.js';
|
|
9
|
+
/** Shorten an absolute path by replacing the home directory with ~. */
|
|
10
|
+
function shortenPath(p) {
|
|
11
|
+
const home = os.homedir();
|
|
12
|
+
if (p === home)
|
|
13
|
+
return '~';
|
|
14
|
+
if (p.startsWith(home + '/'))
|
|
15
|
+
return '~' + p.slice(home.length);
|
|
16
|
+
return p;
|
|
17
|
+
}
|
|
18
|
+
/** Parse and validate a range string like "100-199" into [start, end]. */
|
|
19
|
+
function parseRange(rangeStr) {
|
|
20
|
+
if (!/^\d+-\d+$/.test(rangeStr)) {
|
|
21
|
+
throw new UserError(`Invalid range format. Use start-end, e.g. 100-199`);
|
|
22
|
+
}
|
|
23
|
+
const [startStr, endStr] = rangeStr.split('-');
|
|
24
|
+
const start = parseInt(startStr, 10);
|
|
25
|
+
const end = parseInt(endStr, 10);
|
|
26
|
+
if (start > end) {
|
|
27
|
+
throw new UserError(`Range start must be <= end, got ${start}-${end}`);
|
|
28
|
+
}
|
|
29
|
+
return [start, end];
|
|
30
|
+
}
|
|
31
|
+
export function registerWorktreeCommand(program) {
|
|
32
|
+
const worktree = program
|
|
33
|
+
.command('worktree')
|
|
34
|
+
.description('Manage worktree contexts for a project');
|
|
35
|
+
// ── cf worktree init ────────────────────────────────────────────────────────
|
|
36
|
+
worktree
|
|
37
|
+
.command('init')
|
|
38
|
+
.description('Register a new worktree context for the active project')
|
|
39
|
+
.requiredOption('--name <name>', 'Name for this worktree context')
|
|
40
|
+
.requiredOption('--range <start-end>', 'Slice index range, e.g. 100-199')
|
|
41
|
+
.option('--path <path>', 'Absolute path to the git worktree directory (default: CWD)')
|
|
42
|
+
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
try {
|
|
45
|
+
const indexRange = parseRange(opts.range);
|
|
46
|
+
const store = new FileProjectStore();
|
|
47
|
+
const resolved = await resolveProjectWorktree({ project: opts.project }, store);
|
|
48
|
+
const projectId = resolved.id;
|
|
49
|
+
const project = await store.getById(projectId);
|
|
50
|
+
if (!project) {
|
|
51
|
+
throw new UserError(`Project not found: '${projectId}'.`);
|
|
52
|
+
}
|
|
53
|
+
const worktreePath = opts.path ?? process.cwd();
|
|
54
|
+
// Validate path via git (warn if unavailable, hard-error if path not in list)
|
|
55
|
+
if (project.projectPath) {
|
|
56
|
+
const gitWorktrees = await new GitWorktreeDiscovery().listWorktrees(project.projectPath);
|
|
57
|
+
if (gitWorktrees.length === 0) {
|
|
58
|
+
console.error(warn(`Warning: could not verify path is a git worktree (git unavailable or not a git repo). Proceeding anyway.`));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const known = gitWorktrees.map((wt) => wt.path);
|
|
62
|
+
const normalizedPath = worktreePath.endsWith('/') ? worktreePath.slice(0, -1) : worktreePath;
|
|
63
|
+
if (!known.includes(normalizedPath)) {
|
|
64
|
+
throw new UserError(`Path '${worktreePath}' is not a registered git worktree.\n` +
|
|
65
|
+
` Run 'git worktree list' to see available worktrees.\n` +
|
|
66
|
+
` Use 'git worktree add <path>' to create a new one first.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Auto-discover archDoc and slicePlan from range base
|
|
71
|
+
const base = String(indexRange[0]);
|
|
72
|
+
let archDoc;
|
|
73
|
+
let slicePlan;
|
|
74
|
+
if (project.projectPath) {
|
|
75
|
+
try {
|
|
76
|
+
const resolved = resolveFileByIndex(project.projectPath, 'fileArch', base);
|
|
77
|
+
if (resolved)
|
|
78
|
+
archDoc = resolved;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// No arch file for this range base — skip
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const resolved = resolveFileByIndex(project.projectPath, 'fileSlicePlan', base);
|
|
85
|
+
if (resolved)
|
|
86
|
+
slicePlan = resolved;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// No slice plan for this range base — skip
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const svc = new WorktreeService(store);
|
|
93
|
+
const { worktree: created, migrated, overlaps } = await svc.addWorktree(projectId, {
|
|
94
|
+
name: opts.name,
|
|
95
|
+
indexRange,
|
|
96
|
+
worktreePath,
|
|
97
|
+
archDoc,
|
|
98
|
+
slicePlan,
|
|
99
|
+
});
|
|
100
|
+
if (migrated) {
|
|
101
|
+
console.log(dim(`Note: Existing workflow fields were migrated to a 'Default' worktree context (range 0-99).`));
|
|
102
|
+
}
|
|
103
|
+
if (overlaps.length > 0) {
|
|
104
|
+
for (const o of overlaps) {
|
|
105
|
+
console.log(warn(`Warning: Range ${indexRange[0]}-${indexRange[1]} overlaps with worktree '${o.existingWorktreeName}' (${o.existingRange[0]}-${o.existingRange[1]}) at ${o.overlapStart}-${o.overlapEnd}.`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
console.log(success(`Worktree context '${created.name}' created (${indexRange[0]}-${indexRange[1]}) on project '${project.name}'.`));
|
|
109
|
+
if (archDoc)
|
|
110
|
+
console.log(dim(` arch: ${archDoc}`));
|
|
111
|
+
if (slicePlan)
|
|
112
|
+
console.log(dim(` plan: ${slicePlan}`));
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
handleError(err);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// ── cf worktree list ────────────────────────────────────────────────────────
|
|
119
|
+
worktree
|
|
120
|
+
.command('list')
|
|
121
|
+
.description('List worktree contexts for the active project')
|
|
122
|
+
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
123
|
+
.option('--json', 'Output as JSON')
|
|
124
|
+
.action(async (opts) => {
|
|
125
|
+
try {
|
|
126
|
+
const store = new FileProjectStore();
|
|
127
|
+
const resolved = await resolveProjectWorktree({ project: opts.project }, store);
|
|
128
|
+
const projectId = resolved.id;
|
|
129
|
+
const activeWorktreeId = resolved.worktreeId;
|
|
130
|
+
const project = await store.getById(projectId);
|
|
131
|
+
if (!project) {
|
|
132
|
+
throw new UserError(`Project not found: '${projectId}'.`);
|
|
133
|
+
}
|
|
134
|
+
const worktrees = project.worktrees ?? [];
|
|
135
|
+
// Validate worktree paths against git worktree list
|
|
136
|
+
let pathStatuses = [];
|
|
137
|
+
if (worktrees.length > 0 && project.projectPath) {
|
|
138
|
+
try {
|
|
139
|
+
const gitWorktrees = await new GitWorktreeDiscovery().listWorktrees(project.projectPath);
|
|
140
|
+
const svc = new WorktreeService(store);
|
|
141
|
+
pathStatuses = await svc.validateWorktreePaths(projectId, gitWorktrees);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Git discovery failure — proceed without status indicators
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const statusMap = new Map(pathStatuses.map((s) => [s.worktreeId, s.status]));
|
|
148
|
+
if (opts.json) {
|
|
149
|
+
printJson({ worktrees, activeWorktreeId, pathStatuses: pathStatuses.length > 0 ? pathStatuses : undefined });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (worktrees.length === 0) {
|
|
153
|
+
console.log(` No worktree contexts registered for project '${project.name}'. Run cf worktree init to create one.`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const rows = [];
|
|
157
|
+
const prefixes = [];
|
|
158
|
+
for (const wt of worktrees) {
|
|
159
|
+
const isActive = wt.id === activeWorktreeId;
|
|
160
|
+
const rangeStr = `[${wt.indexRange[0]}-${wt.indexRange[1]}]`;
|
|
161
|
+
let pathStr = wt.worktreePath ? shortenPath(wt.worktreePath) : dim('—');
|
|
162
|
+
// Append stale path indicator
|
|
163
|
+
const pathStatus = statusMap.get(wt.id);
|
|
164
|
+
if (pathStatus === 'missing') {
|
|
165
|
+
pathStr += ' ' + warn('(removed)');
|
|
166
|
+
}
|
|
167
|
+
else if (pathStatus === 'not-a-worktree') {
|
|
168
|
+
pathStr += ' ' + warn('(not a git worktree)');
|
|
169
|
+
}
|
|
170
|
+
const archStr = wt.archDoc ?? dim('—');
|
|
171
|
+
const planStr = wt.slicePlan ?? dim('—');
|
|
172
|
+
if (isActive) {
|
|
173
|
+
rows.push([success(wt.name), success(rangeStr), success(pathStr), success(archStr), success(planStr)]);
|
|
174
|
+
prefixes.push(success('* '));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
rows.push([wt.name, rangeStr, pathStr, archStr, planStr]);
|
|
178
|
+
prefixes.push(' ');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
console.log(renderTable(['Name', 'Range', 'Path', 'Arch', 'Plan'], rows, prefixes));
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
handleError(err);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
// ── cf worktree update ─────────────────────────────────────────────────────
|
|
188
|
+
worktree
|
|
189
|
+
.command('update [nameOrId]')
|
|
190
|
+
.description('Update a worktree context (rename, change range or path)')
|
|
191
|
+
.option('--name <name>', 'New display name')
|
|
192
|
+
.option('--range <start-end>', 'New slice index range, e.g. 150-249')
|
|
193
|
+
.option('--path <path>', 'New worktree directory path')
|
|
194
|
+
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
195
|
+
.action(async (nameOrId, opts) => {
|
|
196
|
+
try {
|
|
197
|
+
if (!opts.name && !opts.range && !opts.path) {
|
|
198
|
+
throw new UserError(`At least one update option is required: --name, --range, or --path`);
|
|
199
|
+
}
|
|
200
|
+
const store = new FileProjectStore();
|
|
201
|
+
const resolved = await resolveProjectWorktree({ project: opts.project }, store);
|
|
202
|
+
const projectId = resolved.id;
|
|
203
|
+
const project = await store.getById(projectId);
|
|
204
|
+
if (!project) {
|
|
205
|
+
throw new UserError(`Project not found: '${projectId}'.`);
|
|
206
|
+
}
|
|
207
|
+
// Resolve target worktree
|
|
208
|
+
let targetId;
|
|
209
|
+
if (nameOrId) {
|
|
210
|
+
const found = await findWorktreeByNameOrId(projectId, nameOrId, store);
|
|
211
|
+
if (!found) {
|
|
212
|
+
throw new UserError(`Worktree '${nameOrId}' not found on project '${project.name}'.\n` +
|
|
213
|
+
` Run 'cf worktree list' to see available worktrees.`);
|
|
214
|
+
}
|
|
215
|
+
targetId = found.id;
|
|
216
|
+
}
|
|
217
|
+
else if (resolved.worktreeId) {
|
|
218
|
+
targetId = resolved.worktreeId;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
throw new UserError(`No worktree specified and none resolved from CWD.\n` +
|
|
222
|
+
` Run 'cf worktree list' to see available worktrees, then:\n` +
|
|
223
|
+
` cf worktree update <name|id> --name <new-name>`);
|
|
224
|
+
}
|
|
225
|
+
// Build updates object
|
|
226
|
+
const updates = {};
|
|
227
|
+
if (opts.name) {
|
|
228
|
+
updates.name = opts.name;
|
|
229
|
+
}
|
|
230
|
+
let indexRange;
|
|
231
|
+
if (opts.range) {
|
|
232
|
+
indexRange = parseRange(opts.range);
|
|
233
|
+
updates.indexRange = indexRange;
|
|
234
|
+
}
|
|
235
|
+
if (opts.path) {
|
|
236
|
+
// Validate path against git worktree list (same as init)
|
|
237
|
+
if (project.projectPath) {
|
|
238
|
+
const gitWorktrees = await new GitWorktreeDiscovery().listWorktrees(project.projectPath);
|
|
239
|
+
if (gitWorktrees.length === 0) {
|
|
240
|
+
console.error(warn(`Warning: could not verify path is a git worktree (git unavailable or not a git repo). Proceeding anyway.`));
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
const known = gitWorktrees.map((wt) => wt.path);
|
|
244
|
+
const normalizedPath = opts.path.endsWith('/') ? opts.path.slice(0, -1) : opts.path;
|
|
245
|
+
if (!known.includes(normalizedPath)) {
|
|
246
|
+
throw new UserError(`Path '${opts.path}' is not a registered git worktree.\n` +
|
|
247
|
+
` Run 'git worktree list' to see available worktrees.\n` +
|
|
248
|
+
` Use 'git worktree add <path>' to create a new one first.`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
updates.worktreePath = opts.path;
|
|
253
|
+
}
|
|
254
|
+
const svc = new WorktreeService(store);
|
|
255
|
+
const updated = await svc.updateWorktree(projectId, targetId, updates);
|
|
256
|
+
// Check for overlaps when range changed
|
|
257
|
+
if (indexRange) {
|
|
258
|
+
const overlaps = await svc.findOverlaps(projectId, indexRange, targetId);
|
|
259
|
+
for (const o of overlaps) {
|
|
260
|
+
console.log(warn(`Warning: Range ${indexRange[0]}-${indexRange[1]} overlaps with worktree '${o.existingWorktreeName}' (${o.existingRange[0]}-${o.existingRange[1]}) at ${o.overlapStart}-${o.overlapEnd}.`));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
console.log(success(`Worktree context '${updated.name}' updated.`));
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
handleError(err);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
// ── cf worktree rm ──────────────────────────────────────────────────────────
|
|
270
|
+
worktree
|
|
271
|
+
.command('rm [nameOrId]')
|
|
272
|
+
.description('Remove a worktree context from the active project')
|
|
273
|
+
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
274
|
+
.option('--yes', 'Skip confirmation prompt')
|
|
275
|
+
.action(async (nameOrId, opts) => {
|
|
276
|
+
try {
|
|
277
|
+
const store = new FileProjectStore();
|
|
278
|
+
const resolved = await resolveProjectWorktree({ project: opts.project }, store);
|
|
279
|
+
const projectId = resolved.id;
|
|
280
|
+
const project = await store.getById(projectId);
|
|
281
|
+
if (!project) {
|
|
282
|
+
throw new UserError(`Project not found: '${projectId}'.`);
|
|
283
|
+
}
|
|
284
|
+
// Resolve target worktree
|
|
285
|
+
let targetId;
|
|
286
|
+
if (nameOrId) {
|
|
287
|
+
const found = await findWorktreeByNameOrId(projectId, nameOrId, store);
|
|
288
|
+
if (!found) {
|
|
289
|
+
throw new UserError(`Worktree '${nameOrId}' not found on project '${project.name}'.\n` +
|
|
290
|
+
` Run 'cf worktree list' to see available worktrees.`);
|
|
291
|
+
}
|
|
292
|
+
targetId = found.id;
|
|
293
|
+
}
|
|
294
|
+
else if (resolved.worktreeId) {
|
|
295
|
+
targetId = resolved.worktreeId;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
throw new UserError(`No worktree specified and none resolved from CWD.\n` +
|
|
299
|
+
` Run 'cf worktree list' to see available worktrees, then:\n` +
|
|
300
|
+
` cf worktree rm <name|id>`);
|
|
301
|
+
}
|
|
302
|
+
const worktrees = project.worktrees ?? [];
|
|
303
|
+
const target = worktrees.find((wt) => wt.id === targetId);
|
|
304
|
+
if (!target) {
|
|
305
|
+
throw new UserError(`Worktree not found on project '${project.name}'.\n` +
|
|
306
|
+
` Run 'cf worktree list' to see available worktrees.`);
|
|
307
|
+
}
|
|
308
|
+
if (!opts.yes) {
|
|
309
|
+
console.log(` Name: ${target.name}`);
|
|
310
|
+
console.log(` Range: ${target.indexRange[0]}-${target.indexRange[1]}`);
|
|
311
|
+
console.log(` Path: ${target.worktreePath ?? dim('—')}`);
|
|
312
|
+
console.log(` Project: ${project.name}`);
|
|
313
|
+
console.log(dim(` Note: This removes the worktree context record only. Files on disk are not deleted.`));
|
|
314
|
+
const confirmed = await askConfirmation(`Remove worktree '${target.name}'? [y/N] `);
|
|
315
|
+
if (!confirmed) {
|
|
316
|
+
console.log('Cancelled.');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
const svc = new WorktreeService(store);
|
|
321
|
+
const { migrated } = await svc.removeWorktree(projectId, targetId);
|
|
322
|
+
if (migrated) {
|
|
323
|
+
console.log(dim(`Note: Workflow fields were restored to project level (last worktree removed).`));
|
|
324
|
+
}
|
|
325
|
+
console.log(success(`Worktree context '${target.name}' removed from project '${project.name}'.`));
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
handleError(err);
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/commands/worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerArchCommand } from './commands/arch.js';
|
|
|
19
19
|
import { registerPlanCommand } from './commands/plan.js';
|
|
20
20
|
import { registerSetupIdeCommand } from './commands/setup-ide.js';
|
|
21
21
|
import { registerBackupCommand } from './commands/backup.js';
|
|
22
|
+
import { registerWorktreeCommand } from './commands/worktree.js';
|
|
22
23
|
import { handleError } from './utils/errors.js';
|
|
23
24
|
const require = createRequire(import.meta.url);
|
|
24
25
|
const { version } = require('../package.json');
|
|
@@ -55,11 +56,13 @@ registerSetupIdeCommand(program);
|
|
|
55
56
|
registerBackupCommand(program);
|
|
56
57
|
registerInstallCommandsCommand(program);
|
|
57
58
|
registerUninstallCommandsCommand(program);
|
|
59
|
+
registerWorktreeCommand(program);
|
|
58
60
|
// Top-level shortcuts for project get/set
|
|
59
61
|
program
|
|
60
62
|
.command('set [field] [value]')
|
|
61
63
|
.description('Set a field on the active project (shortcut for cf project set)')
|
|
62
64
|
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
65
|
+
.option('--project-level', 'Force update at project level (skip worktree routing)')
|
|
63
66
|
.addHelpText('after', buildSettableFieldsHelp)
|
|
64
67
|
.action(async (field, val, opts) => {
|
|
65
68
|
if (!field || !val) {
|
|
@@ -78,6 +81,7 @@ program
|
|
|
78
81
|
.description('Show details for the active project (shortcut for cf project get)')
|
|
79
82
|
.option('--json', 'Output as JSON')
|
|
80
83
|
.option('--project <name|id>', 'Project name or ID (overrides default)')
|
|
84
|
+
.option('--project-level', 'Show project-level fields only (skip worktree overlay)')
|
|
81
85
|
.action(async (opts) => {
|
|
82
86
|
try {
|
|
83
87
|
await projectGetAction(opts);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as readline from 'node:readline';
|
|
2
|
+
/** Prompt user for y/N confirmation via stdin. Returns true if confirmed. */
|
|
3
|
+
export function askConfirmation(prompt) {
|
|
4
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
rl.question(prompt, (answer) => {
|
|
7
|
+
rl.close();
|
|
8
|
+
resolve(answer.trim().toLowerCase() === 'y');
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/utils/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/utils/project.d.ts
CHANGED
|
@@ -5,24 +5,57 @@ import type { ProjectData } from '@context-forge/core';
|
|
|
5
5
|
* ID match takes priority over name match.
|
|
6
6
|
*/
|
|
7
7
|
export declare function findByNameOrId(nameOrId: string, store: FileProjectStore): Promise<ProjectData | null>;
|
|
8
|
+
/** Result of a CWD-based project match, including optional worktree context. */
|
|
9
|
+
export interface CwdMatch {
|
|
10
|
+
project: ProjectData;
|
|
11
|
+
/** Set when the match was via a worktree's worktreePath rather than projectPath. */
|
|
12
|
+
worktreeId?: string;
|
|
13
|
+
}
|
|
8
14
|
/**
|
|
9
|
-
* Find the project whose projectPath best matches the current
|
|
10
|
-
* When multiple
|
|
11
|
-
* Projects without a projectPath are skipped
|
|
15
|
+
* Find the project whose projectPath or worktreePath best matches the current
|
|
16
|
+
* working directory. When multiple paths match (nested paths), the longest wins.
|
|
17
|
+
* Projects without a projectPath are skipped; worktrees without a worktreePath
|
|
18
|
+
* are also skipped.
|
|
12
19
|
*/
|
|
13
|
-
export declare function findProjectByCwd(store: FileProjectStore): Promise<
|
|
14
|
-
export type ResolutionSource = 'flag' | 'cwd' | 'default' | 'none';
|
|
20
|
+
export declare function findProjectByCwd(store: FileProjectStore): Promise<CwdMatch | null>;
|
|
21
|
+
export type ResolutionSource = 'flag' | 'cwd' | 'worktree' | 'default' | 'none';
|
|
15
22
|
export interface ResolvedProject {
|
|
16
23
|
id: string;
|
|
17
24
|
source: ResolutionSource;
|
|
18
25
|
}
|
|
26
|
+
export interface ResolvedProjectWorktree {
|
|
27
|
+
id: string;
|
|
28
|
+
source: ResolutionSource;
|
|
29
|
+
/** Set when CWD matched a worktree's worktreePath. */
|
|
30
|
+
worktreeId?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Options for resolveProjectWorktree. */
|
|
33
|
+
export interface ResolveProjectWorktreeOptions {
|
|
34
|
+
/** Explicit --project flag value (name or id). */
|
|
35
|
+
project?: string;
|
|
36
|
+
/** Explicit --worktree flag value (name or id) — overrides CWD-derived worktreeId. */
|
|
37
|
+
worktree?: string;
|
|
38
|
+
}
|
|
19
39
|
/**
|
|
20
|
-
* Resolves which project to use via a
|
|
40
|
+
* Resolves which project and (optionally) worktree to use via a four-step chain:
|
|
21
41
|
*
|
|
22
42
|
* 1. explicit --project flag → findByNameOrId
|
|
23
|
-
* 2. CWD detection → findProjectByCwd
|
|
43
|
+
* 2. CWD detection → findProjectByCwd (worktree-aware)
|
|
24
44
|
* 3. default_project config → findByNameOrId
|
|
25
45
|
* 4. Throw UserError with guidance
|
|
46
|
+
*
|
|
47
|
+
* When opts.worktree is provided and a project was resolved, also resolves the
|
|
48
|
+
* worktreeId via findWorktreeByNameOrId.
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveProjectWorktree(opts: ResolveProjectWorktreeOptions, store: FileProjectStore): Promise<ResolvedProjectWorktree>;
|
|
51
|
+
/**
|
|
52
|
+
* Resolves which project to use via a three-step chain.
|
|
53
|
+
* Backwards-compatible wrapper around resolveProjectWorktree — drops worktreeId.
|
|
26
54
|
*/
|
|
27
55
|
export declare function resolveProjectId(explicit: string | undefined, store: FileProjectStore): Promise<ResolvedProject>;
|
|
56
|
+
/**
|
|
57
|
+
* Find a worktree within a project by exact ID or case-insensitive name.
|
|
58
|
+
* ID match takes priority over name match. Returns undefined if not found.
|
|
59
|
+
*/
|
|
60
|
+
export declare function findWorktreeByNameOrId(projectId: string, nameOrId: string, store: FileProjectStore): Promise<import('@context-forge/core').WorktreeContext | undefined>;
|
|
28
61
|
//# sourceMappingURL=project.d.ts.map
|