borgmcp 3.10.0 → 3.11.1
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 +14 -1
- package/dist/assimilate-cmd.d.ts.map +1 -1
- package/dist/assimilate-cmd.js +27 -15
- package/dist/assimilate-cmd.js.map +1 -1
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +33 -4
- package/dist/claude.js.map +1 -1
- package/dist/cli-help.d.ts +2 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +28 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/clone-cmd.d.ts +28 -0
- package/dist/clone-cmd.d.ts.map +1 -0
- package/dist/clone-cmd.js +227 -0
- package/dist/clone-cmd.js.map +1 -0
- package/dist/clone-security.d.ts +9 -0
- package/dist/clone-security.d.ts.map +1 -0
- package/dist/clone-security.js +41 -0
- package/dist/clone-security.js.map +1 -0
- package/dist/config-utils.d.ts +13 -12
- package/dist/config-utils.d.ts.map +1 -1
- package/dist/config-utils.js +150 -27
- package/dist/config-utils.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/launch-all-cmd.d.ts +11 -0
- package/dist/launch-all-cmd.d.ts.map +1 -1
- package/dist/launch-all-cmd.js +24 -2
- package/dist/launch-all-cmd.js.map +1 -1
- package/dist/opencode-drone.d.ts +10 -8
- package/dist/opencode-drone.d.ts.map +1 -1
- package/dist/opencode-drone.js +56 -46
- package/dist/opencode-drone.js.map +1 -1
- package/dist/opencode-launch-trust.d.ts +13 -0
- package/dist/opencode-launch-trust.d.ts.map +1 -0
- package/dist/opencode-launch-trust.js +40 -0
- package/dist/opencode-launch-trust.js.map +1 -0
- package/dist/opencode-plugin.d.ts +3 -0
- package/dist/opencode-plugin.d.ts.map +1 -1
- package/dist/opencode-plugin.js +26 -1
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/parse-clone-args.d.ts +17 -0
- package/dist/parse-clone-args.d.ts.map +1 -0
- package/dist/parse-clone-args.js +38 -0
- package/dist/parse-clone-args.js.map +1 -0
- package/dist/parse-quickstart-args.d.ts +18 -0
- package/dist/parse-quickstart-args.d.ts.map +1 -0
- package/dist/parse-quickstart-args.js +43 -0
- package/dist/parse-quickstart-args.js.map +1 -0
- package/dist/quickstart-cmd.d.ts +23 -0
- package/dist/quickstart-cmd.d.ts.map +1 -0
- package/dist/quickstart-cmd.js +357 -0
- package/dist/quickstart-cmd.js.map +1 -0
- package/dist/setup-confirm.d.ts +1 -1
- package/dist/setup-confirm.js +3 -3
- package/dist/setup-confirm.js.map +1 -1
- package/dist/unknown-subcommand.d.ts +1 -1
- package/dist/unknown-subcommand.d.ts.map +1 -1
- package/dist/unknown-subcommand.js +2 -0
- package/dist/unknown-subcommand.js.map +1 -1
- package/package.json +1 -1
- package/src/assimilate-cmd.ts +48 -15
- package/src/claude.ts +38 -4
- package/src/cli-help.ts +34 -1
- package/src/clone-cmd.ts +243 -0
- package/src/clone-security.ts +40 -0
- package/src/config-utils.ts +147 -23
- package/src/index.ts +7 -0
- package/src/launch-all-cmd.ts +37 -2
- package/src/opencode-drone.ts +71 -54
- package/src/opencode-launch-trust.ts +46 -0
- package/src/opencode-plugin.ts +31 -1
- package/src/parse-clone-args.ts +44 -0
- package/src/parse-quickstart-args.ts +54 -0
- package/src/quickstart-cmd.ts +396 -0
- package/src/setup-confirm.ts +3 -3
- package/src/unknown-subcommand.ts +2 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import { NEW_CUBE_TEMPLATE_PRESENTATIONS, getTemplate, } from 'borgmcp-shared/templates';
|
|
2
|
+
import { runAssimilate } from './assimilate-cmd.js';
|
|
3
|
+
import { buildDefaultAssimilateDeps } from './assimilate-deps.js';
|
|
4
|
+
import { readAllProjectIdentities } from './cubes.js';
|
|
5
|
+
import { buildDefaultLaunchAllDeps } from './launch-all-deps.js';
|
|
6
|
+
import { LAUNCH_ALL_NO_DISPATCH_EXIT_CODE, runLaunchAll } from './launch-all-cmd.js';
|
|
7
|
+
import { roleSlug } from './role-resolver.js';
|
|
8
|
+
import { DEFAULT_LOCAL_SERVER_ORIGIN } from './server-handshake.js';
|
|
9
|
+
export function buildDefaultQuickstartDeps() {
|
|
10
|
+
const io = buildDefaultAssimilateDeps();
|
|
11
|
+
return {
|
|
12
|
+
buildAssimilateDeps: buildDefaultAssimilateDeps,
|
|
13
|
+
buildLaunchAllDeps: buildDefaultLaunchAllDeps,
|
|
14
|
+
readAllProjectIdentities,
|
|
15
|
+
isTTY: io.isTTY,
|
|
16
|
+
prompt: io.prompt,
|
|
17
|
+
stdout: io.stdout,
|
|
18
|
+
stderr: io.stderr,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function plannedTemplateRoles(templateName) {
|
|
22
|
+
const template = getTemplate(templateName);
|
|
23
|
+
if (!template)
|
|
24
|
+
return [];
|
|
25
|
+
return template.roles.map((role) => ({
|
|
26
|
+
name: role.name,
|
|
27
|
+
slug: roleSlug(role.name),
|
|
28
|
+
isHumanSeat: role.is_human_seat === true,
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
function plannedServerRoles(roles) {
|
|
32
|
+
return roles.map((role) => ({
|
|
33
|
+
name: role.name,
|
|
34
|
+
slug: roleSlug(role.name),
|
|
35
|
+
isHumanSeat: role.is_human_seat,
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
function templatePresentation(name) {
|
|
39
|
+
const found = NEW_CUBE_TEMPLATE_PRESENTATIONS.find((candidate) => candidate.name === name);
|
|
40
|
+
return found ?? { label: name, short_description: '' };
|
|
41
|
+
}
|
|
42
|
+
function renderTemplateMenu() {
|
|
43
|
+
const rows = NEW_CUBE_TEMPLATE_PRESENTATIONS.flatMap((presentation, index) => {
|
|
44
|
+
const words = presentation.short_description.split(/\s+/);
|
|
45
|
+
const lines = [];
|
|
46
|
+
for (const word of words) {
|
|
47
|
+
const last = lines.at(-1);
|
|
48
|
+
if (!last || `${last} ${word}`.length > 42)
|
|
49
|
+
lines.push(word);
|
|
50
|
+
else
|
|
51
|
+
lines[lines.length - 1] = `${last} ${word}`;
|
|
52
|
+
}
|
|
53
|
+
return lines.map((line, lineIndex) => lineIndex === 0
|
|
54
|
+
? ` ${index + 1}) ${presentation.label.padEnd(22)}${line}`
|
|
55
|
+
: ` ${line}`);
|
|
56
|
+
});
|
|
57
|
+
rows[0] = `Template ${rows[0].trimStart()}`;
|
|
58
|
+
return `${rows.join('\n')}\n`;
|
|
59
|
+
}
|
|
60
|
+
async function selectTemplate(args, deps) {
|
|
61
|
+
if (args.template)
|
|
62
|
+
return args.template;
|
|
63
|
+
if (!deps.isTTY())
|
|
64
|
+
return NEW_CUBE_TEMPLATE_PRESENTATIONS[0].name;
|
|
65
|
+
deps.stdout(renderTemplateMenu());
|
|
66
|
+
while (true) {
|
|
67
|
+
let answer;
|
|
68
|
+
try {
|
|
69
|
+
answer = (await deps.prompt('Choose [1]: ')).trim();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
deps.stderr('\nborg quickstart: cancelled before anything was created.\n');
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const index = answer === '' ? 0 : /^\d+$/.test(answer) ? Number(answer) - 1 : -1;
|
|
76
|
+
const selected = NEW_CUBE_TEMPLATE_PRESENTATIONS[index];
|
|
77
|
+
if (selected)
|
|
78
|
+
return selected.name;
|
|
79
|
+
deps.stdout(`Choose 1-${NEW_CUBE_TEMPLATE_PRESENTATIONS.length}.\n`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function aggregateRequestedRoles(args, available) {
|
|
83
|
+
if (args.roles.length === 0)
|
|
84
|
+
return [...available];
|
|
85
|
+
const bySlug = new Map(available.map((role) => [role.slug, role]));
|
|
86
|
+
const requested = [];
|
|
87
|
+
for (const request of args.roles) {
|
|
88
|
+
const role = bySlug.get(request.slug);
|
|
89
|
+
if (!role)
|
|
90
|
+
return `no role '${request.slug}' exists in this cube; available: ${available.map((item) => item.slug).join(', ')}`;
|
|
91
|
+
for (let i = 0; i < request.count; i += 1)
|
|
92
|
+
requested.push(role);
|
|
93
|
+
}
|
|
94
|
+
return requested;
|
|
95
|
+
}
|
|
96
|
+
function renderRoleList(label, roles) {
|
|
97
|
+
const prefix = label.padEnd(12);
|
|
98
|
+
const continuation = ' '.repeat(12);
|
|
99
|
+
const lines = [];
|
|
100
|
+
for (let index = 0; index < roles.length; index += 1) {
|
|
101
|
+
const token = `${roles[index].slug}${index === roles.length - 1 ? '' : ','}`;
|
|
102
|
+
const candidate = lines.length === 0 ? token : `${lines.at(-1)} ${token}`;
|
|
103
|
+
if (lines.length === 0 || candidate.length <= 64) {
|
|
104
|
+
if (lines.length === 0)
|
|
105
|
+
lines.push(token);
|
|
106
|
+
else
|
|
107
|
+
lines[lines.length - 1] = candidate;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
lines.push(token);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return lines.map((line, index) => `${index === 0 ? prefix : continuation}${line}`).join('\n');
|
|
114
|
+
}
|
|
115
|
+
function affirmative(value) {
|
|
116
|
+
const answer = value.trim().toLowerCase();
|
|
117
|
+
return answer === '' || answer === 'y' || answer === 'yes';
|
|
118
|
+
}
|
|
119
|
+
export async function runQuickstart(args, deps) {
|
|
120
|
+
const assimilate = deps.buildAssimilateDeps();
|
|
121
|
+
let context;
|
|
122
|
+
try {
|
|
123
|
+
context = await assimilate.resolveRepositoryContext(assimilate.cwd());
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
context = null;
|
|
127
|
+
}
|
|
128
|
+
if (!context) {
|
|
129
|
+
deps.stderr('borg quickstart: run this command inside a non-bare Git repository.\n');
|
|
130
|
+
return 1;
|
|
131
|
+
}
|
|
132
|
+
let serverOrigin = null;
|
|
133
|
+
try {
|
|
134
|
+
serverOrigin = await assimilate.detectLocalServer();
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
serverOrigin = null;
|
|
138
|
+
}
|
|
139
|
+
if (!serverOrigin) {
|
|
140
|
+
deps.stderr(`borg quickstart: no Borg server is running at ${DEFAULT_LOCAL_SERVER_ORIGIN}.\n` +
|
|
141
|
+
'Start it in another terminal and leave it open:\n' +
|
|
142
|
+
' borg server start\n' +
|
|
143
|
+
'Then run `borg quickstart` again.\n');
|
|
144
|
+
return 1;
|
|
145
|
+
}
|
|
146
|
+
let connection;
|
|
147
|
+
try {
|
|
148
|
+
connection = await assimilate.connectServer(serverOrigin);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
deps.stderr(`borg quickstart: could not use the Borg server at ${serverOrigin}: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
152
|
+
return 1;
|
|
153
|
+
}
|
|
154
|
+
let existing = null;
|
|
155
|
+
try {
|
|
156
|
+
const repository = await assimilate.getRepositoryIdentity(context);
|
|
157
|
+
const saved = await assimilate.getRepositoryAssociation(connection.trustIdentity, repository);
|
|
158
|
+
if (saved) {
|
|
159
|
+
const cube = await assimilate.getCube(serverOrigin, connection.token, saved.cubeId, connection.trustIdentity);
|
|
160
|
+
existing = { cubeId: cube.id, cubeName: cube.name, template: saved.template, roles: plannedServerRoles(cube.roles) };
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const resolved = await assimilate.resolveRepositoryCube(serverOrigin, connection.token, { repository, workingRepoName: context.derivedName }, connection.trustIdentity);
|
|
164
|
+
if (resolved.result === 'resolved') {
|
|
165
|
+
const cube = await assimilate.getCube(serverOrigin, connection.token, resolved.cube_id, connection.trustIdentity);
|
|
166
|
+
existing = { cubeId: cube.id, cubeName: cube.name, template: resolved.template, roles: plannedServerRoles(cube.roles) };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
deps.stderr(`borg quickstart: could not inspect this repository's cube: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
172
|
+
return 1;
|
|
173
|
+
}
|
|
174
|
+
deps.stdout(`Repository ${context.derivedName}${context.publicRepository ? ` (origin: ${context.publicRepository.value})` : ''}\n`);
|
|
175
|
+
const template = existing?.template ?? await selectTemplate(args, deps);
|
|
176
|
+
if (!template)
|
|
177
|
+
return 130;
|
|
178
|
+
const availableRoles = existing?.roles ?? plannedTemplateRoles(template);
|
|
179
|
+
const humanSeatRole = availableRoles.find((role) => role.isHumanSeat);
|
|
180
|
+
const requested = aggregateRequestedRoles(args, availableRoles);
|
|
181
|
+
if (typeof requested === 'string') {
|
|
182
|
+
deps.stderr(`borg quickstart: ${requested}.\n`);
|
|
183
|
+
return 1;
|
|
184
|
+
}
|
|
185
|
+
// Resolve any multi-CLI choice before the whole-plan confirmation. Every
|
|
186
|
+
// assimilate call then receives the explicit choice and cannot prompt after
|
|
187
|
+
// the operator has approved the plan.
|
|
188
|
+
let selectedCli;
|
|
189
|
+
try {
|
|
190
|
+
selectedCli = await assimilate.resolveCli(undefined);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
deps.stderr(`borg quickstart: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
let identities = [];
|
|
197
|
+
try {
|
|
198
|
+
identities = existing ? await deps.readAllProjectIdentities() : [];
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
deps.stderr(`borg quickstart: could not read the local drone registry: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
202
|
+
return 1;
|
|
203
|
+
}
|
|
204
|
+
const existingByRole = new Map();
|
|
205
|
+
for (const identity of identities) {
|
|
206
|
+
if (identity.cube.cubeId !== existing?.cubeId || !identity.cube.roleName)
|
|
207
|
+
continue;
|
|
208
|
+
const slug = roleSlug(identity.cube.roleName);
|
|
209
|
+
const list = existingByRole.get(slug) ?? [];
|
|
210
|
+
list.push(identity);
|
|
211
|
+
existingByRole.set(slug, list);
|
|
212
|
+
}
|
|
213
|
+
const usedByRole = new Map();
|
|
214
|
+
const targets = [];
|
|
215
|
+
for (const role of requested) {
|
|
216
|
+
const used = usedByRole.get(role.slug) ?? 0;
|
|
217
|
+
const match = existingByRole.get(role.slug)?.[used];
|
|
218
|
+
targets.push({ role, ...(match ? { existing: match } : {}) });
|
|
219
|
+
usedByRole.set(role.slug, used + 1);
|
|
220
|
+
}
|
|
221
|
+
const have = targets.filter((target) => target.existing).map((target) => target.role);
|
|
222
|
+
const missing = targets.filter((target) => !target.existing).map((target) => target.role);
|
|
223
|
+
if (existing) {
|
|
224
|
+
deps.stdout(`Cube ${existing.cubeName} (existing)\n`);
|
|
225
|
+
if (have.length > 0)
|
|
226
|
+
deps.stdout(`${renderRoleList('Have', have)}\n`);
|
|
227
|
+
deps.stdout(missing.length > 0
|
|
228
|
+
? `${renderRoleList('Will create', missing)}\n`
|
|
229
|
+
: 'Will create nothing; every requested drone already exists\n');
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
deps.stdout(`Cube ${context.derivedName} (new, template: ${templatePresentation(template).label})\n`);
|
|
233
|
+
deps.stdout(`${renderRoleList('Drones', requested)}\n`);
|
|
234
|
+
}
|
|
235
|
+
if (!args.yes) {
|
|
236
|
+
if (!deps.isTTY()) {
|
|
237
|
+
deps.stderr('borg quickstart: confirmation requires an interactive terminal; rerun with --yes.\n');
|
|
238
|
+
return 1;
|
|
239
|
+
}
|
|
240
|
+
const prompt = existing
|
|
241
|
+
? 'Continue? [Y/n] '
|
|
242
|
+
: `Create and launch these ${requested.length} ${requested.length === 1 ? 'drone' : 'drones'}? [Y/n] `;
|
|
243
|
+
let answer;
|
|
244
|
+
try {
|
|
245
|
+
answer = await deps.prompt(prompt);
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
deps.stderr('\nborg quickstart: cancelled before anything was created.\n');
|
|
249
|
+
return 130;
|
|
250
|
+
}
|
|
251
|
+
if (!affirmative(answer)) {
|
|
252
|
+
deps.stdout('Cancelled. Nothing was created.\n');
|
|
253
|
+
return 0;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const runAssimilateImpl = deps.runAssimilate ?? runAssimilate;
|
|
257
|
+
for (const target of targets) {
|
|
258
|
+
if (target.existing)
|
|
259
|
+
continue;
|
|
260
|
+
let prepared;
|
|
261
|
+
let diagnostic = '';
|
|
262
|
+
const inner = deps.buildAssimilateDeps();
|
|
263
|
+
let code = 1;
|
|
264
|
+
try {
|
|
265
|
+
code = await runAssimilateImpl({
|
|
266
|
+
role: target.role.slug,
|
|
267
|
+
flags: {
|
|
268
|
+
server: serverOrigin,
|
|
269
|
+
yes: true,
|
|
270
|
+
cubeName: context.derivedName,
|
|
271
|
+
template,
|
|
272
|
+
cli: selectedCli,
|
|
273
|
+
},
|
|
274
|
+
}, {
|
|
275
|
+
...inner,
|
|
276
|
+
stdout: (text) => { diagnostic += text; },
|
|
277
|
+
stderr: (text) => { diagnostic += text; },
|
|
278
|
+
}, {
|
|
279
|
+
launch: false,
|
|
280
|
+
onPrepared: (value) => { prepared = value; },
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
diagnostic += `${error instanceof Error ? error.message : String(error)}\n`;
|
|
285
|
+
}
|
|
286
|
+
const assignedRoleSlug = prepared ? roleSlug(prepared.roleName) : null;
|
|
287
|
+
const roleMismatch = assignedRoleSlug !== null && assignedRoleSlug !== target.role.slug;
|
|
288
|
+
if (code !== 0 || !prepared || roleMismatch) {
|
|
289
|
+
deps.stderr(`✗ ${target.role.slug}\n`);
|
|
290
|
+
if (diagnostic)
|
|
291
|
+
deps.stderr(diagnostic);
|
|
292
|
+
if (roleMismatch) {
|
|
293
|
+
deps.stderr(`borg quickstart: requested ${target.role.slug}, but the server assigned ${assignedRoleSlug}. ` +
|
|
294
|
+
`The assigned drone was kept; it does not fill the requested ${target.role.slug} slot.\n`);
|
|
295
|
+
}
|
|
296
|
+
const completed = targets.filter((item) => item.existing).length;
|
|
297
|
+
const remaining = targets.filter((item) => !item.existing).map((item) => item.role);
|
|
298
|
+
deps.stderr(`Stopped. ${completed} of ${requested.length} drones exist; ${remaining.map((role) => role.slug).join(', ')} ${remaining.length === 1 ? 'is' : 'are'} missing.\n` +
|
|
299
|
+
`Fix the cause above, then run \`borg quickstart\` again — it continues from here and does not touch the drones that already exist.\n`);
|
|
300
|
+
return 1;
|
|
301
|
+
}
|
|
302
|
+
target.existing = {
|
|
303
|
+
projectPath: prepared.worktree,
|
|
304
|
+
cube: {
|
|
305
|
+
cubeId: prepared.cubeId,
|
|
306
|
+
droneId: prepared.droneId,
|
|
307
|
+
name: prepared.cubeName,
|
|
308
|
+
droneLabel: prepared.droneLabel,
|
|
309
|
+
apiUrl: serverOrigin,
|
|
310
|
+
sessionToken: '',
|
|
311
|
+
roleName: prepared.roleName,
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
deps.stdout(`✓ ${target.role.slug.padEnd(20)}${prepared.worktree}\n`);
|
|
315
|
+
}
|
|
316
|
+
const droneIds = targets.flatMap((target) => target.existing ? [target.existing.cube.droneId] : []);
|
|
317
|
+
const firstTarget = targets.find((target) => target.existing)?.existing?.cube;
|
|
318
|
+
const cubeName = firstTarget?.name ?? existing?.cubeName ?? context.derivedName;
|
|
319
|
+
const cubeId = firstTarget?.cubeId ?? existing?.cubeId;
|
|
320
|
+
if (!cubeId) {
|
|
321
|
+
deps.stderr('borg quickstart: the staffed cube identity could not be confirmed; run `borg quickstart` again.\n');
|
|
322
|
+
return 1;
|
|
323
|
+
}
|
|
324
|
+
deps.stdout(`Launching ${droneIds.length} sessions.\n`);
|
|
325
|
+
let launchOutput = '';
|
|
326
|
+
const launchDeps = deps.buildLaunchAllDeps();
|
|
327
|
+
let launchCode = 1;
|
|
328
|
+
try {
|
|
329
|
+
launchCode = await (deps.runLaunchAll ?? runLaunchAll)({ cubeName, flags: { yes: true } }, {
|
|
330
|
+
...launchDeps,
|
|
331
|
+
stdout: (text) => { launchOutput += text; },
|
|
332
|
+
stderr: (text) => { launchOutput += text; },
|
|
333
|
+
}, { droneIds, requireAllRequested: true, targetCube: { cubeId, name: cubeName } });
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
launchOutput += `${error instanceof Error ? error.message : String(error)}\n`;
|
|
337
|
+
}
|
|
338
|
+
if (launchCode !== 0) {
|
|
339
|
+
if (launchOutput)
|
|
340
|
+
deps.stderr(launchOutput);
|
|
341
|
+
deps.stderr(launchCode === LAUNCH_ALL_NO_DISPATCH_EXIT_CODE
|
|
342
|
+
? 'No sessions were launched: this environment has no terminal or tmux backend. Run `borg launch-all` to print the commands, then paste them.\n'
|
|
343
|
+
: 'The drones were created, but one or more sessions did not launch. Fix the cause above, then run `borg launch-all`.\n');
|
|
344
|
+
return 1;
|
|
345
|
+
}
|
|
346
|
+
deps.stdout(`✓ Cube \`${cubeName}\` is staffed. ${droneIds.length} ${droneIds.length === 1 ? 'drone' : 'drones'} launched.\n`);
|
|
347
|
+
const human = targets.find((target) => target.role.isHumanSeat && target.existing);
|
|
348
|
+
if (human?.existing) {
|
|
349
|
+
deps.stdout(`Start in the ${human.role.slug} session (\`${human.existing.cube.droneLabel}\`) and tell it what\n` +
|
|
350
|
+
'you want built. It dispatches the rest.\n');
|
|
351
|
+
}
|
|
352
|
+
else if (humanSeatRole) {
|
|
353
|
+
deps.stdout(`Start a ${humanSeatRole.name} session later with: borg assimilate ${humanSeatRole.slug}\n`);
|
|
354
|
+
}
|
|
355
|
+
return 0;
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=quickstart-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart-cmd.js","sourceRoot":"","sources":["../src/quickstart-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,WAAW,GAEZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAsB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,QAAQ,EAAa,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AA2BpE,MAAM,UAAU,0BAA0B;IACxC,MAAM,EAAE,GAAG,0BAA0B,EAAE,CAAC;IACxC,OAAO;QACL,mBAAmB,EAAE,0BAA0B;QAC/C,kBAAkB,EAAE,yBAAyB;QAC7C,wBAAwB;QACxB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,MAAM,EAAE,EAAE,CAAC,MAAM;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAoB;IAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,WAAW,EAAE,IAAI,CAAC,aAAa,KAAK,IAAI;KACzC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAsB;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,WAAW,EAAE,IAAI,CAAC,aAAa;KAChC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3F,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;QAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBACxD,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC;YACnD,CAAC,CAAC,eAAe,KAAK,GAAG,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;YACrE,CAAC,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;IAC/C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAoB,EAAE,IAAoB;IACtE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,YAAY,+BAA+B,CAAC,MAAM,KAAK,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAoB,EAAE,SAAiC;IACtF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,YAAY,OAAO,CAAC,IAAI,qCAAqC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,KAA6B;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBACrC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAoB,EAAE,IAAoB;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9C,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CACT,iDAAiD,2BAA2B,KAAK;YACjF,mDAAmD;YACnD,uBAAuB;YACvB,qCAAqC,CACtC,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,UAAU,CAAC;IACf,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,qDAAqD,YAAY,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9I,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,GAAwB,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC9F,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9G,QAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,qBAAqB,CACrD,YAAY,EACZ,UAAU,CAAC,KAAK,EAChB,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,EACpD,UAAU,CAAC,aAAa,CACzB,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAClH,QAAQ,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1H,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,8DAA8D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtI,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrI,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1B,MAAM,cAAc,GAAG,QAAQ,EAAE,KAAK,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,sCAAsC;IACtC,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,UAAU,GAAqD,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,6DAA6D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrI,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4D,CAAC;IAC3F,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,OAAO,GAAuF,EAAE,CAAC;IACvG,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1F,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,eAAe,QAAQ,CAAC,QAAQ,eAAe,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI;YAC/C,CAAC,CAAC,6DAA6D,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,eAAe,OAAO,CAAC,WAAW,oBAAoB,oBAAoB,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAC7G,IAAI,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,qFAAqF,CAAC,CAAC;YACnG,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,2BAA2B,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC;QACzG,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC;IAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ;YAAE,SAAS;QAC9B,IAAI,QAA0C,CAAC;QAC/C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,iBAAiB,CAAC;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;gBACtB,KAAK,EAAE;oBACL,MAAM,EAAE,YAAY;oBACpB,GAAG,EAAE,IAAI;oBACT,QAAQ,EAAE,OAAO,CAAC,WAAW;oBAC7B,QAAQ;oBACR,GAAG,EAAE,WAAW;iBACjB;aACF,EAAE;gBACD,GAAG,KAAK;gBACR,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;gBACzC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;aAC1C,EAAE;gBACD,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9E,CAAC;QACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,YAAY,GAAG,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACxF,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YACvC,IAAI,UAAU;gBAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CACT,8BAA8B,MAAM,CAAC,IAAI,CAAC,IAAI,6BAA6B,gBAAgB,IAAI;oBAC/F,+DAA+D,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAC1F,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACjE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,IAAI,CAAC,MAAM,CACT,YAAY,SAAS,OAAO,SAAS,CAAC,MAAM,kBAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa;gBACjK,sIAAsI,CACvI,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG;YAChB,WAAW,EAAE,QAAQ,CAAC,QAAQ;YAC9B,IAAI,EAAE;gBACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE,YAAY;gBACpB,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B;SACF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC;IAC9E,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,IAAI,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAChF,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC,MAAM,CAAC,mGAAmG,CAAC,CAAC;QACjH,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;IACxD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,CACpD,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAClC;YACE,GAAG,UAAU;YACb,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;SAC5C,EACD,EAAE,QAAQ,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAChF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAChF,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,YAAY;YAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,gCAAgC;YACzD,CAAC,CAAC,8IAA8I;YAChJ,CAAC,CAAC,sHAAsH,CAAC,CAAC;QAC5H,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,QAAQ,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,cAAc,CAAC,CAAC;IAC/H,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnF,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CACT,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,wBAAwB;YACpG,2CAA2C,CAC5C,CAAC;IACJ,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,aAAa,CAAC,IAAI,wCAAwC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/setup-confirm.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export interface ConfigMutationTarget {
|
|
|
26
26
|
* agent CLIs. Paths mirror `config-utils.ts`:
|
|
27
27
|
* Claude Code: ~/.claude.json (MCP server) + ~/.claude/settings.json (hook)
|
|
28
28
|
* Codex: ~/.codex/config.toml (MCP server) + ~/.codex/hooks.json (hooks)
|
|
29
|
-
* OpenCode: ~/.config/opencode/
|
|
29
|
+
* OpenCode: effective global config under ~/.config/opencode/ (MCP server)
|
|
30
30
|
*/
|
|
31
31
|
export declare function configMutationTargets(deps: {
|
|
32
32
|
claude: boolean;
|
package/dist/setup-confirm.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* agent CLIs. Paths mirror `config-utils.ts`:
|
|
21
21
|
* Claude Code: ~/.claude.json (MCP server) + ~/.claude/settings.json (hook)
|
|
22
22
|
* Codex: ~/.codex/config.toml (MCP server) + ~/.codex/hooks.json (hooks)
|
|
23
|
-
* OpenCode: ~/.config/opencode/
|
|
23
|
+
* OpenCode: effective global config under ~/.config/opencode/ (MCP server)
|
|
24
24
|
*/
|
|
25
25
|
export function configMutationTargets(deps) {
|
|
26
26
|
const targets = [];
|
|
@@ -46,8 +46,8 @@ export function configMutationTargets(deps) {
|
|
|
46
46
|
}
|
|
47
47
|
if (deps.opencode) {
|
|
48
48
|
targets.push({
|
|
49
|
-
file: '~/.config/opencode/
|
|
50
|
-
change: '
|
|
49
|
+
file: '~/.config/opencode/',
|
|
50
|
+
change: 'updates the effective global OpenCode configuration to register the borg MCP server (with BORG_SESSION activation)',
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
return targets;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-confirm.js","sourceRoot":"","sources":["../src/setup-confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAIrC;IACC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,8BAA8B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,4CAA4C;SACrD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"setup-confirm.js","sourceRoot":"","sources":["../src/setup-confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAIrC;IACC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,8BAA8B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,4CAA4C;SACrD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,oHAAoH;SAC7H,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA+B;IAE/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,IAAI,CACR,gFAAgF,CACjF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAiBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAA+B;IAE/B,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC,CAAC,gCAAgC;IACnE,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,CAAC,2BAA2B;IAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,+BAA+B;IAChE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAAC,IASpC;IACC,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* (`--cli`, `--remote`, agent passthrough, …) still fall through to launch.
|
|
12
12
|
*/
|
|
13
13
|
/** The subcommands the claude.ts router dispatches on (lines 107-176). */
|
|
14
|
-
export declare const KNOWN_SUBCOMMANDS: readonly ["setup", "update", "doctor", "assimilate", "reset-local-connection", "recover-enrollment", "spawn", "cleanup", "drones", "launch", "launch-all", "server"];
|
|
14
|
+
export declare const KNOWN_SUBCOMMANDS: readonly ["setup", "update", "doctor", "clone", "quickstart", "assimilate", "reset-local-connection", "recover-enrollment", "spawn", "cleanup", "drones", "launch", "launch-all", "server"];
|
|
15
15
|
/**
|
|
16
16
|
* Returns the offending command string when argv[2] is an unknown non-flag
|
|
17
17
|
* positional (caller should error + exit 1), or null when it's bare `borg`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unknown-subcommand.d.ts","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"unknown-subcommand.d.ts","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,6LAepB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unknown-subcommand.js","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,wBAAwB;IACxB,oBAAoB;IACpB,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,QAAQ;CACA,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IACtE,IAAK,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,OAAO,KAAK,CAAC,CAAC,wCAAwC;AACxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"unknown-subcommand.js","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,wBAAwB;IACxB,oBAAoB;IACpB,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,QAAQ;CACA,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IACtE,IAAK,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,OAAO,KAAK,CAAC,CAAC,wCAAwC;AACxD,CAAC"}
|
package/package.json
CHANGED
package/src/assimilate-cmd.ts
CHANGED
|
@@ -45,6 +45,12 @@ import {
|
|
|
45
45
|
} from './gc-orphan-inboxes.js';
|
|
46
46
|
import { installBorgPlugin } from './opencode-plugin.js';
|
|
47
47
|
import { allocateOpenCodePort, connectOpenCodeDrone, createOpenCodeLaunchKickoff, injectInitialKickoff } from './opencode-drone.js';
|
|
48
|
+
import {
|
|
49
|
+
BORG_OPENCODE_LAUNCH_CORRELATION_ENV,
|
|
50
|
+
OPENCODE_SERVER_PASSWORD_ENV,
|
|
51
|
+
OPENCODE_SERVER_USERNAME,
|
|
52
|
+
OPENCODE_SERVER_USERNAME_ENV,
|
|
53
|
+
} from './opencode-launch-trust.js';
|
|
48
54
|
import { ensureCliMcpConfigured } from './ensure-mcp-config.js';
|
|
49
55
|
import { normalizeServerEndpoint } from './server-endpoint.js';
|
|
50
56
|
import { DEFAULT_LOCAL_SERVER_ORIGIN } from './server-handshake.js';
|
|
@@ -126,6 +132,21 @@ export interface AssimilateArgs {
|
|
|
126
132
|
mode?: 'assimilate' | 'cube-init';
|
|
127
133
|
}
|
|
128
134
|
|
|
135
|
+
export interface PreparedAssimilation {
|
|
136
|
+
cubeId: string;
|
|
137
|
+
cubeName: string;
|
|
138
|
+
droneId: string;
|
|
139
|
+
droneLabel: string;
|
|
140
|
+
roleName: string;
|
|
141
|
+
worktree: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface RunAssimilateOptions {
|
|
145
|
+
/** Internal composition seam for quickstart; the public assimilate command always launches. */
|
|
146
|
+
launch?: boolean;
|
|
147
|
+
onPrepared?: (prepared: PreparedAssimilation) => void;
|
|
148
|
+
}
|
|
149
|
+
|
|
129
150
|
export interface CubeSummary {
|
|
130
151
|
id: string;
|
|
131
152
|
name: string;
|
|
@@ -702,7 +723,8 @@ function diagnoseSessionTermination(
|
|
|
702
723
|
|
|
703
724
|
export async function runAssimilate(
|
|
704
725
|
args: AssimilateArgs,
|
|
705
|
-
deps: AssimilateDeps
|
|
726
|
+
deps: AssimilateDeps,
|
|
727
|
+
options: RunAssimilateOptions = {},
|
|
706
728
|
): Promise<number> {
|
|
707
729
|
const mode = args.mode ?? 'assimilate';
|
|
708
730
|
// ----- Input validation (before any subprocess work) -----
|
|
@@ -2033,6 +2055,24 @@ export async function runAssimilate(
|
|
|
2033
2055
|
/* gh#793: orphan GC is best-effort — never block or fail the assimilate */
|
|
2034
2056
|
}
|
|
2035
2057
|
|
|
2058
|
+
// The project hook belongs to a prepared drone, not to the terminal handoff.
|
|
2059
|
+
// Quickstart suppresses only that handoff and later launches through launch-all.
|
|
2060
|
+
try {
|
|
2061
|
+
deps.installProjectSessionHook(agentCwd);
|
|
2062
|
+
} catch {
|
|
2063
|
+
deps.stderr(`warning: could not install the project-local SessionStart hook in ${agentCwd}; it will be re-attempted on the next borg launch\n`);
|
|
2064
|
+
}
|
|
2065
|
+
|
|
2066
|
+
options.onPrepared?.({
|
|
2067
|
+
cubeId: result.cube_id,
|
|
2068
|
+
cubeName: cubeDetail.name,
|
|
2069
|
+
droneId: result.drone_id,
|
|
2070
|
+
droneLabel: result.drone_label,
|
|
2071
|
+
roleName: assignedRole.name,
|
|
2072
|
+
worktree: seatWorktree,
|
|
2073
|
+
});
|
|
2074
|
+
if (options.launch === false) return 0;
|
|
2075
|
+
|
|
2036
2076
|
// ----- Step 8: Launch selected agent CLI -----
|
|
2037
2077
|
// Mirrors the kickoff invocation from claude.ts (no-args path): the agent
|
|
2038
2078
|
// picks up the newly-persisted ActiveCube via the MCP stdio server on
|
|
@@ -2060,17 +2100,6 @@ export async function runAssimilate(
|
|
|
2060
2100
|
),
|
|
2061
2101
|
);
|
|
2062
2102
|
|
|
2063
|
-
// gh#673 P2 (WI-1): install the project-local SessionStart orientation
|
|
2064
|
-
// hook into the launch root — covers BOTH the freshly-spawned sibling
|
|
2065
|
-
// worktree (agentCwd = the new worktree post-chdir) and the in-place /
|
|
2066
|
-
// --here path. Best-effort: a hook-install failure must never block
|
|
2067
|
-
// the assimilate (the bare-`borg` launcher re-ensures it).
|
|
2068
|
-
try {
|
|
2069
|
-
deps.installProjectSessionHook(agentCwd);
|
|
2070
|
-
} catch {
|
|
2071
|
-
deps.stderr(`warning: could not install the project-local SessionStart hook in ${agentCwd}; it will be re-attempted on the next borg launch\n`);
|
|
2072
|
-
}
|
|
2073
|
-
|
|
2074
2103
|
// BUG-5 / v0.9.3: probe MCP readiness before launching claude so
|
|
2075
2104
|
// the launched session sees tools at startup. Non-blocking: probe
|
|
2076
2105
|
// failure surfaces a stderr warning but the launch proceeds (the
|
|
@@ -2147,9 +2176,9 @@ export async function runAssimilate(
|
|
|
2147
2176
|
monitorClause,
|
|
2148
2177
|
codexWakePathClause,
|
|
2149
2178
|
});
|
|
2150
|
-
// Keep
|
|
2151
|
-
//
|
|
2152
|
-
//
|
|
2179
|
+
// Keep launch trust separate from the shared kickoff. OpenCode receives the
|
|
2180
|
+
// same prompt text; its plugin adds the correlation identity to hidden
|
|
2181
|
+
// TextPart metadata instead of argv or prompt content.
|
|
2153
2182
|
let openCodeKickoff: ReturnType<typeof createOpenCodeLaunchKickoff> | null = null;
|
|
2154
2183
|
let dronePort: number | undefined;
|
|
2155
2184
|
launchArgs = [kickoff];
|
|
@@ -2179,6 +2208,9 @@ export async function runAssimilate(
|
|
|
2179
2208
|
installBorgPlugin();
|
|
2180
2209
|
const cwd = agentCwd;
|
|
2181
2210
|
openCodeKickoff = createOpenCodeLaunchKickoff(kickoff);
|
|
2211
|
+
childEnv[OPENCODE_SERVER_USERNAME_ENV] = OPENCODE_SERVER_USERNAME;
|
|
2212
|
+
childEnv[OPENCODE_SERVER_PASSWORD_ENV] = openCodeKickoff.apiPassword;
|
|
2213
|
+
childEnv[BORG_OPENCODE_LAUNCH_CORRELATION_ENV] = openCodeKickoff.correlationIdentity;
|
|
2182
2214
|
launchArgs = buildOpenCodeLaunchArgs(cwd, dronePort, openCodeKickoff.prompt);
|
|
2183
2215
|
}
|
|
2184
2216
|
// gh#673 P1: mark the launched agent session as borg-launched so the
|
|
@@ -2208,6 +2240,7 @@ export async function runAssimilate(
|
|
|
2208
2240
|
const serverUrl = `http://127.0.0.1:${dronePort}`;
|
|
2209
2241
|
connectOpenCodeDrone({
|
|
2210
2242
|
serverUrl,
|
|
2243
|
+
apiPassword: launchKickoff.apiPassword,
|
|
2211
2244
|
directory: agentCwd,
|
|
2212
2245
|
droneLabel: result.drone_label,
|
|
2213
2246
|
cubeName: cubeDetail.name,
|