borgmcp 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -5
- package/dist/agent-integration-health.d.ts +9 -5
- package/dist/agent-integration-health.d.ts.map +1 -1
- package/dist/agent-integration-health.js +104 -5
- package/dist/agent-integration-health.js.map +1 -1
- package/dist/backends/{launch-all-windows.d.ts → launch-all-terminals.d.ts} +5 -3
- package/dist/backends/launch-all-terminals.d.ts.map +1 -0
- package/dist/backends/{launch-all-windows.js → launch-all-terminals.js} +26 -12
- package/dist/backends/launch-all-terminals.js.map +1 -0
- package/dist/bare-launch-menu.d.ts +53 -16
- package/dist/bare-launch-menu.d.ts.map +1 -1
- package/dist/bare-launch-menu.js +95 -4
- package/dist/bare-launch-menu.js.map +1 -1
- package/dist/claude.d.ts +6 -0
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +84 -8
- 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 +31 -2
- package/dist/cli-help.js.map +1 -1
- package/dist/config-utils.d.ts +12 -6
- package/dist/config-utils.d.ts.map +1 -1
- package/dist/config-utils.js +31 -8
- package/dist/config-utils.js.map +1 -1
- package/dist/cubes.d.ts +17 -0
- package/dist/cubes.d.ts.map +1 -1
- package/dist/cubes.js +87 -1
- package/dist/cubes.js.map +1 -1
- package/dist/ensure-mcp-config.d.ts.map +1 -1
- package/dist/ensure-mcp-config.js +5 -2
- package/dist/ensure-mcp-config.js.map +1 -1
- package/dist/launch-all-cmd.d.ts.map +1 -1
- package/dist/launch-all-cmd.js +20 -10
- package/dist/launch-all-cmd.js.map +1 -1
- package/dist/log-audit-core.d.ts +7 -0
- package/dist/log-audit-core.d.ts.map +1 -0
- package/dist/log-audit-core.js +80 -0
- package/dist/log-audit-core.js.map +1 -0
- package/dist/log-audit.d.ts +3 -3
- package/dist/log-audit.js +7 -110
- package/dist/log-audit.js.map +1 -1
- package/dist/opencode-drone.d.ts.map +1 -1
- package/dist/opencode-drone.js +6 -1
- package/dist/opencode-drone.js.map +1 -1
- package/dist/opencode-plugin.d.ts +47 -7
- package/dist/opencode-plugin.d.ts.map +1 -1
- package/dist/opencode-plugin.js +187 -23
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/parse-launch-all-args.d.ts +1 -1
- package/dist/parse-launch-all-args.d.ts.map +1 -1
- package/dist/parse-launch-all-args.js +3 -3
- package/dist/parse-launch-all-args.js.map +1 -1
- package/dist/regen-format.js +1 -1
- package/dist/regen-format.js.map +1 -1
- package/dist/resolved-cli-config.d.ts +1 -0
- package/dist/resolved-cli-config.d.ts.map +1 -1
- package/dist/resolved-cli-config.js +1 -0
- package/dist/resolved-cli-config.js.map +1 -1
- package/dist/seat-commands.d.ts +58 -0
- package/dist/seat-commands.d.ts.map +1 -0
- package/dist/seat-commands.js +240 -0
- package/dist/seat-commands.js.map +1 -0
- package/dist/seats.d.ts +8 -0
- package/dist/seats.d.ts.map +1 -1
- package/dist/seats.js +14 -0
- package/dist/seats.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/docs/LOCAL_SERVER.md +17 -4
- package/package.json +1 -1
- package/src/agent-integration-health.ts +121 -6
- package/src/backends/{launch-all-windows.ts → launch-all-terminals.ts} +33 -15
- package/src/bare-launch-menu.ts +141 -18
- package/src/claude.ts +128 -7
- package/src/cli-help.ts +37 -2
- package/src/config-utils.ts +33 -8
- package/src/cubes.ts +118 -1
- package/src/ensure-mcp-config.ts +5 -2
- package/src/launch-all-cmd.ts +24 -11
- package/src/log-audit-core.ts +81 -0
- package/src/log-audit.ts +6 -117
- package/src/opencode-drone.ts +6 -1
- package/src/opencode-plugin.ts +216 -22
- package/src/parse-launch-all-args.ts +4 -4
- package/src/regen-format.ts +1 -1
- package/src/resolved-cli-config.ts +2 -0
- package/src/seat-commands.ts +322 -0
- package/src/seats.ts +15 -0
- package/src/unknown-subcommand.ts +2 -0
- package/dist/backends/launch-all-windows.d.ts.map +0 -1
- package/dist/backends/launch-all-windows.js.map +0 -1
package/README.md
CHANGED
|
@@ -84,8 +84,26 @@ continue:
|
|
|
84
84
|
The lookup is the same for Claude Code, Codex, and OpenCode; only their launch
|
|
85
85
|
adapters differ. It is also the same for an in-place drone and a sibling drone
|
|
86
86
|
worktree: run `borg` inside the worktree where the drone was assimilated.
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
In a TTY, running `borg` in the repository's main worktree offers the repository's drones so you can pick one to resume.
|
|
88
|
+
|
|
89
|
+
You do not have to remember worktree paths. To list the drones registered on
|
|
90
|
+
this machine, run:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
borg seats
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
To resume one drone from any directory, run:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
borg launch <label-or-id-prefix>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`borg launch` finds the drone's worktree in the local seat registry and starts
|
|
103
|
+
it exactly as if you ran `borg` in that worktree. If a label exists in more
|
|
104
|
+
than one cube, add `--cube <name>` or use the drone id prefix.
|
|
105
|
+
|
|
106
|
+
To resume all saved drone worktrees for a cube, run:
|
|
89
107
|
|
|
90
108
|
```bash
|
|
91
109
|
borg launch-all [cube]
|
|
@@ -193,9 +211,16 @@ noncanonical worktrees heal when Borg next launches or assimilates them.
|
|
|
193
211
|
|
|
194
212
|
Run `borg doctor` for a read-only inventory of the five hook bins, their owning
|
|
195
213
|
`borgmcp` version, managed hook files, and the OpenCode orientation plugin. It
|
|
196
|
-
names a package reinstall for a missing bin
|
|
197
|
-
by the wrong package or version
|
|
198
|
-
|
|
214
|
+
names a package reinstall for a missing bin and a PATH correction for a bin
|
|
215
|
+
owned by the wrong package or version. It names `borg update --yes` for stale
|
|
216
|
+
managed hooks and for a missing or outdated OpenCode orientation plugin. For an
|
|
217
|
+
invalid managed configuration, it names the file that must be repaired before
|
|
218
|
+
update can rewrite it.
|
|
219
|
+
|
|
220
|
+
For Borg-launched OpenCode, the plugin supplies the Borg orientation after
|
|
221
|
+
OpenCode creates a new session, preserves it across compaction, and applies the
|
|
222
|
+
same cube-log audit used by the other agent integrations. The launcher kickoff
|
|
223
|
+
remains the only orientation for the initial session, so it is not duplicated.
|
|
199
224
|
|
|
200
225
|
## Troubleshooting
|
|
201
226
|
|
|
@@ -12,12 +12,16 @@ export interface AgentHookBinHealth {
|
|
|
12
12
|
export interface AgentIntegrationHealth {
|
|
13
13
|
expectedVersion: string;
|
|
14
14
|
bins: AgentHookBinHealth[];
|
|
15
|
-
issues: Array<AgentHookBinHealth | ManagedAgentHookConfigHealth>;
|
|
15
|
+
issues: Array<AgentHookBinHealth | ManagedAgentHookConfigHealth | OpenCodePluginHealth>;
|
|
16
16
|
hookConfigs: ManagedAgentHookConfigHealth[];
|
|
17
|
-
openCodePlugin:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
openCodePlugin: OpenCodePluginHealth;
|
|
18
|
+
}
|
|
19
|
+
export interface OpenCodePluginHealth {
|
|
20
|
+
path: string;
|
|
21
|
+
configured: boolean;
|
|
22
|
+
status: 'ok' | 'present' | 'absent' | 'missing' | 'outdated' | 'unreadable' | 'refused';
|
|
23
|
+
version?: string;
|
|
24
|
+
detail?: string;
|
|
21
25
|
}
|
|
22
26
|
export interface InspectAgentIntegrationHealthOptions {
|
|
23
27
|
expectedVersion?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-integration-health.d.ts","sourceRoot":"","sources":["../src/agent-integration-health.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-integration-health.d.ts","sourceRoot":"","sources":["../src/agent-integration-health.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,4BAA4B,EAGlC,MAAM,mBAAmB,CAAC;AAS3B,eAAO,MAAM,eAAe,oHAMlB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,CAAC;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC,kBAAkB,GAAG,4BAA4B,GAAG,oBAAoB,CAAC,CAAC;IACxF,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,cAAc,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,IAAI,CAAC;CACxF;AA8FD,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,oCAAyC,GACjD,sBAAsB,CAkDxB;AA4BD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAqDnF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAGlF;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,oCAAoC,GAAG;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GAAG,MAAM,CAId;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,oCAAoC,GAAG;IAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GACvF,OAAO,CAeT;AAED;gFACgF;AAChF,wBAAgB,wCAAwC,IAAI,IAAI,CAyB/D"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import which from 'which';
|
|
4
|
-
import { inspectManagedAgentHookConfigs, refreshManagedAgentHookConfigs, refreshManagedAgentMcpConfigs, } from './config-utils.js';
|
|
5
|
-
import { borgHomeRoot } from './private-root.js';
|
|
4
|
+
import { inspectManagedAgentHookConfigs, isOpenCodeMcpServerConfigured, refreshManagedAgentHookConfigs, refreshManagedAgentMcpConfigs, } from './config-utils.js';
|
|
5
|
+
import { borgHomeRoot, isCanonicalPath } from './private-root.js';
|
|
6
6
|
import { getPackageVersion } from './version.js';
|
|
7
|
+
import { buildBorgPluginSource, installBorgPlugin, openCodePluginPath, } from './opencode-plugin.js';
|
|
7
8
|
export const AGENT_HOOK_BINS = [
|
|
8
9
|
'borg-regen',
|
|
9
10
|
'borg-clear-rewake',
|
|
@@ -38,6 +39,71 @@ function defaultResolveBin(name, searchPath) {
|
|
|
38
39
|
return null;
|
|
39
40
|
}
|
|
40
41
|
}
|
|
42
|
+
function inspectOpenCodePlugin(homeDir, expectedVersion) {
|
|
43
|
+
const pluginPath = openCodePluginPath(homeDir);
|
|
44
|
+
const configured = isOpenCodeMcpServerConfigured(path.join(homeDir, '.config', 'opencode', 'opencode.json'));
|
|
45
|
+
try {
|
|
46
|
+
let metadata;
|
|
47
|
+
try {
|
|
48
|
+
metadata = fs.lstatSync(pluginPath);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
|
|
52
|
+
if (!isCanonicalPath(pluginPath)) {
|
|
53
|
+
return {
|
|
54
|
+
path: pluginPath,
|
|
55
|
+
configured,
|
|
56
|
+
status: 'refused',
|
|
57
|
+
detail: 'plugin path contains a symlink',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return { path: pluginPath, configured, status: configured ? 'missing' : 'absent' };
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
if (metadata.isSymbolicLink()) {
|
|
65
|
+
return {
|
|
66
|
+
path: pluginPath,
|
|
67
|
+
configured,
|
|
68
|
+
status: 'refused',
|
|
69
|
+
detail: 'plugin path is a symlink',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (!isCanonicalPath(pluginPath)) {
|
|
73
|
+
return {
|
|
74
|
+
path: pluginPath,
|
|
75
|
+
configured,
|
|
76
|
+
status: 'refused',
|
|
77
|
+
detail: 'plugin path contains a symlink',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (!metadata.isFile()) {
|
|
81
|
+
return {
|
|
82
|
+
path: pluginPath,
|
|
83
|
+
configured,
|
|
84
|
+
status: 'refused',
|
|
85
|
+
detail: 'plugin path is not a regular file',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const source = fs.readFileSync(pluginPath, 'utf8');
|
|
89
|
+
const marker = source.match(/borgmcp-opencode-plugin:([^;\s]+);opencode=/)?.[1];
|
|
90
|
+
if (!configured) {
|
|
91
|
+
return { path: pluginPath, configured, status: 'present', version: marker ?? 'unknown' };
|
|
92
|
+
}
|
|
93
|
+
if (source === buildBorgPluginSource(expectedVersion)) {
|
|
94
|
+
return { path: pluginPath, configured, status: 'ok', version: expectedVersion };
|
|
95
|
+
}
|
|
96
|
+
return { path: pluginPath, configured, status: 'outdated', version: marker ?? 'unknown' };
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return {
|
|
100
|
+
path: pluginPath,
|
|
101
|
+
configured,
|
|
102
|
+
status: 'unreadable',
|
|
103
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
41
107
|
export function inspectAgentIntegrationHealth(options = {}) {
|
|
42
108
|
const expectedVersion = options.expectedVersion ?? getPackageVersion();
|
|
43
109
|
const homeDir = options.homeDir ?? borgHomeRoot();
|
|
@@ -73,17 +139,22 @@ export function inspectAgentIntegrationHealth(options = {}) {
|
|
|
73
139
|
}
|
|
74
140
|
return { name, status: 'ok', resolvedPath, owner: owner.name, version: owner.version };
|
|
75
141
|
});
|
|
76
|
-
const pluginPath = path.join(homeDir, '.config', 'opencode', 'plugins', 'borg-orient.js');
|
|
77
142
|
const hookConfigs = inspectManagedAgentHookConfigs(homeDir);
|
|
143
|
+
const openCodePlugin = inspectOpenCodePlugin(homeDir, expectedVersion);
|
|
78
144
|
return {
|
|
79
145
|
expectedVersion,
|
|
80
146
|
bins,
|
|
81
147
|
issues: [
|
|
82
148
|
...bins.filter((bin) => bin.status !== 'ok'),
|
|
83
149
|
...hookConfigs.filter((config) => config.status === 'stale' || config.status === 'invalid'),
|
|
150
|
+
...(openCodePlugin.status === 'unreadable' ||
|
|
151
|
+
(openCodePlugin.status === 'refused' && openCodePlugin.configured) ||
|
|
152
|
+
(openCodePlugin.configured && openCodePlugin.status !== 'ok')
|
|
153
|
+
? [openCodePlugin]
|
|
154
|
+
: []),
|
|
84
155
|
],
|
|
85
156
|
hookConfigs,
|
|
86
|
-
openCodePlugin
|
|
157
|
+
openCodePlugin,
|
|
87
158
|
};
|
|
88
159
|
}
|
|
89
160
|
function renderBin(bin, expectedVersion) {
|
|
@@ -95,13 +166,25 @@ function renderBin(bin, expectedVersion) {
|
|
|
95
166
|
case 'unreadable': return `${bin.name}: unreadable${bin.resolvedPath ? ` at ${bin.resolvedPath}` : ''}${bin.detail ? ` (${bin.detail})` : ''}`;
|
|
96
167
|
}
|
|
97
168
|
}
|
|
169
|
+
function renderOpenCodePlugin(plugin, expectedVersion) {
|
|
170
|
+
const prefix = 'OpenCode borg-orient.js plugin:';
|
|
171
|
+
switch (plugin.status) {
|
|
172
|
+
case 'ok': return `${prefix} ok (${plugin.version})`;
|
|
173
|
+
case 'present': return `${prefix} present`;
|
|
174
|
+
case 'absent': return `${prefix} absent`;
|
|
175
|
+
case 'missing': return `${prefix} missing at ${plugin.path}`;
|
|
176
|
+
case 'outdated': return `${prefix} version ${plugin.version}, expected ${expectedVersion} at ${plugin.path}`;
|
|
177
|
+
case 'unreadable': return `${prefix} unreadable at ${plugin.path}${plugin.detail ? ` (${plugin.detail})` : ''}`;
|
|
178
|
+
case 'refused': return `${prefix} refused at ${plugin.path}${plugin.detail ? ` (${plugin.detail})` : ''}`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
98
181
|
export function renderAgentIntegrationHealth(report) {
|
|
99
182
|
const lines = [
|
|
100
183
|
`Borg agent integration (borgmcp ${report.expectedVersion})`,
|
|
101
184
|
...report.bins.map((bin) => ` ${renderBin(bin, report.expectedVersion)}`),
|
|
102
185
|
'Hook configuration:',
|
|
103
186
|
...report.hookConfigs.map((item) => (` ${item.status}: ${item.path}${item.detail ? ` (${item.detail})` : ''}`)),
|
|
104
|
-
|
|
187
|
+
renderOpenCodePlugin(report.openCodePlugin, report.expectedVersion),
|
|
105
188
|
];
|
|
106
189
|
for (const bin of report.bins) {
|
|
107
190
|
switch (bin.status) {
|
|
@@ -129,6 +212,20 @@ export function renderAgentIntegrationHealth(report) {
|
|
|
129
212
|
: `Repair invalid managed hook config ${config.path}, then run: borg update --yes`);
|
|
130
213
|
}
|
|
131
214
|
}
|
|
215
|
+
if (report.openCodePlugin.status === 'missing') {
|
|
216
|
+
lines.push('Repair missing OpenCode plugin: borg update --yes');
|
|
217
|
+
}
|
|
218
|
+
else if (report.openCodePlugin.status === 'outdated' && report.openCodePlugin.configured) {
|
|
219
|
+
lines.push('Repair OpenCode plugin: borg update --yes');
|
|
220
|
+
}
|
|
221
|
+
else if (report.openCodePlugin.status === 'unreadable') {
|
|
222
|
+
lines.push(report.openCodePlugin.configured
|
|
223
|
+
? `Fix or replace unreadable OpenCode plugin ${report.openCodePlugin.path}, then run: borg update --yes`
|
|
224
|
+
: `Fix or remove unreadable OpenCode plugin ${report.openCodePlugin.path}`);
|
|
225
|
+
}
|
|
226
|
+
else if (report.openCodePlugin.status === 'refused' && report.openCodePlugin.configured) {
|
|
227
|
+
lines.push(`Remove or replace the OpenCode plugin path ${report.openCodePlugin.path}, then run: borg update --yes`);
|
|
228
|
+
}
|
|
132
229
|
return `${lines.join('\n')}\n`;
|
|
133
230
|
}
|
|
134
231
|
export function assertAgentIntegrationHealthy(report) {
|
|
@@ -173,6 +270,8 @@ export function refreshAndVerifyManagedAgentIntegrations() {
|
|
|
173
270
|
failures.push(`${error instanceof Error ? error.message : String(error)}. ` +
|
|
174
271
|
'Repair the named managed hook config, then rerun borg update --yes');
|
|
175
272
|
}
|
|
273
|
+
if (isOpenCodeMcpServerConfigured())
|
|
274
|
+
installBorgPlugin();
|
|
176
275
|
try {
|
|
177
276
|
assertAgentIntegrationHealthy(inspectAgentIntegrationHealth());
|
|
178
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-integration-health.js","sourceRoot":"","sources":["../src/agent-integration-health.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-integration-health.js","sourceRoot":"","sources":["../src/agent-integration-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type { DroneCandidate } from '../launch-all-discovery.js';
|
|
2
2
|
import type { LaunchAllDeps } from '../launch-all-deps.js';
|
|
3
|
-
export interface
|
|
3
|
+
export interface TerminalsOpts {
|
|
4
4
|
borgPath: string;
|
|
5
5
|
platform: NodeJS.Platform;
|
|
6
|
+
cubeName: string;
|
|
6
7
|
launchedAtISO: string;
|
|
7
8
|
/** Stagger between drone launches (ms) to avoid the rate limiter; 0 disables. */
|
|
8
9
|
launchDelayMs: number;
|
|
9
10
|
/** Injectable sleep (real setTimeout in prod; no-op spy in tests). */
|
|
10
11
|
sleep: (ms: number) => Promise<void>;
|
|
11
12
|
}
|
|
12
|
-
export declare function
|
|
13
|
-
|
|
13
|
+
export declare function hasMacOSTerminalApp(deps: Pick<LaunchAllDeps, 'pathExists'>): boolean;
|
|
14
|
+
export declare function runTerminalsBackend(candidates: DroneCandidate[], opts: TerminalsOpts, deps: LaunchAllDeps): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=launch-all-terminals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-all-terminals.d.ts","sourceRoot":"","sources":["../../src/backends/launch-all-terminals.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAa3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AASD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,OAAO,CAEpF;AAoED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAAE,EAC5B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
-
//
|
|
1
|
+
// client#400 — terminals backend (`--mode terminals`; macOS auto default).
|
|
2
2
|
// Opens each worktree as a new terminal window/tab. macOS: iTerm/Terminal via
|
|
3
3
|
// osascript. Linux: $BORG_TERMINAL / $TERMINAL / probed emulator. No shared
|
|
4
4
|
// session, so no post-launch attach. Hard-fails if no compatible terminal found.
|
|
5
5
|
import { buildLaunchCommand } from '../launch-all-command.js';
|
|
6
6
|
import { writeLockMarker } from '../launch-all-locks.js';
|
|
7
|
+
import { composeTerminalTitle } from '../terminal-title.js';
|
|
8
|
+
import { shellEscape } from '../shell-escape.js';
|
|
9
|
+
const ITERM_APP = '/Applications/iTerm.app';
|
|
10
|
+
const TERMINAL_APPS = [
|
|
11
|
+
'/System/Applications/Utilities/Terminal.app',
|
|
12
|
+
'/Applications/Utilities/Terminal.app',
|
|
13
|
+
'/Applications/Terminal.app',
|
|
14
|
+
];
|
|
7
15
|
/** AppleScript string-literal escaping (backslash + double-quote). */
|
|
8
16
|
function appleScriptEscape(s) {
|
|
9
17
|
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
10
18
|
}
|
|
11
19
|
class NoTerminalError extends Error {
|
|
12
20
|
}
|
|
21
|
+
export function hasMacOSTerminalApp(deps) {
|
|
22
|
+
return deps.pathExists(ITERM_APP) || TERMINAL_APPS.some((path) => deps.pathExists(path));
|
|
23
|
+
}
|
|
13
24
|
/** macOS: open each candidate in iTerm or Terminal via osascript. */
|
|
14
25
|
async function launchMacOS(candidates, opts, deps) {
|
|
15
|
-
const hasITerm = deps.pathExists(
|
|
16
|
-
const hasTerminal = deps.pathExists(
|
|
26
|
+
const hasITerm = deps.pathExists(ITERM_APP);
|
|
27
|
+
const hasTerminal = TERMINAL_APPS.some((path) => deps.pathExists(path));
|
|
17
28
|
if (!hasITerm && !hasTerminal) {
|
|
18
|
-
throw new NoTerminalError('borg launch-all: --mode
|
|
29
|
+
throw new NoTerminalError('borg launch-all: --mode terminals requires a compatible terminal app.\n' +
|
|
19
30
|
'Not found: iTerm.app, Terminal.app\n' +
|
|
20
31
|
'Install iTerm2 (https://iterm2.com) or use --mode tmux (brew install tmux).\n');
|
|
21
32
|
}
|
|
@@ -24,9 +35,10 @@ async function launchMacOS(candidates, opts, deps) {
|
|
|
24
35
|
if (i > 0 && opts.launchDelayMs > 0)
|
|
25
36
|
await opts.sleep(opts.launchDelayMs); // rate-limit stagger
|
|
26
37
|
const cmd = buildLaunchCommand(c.worktreeDir, opts.borgPath);
|
|
38
|
+
const title = composeTerminalTitle({ label: c.droneLabel, cubeName: opts.cubeName }, '');
|
|
27
39
|
const script = hasITerm
|
|
28
|
-
? `tell application "iTerm"\n tell current window to create tab with default profile command "${appleScriptEscape(cmd)}"\nend tell`
|
|
29
|
-
: `tell application "Terminal"\n do script "${appleScriptEscape(cmd)}"\n activate\nend tell`;
|
|
40
|
+
? `tell application "iTerm"\n if (count of windows) = 0 then\n set launchedWindow to (create window with default profile command "${appleScriptEscape(cmd)}")\n tell current session of launchedWindow to set name to "${appleScriptEscape(title)}"\n else\n tell current window\n set launchedTab to (create tab with default profile command "${appleScriptEscape(cmd)}")\n tell current session of launchedTab to set name to "${appleScriptEscape(title)}"\n end tell\n end if\nend tell`
|
|
41
|
+
: `tell application "Terminal"\n set launchedTab to do script "${appleScriptEscape(cmd)}"\n set custom title of launchedTab to "${appleScriptEscape(title)}"\n set title displays custom title of launchedTab to true\n activate\nend tell`;
|
|
30
42
|
deps.runSync('osascript', ['-e', script]);
|
|
31
43
|
writeLockMarker(deps, c.cubeId, c.droneLabel, c.worktreeDir, opts.launchedAtISO);
|
|
32
44
|
}
|
|
@@ -45,14 +57,16 @@ async function launchLinux(candidates, opts, deps) {
|
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
if (!term) {
|
|
48
|
-
throw new NoTerminalError('borg launch-all: --mode
|
|
60
|
+
throw new NoTerminalError('borg launch-all: --mode terminals requires a terminal emulator.\n' +
|
|
49
61
|
'Not found. Set $BORG_TERMINAL=<path> or use --mode tmux.\n');
|
|
50
62
|
}
|
|
51
63
|
for (let i = 0; i < candidates.length; i++) {
|
|
52
64
|
const c = candidates[i];
|
|
53
65
|
if (i > 0 && opts.launchDelayMs > 0)
|
|
54
66
|
await opts.sleep(opts.launchDelayMs); // rate-limit stagger
|
|
55
|
-
const
|
|
67
|
+
const title = composeTerminalTitle({ label: c.droneLabel, cubeName: opts.cubeName }, '');
|
|
68
|
+
const cmd = `printf '\\033]0;%s\\007' ${shellEscape(title)}; ` +
|
|
69
|
+
buildLaunchCommand(c.worktreeDir, opts.borgPath, { keepOpenOnFail: true });
|
|
56
70
|
// `<term> -e sh -c '<cmd>'` opens a new window running the command.
|
|
57
71
|
deps.runSync(term, ['-e', 'sh', '-c', cmd]);
|
|
58
72
|
writeLockMarker(deps, c.cubeId, c.droneLabel, c.worktreeDir, opts.launchedAtISO);
|
|
@@ -64,14 +78,14 @@ async function launchLinux(candidates, opts, deps) {
|
|
|
64
78
|
* string literal (parse error). Reject such paths up front (the user's own path;
|
|
65
79
|
* pathological) — fail-loud + skip, never silently mangle. Applies to both
|
|
66
80
|
* platforms defensively (the tmux primary handles control chars fine via
|
|
67
|
-
* shellEscape + array-args, so this guard is
|
|
81
|
+
* shellEscape + array-args, so this guard is terminals-backend-specific).
|
|
68
82
|
*/
|
|
69
83
|
const CONTROL_CHAR_RE = /[\x00-\x1f\x7f]/;
|
|
70
|
-
export async function
|
|
84
|
+
export async function runTerminalsBackend(candidates, opts, deps) {
|
|
71
85
|
const safe = candidates.filter((c) => {
|
|
72
86
|
if (CONTROL_CHAR_RE.test(c.worktreeDir)) {
|
|
73
87
|
deps.stderr(`skipping ${c.droneLabel} (${JSON.stringify(c.worktreeDir)}): worktree path contains a control ` +
|
|
74
|
-
`character — unsafe for --mode
|
|
88
|
+
`character — unsafe for --mode terminals; use --mode tmux instead.\n`);
|
|
75
89
|
return false;
|
|
76
90
|
}
|
|
77
91
|
return true;
|
|
@@ -83,4 +97,4 @@ export async function runWindowsBackend(candidates, opts, deps) {
|
|
|
83
97
|
await launchLinux(safe, opts, deps);
|
|
84
98
|
}
|
|
85
99
|
}
|
|
86
|
-
//# sourceMappingURL=launch-all-
|
|
100
|
+
//# sourceMappingURL=launch-all-terminals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-all-terminals.js","sourceRoot":"","sources":["../../src/backends/launch-all-terminals.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AAIjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAC5C,MAAM,aAAa,GAAG;IACpB,6CAA6C;IAC7C,sCAAsC;IACtC,4BAA4B;CACpB,CAAC;AAaX,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,eAAgB,SAAQ,KAAK;CAAG;AAEtC,MAAM,UAAU,mBAAmB,CAAC,IAAuC;IACzE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,qEAAqE;AACrE,KAAK,UAAU,WAAW,CAAC,UAA4B,EAAE,IAAmB,EAAE,IAAmB;IAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CACvB,yEAAyE;YACvE,sCAAsC;YACtC,+EAA+E,CAClF,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB;QAChG,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC,sIAAsI,iBAAiB,CAAC,GAAG,CAAC,kEAAkE,iBAAiB,CAAC,KAAK,CAAC,0GAA0G,iBAAiB,CAAC,GAAG,CAAC,iEAAiE,iBAAiB,CAAC,KAAK,CAAC,qCAAqC;YACtf,CAAC,CAAC,gEAAgE,iBAAiB,CAAC,GAAG,CAAC,4CAA4C,iBAAiB,CAAC,KAAK,CAAC,mFAAmF,CAAC;QAClP,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1C,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW,CAAC,UAA4B,EAAE,IAAmB,EAAE,IAAmB;IAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,IAAI,GAAuB,QAAQ,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC;gBACZ,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,eAAe,CACvB,mEAAmE;YACjE,4DAA4D,CAC/D,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB;QAChG,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,GAAG,GACP,4BAA4B,WAAW,CAAC,KAAK,CAAC,IAAI;YAClD,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA4B,EAC5B,IAAmB,EACnB,IAAmB;IAEnB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CACT,YAAY,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,sCAAsC;gBAC9F,qEAAqE,CACxE,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* gh#853 — bare `borg` (no-args) interactive launch menu.
|
|
3
3
|
*
|
|
4
|
-
* When `borg` is run with NO arguments in a TTY
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 2. Launch with <other> instead — the OTHER configured agent, ONE-SHOT
|
|
8
|
-
* (does NOT persist the preference).
|
|
9
|
-
* 3. Launch all — runLaunchAll for the active cube.
|
|
4
|
+
* When `borg` is run with NO arguments in a TTY outside an active seat, offer
|
|
5
|
+
* a small launch selector. In a repository with live sibling drones, those
|
|
6
|
+
* drones come first; otherwise the existing agent choices remain unchanged.
|
|
10
7
|
*
|
|
11
8
|
* The option-set, the selection→action mapping, and the show/collapse decision
|
|
12
9
|
* are pure functions so they're unit-testable without a real TTY. claude.ts
|
|
13
|
-
* main() is thin glue: it computes the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* main() is thin glue: it computes the available candidates and agent choices,
|
|
11
|
+
* gates on shouldShowLaunchMenu, runs the orchestrator with the real readline
|
|
12
|
+
* prompt, then dispatches the returned action.
|
|
16
13
|
*
|
|
17
|
-
* Load-bearing safety: TTY-only + bare-args-only
|
|
18
|
-
* scripted/programmatic
|
|
14
|
+
* Load-bearing safety: TTY-only + bare-args-only + no-active-seat
|
|
15
|
+
* (shouldShowLaunchMenu), so scripted/programmatic invocations and direct
|
|
16
|
+
* worktree resumes are untouched.
|
|
19
17
|
*/
|
|
20
|
-
import type { BorgCli } from './cubes.js';
|
|
18
|
+
import type { ActiveCube, BorgCli } from './cubes.js';
|
|
19
|
+
import type { DroneCandidate } from './launch-all-discovery.js';
|
|
20
|
+
import type { SeatStatus } from './seat-probe.js';
|
|
21
21
|
export type LaunchMenuAction = {
|
|
22
22
|
kind: 'launch';
|
|
23
23
|
cli: BorgCli;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'launch-seat';
|
|
26
|
+
target: string;
|
|
24
27
|
} | {
|
|
25
28
|
kind: 'launch-all';
|
|
29
|
+
cubeId?: string;
|
|
26
30
|
};
|
|
31
|
+
export interface LaunchMenuDroneCandidate {
|
|
32
|
+
droneLabel: string;
|
|
33
|
+
target: string;
|
|
34
|
+
worktree: string;
|
|
35
|
+
}
|
|
27
36
|
export interface LaunchMenuOption {
|
|
28
37
|
/** The keystroke that selects this option (sequential: '1', '2', …). */
|
|
29
38
|
key: string;
|
|
@@ -35,9 +44,35 @@ export interface LaunchMenuInputs {
|
|
|
35
44
|
defaultCli: BorgCli;
|
|
36
45
|
/** All configured agents that are NOT the default, in display order. */
|
|
37
46
|
otherConfiguredClis: BorgCli[];
|
|
38
|
-
/** True iff
|
|
47
|
+
/** True iff the current menu context has launch-all targets. */
|
|
39
48
|
hasLaunchAllTargets: boolean;
|
|
49
|
+
/** Live sibling drones offered before the unattached launch choices. */
|
|
50
|
+
droneCandidates?: LaunchMenuDroneCandidate[];
|
|
51
|
+
/** Cube selected by the sibling-drone context for its launch-all action. */
|
|
52
|
+
launchAllCubeId?: string;
|
|
53
|
+
}
|
|
54
|
+
interface LaunchMenuCandidateDeps {
|
|
55
|
+
readAllProjectIdentities: () => Promise<Array<{
|
|
56
|
+
projectPath: string;
|
|
57
|
+
cube: ActiveCube;
|
|
58
|
+
}>>;
|
|
59
|
+
discoverDroneCandidates: (cubeId: string) => Promise<DroneCandidate[]>;
|
|
60
|
+
getActiveSeatForWorktree: (worktree: string) => Promise<{
|
|
61
|
+
cubeId: string;
|
|
62
|
+
droneId?: string;
|
|
63
|
+
} | null>;
|
|
64
|
+
pathExists: (worktree: string) => boolean;
|
|
65
|
+
probeSeat: (candidate: DroneCandidate) => Promise<SeatStatus>;
|
|
40
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Find linked sibling worktrees that still own their preferred active seat.
|
|
69
|
+
* Authoritative terminal probe results are omitted; transient/unknown probe
|
|
70
|
+
* results stay visible, matching launch-all's constructive fail-open behavior.
|
|
71
|
+
*/
|
|
72
|
+
export declare function discoverLiveLaunchMenuCandidates(deps: LaunchMenuCandidateDeps): Promise<{
|
|
73
|
+
candidates: LaunchMenuDroneCandidate[];
|
|
74
|
+
launchAllCubeId?: string;
|
|
75
|
+
}>;
|
|
41
76
|
/**
|
|
42
77
|
* Resolve and configure the CLI that will actually launch.
|
|
43
78
|
*
|
|
@@ -47,14 +82,15 @@ export interface LaunchMenuInputs {
|
|
|
47
82
|
*/
|
|
48
83
|
export declare function configureSelectedLaunchCli(defaultCli: BorgCli, action: LaunchMenuAction | undefined, configure: (cli: BorgCli) => void): BorgCli;
|
|
49
84
|
/**
|
|
50
|
-
* Gate: the menu fires ONLY for bare `borg` (no args) in a TTY
|
|
51
|
-
*
|
|
52
|
-
* through to the existing
|
|
85
|
+
* Gate: the menu fires ONLY for bare `borg` (no args) in a TTY without an
|
|
86
|
+
* active seat. Explicit invocations, non-TTY launches, and direct worktree
|
|
87
|
+
* resumes fall straight through to the existing launch path.
|
|
53
88
|
*/
|
|
54
89
|
export declare function shouldShowLaunchMenu(args: {
|
|
55
90
|
extraArgs: string[];
|
|
56
91
|
stdinIsTTY: boolean;
|
|
57
92
|
stdoutIsTTY: boolean;
|
|
93
|
+
hasActiveSeat?: boolean;
|
|
58
94
|
}): boolean;
|
|
59
95
|
export declare function explicitCliLaunchHint(args: {
|
|
60
96
|
explicitCli: BorgCli | undefined;
|
|
@@ -94,4 +130,5 @@ export declare function runBareLaunchMenu(inputs: LaunchMenuInputs, prompt: (mes
|
|
|
94
130
|
maxAttempts?: number;
|
|
95
131
|
warn?: (message: string) => void;
|
|
96
132
|
}): Promise<LaunchMenuAction>;
|
|
133
|
+
export {};
|
|
97
134
|
//# sourceMappingURL=bare-launch-menu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bare-launch-menu.d.ts","sourceRoot":"","sources":["../src/bare-launch-menu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bare-launch-menu.d.ts","sourceRoot":"","sources":["../src/bare-launch-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,mBAAmB,EAAE,OAAO,EAAE,CAAC;IAC/B,gEAAgE;IAChE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wEAAwE;IACxE,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC7C,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,uBAAuB;IAC/B,wBAAwB,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,CAAC;IAC1F,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,wBAAwB,EAAE,CACxB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/D;AAUD;;;;GAIG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC;IAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgD/E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAChC,OAAO,CAIT;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAKV;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,GAAG,MAAM,GAAG,IAAI,CAIhB;AAED,wBAAgB,yCAAyC,CAAC,IAAI,EAAE;IAC9D,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAEV;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAwDnF;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,QAAQ,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAKxD;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAGpE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC5C,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GACpE,OAAO,CAAC,gBAAgB,CAAC,CAa3B"}
|