@tacuchi/agent-workflow-cli 21.4.0 → 21.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/dist/adapters/git-cli.js +64 -0
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/adapters/node-file-system.js +14 -1
- package/dist/adapters/node-file-system.js.map +1 -1
- package/dist/application/branch-resolver.js +18 -3
- package/dist/application/branch-resolver.js.map +1 -1
- package/dist/application/check-branch-service.js +137 -19
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/dev-only-services.js +50 -3
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/export-service.js +2 -2
- package/dist/application/export-service.js.map +1 -1
- package/dist/application/hook-branch-check.js +71 -58
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/lock-service.js +54 -15
- package/dist/application/lock-service.js.map +1 -1
- package/dist/application/paths-service.js +10 -0
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/persist-service.js +2 -2
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/process-registry-service.js +94 -25
- package/dist/application/process-registry-service.js.map +1 -1
- package/dist/application/project-tab-data.js +1 -1
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/resume-service.js +2 -0
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/session-close-service.js +23 -1
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/source-launch-service.js +39 -4
- package/dist/application/source-launch-service.js.map +1 -1
- package/dist/application/source-remove-service.js +1 -1
- package/dist/application/source-remove-service.js.map +1 -1
- package/dist/application/status-service.js +2 -0
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +35 -0
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/worktree-service.js +357 -0
- package/dist/application/worktree-service.js.map +1 -0
- package/dist/cli/commands/check-branch.js +4 -0
- package/dist/cli/commands/check-branch.js.map +1 -1
- package/dist/cli/commands/dev-only.js +9 -3
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/resume.js +1 -1
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/session-close.js +7 -1
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/status.js +1 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/worktree.js +39 -0
- package/dist/cli/commands/worktree.js.map +1 -0
- package/dist/cli/help-groups.js +3 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +23 -6
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/domain/flow/authority.js +15 -1
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/isolation-unit.js +85 -0
- package/dist/domain/isolation-unit.js.map +1 -0
- package/package.json +1 -1
- package/skills/w/commands/spec-new.md +1 -1
- package/skills/w/hooks/README.md +1 -1
- package/skills/w/loops/CODE-POLICIES.md +6 -4
- package/skills/w/loops/plan-new-loop/LOOP.md +1 -1
- package/skills/w/loops/quick-loop/LOOP.md +1 -1
- package/skills/w/modules/PLAN-INPUT.md +1 -1
- package/skills/w/roles/git/ROLE.md +1 -1
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { parseUnitPath, unitBranch, unitPath, workspaceKey, } from "../domain/isolation-unit.js";
|
|
3
|
+
import { resolveSourceBranches } from "./branch-resolver.js";
|
|
4
|
+
import { runMultiroot } from "./multiroot-service.js";
|
|
5
|
+
import { normalizePath } from "./multiroot/paths.js";
|
|
6
|
+
import { readWorkspaceBlock } from "./parsers/project-block.js";
|
|
7
|
+
import { listSessionFolders, resolveSessionTarget } from "./session-resolver.js";
|
|
8
|
+
export async function runWorktree(deps, input) {
|
|
9
|
+
if (input.action === "list")
|
|
10
|
+
return listUnits(deps);
|
|
11
|
+
const target = await resolveTarget(deps, input);
|
|
12
|
+
if ("error" in target)
|
|
13
|
+
return target;
|
|
14
|
+
if (input.action === "ensure")
|
|
15
|
+
return ensureUnit(deps, target);
|
|
16
|
+
if (input.action === "integrate")
|
|
17
|
+
return integrateUnit(deps, target);
|
|
18
|
+
return releaseUnit(deps, target);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Merge the flow's branch into the source's declared working branch.
|
|
22
|
+
*
|
|
23
|
+
* **Merge and never rebase**, and the reason is not taste: the git port already
|
|
24
|
+
* carries merge plus the three-stage conflict machinery `aw fix-git` reads, so a
|
|
25
|
+
* conflict has somewhere to go. A rebase would need new primitives AND would
|
|
26
|
+
* rewrite commits the flow already treated as done.
|
|
27
|
+
*
|
|
28
|
+
* The ORDER is whoever closes last, and that is what makes the second
|
|
29
|
+
* integration start from what the first one left: the merge runs against the
|
|
30
|
+
* live branch in the main checkout, not against a snapshot taken earlier.
|
|
31
|
+
*/
|
|
32
|
+
async function integrateUnit(deps, target) {
|
|
33
|
+
const { source, path, branch, base, identity } = target;
|
|
34
|
+
if (!(await deps.git.isGitRepo(source.path))) {
|
|
35
|
+
return {
|
|
36
|
+
error: "not_a_repo",
|
|
37
|
+
message: `${source.alias} (${source.path}) no es un repositorio git`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const units = await deps.git.worktreeList(source.path);
|
|
41
|
+
if (!units.some((w) => samePath(w.path, path))) {
|
|
42
|
+
return {
|
|
43
|
+
error: "unit_absent",
|
|
44
|
+
message: `${source.alias} no tiene una unidad para ${identity.session}`,
|
|
45
|
+
hint: `creála con 'aw worktree ensure --source ${source.alias} --code ${identity.session}'`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Both preconditions are refusals BEFORE anything moves: a merge started over
|
|
49
|
+
// uncommitted work is the one state where "report the conflict" is no longer
|
|
50
|
+
// enough, because the losing side was never recorded anywhere.
|
|
51
|
+
if (await deps.git.isDirty(path)) {
|
|
52
|
+
return {
|
|
53
|
+
error: "unit_not_committed",
|
|
54
|
+
message: `la unidad de ${identity.session} tiene cambios sin commitear`,
|
|
55
|
+
hint: "commiteá el trabajo del flujo en su unidad antes de integrarlo",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (await deps.git.isDirty(source.path)) {
|
|
59
|
+
return {
|
|
60
|
+
error: "checkout_dirty",
|
|
61
|
+
message: `el checkout principal de ${source.alias} tiene cambios sin commitear`,
|
|
62
|
+
hint: "commiteá o guardá esos cambios: la integración no los va a mezclar con los del flujo",
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Never switch the user's branch to make the command succeed. The declared
|
|
66
|
+
// working branch is where the checkout is SUPPOSED to be — the git-safe
|
|
67
|
+
// invariant says so — and a checkout that is somewhere else is a state the
|
|
68
|
+
// person has to see, not one to be quietly corrected under a merge.
|
|
69
|
+
const current = await deps.git.currentBranch(source.path);
|
|
70
|
+
if (current !== base) {
|
|
71
|
+
return {
|
|
72
|
+
error: "checkout_off_branch",
|
|
73
|
+
message: `el checkout principal de ${source.alias} está en '${current}' y la integración va a '${base}'`,
|
|
74
|
+
hint: `posicioná el checkout en '${base}' y volvé a integrar; la integración nunca cambia de rama por su cuenta`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const merge = await deps.git.merge(source.path, branch);
|
|
78
|
+
if (!merge.ok) {
|
|
79
|
+
return {
|
|
80
|
+
alias: source.alias,
|
|
81
|
+
session: identity.session,
|
|
82
|
+
into: base,
|
|
83
|
+
branch,
|
|
84
|
+
integrated: false,
|
|
85
|
+
conflicted: merge.conflicted,
|
|
86
|
+
// The unit SURVIVES a conflict: its commits are the only copy of one side
|
|
87
|
+
// of the merge, and releasing it here would delete them to tidy up.
|
|
88
|
+
released: false,
|
|
89
|
+
next: `aw fix-git --path ${source.path}`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const release = await releaseUnit(deps, target);
|
|
93
|
+
return {
|
|
94
|
+
alias: source.alias,
|
|
95
|
+
session: identity.session,
|
|
96
|
+
into: base,
|
|
97
|
+
branch,
|
|
98
|
+
integrated: true,
|
|
99
|
+
conflicted: [],
|
|
100
|
+
released: "released" in release ? release.released : false,
|
|
101
|
+
next: null,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async function resolveTarget(deps, input) {
|
|
105
|
+
const block = await readWorkspaceBlock(deps.fs, deps.env.cwd(), deps.paths.blockMarkers());
|
|
106
|
+
const sources = block?.fuentes ?? [];
|
|
107
|
+
if (sources.length === 0) {
|
|
108
|
+
return {
|
|
109
|
+
error: "no_sources_declared",
|
|
110
|
+
message: "el bloque WORKSPACE no declara ninguna fuente",
|
|
111
|
+
hint: "declará la fuente en la tabla Fuentes antes de pedir una unidad",
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (input.alias === undefined) {
|
|
115
|
+
return {
|
|
116
|
+
error: "alias_required",
|
|
117
|
+
message: "no se indicó sobre qué fuente se pide la unidad",
|
|
118
|
+
hint: `usá --source con uno de: ${sources.map((s) => s.alias).join(", ")}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const source = sources.find((s) => s.alias === input.alias);
|
|
122
|
+
if (source === undefined) {
|
|
123
|
+
return {
|
|
124
|
+
error: "unknown_source",
|
|
125
|
+
message: `'${input.alias}' no es una fuente declarada`,
|
|
126
|
+
hint: `fuentes declaradas: ${sources.map((s) => s.alias).join(", ")}`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const resolution = await resolveSessionTarget(deps.fs, deps.paths, {
|
|
130
|
+
...(input.sessionCode !== undefined ? { code: input.sessionCode } : {}),
|
|
131
|
+
...(input.contextId !== undefined ? { contextId: input.contextId } : {}),
|
|
132
|
+
});
|
|
133
|
+
if (resolution.outcome !== "resolved") {
|
|
134
|
+
return {
|
|
135
|
+
error: "session_unresolved",
|
|
136
|
+
message: "una unidad de aislamiento pertenece a una sesión y no se pudo resolver cuál",
|
|
137
|
+
hint: "pasá --code <NNN> con la sesión del flujo",
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const session = resolution.session.folder;
|
|
141
|
+
const identity = {
|
|
142
|
+
workspaceKey: workspaceKey(deps.paths.workspaceDir()),
|
|
143
|
+
alias: source.alias,
|
|
144
|
+
session,
|
|
145
|
+
};
|
|
146
|
+
return {
|
|
147
|
+
source,
|
|
148
|
+
identity,
|
|
149
|
+
path: unitPath(await canonicalUnitsRoot(deps), identity),
|
|
150
|
+
branch: unitBranch(session),
|
|
151
|
+
base: resolveSourceBranches(source, block).work,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The units root in the OS's own spelling.
|
|
156
|
+
*
|
|
157
|
+
* Every comparison in this service is against a path GIT reported, and git
|
|
158
|
+
* resolves symlinks. Building ours from a non-canonical root would make
|
|
159
|
+
* `~/.workflow/worktrees/...` and the `/private/...` git answers with look like
|
|
160
|
+
* two different directories: `ensure` would never recognize its own unit, see
|
|
161
|
+
* its own branch as somebody else's, and refuse the flow its tree.
|
|
162
|
+
*/
|
|
163
|
+
async function canonicalUnitsRoot(deps) {
|
|
164
|
+
const root = deps.paths.userUnitsDir();
|
|
165
|
+
await deps.fs.mkdirp(root);
|
|
166
|
+
return deps.fs.realPath(root);
|
|
167
|
+
}
|
|
168
|
+
async function ensureUnit(deps, target) {
|
|
169
|
+
const { source, path, branch, base } = target;
|
|
170
|
+
if (!(await deps.git.isGitRepo(source.path))) {
|
|
171
|
+
return {
|
|
172
|
+
error: "not_a_repo",
|
|
173
|
+
message: `${source.alias} (${source.path}) no es un repositorio git`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// Vanished directories keep holding their branch until git is told, so the
|
|
177
|
+
// prune runs BEFORE the occupancy read — otherwise a unit whose folder the
|
|
178
|
+
// user deleted by hand would look occupied forever.
|
|
179
|
+
await deps.git.worktreePrune(source.path);
|
|
180
|
+
const existing = await deps.git.worktreeList(source.path);
|
|
181
|
+
const mine = existing.find((w) => samePath(w.path, path));
|
|
182
|
+
if (mine !== undefined) {
|
|
183
|
+
// Idempotent: the unit is already there, on its own branch.
|
|
184
|
+
return { ...unitOf(target, false), visibility: await attach(deps, path) };
|
|
185
|
+
}
|
|
186
|
+
const occupant = existing.find((w) => w.branch === branch);
|
|
187
|
+
if (occupant !== undefined) {
|
|
188
|
+
return {
|
|
189
|
+
error: "unit_occupied",
|
|
190
|
+
message: `la rama ${branch} ya está tomada por otro árbol de ${source.alias}`,
|
|
191
|
+
hint: "cerrá o liberá ese flujo, o usá la sesión que lo posee",
|
|
192
|
+
occupant: { path: occupant.path, branch },
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
await deps.fs.mkdirp(dirname(path));
|
|
196
|
+
// An existing branch is checked out, not recreated: a flow that released its
|
|
197
|
+
// unit and asks again must land back on its own commits, not on a fresh branch
|
|
198
|
+
// that silently drops them.
|
|
199
|
+
const from = (await deps.git.branchExists(source.path, branch)) ? null : base;
|
|
200
|
+
try {
|
|
201
|
+
await deps.git.worktreeAdd(source.path, path, branch, from);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
return {
|
|
205
|
+
error: "worktree_add_failed",
|
|
206
|
+
message: err.message,
|
|
207
|
+
hint: `verificá que la rama base '${base}' exista en ${source.alias}`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return { ...unitOf(target, true), visibility: await attach(deps, path) };
|
|
211
|
+
}
|
|
212
|
+
async function releaseUnit(deps, target) {
|
|
213
|
+
const { source, path, branch, identity } = target;
|
|
214
|
+
if (!(await deps.git.isGitRepo(source.path))) {
|
|
215
|
+
return {
|
|
216
|
+
error: "not_a_repo",
|
|
217
|
+
message: `${source.alias} (${source.path}) no es un repositorio git`,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const existing = await deps.git.worktreeList(source.path);
|
|
221
|
+
if (!existing.some((w) => samePath(w.path, path))) {
|
|
222
|
+
await deps.git.worktreePrune(source.path);
|
|
223
|
+
return {
|
|
224
|
+
alias: source.alias,
|
|
225
|
+
session: identity.session,
|
|
226
|
+
path,
|
|
227
|
+
branch,
|
|
228
|
+
released: false,
|
|
229
|
+
visibility: await detach(deps, path),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
await deps.git.worktreeRemove(source.path, path);
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
return {
|
|
237
|
+
error: "unit_not_clean",
|
|
238
|
+
message: err.message,
|
|
239
|
+
hint: "commiteá o descartá los cambios de la unidad y volvé a liberarla; nada se borra por la fuerza",
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
alias: source.alias,
|
|
244
|
+
session: identity.session,
|
|
245
|
+
path,
|
|
246
|
+
branch,
|
|
247
|
+
released: true,
|
|
248
|
+
visibility: await detach(deps, path),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
async function listUnits(deps) {
|
|
252
|
+
const block = await readWorkspaceBlock(deps.fs, deps.env.cwd(), deps.paths.blockMarkers());
|
|
253
|
+
const key = workspaceKey(deps.paths.workspaceDir());
|
|
254
|
+
const root = await canonicalUnitsRoot(deps);
|
|
255
|
+
const sessions = await sessionStates(deps);
|
|
256
|
+
const units = [];
|
|
257
|
+
const orphans = [];
|
|
258
|
+
const unreadable = [];
|
|
259
|
+
for (const source of block?.fuentes ?? []) {
|
|
260
|
+
if (!(await deps.git.isGitRepo(source.path)))
|
|
261
|
+
continue;
|
|
262
|
+
let trees;
|
|
263
|
+
try {
|
|
264
|
+
trees = await deps.git.worktreeList(source.path);
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
// Reported, never skipped in silence: a source whose trees cannot be read
|
|
268
|
+
// would otherwise show up as "no units", which is the one answer that is
|
|
269
|
+
// certainly wrong — its flows are exactly the ones nobody would clean up.
|
|
270
|
+
unreadable.push({ alias: source.alias, error: err.message });
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
for (const tree of trees) {
|
|
274
|
+
const identity = tree.main ? null : parseUnitPath(root, tree.path);
|
|
275
|
+
if (identity === null || identity.workspaceKey !== key)
|
|
276
|
+
continue;
|
|
277
|
+
const reason = orphanReason(identity.session, sessions, tree.prunable);
|
|
278
|
+
if (reason === null)
|
|
279
|
+
units.push(liveUnit(identity, source.path, tree));
|
|
280
|
+
else
|
|
281
|
+
orphans.push(orphanOf(identity, tree, reason));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return { workspace_key: key, units, orphans, unreadable };
|
|
285
|
+
}
|
|
286
|
+
function liveUnit(identity, sourcePath, tree) {
|
|
287
|
+
return {
|
|
288
|
+
alias: identity.alias,
|
|
289
|
+
source_path: sourcePath,
|
|
290
|
+
session: identity.session,
|
|
291
|
+
path: tree.path,
|
|
292
|
+
branch: tree.branch ?? unitBranch(identity.session),
|
|
293
|
+
created: false,
|
|
294
|
+
session_active: true,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
function orphanOf(identity, tree, reason) {
|
|
298
|
+
return {
|
|
299
|
+
alias: identity.alias,
|
|
300
|
+
session: identity.session,
|
|
301
|
+
path: tree.path,
|
|
302
|
+
branch: tree.branch,
|
|
303
|
+
reason,
|
|
304
|
+
release: `aw worktree release --source ${identity.alias} --code ${identity.session}`,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
async function sessionStates(deps) {
|
|
308
|
+
const folders = await listSessionFolders(deps.fs, deps.paths.cwdSessionsDir());
|
|
309
|
+
const active = new Set();
|
|
310
|
+
for (const folder of folders) {
|
|
311
|
+
// `.closed` is the only source of a session's state (the session resolver's
|
|
312
|
+
// own rule); re-deriving it from anything else would let the two disagree.
|
|
313
|
+
if (!(await deps.fs.exists(join(folder.path, ".closed"))))
|
|
314
|
+
active.add(folder.name);
|
|
315
|
+
}
|
|
316
|
+
return { known: new Set(folders.map((f) => f.name)), active };
|
|
317
|
+
}
|
|
318
|
+
/** Why a live worktree is no longer somebody's working unit — `null` when it still is. */
|
|
319
|
+
function orphanReason(session, sessions, prunable) {
|
|
320
|
+
if (prunable)
|
|
321
|
+
return "directory_missing";
|
|
322
|
+
if (!sessions.known.has(session))
|
|
323
|
+
return "session_absent";
|
|
324
|
+
if (!sessions.active.has(session))
|
|
325
|
+
return "session_closed";
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
function unitOf(target, created) {
|
|
329
|
+
return {
|
|
330
|
+
alias: target.source.alias,
|
|
331
|
+
source_path: target.source.path,
|
|
332
|
+
session: target.identity.session,
|
|
333
|
+
path: target.path,
|
|
334
|
+
branch: target.branch,
|
|
335
|
+
created,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Give the unit's root multi-root visibility, or say it could not be given.
|
|
340
|
+
*
|
|
341
|
+
* Units live outside every repository on purpose, so without this step the host
|
|
342
|
+
* simply cannot open the files the flow is supposed to edit. A visibility
|
|
343
|
+
* failure is reported, never swallowed: a unit nobody can see is not a usable
|
|
344
|
+
* unit, and the caller has to know which of the two it got.
|
|
345
|
+
*/
|
|
346
|
+
async function attach(deps, path) {
|
|
347
|
+
const result = await runMultiroot(deps.fs, deps.env, deps.paths, "attach", { paths: [path] });
|
|
348
|
+
return "error" in result ? "unavailable" : "attached";
|
|
349
|
+
}
|
|
350
|
+
async function detach(deps, path) {
|
|
351
|
+
const result = await runMultiroot(deps.fs, deps.env, deps.paths, "detach", { paths: [path] });
|
|
352
|
+
return "error" in result ? "unavailable" : "detached";
|
|
353
|
+
}
|
|
354
|
+
function samePath(a, b) {
|
|
355
|
+
return normalizePath(a) === normalizePath(b);
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=worktree-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-service.js","sourceRoot":"","sources":["../../src/application/worktree-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runCheckBranch } from "../../application/check-branch-service.js";
|
|
2
|
+
import { readContextId } from "../context-id.js";
|
|
2
3
|
import { flagValue } from "../parser.js";
|
|
3
4
|
export const checkBranchCommand = {
|
|
4
5
|
name: "check-branch",
|
|
@@ -19,6 +20,9 @@ export const checkBranchCommand = {
|
|
|
19
20
|
input.fileArg = fileArg;
|
|
20
21
|
if (session !== undefined)
|
|
21
22
|
input.sessionCode = session;
|
|
23
|
+
const contextId = readContextId(ctx.env);
|
|
24
|
+
if (contextId !== undefined)
|
|
25
|
+
input.contextId = contextId;
|
|
22
26
|
const data = await runCheckBranch(ctx.fs, ctx.env, ctx.git, ctx.paths, input);
|
|
23
27
|
const exit = strict && data.match === false ? 2 : 0;
|
|
24
28
|
return { ok: true, data, exitCode: exit };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-branch.js","sourceRoot":"","sources":["../../../src/cli/commands/check-branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1D,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,iDAAiD;IAC3D,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,2EAA2E;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAyC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"check-branch.js","sourceRoot":"","sources":["../../../src/cli/commands/check-branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1D,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,iDAAiD;IAC3D,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,2EAA2E;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAyC,EAAE,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;QACvD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAc,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;CACF,CAAC"}
|
|
@@ -41,16 +41,22 @@ export const logsCommand = {
|
|
|
41
41
|
};
|
|
42
42
|
export const nextNumberCommand = {
|
|
43
43
|
name: "next-number",
|
|
44
|
-
describe: "Compute next NNN correlative for a directory, creating it when missing. Usage: aw next-number <directorio> [--dry-run].",
|
|
44
|
+
describe: "Compute next NNN correlative for a directory, creating it when missing. With --claim <resto-del-nombre> the number is CLAIMED instead of consulted: the file is materialized under the workspace lock, so two concurrent flows never receive the same NNN. Usage: aw next-number <directorio> [--claim <resto-del-nombre>] [--dry-run].",
|
|
45
45
|
async execute(args, ctx) {
|
|
46
46
|
const dir = args.rest[0];
|
|
47
47
|
if (!dir) {
|
|
48
|
-
const usage = "uso: next-number <directorio> [--dry-run]";
|
|
48
|
+
const usage = "uso: next-number <directorio> [--claim <resto-del-nombre>] [--dry-run]";
|
|
49
49
|
return fail("INVALID_INPUT", usage, { error: usage });
|
|
50
50
|
}
|
|
51
|
-
const
|
|
51
|
+
const claim = args.values.get("claim");
|
|
52
|
+
if (claim !== undefined && args.flags.has("--dry-run")) {
|
|
53
|
+
const message = "--claim y --dry-run se excluyen: un reclamo escribe, una consulta no";
|
|
54
|
+
return fail("INVALID_INPUT", message, { error: message });
|
|
55
|
+
}
|
|
56
|
+
const data = await runNextNumber(ctx.fs, ctx.env, ctx.paths, {
|
|
52
57
|
directory: dir,
|
|
53
58
|
dryRun: args.flags.has("--dry-run"),
|
|
59
|
+
...(claim !== undefined ? { claim } : {}),
|
|
54
60
|
});
|
|
55
61
|
return { ok: true, data, exitCode: 0 };
|
|
56
62
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-only.js","sourceRoot":"","sources":["../../../src/cli/commands/dev-only.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,GACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,8EAA8E;AAC9E,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,mDAAmD,WAAW,2KAA2K;IACnP,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CACT,eAAe,EACf,qBAAqB,SAAS,uBAAuB,WAAW,EAAE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,+DAA+D;IACzE,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,GAAe;QAC9C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,mEAAmE;IAC7E,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,KAAK,GAAuC,EAAE,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACnE,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,IAAI,EAAE,aAAa;IACnB,QAAQ,EACN,
|
|
1
|
+
{"version":3,"file":"dev-only.js","sourceRoot":"","sources":["../../../src/cli/commands/dev-only.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,7 @@ import { stackCommand } from "./stack.js";
|
|
|
46
46
|
import { statusCommand } from "./status.js";
|
|
47
47
|
import { visibilityCommand } from "./visibility.js";
|
|
48
48
|
import { workspaceInitCommand } from "./workspace-init.js";
|
|
49
|
+
import { worktreeCommand } from "./worktree.js";
|
|
49
50
|
export const ALL_COMMANDS = [
|
|
50
51
|
sessionsCommand,
|
|
51
52
|
statusCommand,
|
|
@@ -84,6 +85,7 @@ export const ALL_COMMANDS = [
|
|
|
84
85
|
hookCommand,
|
|
85
86
|
mcpCommand,
|
|
86
87
|
visibilityCommand,
|
|
88
|
+
worktreeCommand,
|
|
87
89
|
harnessCommand,
|
|
88
90
|
profilesCommand,
|
|
89
91
|
logsCommand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export const resumeCommand = {
|
|
|
25
25
|
...(code !== undefined ? { code } : {}),
|
|
26
26
|
...(contextId !== undefined ? { contextId } : {}),
|
|
27
27
|
};
|
|
28
|
-
const outcome = await runResume(ctx.fs, ctx.env, ctx.paths, input);
|
|
28
|
+
const outcome = await runResume(ctx.fs, ctx.env, ctx.paths, { ...input, git: ctx.git });
|
|
29
29
|
if (outcome.status === "invalid_target") {
|
|
30
30
|
return {
|
|
31
31
|
ok: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,GACV,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,MAAM,CAAC,MAAM,aAAa,GAA8B;IACtD,IAAI,EAAE,QAAQ;IACd,QAAQ,EACN,wHAAwH;QACxH,8GAA8G;IAEhH,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,oEAAoE;iBAC9E;gBACD,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,8EAA8E;QAC9E,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAgB;YACzB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runSessionClose, } from "../../application/session-close-service.js";
|
|
2
|
+
import { runWorktree } from "../../application/worktree-service.js";
|
|
2
3
|
import { fail, failSessionResolution } from "../render.js";
|
|
3
4
|
export const sessionCloseCommand = {
|
|
4
5
|
name: "session-close",
|
|
@@ -12,7 +13,12 @@ export const sessionCloseCommand = {
|
|
|
12
13
|
const refs = args.values.get("refs");
|
|
13
14
|
if (refs !== undefined)
|
|
14
15
|
input.refs = refs;
|
|
15
|
-
|
|
16
|
+
// A close that stayed silent about the units the session still holds would
|
|
17
|
+
// be the one way a flow's uncommitted-upstream work disappears from view.
|
|
18
|
+
const data = await runSessionClose(ctx.fs, ctx.paths, input, async () => {
|
|
19
|
+
const listed = await runWorktree({ fs: ctx.fs, env: ctx.env, git: ctx.git, paths: ctx.paths }, { action: "list" });
|
|
20
|
+
return "units" in listed ? listed.units : [];
|
|
21
|
+
});
|
|
16
22
|
if ("sessionError" in data)
|
|
17
23
|
return failSessionResolution(data.sessionError);
|
|
18
24
|
if ("error" in data)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-close.js","sourceRoot":"","sources":["../../../src/cli/commands/session-close.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAChB,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"session-close.js","sourceRoot":"","sources":["../../../src/cli/commands/session-close.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAChB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAIpE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,IAAI,EAAE,eAAe;IACrB,QAAQ,EACN,6HAA6H;QAC7H,0DAA0D;IAC5D,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAE1C,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAC5D,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;YACF,OAAO,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,IAAI,IAAI;YAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;CACF,CAAC"}
|
|
@@ -4,7 +4,7 @@ export const statusCommand = {
|
|
|
4
4
|
describe: "Read-only workspace dashboard: specs, plans, sessions y descartados con fechas relativas en español. " +
|
|
5
5
|
"Usage: aw status [--format human|json] [--detail].",
|
|
6
6
|
async execute(_args, ctx) {
|
|
7
|
-
const data = await runStatusCommand(ctx.fs, ctx.env, ctx.paths);
|
|
7
|
+
const data = await runStatusCommand(ctx.fs, ctx.env, ctx.paths, { git: ctx.git });
|
|
8
8
|
return { ok: true, data, exitCode: 0 };
|
|
9
9
|
},
|
|
10
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAM7C,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,IAAI,EAAE,QAAQ;IACd,QAAQ,EACN,uGAAuG;QACvG,oDAAoD;IAEtD,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,GAAe;QAC9C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAM7C,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,IAAI,EAAE,QAAQ;IACd,QAAQ,EACN,uGAAuG;QACvG,oDAAoD;IAEtD,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,GAAe;QAC9C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAmC,EAAE,OAA2B;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,2DAA2D;QAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAyC;IACzD,gBAAgB,EAAE,mBAAmB;IACrC,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,mBAAmB,EAAE,qBAAqB;CAC3C,CAAC;AAEF,SAAS,cAAc,CAAC,QAAwB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAgC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAkB,EAAE,MAA0B;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IACzD,MAAM,KAAK,GAAG;QACZ,WAAW,KAAK,CAAC,QAAQ,CAAC,MAAM,iBAAiB,KAAK,eAAe,KAAK,WAAW,OAAO,aAAa,QAAQ,cAAc;KAChI,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9F,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACpD,KAAK,CAAC,IAAI,CACR,OAAO,GAAG,CAAC,EAAE,IAAI,iBAAiB,IAAI,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACjF,0EAA0E;QAC1E,mEAAmE;QACnE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAkB;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG;QACZ,cAAc,IAAI,CAAC,MAAM,qBAAqB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjE,aAAa,IAAI,CAAC,MAAM,CAAC,eAAe,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,aAAa;KAChG,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/E,2EAA2E;QAC3E,2EAA2E;QAC3E,iEAAiE;QACjE,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,+BAA+B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { runWorktree } from "../../application/worktree-service.js";
|
|
2
|
+
import { readContextId } from "../context-id.js";
|
|
3
|
+
import { flagValue } from "../parser.js";
|
|
4
|
+
import { fail } from "../render.js";
|
|
5
|
+
const ACTIONS = new Set(["ensure", "list", "release", "integrate"]);
|
|
6
|
+
export const worktreeCommand = {
|
|
7
|
+
name: "worktree",
|
|
8
|
+
describe: "Isolation unit of a flow: one git worktree of a source on its own branch, so concurrent flows never share a working tree. " +
|
|
9
|
+
"The unit lives at ~/<ns>/worktrees/<workspace>/<alias>/<session> on branch aw/<session>; the path IS the registry and " +
|
|
10
|
+
"`git worktree list` its live view. `integrate` merges the flow's branch into the source's declared working branch and gives the unit back; " +
|
|
11
|
+
"a conflict is reported with its files and routed to `aw fix-git --path`, never resolved on its own. " +
|
|
12
|
+
"Usage: aw worktree ensure|list|release|integrate [--source <alias>] [--code <NNN>].",
|
|
13
|
+
async execute(args, ctx) {
|
|
14
|
+
const action = args.rest[0];
|
|
15
|
+
if (action === undefined || !ACTIONS.has(action)) {
|
|
16
|
+
const usage = "uso: worktree ensure|list|release|integrate [--source <alias>] [--code <NNN>]";
|
|
17
|
+
return fail("INVALID_INPUT", usage, { error: usage });
|
|
18
|
+
}
|
|
19
|
+
const alias = flagValue(args, "source");
|
|
20
|
+
const code = args.values.get("code");
|
|
21
|
+
const contextId = readContextId(ctx.env);
|
|
22
|
+
const input = { action };
|
|
23
|
+
if (alias !== undefined)
|
|
24
|
+
input.alias = alias;
|
|
25
|
+
if (code !== undefined)
|
|
26
|
+
input.sessionCode = code;
|
|
27
|
+
if (contextId !== undefined)
|
|
28
|
+
input.contextId = contextId;
|
|
29
|
+
const data = await runWorktree({ fs: ctx.fs, env: ctx.env, git: ctx.git, paths: ctx.paths }, input);
|
|
30
|
+
if ("error" in data) {
|
|
31
|
+
// The unit is occupied by another live flow: a real, expected outcome of
|
|
32
|
+
// concurrency, so it exits non-zero with the occupant named instead of
|
|
33
|
+
// pretending the caller now owns a tree it does not.
|
|
34
|
+
return { ok: true, data, exitCode: 2 };
|
|
35
|
+
}
|
|
36
|
+
return { ok: true, data, exitCode: 0 };
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/cli/commands/worktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAExF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAmB,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,MAAM,OAAO,GAAG,IAAI,GAAG,CAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,UAAU;IAChB,QAAQ,EACN,4HAA4H;QAC5H,wHAAwH;QACxH,6IAA6I;QAC7I,sGAAsG;QACtG,qFAAqF;IACvF,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAwC,CAAC;QACnE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,+EAA+E,CAAC;YAC9F,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAkB,EAAE,MAAM,EAAE,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACjD,IAAI,SAAS,KAAK,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAC5D,KAAK,CACN,CAAC;QACF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,yEAAyE;YACzE,uEAAuE;YACvE,qDAAqD;YACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC"}
|
package/dist/cli/help-groups.js
CHANGED