borgmcp 0.9.12 → 0.9.15
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/assimilate-cmd.d.ts +11 -0
- package/dist/assimilate-cmd.d.ts.map +1 -1
- package/dist/assimilate-cmd.js +151 -79
- package/dist/assimilate-cmd.js.map +1 -1
- package/dist/shell-escape.d.ts +2 -0
- package/dist/shell-escape.d.ts.map +1 -0
- package/dist/shell-escape.js +22 -0
- package/dist/shell-escape.js.map +1 -0
- package/package.json +1 -1
package/dist/assimilate-cmd.d.ts
CHANGED
|
@@ -96,4 +96,15 @@ export declare function runAssimilate(args: AssimilateArgs, deps: AssimilateDeps
|
|
|
96
96
|
* trade-off accepted for shape simplicity.
|
|
97
97
|
*/
|
|
98
98
|
export declare function safeStderr(msg: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* Sprint 19 (gh#184): suggest the closest cube-role name for a misspelled
|
|
101
|
+
* CLI role argument. Levenshtein distance ≤2 against the cube's role
|
|
102
|
+
* names; case-insensitive. Returns null when no close match exists.
|
|
103
|
+
*
|
|
104
|
+
* Serves Queen's "more user-friendly" intent without violating the
|
|
105
|
+
* Borg-collective metaphor (collective defines roles; drones slot in).
|
|
106
|
+
* The original strict-failure semantic is preserved; the suggestion
|
|
107
|
+
* is an additive nudge in the error message, not a fallback path.
|
|
108
|
+
*/
|
|
109
|
+
export declare function suggestRoleName(input: string, candidates: string[]): string | null;
|
|
99
110
|
//# sourceMappingURL=assimilate-cmd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assimilate-cmd.d.ts","sourceRoot":"","sources":["../src/assimilate-cmd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"assimilate-cmd.d.ts","sourceRoot":"","sources":["../src/assimilate-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/assimilate-cmd.js
CHANGED
|
@@ -3,6 +3,7 @@ import { roleSlug, matchRoleByName, pickDefaultRole } from './role-resolver.js';
|
|
|
3
3
|
import { deriveCubeName, parseGitRemote, sanitizeRemoteUrl } from './cube-name.js';
|
|
4
4
|
import { validateName } from './name-validator.js';
|
|
5
5
|
import { renderAssimilationWelcome } from './assimilate-welcome.js';
|
|
6
|
+
import { shellEscape } from './shell-escape.js';
|
|
6
7
|
export async function runAssimilate(args, deps) {
|
|
7
8
|
// ----- Input validation (before any subprocess work) -----
|
|
8
9
|
if (args.role !== undefined) {
|
|
@@ -23,7 +24,7 @@ export async function runAssimilate(args, deps) {
|
|
|
23
24
|
let auth = await deps.getCachedAuth();
|
|
24
25
|
if (!auth) {
|
|
25
26
|
if (!deps.isTTY() && !args.flags.yes) {
|
|
26
|
-
deps.stderr('borg setup required and stdin is non-interactive. Run `borg setup` first in an interactive terminal
|
|
27
|
+
deps.stderr('borg setup required and stdin is non-interactive. Run `borg setup` first in an interactive terminal, then `borg assimilate`.\n');
|
|
27
28
|
return 1;
|
|
28
29
|
}
|
|
29
30
|
auth = await deps.runSetup();
|
|
@@ -41,16 +42,6 @@ export async function runAssimilate(args, deps) {
|
|
|
41
42
|
// UX-F4 (drone-7 Phase E review): emit a stderr nudge when the
|
|
42
43
|
// remote was readable but didn't parse, so the user has a signal
|
|
43
44
|
// that auto-derivation diverged from their git remote.
|
|
44
|
-
//
|
|
45
|
-
// BUG-1 fix (v0.9.2): the prior implementation used
|
|
46
|
-
// `cubeName === deriveCubeName(projectRoot, null)` as a proxy for
|
|
47
|
-
// "parse failed and we fell through to basename." False positive
|
|
48
|
-
// when the repo dir name matches the parsed remote name (which is
|
|
49
|
-
// the common case). Now we test parse success/failure directly by
|
|
50
|
-
// calling sanitizeRemoteUrl + parseGitRemote and emit the nudge
|
|
51
|
-
// only when the remote was readable, sanitization succeeded, but
|
|
52
|
-
// parsing returned null — the genuine "fell through to basename"
|
|
53
|
-
// case.
|
|
54
45
|
if (remoteUrl) {
|
|
55
46
|
const sanitized = sanitizeRemoteUrl(remoteUrl);
|
|
56
47
|
const parsedRepo = sanitized ? parseGitRemote(sanitized) : null;
|
|
@@ -63,61 +54,23 @@ export async function runAssimilate(args, deps) {
|
|
|
63
54
|
deps.stderr('could not derive cube name — pass --cube-name <name>\n');
|
|
64
55
|
return 1;
|
|
65
56
|
}
|
|
66
|
-
// -----
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// drone-orchestration is a code-development tool — an unborn-HEAD
|
|
81
|
-
// repo has no code to assimilate against, so failing fast is the
|
|
82
|
-
// right shape (per drone-1 dispatch's option (b)).
|
|
83
|
-
const headProbe = deps.runSync('git', ['rev-parse', '--verify', 'HEAD'], projectRoot);
|
|
84
|
-
if (headProbe.status !== 0) {
|
|
85
|
-
// drone-7 UX-FEEDBACK 2026-05-18T12:57:54Z: two-line shape names
|
|
86
|
-
// the cause + offers both fixes inline so users pick based on
|
|
87
|
-
// intent. `git commit --allow-empty` is the lowest-friction
|
|
88
|
-
// commit-creation path for genuinely-zero-work cases.
|
|
89
|
-
deps.stderr(`sibling worktree spawn requires HEAD pointing at a commit.\n` +
|
|
90
|
-
` Fix: create at least one commit (\`git commit --allow-empty -m "initial"\`)\n` +
|
|
91
|
-
` OR: pass --here to skip the sibling spawn and use the current directory\n`);
|
|
92
|
-
return 1;
|
|
93
|
-
}
|
|
94
|
-
const parent = dirname(projectRoot);
|
|
95
|
-
const repoBase = basename(projectRoot);
|
|
96
|
-
const suffix = args.flags.worktree ?? roleArgSlug ?? 'drone';
|
|
97
|
-
let candidate = join(parent, `${repoBase}-${suffix}`);
|
|
98
|
-
let n = 2;
|
|
99
|
-
while (deps.pathExists(candidate) || worktreeRegistered(deps, projectRoot, candidate)) {
|
|
100
|
-
candidate = join(parent, `${repoBase}-${suffix}-${n}`);
|
|
101
|
-
n++;
|
|
102
|
-
}
|
|
103
|
-
const wt = deps.runSync('git', ['worktree', 'add', '--detach', candidate], projectRoot);
|
|
104
|
-
if (wt.status !== 0) {
|
|
105
|
-
// Sprint 4 / gh#147 (drone-8 SR-PE-FINDING-1 defense-in-depth):
|
|
106
|
-
// raw git stderr can contain ANSI escapes if .git/config has been
|
|
107
|
-
// tampered with. Strip control chars before writing to the operator's
|
|
108
|
-
// terminal so a hostile config can't corrupt the display.
|
|
109
|
-
deps.stderr(`git worktree add failed: ${safeStderr(wt.stderr)}\n`);
|
|
110
|
-
return 1;
|
|
111
|
-
}
|
|
112
|
-
deps.stderr(`spawned sibling worktree at ${candidate}; ` +
|
|
113
|
-
`original dir is registered as active (edit ~/.config/borgmcp/cubes.json if stale).\n`);
|
|
114
|
-
deps.chdir(candidate);
|
|
115
|
-
}
|
|
116
|
-
const spawnedWorktreePath = wantSibling ? deps.cwd() : null;
|
|
117
|
-
// ----- Step 4: Cube existence check -----
|
|
57
|
+
// ----- Sprint 19 (gh#184): Reorder for strict-rollback semantics. -----
|
|
58
|
+
// The previous flow created a sibling worktree (FS state) BEFORE
|
|
59
|
+
// role resolution + API assimilate. Any early-return between
|
|
60
|
+
// worktree-spawn and API success orphaned the worktree (gh#184
|
|
61
|
+
// canonical case: unknown role arg). The new flow defers all FS
|
|
62
|
+
// state until AFTER the API assimilate succeeds — early-return at
|
|
63
|
+
// role resolution / listCubes / createCube / template-prompt /
|
|
64
|
+
// template-invalid-choice is now structurally clean (no orphan
|
|
65
|
+
// class possible). Worktree rollback narrows to the single
|
|
66
|
+
// setActiveCube failure path post-worktree-creation.
|
|
67
|
+
// Sprint 18: capture pre-chdir cwd for the post-exit shell-cd hint
|
|
68
|
+
// (no chdir has happened yet; this is a stable starting point).
|
|
69
|
+
const originalCwd = deps.cwd();
|
|
70
|
+
// ----- Step 3: Cube existence check -----
|
|
118
71
|
const allCubes = await deps.listCubes(auth.apiUrl, auth.token);
|
|
119
72
|
const existingCube = allCubes.find((c) => c.name === cubeName);
|
|
120
|
-
// ----- Step 4
|
|
73
|
+
// ----- Step 4: Fetch detail OR create cube -----
|
|
121
74
|
let cubeDetail;
|
|
122
75
|
let isFirstDrone;
|
|
123
76
|
if (existingCube) {
|
|
@@ -125,7 +78,7 @@ export async function runAssimilate(args, deps) {
|
|
|
125
78
|
isFirstDrone = false;
|
|
126
79
|
}
|
|
127
80
|
else {
|
|
128
|
-
// ----- Step
|
|
81
|
+
// ----- Step 4a: First-drone bootstrap (template selection) -----
|
|
129
82
|
let chosenTemplate;
|
|
130
83
|
if (args.flags.template) {
|
|
131
84
|
chosenTemplate = args.flags.template;
|
|
@@ -163,13 +116,20 @@ export async function runAssimilate(args, deps) {
|
|
|
163
116
|
cubeDetail = await deps.createCube(auth.apiUrl, auth.token, chosenTemplate ? { name: cubeName, template: chosenTemplate } : { name: cubeName });
|
|
164
117
|
isFirstDrone = true;
|
|
165
118
|
}
|
|
166
|
-
// ----- Step
|
|
119
|
+
// ----- Step 5: Role resolution -----
|
|
167
120
|
let resolvedRole;
|
|
168
121
|
if (args.role !== undefined) {
|
|
169
122
|
resolvedRole = matchRoleByName(cubeDetail.roles, args.role);
|
|
170
123
|
if (!resolvedRole) {
|
|
124
|
+
// Sprint 19 (gh#184) + drone-7 metaphor argument: include a
|
|
125
|
+
// fuzzy-match "did you mean ...?" suggestion to serve Queen's
|
|
126
|
+
// "more user-friendly" intent without violating the
|
|
127
|
+
// Borg-collective metaphor (collective defines roles; drones
|
|
128
|
+
// slot in). Levenshtein distance ≤2 on the cube's role names.
|
|
171
129
|
const available = cubeDetail.roles.map((r) => r.name).join(', ');
|
|
172
|
-
|
|
130
|
+
const suggestion = suggestRoleName(args.role, cubeDetail.roles.map((r) => r.name));
|
|
131
|
+
const suggestionLine = suggestion ? ` Did you mean "${suggestion}"?` : '';
|
|
132
|
+
deps.stderr(`no role matching "${args.role}" in cube "${cubeDetail.name}". Available: ${available}.${suggestionLine}\n` +
|
|
173
133
|
`(Use --template <name> on first-drone setup or run \`borg:create-role\` from inside Claude.)\n`);
|
|
174
134
|
return 1;
|
|
175
135
|
}
|
|
@@ -183,12 +143,7 @@ export async function runAssimilate(args, deps) {
|
|
|
183
143
|
return 1;
|
|
184
144
|
}
|
|
185
145
|
}
|
|
186
|
-
// ----- Step
|
|
187
|
-
// CR-PE-F2 (drone-2 Phase E review): wrap in try/catch and roll
|
|
188
|
-
// back the step-3 worktree on failure so partial state doesn't
|
|
189
|
-
// orphan a directory + git-registry entry. Best-effort rollback;
|
|
190
|
-
// if `git worktree remove` itself fails, surface a friendly
|
|
191
|
-
// manual-cleanup hint.
|
|
146
|
+
// ----- Step 6: API assimilate (no FS state yet — clean exit on failure) -----
|
|
192
147
|
let result;
|
|
193
148
|
try {
|
|
194
149
|
result = await deps.assimilate(auth.apiUrl, auth.token, {
|
|
@@ -196,6 +151,60 @@ export async function runAssimilate(args, deps) {
|
|
|
196
151
|
role_id: resolvedRole.id,
|
|
197
152
|
hostname: deps.getHostname(),
|
|
198
153
|
});
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
157
|
+
deps.stderr(`assimilate failed: ${message}\n`);
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
// ----- Step 7: Worktree decision (FS state ONLY after API success) -----
|
|
161
|
+
const existing = await deps.getActiveCube();
|
|
162
|
+
const wantSibling = args.flags.worktree !== undefined || existing !== null;
|
|
163
|
+
let spawnedWorktreePath = null;
|
|
164
|
+
if (wantSibling) {
|
|
165
|
+
if (existing && args.flags.here) {
|
|
166
|
+
deps.stderr(`this directory already hosts an active drone; remove --here or run from a fresh worktree\n`);
|
|
167
|
+
return 1;
|
|
168
|
+
}
|
|
169
|
+
// BUG-4 / gh#150 fix (v0.9.5): `git worktree add --detach <path>`
|
|
170
|
+
// fails with "fatal: not a valid object name: 'HEAD'" when the
|
|
171
|
+
// repo has no commits yet (unborn HEAD). Detect explicitly via
|
|
172
|
+
// `git rev-parse --verify HEAD` so we surface an actionable
|
|
173
|
+
// prerequisite error rather than git's cryptic internal message.
|
|
174
|
+
const headProbe = deps.runSync('git', ['rev-parse', '--verify', 'HEAD'], projectRoot);
|
|
175
|
+
if (headProbe.status !== 0) {
|
|
176
|
+
deps.stderr(`sibling worktree spawn requires HEAD pointing at a commit.\n` +
|
|
177
|
+
` Fix: create at least one commit (\`git commit --allow-empty -m "initial"\`)\n` +
|
|
178
|
+
` OR: pass --here to skip the sibling spawn and use the current directory\n`);
|
|
179
|
+
return 1;
|
|
180
|
+
}
|
|
181
|
+
const parent = dirname(projectRoot);
|
|
182
|
+
const repoBase = basename(projectRoot);
|
|
183
|
+
// Sprint 19: prefer the resolved role NAME for the worktree slug
|
|
184
|
+
// (cube-agnostic; matches the actual role assigned, not the user's
|
|
185
|
+
// CLI arg which may differ via case-insensitive matchRoleByName).
|
|
186
|
+
const suffix = args.flags.worktree ?? roleSlug(resolvedRole.name);
|
|
187
|
+
let candidate = join(parent, `${repoBase}-${suffix}`);
|
|
188
|
+
let n = 2;
|
|
189
|
+
while (deps.pathExists(candidate) || worktreeRegistered(deps, projectRoot, candidate)) {
|
|
190
|
+
candidate = join(parent, `${repoBase}-${suffix}-${n}`);
|
|
191
|
+
n++;
|
|
192
|
+
}
|
|
193
|
+
const wt = deps.runSync('git', ['worktree', 'add', '--detach', candidate], projectRoot);
|
|
194
|
+
if (wt.status !== 0) {
|
|
195
|
+
// Sprint 4 / gh#147 (drone-8 SR-PE-FINDING-1 defense-in-depth):
|
|
196
|
+
// strip control chars from raw git stderr before writing to the
|
|
197
|
+
// operator's terminal so a hostile .git/config can't corrupt it.
|
|
198
|
+
deps.stderr(`git worktree add failed: ${safeStderr(wt.stderr)}\n`);
|
|
199
|
+
return 1;
|
|
200
|
+
}
|
|
201
|
+
deps.stderr(`spawned sibling worktree at ${candidate}; ` +
|
|
202
|
+
`original dir is registered as active (edit ~/.config/borgmcp/cubes.json if stale).\n`);
|
|
203
|
+
deps.chdir(candidate);
|
|
204
|
+
spawnedWorktreePath = deps.cwd();
|
|
205
|
+
}
|
|
206
|
+
// ----- Step 8: setActiveCube (narrow rollback — worktree exists if spawned) -----
|
|
207
|
+
try {
|
|
199
208
|
await deps.setActiveCube({
|
|
200
209
|
cubeId: result.cube_id,
|
|
201
210
|
droneId: result.drone_id,
|
|
@@ -207,7 +216,7 @@ export async function runAssimilate(args, deps) {
|
|
|
207
216
|
}
|
|
208
217
|
catch (err) {
|
|
209
218
|
const message = err instanceof Error ? err.message : String(err);
|
|
210
|
-
deps.stderr(`
|
|
219
|
+
deps.stderr(`setActiveCube failed: ${message}\n`);
|
|
211
220
|
if (spawnedWorktreePath) {
|
|
212
221
|
const rm = deps.runSync('git', ['worktree', 'remove', '--force', spawnedWorktreePath], projectRoot);
|
|
213
222
|
if (rm.status === 0) {
|
|
@@ -229,12 +238,12 @@ export async function runAssimilate(args, deps) {
|
|
|
229
238
|
// real time — without this, drones miss real-time wake events during
|
|
230
239
|
// the bootstrap window and only self-heal at the /loop heartbeat.
|
|
231
240
|
deps.setTerminalTitle(result.drone_label, cubeDetail.name);
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
//
|
|
241
|
+
// Pedagogical hint to stdout before Claude takes over the terminal.
|
|
242
|
+
// Ink does not enter alt-screen-buffer (verified empirically via PTY
|
|
243
|
+
// probe 2026-05-19), so lines printed here remain visible in the
|
|
235
244
|
// user's terminal scrollback above Claude's interactive UI. Color is
|
|
236
|
-
// gated on TTY + NO_COLOR/CI env-var conventions; the welcome shape
|
|
237
|
-
// is cube-agnostic so non-default templates render identically.
|
|
245
|
+
// gated on TTY + NO_COLOR/CI env-var conventions; the welcome shape
|
|
246
|
+
// itself is cube-agnostic so non-default templates render identically.
|
|
238
247
|
const useColor = deps.isTTY() && !process.env.NO_COLOR && !process.env.CI;
|
|
239
248
|
deps.stdout(renderAssimilationWelcome(resolvedRole.name, cubeDetail.name, useColor));
|
|
240
249
|
const claudeCwd = deps.cwd(); // post-chdir if step 3 spawned a worktree
|
|
@@ -265,6 +274,19 @@ export async function runAssimilate(args, deps) {
|
|
|
265
274
|
monitorClause +
|
|
266
275
|
`Use a 30-minute (1800s) fallback heartbeat for ScheduleWakeup.`;
|
|
267
276
|
const exitCode = await deps.exec('claude', [kickoff], claudeCwd);
|
|
277
|
+
// Sprint 18: when a sibling worktree was spawned, the user's shell
|
|
278
|
+
// returns to their original cwd after Claude exits (process.chdir
|
|
279
|
+
// doesn't propagate to the parent). Emit a stderr hint so they know
|
|
280
|
+
// how to get back into the worktree. shellEscape defangs any shell
|
|
281
|
+
// metachars in the path against paste-injection (drone-11 SR-LANE).
|
|
282
|
+
// Skip the hint when no worktree was spawned (--here / no-worktree
|
|
283
|
+
// flow) or when originalCwd already matches the worktree path
|
|
284
|
+
// (defensive against the no-op edge case drone-9 UX-LANE flagged).
|
|
285
|
+
if (spawnedWorktreePath && originalCwd !== spawnedWorktreePath) {
|
|
286
|
+
deps.stderr(`\nSession ended. You're back in ${originalCwd}; the worktree is at ${spawnedWorktreePath}.\n` +
|
|
287
|
+
`To return to the worktree:\n` +
|
|
288
|
+
` cd ${shellEscape(spawnedWorktreePath)}\n`);
|
|
289
|
+
}
|
|
268
290
|
return exitCode;
|
|
269
291
|
}
|
|
270
292
|
/**
|
|
@@ -290,4 +312,54 @@ function worktreeRegistered(deps, projectRoot, candidate) {
|
|
|
290
312
|
return false;
|
|
291
313
|
return res.stdout.split('\n').some((line) => line === `worktree ${candidate}`);
|
|
292
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Sprint 19 (gh#184): suggest the closest cube-role name for a misspelled
|
|
317
|
+
* CLI role argument. Levenshtein distance ≤2 against the cube's role
|
|
318
|
+
* names; case-insensitive. Returns null when no close match exists.
|
|
319
|
+
*
|
|
320
|
+
* Serves Queen's "more user-friendly" intent without violating the
|
|
321
|
+
* Borg-collective metaphor (collective defines roles; drones slot in).
|
|
322
|
+
* The original strict-failure semantic is preserved; the suggestion
|
|
323
|
+
* is an additive nudge in the error message, not a fallback path.
|
|
324
|
+
*/
|
|
325
|
+
export function suggestRoleName(input, candidates) {
|
|
326
|
+
if (candidates.length === 0)
|
|
327
|
+
return null;
|
|
328
|
+
const inputLower = input.toLowerCase();
|
|
329
|
+
let best = null;
|
|
330
|
+
for (const candidate of candidates) {
|
|
331
|
+
const distance = levenshtein(inputLower, candidate.toLowerCase());
|
|
332
|
+
if (distance <= 2 && (best === null || distance < best.distance)) {
|
|
333
|
+
best = { name: candidate, distance };
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return best ? best.name : null;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Minimal Levenshtein distance implementation. Used only by
|
|
340
|
+
* `suggestRoleName` for the fuzzy-match nudge; intentionally
|
|
341
|
+
* unexported and not a general-purpose helper.
|
|
342
|
+
*/
|
|
343
|
+
function levenshtein(a, b) {
|
|
344
|
+
if (a === b)
|
|
345
|
+
return 0;
|
|
346
|
+
if (a.length === 0)
|
|
347
|
+
return b.length;
|
|
348
|
+
if (b.length === 0)
|
|
349
|
+
return a.length;
|
|
350
|
+
const prev = new Array(b.length + 1);
|
|
351
|
+
const curr = new Array(b.length + 1);
|
|
352
|
+
for (let j = 0; j <= b.length; j++)
|
|
353
|
+
prev[j] = j;
|
|
354
|
+
for (let i = 1; i <= a.length; i++) {
|
|
355
|
+
curr[0] = i;
|
|
356
|
+
for (let j = 1; j <= b.length; j++) {
|
|
357
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
358
|
+
curr[j] = Math.min(curr[j - 1] + 1, prev[j] + 1, prev[j - 1] + cost);
|
|
359
|
+
}
|
|
360
|
+
for (let j = 0; j <= b.length; j++)
|
|
361
|
+
prev[j] = curr[j];
|
|
362
|
+
}
|
|
363
|
+
return prev[b.length];
|
|
364
|
+
}
|
|
293
365
|
//# sourceMappingURL=assimilate-cmd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assimilate-cmd.js","sourceRoot":"","sources":["../src/assimilate-cmd.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assimilate-cmd.js","sourceRoot":"","sources":["../src/assimilate-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-escape.d.ts","sourceRoot":"","sources":["../src/shell-escape.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// POSIX-safe shell-escaping for paste-intended emission.
|
|
2
|
+
//
|
|
3
|
+
// Sprint 18 (gh-tracked via dispatch 10:41:47Z): when the CLI emits a
|
|
4
|
+
// `cd <path>` line for the user to copy-paste into their shell, the path is
|
|
5
|
+
// a filesystem-controlled string with no character constraints (unlike
|
|
6
|
+
// DB-CHECK-constrained role/cube names). Paths can legally contain spaces,
|
|
7
|
+
// `$VAR`, backticks, `$(cmd)`, embedded single-quotes, and other shell
|
|
8
|
+
// metacharacters that would execute on paste under naive emission.
|
|
9
|
+
//
|
|
10
|
+
// drone-11 SR-LANE (cube entry 2026-05-19T10:44:35Z) escalation: double-
|
|
11
|
+
// quoting handles spaces but `$VAR` / backtick / `$(cmd)` still expand
|
|
12
|
+
// inside double-quotes. Single-quotes with internal-quote escape (`'\''`
|
|
13
|
+
// = close-quote / escaped-quote / re-open-quote) defang every shell
|
|
14
|
+
// metachar including embedded `'`. POSIX-defined, copy-paste-runnable
|
|
15
|
+
// across bash / zsh / dash / sh.
|
|
16
|
+
//
|
|
17
|
+
// Behavior: returns the input wrapped in single-quotes with any internal
|
|
18
|
+
// `'` rewritten as `'\''`. Empty string returns `''`.
|
|
19
|
+
export function shellEscape(s) {
|
|
20
|
+
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=shell-escape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-escape.js","sourceRoot":"","sources":["../src/shell-escape.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,uEAAuE;AACvE,mEAAmE;AACnE,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,oEAAoE;AACpE,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,yEAAyE;AACzE,sDAAsD;AAEtD,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC"}
|