borgmcp 3.13.0 → 3.15.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.
@@ -28,6 +28,8 @@ export declare function recoverEnrollmentHelpText(version: string): string;
28
28
  export declare function updateHelpText(version: string): string;
29
29
  /** Product Design-approved client-owned copy for `borg server --help`. */
30
30
  export declare function serverHelpText(): string;
31
+ /** Client-owned help for the server-owned service command namespace. */
32
+ export declare function serverServiceHelpText(): string;
31
33
  /** Client-owned help for repository cube initialization without a drone. */
32
34
  export declare function cubeInitHelpText(version: string): string;
33
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBzD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBrD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BxD;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASjE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBtD;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,IAAI,MAAM,CAiBvC;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmC1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD"}
1
+ {"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE3D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuBzD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBrD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BxD;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASjE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBtD;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,IAAI,MAAM,CAmBvC;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,IAAI,MAAM,CAO9C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmC1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB9D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD"}
package/dist/cli-help.js CHANGED
@@ -187,8 +187,9 @@ export function serverHelpText() {
187
187
  return (`Usage: borg server <command> [arguments]\n\n` +
188
188
  `Commands:\n` +
189
189
  ` setup Prepare local server identity and data; does not start the server.\n` +
190
- ` start Start the verified server in the foreground.\n` +
191
- ` stop Stop the managed local server.\n` +
190
+ ` start Start the verified server in the foreground; press Ctrl-C to stop.\n` +
191
+ ` service install Install and start the loopback-only per-user service so it continues after the terminal closes.\n` +
192
+ ` service uninstall Remove the managed service and preserve local state.\n` +
192
193
  ` status Report verified runtime evidence.\n` +
193
194
  ` update Verify and activate a local server artifact.\n` +
194
195
  ` invite Create a single-use invitation in an interactive terminal.\n` +
@@ -197,8 +198,16 @@ export function serverHelpText() {
197
198
  ` client-grant Grant a client read, write, or manage access to a cube while the server is live; committed changes take effect on the next request.\n` +
198
199
  ` dashboard View the running local server dashboard.\n` +
199
200
  ` cube init Initialize this Git repository's cube; does not create a drone.\n\n` +
201
+ `Managed-service behavior is server-owned. This client forwards install and uninstall but does not expose stop.\n\n` +
200
202
  `Run borg server <command> --help for server command options.\n`);
201
203
  }
204
+ /** Client-owned help for the server-owned service command namespace. */
205
+ export function serverServiceHelpText() {
206
+ return (`Usage: borg server service <command> [arguments]\n\n` +
207
+ `Commands:\n` +
208
+ ` install Install and start the loopback-only per-user service.\n` +
209
+ ` uninstall Remove the managed service and preserve local state.\n`);
210
+ }
202
211
  /** Client-owned help for repository cube initialization without a drone. */
203
212
  export function cubeInitHelpText(version) {
204
213
  return (`borg server cube init (borgmcp ${version}) — initialize this Git repository's cube without creating a drone\n\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { type SpawnOptions } from 'node:child_process';
2
- export declare const SERVER_LIFECYCLE_COMMANDS: readonly ["setup", "start", "stop", "status", "update", "invite", "cert-reissue", "client-list", "client-grant", "dashboard"];
2
+ export declare const SERVER_LIFECYCLE_COMMANDS: readonly ["setup", "start", "status", "update", "invite", "cert-reissue", "client-list", "client-grant", "dashboard"];
3
3
  export type ServerLifecycleCommand = typeof SERVER_LIFECYCLE_COMMANDS[number];
4
+ export type ServerFacadeCommand = ServerLifecycleCommand | 'service install' | 'service uninstall';
4
5
  export type ParsedServerFacadeArgs = {
5
6
  kind: 'help';
7
+ } | {
8
+ kind: 'service-help';
6
9
  } | {
7
10
  kind: 'cube-init-help';
8
11
  } | {
@@ -10,10 +13,10 @@ export type ParsedServerFacadeArgs = {
10
13
  args: string[];
11
14
  } | {
12
15
  kind: 'command-help';
13
- command: ServerLifecycleCommand;
16
+ command: ServerFacadeCommand;
14
17
  } | {
15
18
  kind: 'command';
16
- command: ServerLifecycleCommand;
19
+ command: ServerFacadeCommand;
17
20
  args: string[];
18
21
  } | {
19
22
  kind: 'error';
@@ -54,11 +57,11 @@ export type ServerFacadeProcessResult = {
54
57
  export declare function buildDefaultServerFacadeClientDeps(buildDeps?: AssimilateDepsBuilder): ServerFacadeClientDeps;
55
58
  export declare function cubeInitUsageErrorText(reason: string): string;
56
59
  export declare function unknownServerCommandText(command: string): string;
57
- export declare function serverLifecycleHelpText(command: ServerLifecycleCommand): string;
58
- export declare function missingServerExecutableText(command: ServerLifecycleCommand): string;
59
- export declare function serverCommandStartupFailureText(command: ServerLifecycleCommand): string;
60
+ export declare function serverLifecycleHelpText(command: ServerFacadeCommand): string;
61
+ export declare function missingServerExecutableText(command: ServerFacadeCommand): string;
62
+ export declare function serverCommandStartupFailureText(command: ServerFacadeCommand): string;
60
63
  export declare function runServerFacadeProcess(input: {
61
- command: ServerLifecycleCommand;
64
+ command: ServerFacadeCommand;
62
65
  args: readonly string[];
63
66
  }, deps?: ServerFacadeProcessDeps): Promise<ServerFacadeProcessResult>;
64
67
  /** Routes every facade outcome before client initialization or network work. */
@@ -1 +1 @@
1
- {"version":3,"file":"server-facade.d.ts","sourceRoot":"","sources":["../src/server-facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-facade.d.ts","sourceRoot":"","sources":["../src/server-facade.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import { spawn as spawnChild } from 'node:child_process';
2
2
  import { constants } from 'node:os';
3
3
  import chalk from 'chalk';
4
- import { cubeInitHelpText, isHelpFlag, serverHelpText } from './cli-help.js';
4
+ import { cubeInitHelpText, isHelpFlag, serverHelpText, serverServiceHelpText, } from './cli-help.js';
5
5
  import { consolePrefix } from './console-prefix.js';
6
6
  import { getPackageVersion } from './version.js';
7
7
  export const SERVER_LIFECYCLE_COMMANDS = [
8
8
  'setup',
9
9
  'start',
10
- 'stop',
11
10
  'status',
12
11
  'update',
13
12
  'invite',
@@ -30,6 +29,23 @@ export function parseServerFacadeArgs(args) {
30
29
  ? { kind: 'cube-init-help' }
31
30
  : { kind: 'cube-init', args };
32
31
  }
32
+ if (command === 'service') {
33
+ const [subcommand, ...args] = rest;
34
+ if (subcommand === undefined || isHelpFlag(subcommand)) {
35
+ return { kind: 'service-help' };
36
+ }
37
+ if (subcommand !== 'install' && subcommand !== 'uninstall') {
38
+ return {
39
+ kind: 'error',
40
+ reason: 'unknown-command',
41
+ command: subcommand === undefined ? command : `${command} ${subcommand}`,
42
+ };
43
+ }
44
+ const serviceCommand = subcommand === 'install' ? 'service install' : 'service uninstall';
45
+ return args.some(isHelpFlag)
46
+ ? { kind: 'command-help', command: serviceCommand }
47
+ : { kind: 'command', command: serviceCommand, args };
48
+ }
33
49
  if (!SERVER_LIFECYCLE_COMMANDS.includes(command)) {
34
50
  return { kind: 'error', reason: 'unknown-command', command };
35
51
  }
@@ -104,7 +120,7 @@ function inertCommand(command) {
104
120
  }
105
121
  export function unknownServerCommandText(command) {
106
122
  return (`Unknown server command: ${inertCommand(command)}.\n` +
107
- `Available commands: setup, start, stop, status, update, invite, cert-reissue, client-list, client-grant, dashboard, cube init.\n` +
123
+ `Available commands: setup, start, service install, service uninstall, status, update, invite, cert-reissue, client-list, client-grant, dashboard, cube init.\n` +
108
124
  `Next: run borg server --help.\n`);
109
125
  }
110
126
  export function serverLifecycleHelpText(command) {
@@ -125,7 +141,8 @@ function isMissingServerExecutable(error) {
125
141
  return error.code === 'ENOENT';
126
142
  }
127
143
  export function runServerFacadeProcess(input, deps = defaultProcessDeps) {
128
- const child = deps.spawn('borg-mcp-server', [input.command, ...input.args], { shell: false, stdio: 'inherit' });
144
+ const command = input.command.split(' ');
145
+ const child = deps.spawn('borg-mcp-server', [...command, ...input.args], { shell: false, stdio: 'inherit' });
129
146
  return new Promise((resolve) => {
130
147
  let settled = false;
131
148
  const forwarders = new Map();
@@ -181,6 +198,10 @@ export async function runEarlyServerFacade(argv, deps = defaultProcessDeps, outp
181
198
  output.writeStdout(serverHelpText());
182
199
  return 0;
183
200
  }
201
+ if (parsed.kind === 'service-help') {
202
+ output.writeStdout(serverServiceHelpText());
203
+ return 0;
204
+ }
184
205
  if (parsed.kind === 'cube-init-help') {
185
206
  output.writeStdout(cubeInitHelpText(getPackageVersion()));
186
207
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"server-facade.js","sourceRoot":"","sources":["../src/server-facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-facade.js","sourceRoot":"","sources":["../src/server-facade.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,24 @@ must never imply that a daemon, LaunchAgent, or systemd service was installed.
26
26
  Ctrl-C stops the foreground process. Managed persistence is a separate explicit
27
27
  handoff.
28
28
 
29
+ To install and start the server as a loopback-only per-user service, run:
30
+
31
+ ```bash
32
+ borg server service install
33
+ ```
34
+
35
+ The service continues after the terminal closes. To remove it while preserving
36
+ local server state, run:
37
+
38
+ ```bash
39
+ borg server service uninstall
40
+ ```
41
+
42
+ Add `--json` to either command for machine-readable server output. The client
43
+ passes these commands to the verified `borg-mcp-server` executable; service
44
+ definitions, validation, startup, replacement, rollback, removal, and recovery
45
+ remain server-owned. Stopping the managed service without removing it belongs to your platform's service manager — `launchctl bootout gui/$(id -u)/ai.borgmcp.server` on macOS, `systemctl --user stop ai.borgmcp.server` on Linux. The server has no stop command and this client does not add one.
46
+
29
47
  Use installed help for the command set and exact options for your version:
30
48
 
31
49
  ```text
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "borgmcp",
3
- "version": "3.13.0",
3
+ "version": "3.15.0",
4
4
  "description": "Coordinate AI coding agents in shared cubes. Works with Claude Code, Codex, and OpenCode.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/cli-help.ts CHANGED
@@ -229,8 +229,9 @@ export function serverHelpText(): string {
229
229
  `Usage: borg server <command> [arguments]\n\n` +
230
230
  `Commands:\n` +
231
231
  ` setup Prepare local server identity and data; does not start the server.\n` +
232
- ` start Start the verified server in the foreground.\n` +
233
- ` stop Stop the managed local server.\n` +
232
+ ` start Start the verified server in the foreground; press Ctrl-C to stop.\n` +
233
+ ` service install Install and start the loopback-only per-user service so it continues after the terminal closes.\n` +
234
+ ` service uninstall Remove the managed service and preserve local state.\n` +
234
235
  ` status Report verified runtime evidence.\n` +
235
236
  ` update Verify and activate a local server artifact.\n` +
236
237
  ` invite Create a single-use invitation in an interactive terminal.\n` +
@@ -239,10 +240,21 @@ export function serverHelpText(): string {
239
240
  ` client-grant Grant a client read, write, or manage access to a cube while the server is live; committed changes take effect on the next request.\n` +
240
241
  ` dashboard View the running local server dashboard.\n` +
241
242
  ` cube init Initialize this Git repository's cube; does not create a drone.\n\n` +
243
+ `Managed-service behavior is server-owned. This client forwards install and uninstall but does not expose stop.\n\n` +
242
244
  `Run borg server <command> --help for server command options.\n`
243
245
  );
244
246
  }
245
247
 
248
+ /** Client-owned help for the server-owned service command namespace. */
249
+ export function serverServiceHelpText(): string {
250
+ return (
251
+ `Usage: borg server service <command> [arguments]\n\n` +
252
+ `Commands:\n` +
253
+ ` install Install and start the loopback-only per-user service.\n` +
254
+ ` uninstall Remove the managed service and preserve local state.\n`
255
+ );
256
+ }
257
+
246
258
  /** Client-owned help for repository cube initialization without a drone. */
247
259
  export function cubeInitHelpText(version: string): string {
248
260
  return (
@@ -1,14 +1,18 @@
1
1
  import { spawn as spawnChild, type SpawnOptions } from 'node:child_process';
2
2
  import { constants } from 'node:os';
3
3
  import chalk from 'chalk';
4
- import { cubeInitHelpText, isHelpFlag, serverHelpText } from './cli-help.js';
4
+ import {
5
+ cubeInitHelpText,
6
+ isHelpFlag,
7
+ serverHelpText,
8
+ serverServiceHelpText,
9
+ } from './cli-help.js';
5
10
  import { consolePrefix } from './console-prefix.js';
6
11
  import { getPackageVersion } from './version.js';
7
12
 
8
13
  export const SERVER_LIFECYCLE_COMMANDS = [
9
14
  'setup',
10
15
  'start',
11
- 'stop',
12
16
  'status',
13
17
  'update',
14
18
  'invite',
@@ -18,13 +22,15 @@ export const SERVER_LIFECYCLE_COMMANDS = [
18
22
  'dashboard',
19
23
  ] as const;
20
24
  export type ServerLifecycleCommand = typeof SERVER_LIFECYCLE_COMMANDS[number];
25
+ export type ServerFacadeCommand = ServerLifecycleCommand | 'service install' | 'service uninstall';
21
26
 
22
27
  export type ParsedServerFacadeArgs =
23
28
  | { kind: 'help' }
29
+ | { kind: 'service-help' }
24
30
  | { kind: 'cube-init-help' }
25
31
  | { kind: 'cube-init'; args: string[] }
26
- | { kind: 'command-help'; command: ServerLifecycleCommand }
27
- | { kind: 'command'; command: ServerLifecycleCommand; args: string[] }
32
+ | { kind: 'command-help'; command: ServerFacadeCommand }
33
+ | { kind: 'command'; command: ServerFacadeCommand; args: string[] }
28
34
  | { kind: 'error'; reason: 'unknown-command'; command: string };
29
35
 
30
36
  export function isClientOwnedCubeInitArgv(argv: readonly string[]): boolean {
@@ -42,6 +48,23 @@ export function parseServerFacadeArgs(args: readonly string[]): ParsedServerFaca
42
48
  ? { kind: 'cube-init-help' }
43
49
  : { kind: 'cube-init', args };
44
50
  }
51
+ if (command === 'service') {
52
+ const [subcommand, ...args] = rest;
53
+ if (subcommand === undefined || isHelpFlag(subcommand)) {
54
+ return { kind: 'service-help' };
55
+ }
56
+ if (subcommand !== 'install' && subcommand !== 'uninstall') {
57
+ return {
58
+ kind: 'error',
59
+ reason: 'unknown-command',
60
+ command: subcommand === undefined ? command : `${command} ${subcommand}`,
61
+ };
62
+ }
63
+ const serviceCommand = subcommand === 'install' ? 'service install' : 'service uninstall';
64
+ return args.some(isHelpFlag)
65
+ ? { kind: 'command-help', command: serviceCommand }
66
+ : { kind: 'command', command: serviceCommand, args };
67
+ }
45
68
  if (!(SERVER_LIFECYCLE_COMMANDS as readonly string[]).includes(command)) {
46
69
  return { kind: 'error', reason: 'unknown-command', command };
47
70
  }
@@ -173,19 +196,19 @@ function inertCommand(command: string): string {
173
196
  export function unknownServerCommandText(command: string): string {
174
197
  return (
175
198
  `Unknown server command: ${inertCommand(command)}.\n` +
176
- `Available commands: setup, start, stop, status, update, invite, cert-reissue, client-list, client-grant, dashboard, cube init.\n` +
199
+ `Available commands: setup, start, service install, service uninstall, status, update, invite, cert-reissue, client-list, client-grant, dashboard, cube init.\n` +
177
200
  `Next: run borg server --help.\n`
178
201
  );
179
202
  }
180
203
 
181
- export function serverLifecycleHelpText(command: ServerLifecycleCommand): string {
204
+ export function serverLifecycleHelpText(command: ServerFacadeCommand): string {
182
205
  return (
183
206
  `Usage: borg server ${command} [arguments]\n\n` +
184
207
  `Command arguments are server-owned and pass to the verified borg-mcp-server executable when run.\n`
185
208
  );
186
209
  }
187
210
 
188
- export function missingServerExecutableText(command: ServerLifecycleCommand): string {
211
+ export function missingServerExecutableText(command: ServerFacadeCommand): string {
189
212
  return (
190
213
  `Local server command is unavailable: borg-mcp-server was not found.\n` +
191
214
  `Next: install a verified borgmcp-server release, then rerun borg server ${command}.\n` +
@@ -193,7 +216,7 @@ export function missingServerExecutableText(command: ServerLifecycleCommand): st
193
216
  );
194
217
  }
195
218
 
196
- export function serverCommandStartupFailureText(command: ServerLifecycleCommand): string {
219
+ export function serverCommandStartupFailureText(command: ServerFacadeCommand): string {
197
220
  return (
198
221
  `Local server command could not be started.\n` +
199
222
  `Next: check local permissions and system resources, then rerun borg server ${inertCommand(command)}.\n` +
@@ -206,12 +229,13 @@ function isMissingServerExecutable(error: Error): boolean {
206
229
  }
207
230
 
208
231
  export function runServerFacadeProcess(
209
- input: { command: ServerLifecycleCommand; args: readonly string[] },
232
+ input: { command: ServerFacadeCommand; args: readonly string[] },
210
233
  deps: ServerFacadeProcessDeps = defaultProcessDeps,
211
234
  ): Promise<ServerFacadeProcessResult> {
235
+ const command = input.command.split(' ');
212
236
  const child = deps.spawn(
213
237
  'borg-mcp-server',
214
- [input.command, ...input.args],
238
+ [...command, ...input.args],
215
239
  { shell: false, stdio: 'inherit' },
216
240
  );
217
241
 
@@ -274,6 +298,10 @@ export async function runEarlyServerFacade(
274
298
  output.writeStdout(serverHelpText());
275
299
  return 0;
276
300
  }
301
+ if (parsed.kind === 'service-help') {
302
+ output.writeStdout(serverServiceHelpText());
303
+ return 0;
304
+ }
277
305
  if (parsed.kind === 'cube-init-help') {
278
306
  output.writeStdout(cubeInitHelpText(getPackageVersion()));
279
307
  return 0;