@moxt-ai/mobius 0.0.4 → 0.0.6

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.
Files changed (115) hide show
  1. package/dist/acp/native-session.d.ts +30 -0
  2. package/dist/acp/native-session.d.ts.map +1 -0
  3. package/dist/acp/native-session.js +25 -0
  4. package/dist/acp/native-session.js.map +1 -0
  5. package/dist/acp/session-history.d.ts +9 -0
  6. package/dist/acp/session-history.d.ts.map +1 -0
  7. package/dist/acp/session-history.js +69 -0
  8. package/dist/acp/session-history.js.map +1 -0
  9. package/dist/acp/session-manager.d.ts +16 -5
  10. package/dist/acp/session-manager.d.ts.map +1 -1
  11. package/dist/acp/session-manager.js +226 -41
  12. package/dist/acp/session-manager.js.map +1 -1
  13. package/dist/acp/session-store.d.ts +9 -0
  14. package/dist/acp/session-store.d.ts.map +1 -1
  15. package/dist/acp/session-store.js +43 -0
  16. package/dist/acp/session-store.js.map +1 -1
  17. package/dist/agent-catalog/agent-diagnostics.d.ts +3 -0
  18. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -0
  19. package/dist/agent-catalog/agent-diagnostics.js +62 -0
  20. package/dist/agent-catalog/agent-diagnostics.js.map +1 -0
  21. package/dist/agent-catalog/discover-local-agents.d.ts +77 -0
  22. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -0
  23. package/dist/agent-catalog/discover-local-agents.js +467 -0
  24. package/dist/agent-catalog/discover-local-agents.js.map +1 -0
  25. package/dist/agent-catalog/local-agent.d.ts +38 -0
  26. package/dist/agent-catalog/local-agent.d.ts.map +1 -0
  27. package/dist/agent-catalog/local-agent.js +93 -0
  28. package/dist/agent-catalog/local-agent.js.map +1 -0
  29. package/dist/agent-catalog/publish-agent-catalog.d.ts +3 -0
  30. package/dist/agent-catalog/publish-agent-catalog.d.ts.map +1 -0
  31. package/dist/agent-catalog/publish-agent-catalog.js +58 -0
  32. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -0
  33. package/dist/agent-installation/agent-installation-manager.d.ts +60 -0
  34. package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -0
  35. package/dist/agent-installation/agent-installation-manager.js +242 -0
  36. package/dist/agent-installation/agent-installation-manager.js.map +1 -0
  37. package/dist/agent-installation/automatic-adapter-provisioner.d.ts +18 -0
  38. package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -0
  39. package/dist/agent-installation/automatic-adapter-provisioner.js +116 -0
  40. package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -0
  41. package/dist/agent-installation/fixed-agent-install-recipes.d.ts +20 -0
  42. package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -0
  43. package/dist/agent-installation/fixed-agent-install-recipes.js +163 -0
  44. package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -0
  45. package/dist/agent-installation/fixed-installation-executor.d.ts +20 -0
  46. package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -0
  47. package/dist/agent-installation/fixed-installation-executor.js +204 -0
  48. package/dist/agent-installation/fixed-installation-executor.js.map +1 -0
  49. package/dist/agent-installation/installation-grants.d.ts +2 -0
  50. package/dist/agent-installation/installation-grants.d.ts.map +1 -0
  51. package/dist/agent-installation/installation-grants.js +52 -0
  52. package/dist/agent-installation/installation-grants.js.map +1 -0
  53. package/dist/agent-installation/local-installation-authorizer.d.ts +7 -0
  54. package/dist/agent-installation/local-installation-authorizer.d.ts.map +1 -0
  55. package/dist/agent-installation/local-installation-authorizer.js +32 -0
  56. package/dist/agent-installation/local-installation-authorizer.js.map +1 -0
  57. package/dist/agent-installation/managed-adapter-installer.d.ts +20 -0
  58. package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -0
  59. package/dist/agent-installation/managed-adapter-installer.js +159 -0
  60. package/dist/agent-installation/managed-adapter-installer.js.map +1 -0
  61. package/dist/agent-installation/verified-download.d.ts +24 -0
  62. package/dist/agent-installation/verified-download.d.ts.map +1 -0
  63. package/dist/agent-installation/verified-download.js +158 -0
  64. package/dist/agent-installation/verified-download.js.map +1 -0
  65. package/dist/audit/audit-store.d.ts +1 -0
  66. package/dist/audit/audit-store.d.ts.map +1 -1
  67. package/dist/audit/audit-store.js +12 -4
  68. package/dist/audit/audit-store.js.map +1 -1
  69. package/dist/authorization/local-authorization-error.d.ts +5 -0
  70. package/dist/authorization/local-authorization-error.d.ts.map +1 -0
  71. package/dist/authorization/local-authorization-error.js +8 -0
  72. package/dist/authorization/local-authorization-error.js.map +1 -0
  73. package/dist/authorization/workspace-directory.d.ts +16 -5
  74. package/dist/authorization/workspace-directory.d.ts.map +1 -1
  75. package/dist/authorization/workspace-directory.js +109 -119
  76. package/dist/authorization/workspace-directory.js.map +1 -1
  77. package/dist/cli.js +6289 -2124
  78. package/dist/cli.js.map +4 -4
  79. package/dist/config.d.ts +8 -12
  80. package/dist/config.d.ts.map +1 -1
  81. package/dist/config.js +14 -55
  82. package/dist/config.js.map +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +4894 -852
  86. package/dist/index.js.map +4 -4
  87. package/dist/native-sessions/codex-history.d.ts +11 -0
  88. package/dist/native-sessions/codex-history.d.ts.map +1 -0
  89. package/dist/native-sessions/codex-history.js +223 -0
  90. package/dist/native-sessions/codex-history.js.map +1 -0
  91. package/dist/native-sessions/service.d.ts +14 -0
  92. package/dist/native-sessions/service.d.ts.map +1 -0
  93. package/dist/native-sessions/service.js +249 -0
  94. package/dist/native-sessions/service.js.map +1 -0
  95. package/dist/pairing/pair-local-machine.d.ts +2 -2
  96. package/dist/pairing/pair-local-machine.d.ts.map +1 -1
  97. package/dist/pairing/pair-local-machine.js +65 -41
  98. package/dist/pairing/pair-local-machine.js.map +1 -1
  99. package/dist/process/executable.d.ts +40 -0
  100. package/dist/process/executable.d.ts.map +1 -0
  101. package/dist/process/executable.js +305 -0
  102. package/dist/process/executable.js.map +1 -0
  103. package/dist/run-daemon.d.ts +1 -1
  104. package/dist/run-daemon.d.ts.map +1 -1
  105. package/dist/run-daemon.js +431 -180
  106. package/dist/run-daemon.js.map +1 -1
  107. package/dist/storage/state-directory.d.ts +2 -0
  108. package/dist/storage/state-directory.d.ts.map +1 -0
  109. package/dist/storage/state-directory.js +10 -0
  110. package/dist/storage/state-directory.js.map +1 -0
  111. package/package.json +5 -6
  112. package/dist/authorization/authorize-binding.d.ts +0 -6
  113. package/dist/authorization/authorize-binding.d.ts.map +0 -1
  114. package/dist/authorization/authorize-binding.js +0 -30
  115. package/dist/authorization/authorize-binding.js.map +0 -1
@@ -1,10 +1,12 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { mkdir, open, realpath, rename, stat, writeFile, } from "node:fs/promises";
3
- import { homedir, hostname } from "node:os";
3
+ import { hostname } from "node:os";
4
4
  import { basename, join, resolve } from "node:path";
5
5
  import { fetch } from "undici";
6
- import { createDaemonConfig, loadLocalAgents, } from "../config.js";
6
+ import { discoverLocalAgentInventory, } from "../agent-catalog/discover-local-agents.js";
7
+ import { createDaemonConfig, loadDefaultWorkspace, } from "../config.js";
7
8
  import { environmentProxyDispatcher } from "../network/environment-proxy.js";
9
+ import { readStateDirectory } from "../storage/state-directory.js";
8
10
  const PAIRING_TIMEOUT_MILLISECONDS = 20_000;
9
11
  const PAIRING_CODE_PATTERN = /^[A-HJ-NP-Z2-9]{4}(?:-[A-HJ-NP-Z2-9]{4}){4}$/;
10
12
  const IDENTIFIER_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/;
@@ -12,7 +14,7 @@ const TOKEN_PATTERN = /^[a-zA-Z0-9_-]{32,256}$/;
12
14
  const MAX_CONNECTION_FILE_LENGTH = 16 * 1024;
13
15
  const CLAIM_RESPONSE_KEYS = ["channelId", "daemonToken"];
14
16
  const SAVED_CONNECTION_KEYS = [
15
- "approvedRoot",
17
+ "defaultWorkspace",
16
18
  "channelId",
17
19
  "daemonToken",
18
20
  "relayOrigin",
@@ -54,7 +56,7 @@ function readSingleOption(arguments_, option) {
54
56
  function assertKnownArguments(arguments_) {
55
57
  for (let index = 0; index < arguments_.length; index += 2) {
56
58
  const option = arguments_[index];
57
- if (option !== "--url" && option !== "--code" && option !== "--root") {
59
+ if (option !== "--url" && option !== "--code" && option !== "--workspace") {
58
60
  throw new PairingClientError("invalid_arguments", `Unknown pairing option: ${option ?? "missing option"}`);
59
61
  }
60
62
  }
@@ -95,7 +97,9 @@ function parsePairCommand(arguments_) {
95
97
  return {
96
98
  code: parsePairingCode(readSingleOption(arguments_, "--code")),
97
99
  relayOrigin: parseRelayOrigin(readSingleOption(arguments_, "--url")),
98
- root: readSingleOption(arguments_, "--root"),
100
+ workspace: arguments_.includes("--workspace")
101
+ ? readSingleOption(arguments_, "--workspace")
102
+ : loadDefaultWorkspace(),
99
103
  };
100
104
  }
101
105
  function parseChannelArgument(arguments_) {
@@ -108,21 +112,22 @@ function parseChannelArgument(arguments_) {
108
112
  }
109
113
  return channelId;
110
114
  }
111
- async function resolveApprovedRoot(path) {
112
- const requestedRoot = resolve(path);
115
+ async function resolveDefaultWorkspace(path) {
116
+ const requestedWorkspace = resolve(path);
113
117
  try {
114
- const approvedRoot = await realpath(requestedRoot);
115
- const metadata = await stat(approvedRoot);
118
+ await mkdir(requestedWorkspace, { recursive: true, mode: 0o700 });
119
+ const defaultWorkspace = await realpath(requestedWorkspace);
120
+ const metadata = await stat(defaultWorkspace);
116
121
  if (!metadata.isDirectory()) {
117
- throw new PairingClientError("invalid_workspace", "The approved workspace root is not a directory");
122
+ throw new PairingClientError("invalid_workspace", "The default workspace is not a directory");
118
123
  }
119
- return approvedRoot;
124
+ return defaultWorkspace;
120
125
  }
121
126
  catch (error) {
122
127
  if (error instanceof PairingClientError) {
123
128
  throw error;
124
129
  }
125
- throw new PairingClientError("invalid_workspace", "The approved workspace root cannot be resolved", { cause: error });
130
+ throw new PairingClientError("invalid_workspace", "The default workspace cannot be resolved", { cause: error });
126
131
  }
127
132
  }
128
133
  async function readJsonResponse(response) {
@@ -164,8 +169,8 @@ function decodeClaimResponse(value) {
164
169
  }
165
170
  return { channelId, daemonToken };
166
171
  }
167
- async function claimPairing(options, approvedRoot) {
168
- const agents = loadLocalAgents().map((agent) => ({
172
+ async function claimPairing(options, defaultWorkspace, localAgents, installableAgents, signal) {
173
+ const agents = localAgents.map((agent) => ({
169
174
  id: agent.id,
170
175
  label: agent.label,
171
176
  }));
@@ -175,14 +180,22 @@ async function claimPairing(options, approvedRoot) {
175
180
  response = await fetch(endpoint, {
176
181
  body: JSON.stringify({
177
182
  agents,
183
+ installableAgents: installableAgents.map((agent) => ({
184
+ id: agent.id,
185
+ label: agent.label,
186
+ requiresLocalApproval: agent.requiresLocalApproval,
187
+ })),
178
188
  machineName: hostname(),
179
189
  pairingCode: options.code,
180
- workspaceName: basename(approvedRoot) || "Local workspace",
190
+ workspaceName: basename(defaultWorkspace) || "Local workspace",
181
191
  }),
182
192
  dispatcher: environmentProxyDispatcher,
183
193
  headers: { "content-type": "application/json" },
184
194
  method: "POST",
185
- signal: AbortSignal.timeout(PAIRING_TIMEOUT_MILLISECONDS),
195
+ signal: AbortSignal.any([
196
+ signal,
197
+ AbortSignal.timeout(PAIRING_TIMEOUT_MILLISECONDS),
198
+ ]),
186
199
  });
187
200
  }
188
201
  catch (error) {
@@ -194,21 +207,13 @@ async function claimPairing(options, approvedRoot) {
194
207
  }
195
208
  return decodeClaimResponse(value);
196
209
  }
197
- function readStateDirectory() {
198
- // biome-ignore lint/complexity/useLiteralKeys: Environment variables use an index signature.
199
- const configured = process.env["MOBIUS_STATE_DIRECTORY"]?.trim();
200
- if (configured !== undefined && configured.length > 0) {
201
- return resolve(configured);
202
- }
203
- return join(homedir(), ".mobius");
204
- }
205
- async function persistConnection(channelId, relayOrigin, daemonToken, approvedRoot) {
210
+ async function persistConnection(channelId, relayOrigin, daemonToken, defaultWorkspace) {
206
211
  const connectionsDirectory = join(readStateDirectory(), "connections");
207
212
  await mkdir(connectionsDirectory, { mode: 0o700, recursive: true });
208
213
  const connectionPath = join(connectionsDirectory, `${channelId}.json`);
209
214
  const temporaryPath = join(connectionsDirectory, `.${channelId}.${randomUUID()}.tmp`);
210
215
  await writeFile(temporaryPath, `${JSON.stringify({
211
- approvedRoot,
216
+ defaultWorkspace,
212
217
  channelId,
213
218
  daemonToken,
214
219
  relayOrigin: relayOrigin.toString(),
@@ -220,11 +225,11 @@ function decodeSavedConnection(value, expectedChannelId) {
220
225
  if (!isRecord(value) || !hasExactKeys(value, SAVED_CONNECTION_KEYS)) {
221
226
  throw new PairingClientError("invalid_connection", "The saved connection is invalid");
222
227
  }
223
- const approvedRoot = value["approvedRoot"];
228
+ const defaultWorkspace = value["defaultWorkspace"];
224
229
  const channelId = value["channelId"];
225
230
  const daemonToken = value["daemonToken"];
226
231
  const relayOrigin = value["relayOrigin"];
227
- if (typeof approvedRoot !== "string" ||
232
+ if (typeof defaultWorkspace !== "string" ||
228
233
  typeof channelId !== "string" ||
229
234
  channelId !== expectedChannelId ||
230
235
  !IDENTIFIER_PATTERN.test(channelId) ||
@@ -234,7 +239,7 @@ function decodeSavedConnection(value, expectedChannelId) {
234
239
  throw new PairingClientError("invalid_connection", "The saved connection is invalid");
235
240
  }
236
241
  return {
237
- approvedRoot,
242
+ defaultWorkspace,
238
243
  channelId,
239
244
  daemonToken,
240
245
  relayOrigin: parseRelayOrigin(relayOrigin),
@@ -263,13 +268,19 @@ async function readSavedConnection(channelId) {
263
268
  }
264
269
  const connection = decodeSavedConnection(value, channelId);
265
270
  return {
266
- approvedRoot: await resolveApprovedRoot(connection.approvedRoot),
271
+ defaultWorkspace: await resolveDefaultWorkspace(connection.defaultWorkspace),
267
272
  channelId: connection.channelId,
268
273
  daemonToken: connection.daemonToken,
269
274
  relayOrigin: connection.relayOrigin,
270
275
  };
271
276
  }
272
- function buildPairedDaemon(connection, connectionPath) {
277
+ function assertInventoryUsable(inventory) {
278
+ if (inventory.available.length + inventory.installable.length === 0) {
279
+ throw new PairingClientError("no_supported_agent", "No supported Agent is ready or safely installable on this machine");
280
+ }
281
+ }
282
+ function buildPairedDaemon(connection, connectionPath, inventory) {
283
+ assertInventoryUsable(inventory);
273
284
  const relayUrl = new URL(`/v1/channels/${encodeURIComponent(connection.channelId)}/daemon`, connection.relayOrigin);
274
285
  relayUrl.protocol = relayUrl.protocol === "https:" ? "wss:" : "ws:";
275
286
  relayUrl.searchParams.set("token", connection.daemonToken);
@@ -277,29 +288,42 @@ function buildPairedDaemon(connection, connectionPath) {
277
288
  return {
278
289
  channelUrl: new URL(`/channels/${encodeURIComponent(connection.channelId)}`, connection.relayOrigin).toString(),
279
290
  config: createDaemonConfig({
280
- approvedRoot: connection.approvedRoot,
291
+ defaultWorkspace: connection.defaultWorkspace,
281
292
  auditDatabasePath,
282
293
  channelId: connection.channelId,
283
294
  relayUrl,
284
- }),
295
+ }, inventory.readyAgents(), inventory.installable),
285
296
  connectionPath,
286
297
  };
287
298
  }
288
- export async function pairLocalMachine(arguments_) {
299
+ export async function pairLocalMachine(arguments_, signal = new AbortController().signal) {
289
300
  const options = parsePairCommand(arguments_);
290
- const approvedRoot = await resolveApprovedRoot(options.root);
291
- const claim = await claimPairing(options, approvedRoot);
292
- const connectionPath = await persistConnection(claim.channelId, options.relayOrigin, claim.daemonToken, approvedRoot);
301
+ const defaultWorkspace = await resolveDefaultWorkspace(options.workspace);
302
+ const inventory = await discoverLocalAgentInventory({
303
+ defaultWorkspace,
304
+ environment: process.env,
305
+ signal,
306
+ });
307
+ assertInventoryUsable(inventory);
308
+ const agents = inventory.readyAgents();
309
+ const claim = await claimPairing(options, defaultWorkspace, agents, inventory.installable, signal);
310
+ const connectionPath = await persistConnection(claim.channelId, options.relayOrigin, claim.daemonToken, defaultWorkspace);
293
311
  return buildPairedDaemon({
294
- approvedRoot,
312
+ defaultWorkspace,
295
313
  channelId: claim.channelId,
296
314
  daemonToken: claim.daemonToken,
297
315
  relayOrigin: options.relayOrigin,
298
- }, connectionPath);
316
+ }, connectionPath, inventory);
299
317
  }
300
- export async function resumeLocalMachine(arguments_) {
318
+ export async function resumeLocalMachine(arguments_, signal = new AbortController().signal) {
301
319
  const channelId = parseChannelArgument(arguments_);
302
320
  const connectionPath = join(readStateDirectory(), "connections", `${channelId}.json`);
303
- return buildPairedDaemon(await readSavedConnection(channelId), connectionPath);
321
+ const connection = await readSavedConnection(channelId);
322
+ const inventory = await discoverLocalAgentInventory({
323
+ defaultWorkspace: connection.defaultWorkspace,
324
+ environment: process.env,
325
+ signal,
326
+ });
327
+ return buildPairedDaemon(connection, connectionPath, inventory);
304
328
  }
305
329
  //# sourceMappingURL=pair-local-machine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pair-local-machine.js","sourceRoot":"","sources":["../../src/pairing/pair-local-machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pair-local-machine.js","sourceRoot":"","sources":["../../src/pairing/pair-local-machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { spawn } from "node:child_process";
2
+ export declare class ExecutableIdentity {
3
+ readonly changedAtMilliseconds: number;
4
+ readonly device: number;
5
+ readonly inode: number;
6
+ readonly realPath: string;
7
+ readonly requestedPath: string;
8
+ readonly size: number;
9
+ constructor(requestedPath: string, realPath_: string, device: number, inode: number, size: number, changedAtMilliseconds: number);
10
+ readonly matches: (candidate: ExecutableIdentity) => boolean;
11
+ }
12
+ export declare class ResolvedExecutable {
13
+ readonly identity: ExecutableIdentity;
14
+ readonly path: string;
15
+ constructor(identity: ExecutableIdentity);
16
+ }
17
+ export declare class ProcessExecutionError extends Error {
18
+ readonly code: string;
19
+ constructor(code: string, message: string, options?: ErrorOptions);
20
+ }
21
+ export declare class ProcessResult {
22
+ readonly stderr: string;
23
+ readonly stdout: string;
24
+ constructor(stdout: string, stderr: string);
25
+ }
26
+ export interface RunProcessOptions {
27
+ readonly arguments: readonly string[];
28
+ readonly command: string;
29
+ readonly cwd: string;
30
+ readonly environment: Readonly<NodeJS.ProcessEnv>;
31
+ readonly outputLimitBytes?: number;
32
+ readonly signal: AbortSignal;
33
+ readonly timeoutMilliseconds: number;
34
+ }
35
+ export declare function resolveExecutablePath(requestedPath: string, platform?: NodeJS.Platform): Promise<ResolvedExecutable | null>;
36
+ export declare function findExecutableOnPath(executableName: string, environment: Readonly<NodeJS.ProcessEnv>, platform?: NodeJS.Platform): Promise<ResolvedExecutable | null>;
37
+ export declare function revalidateExecutable(identity: ExecutableIdentity, platform?: NodeJS.Platform): Promise<boolean>;
38
+ export declare function stopProcessTree(child: ReturnType<typeof spawn>): Promise<void>;
39
+ export declare function runBoundedProcess(options: RunProcessOptions): Promise<ProcessResult>;
40
+ //# sourceMappingURL=executable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.d.ts","sourceRoot":"","sources":["../../src/process/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAS3C,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YACE,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,MAAM,EAQ9B;IAED,QAAQ,CAAC,OAAO,cAAe,kBAAkB,KAAG,OAAO,CAMM;CAClE;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,QAAQ,EAAE,kBAAkB,EAGvC;CACF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACF;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAGzC;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAwBD,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwBpC;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EACxC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuBpC;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,OAAO,CAAC,CAGlB;AAyDD,wBAAsB,eAAe,CACnC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuBf;AA6BD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAsJxB"}
@@ -0,0 +1,305 @@
1
+ import { spawn } from "node:child_process";
2
+ import { constants } from "node:fs";
3
+ import { access, realpath, stat } from "node:fs/promises";
4
+ import { join, resolve } from "node:path";
5
+ const DEFAULT_OUTPUT_LIMIT_BYTES = 16 * 1024;
6
+ const PROCESS_GRACEFUL_STOP_TIMEOUT_MILLISECONDS = 1_000;
7
+ const PROCESS_FORCED_STOP_TIMEOUT_MILLISECONDS = 5_000;
8
+ export class ExecutableIdentity {
9
+ changedAtMilliseconds;
10
+ device;
11
+ inode;
12
+ realPath;
13
+ requestedPath;
14
+ size;
15
+ constructor(requestedPath, realPath_, device, inode, size, changedAtMilliseconds) {
16
+ this.changedAtMilliseconds = changedAtMilliseconds;
17
+ this.device = device;
18
+ this.inode = inode;
19
+ this.realPath = realPath_;
20
+ this.requestedPath = requestedPath;
21
+ this.size = size;
22
+ }
23
+ matches = (candidate) => this.requestedPath === candidate.requestedPath &&
24
+ this.realPath === candidate.realPath &&
25
+ this.device === candidate.device &&
26
+ this.inode === candidate.inode &&
27
+ this.size === candidate.size &&
28
+ this.changedAtMilliseconds === candidate.changedAtMilliseconds;
29
+ }
30
+ export class ResolvedExecutable {
31
+ identity;
32
+ path;
33
+ constructor(identity) {
34
+ this.identity = identity;
35
+ this.path = identity.realPath;
36
+ }
37
+ }
38
+ export class ProcessExecutionError extends Error {
39
+ code;
40
+ constructor(code, message, options = {}) {
41
+ super(message, options);
42
+ this.code = code;
43
+ this.name = "ProcessExecutionError";
44
+ }
45
+ }
46
+ export class ProcessResult {
47
+ stderr;
48
+ stdout;
49
+ constructor(stdout, stderr) {
50
+ this.stderr = stderr;
51
+ this.stdout = stdout;
52
+ }
53
+ }
54
+ function executableExtensions(executableName, environment, platform) {
55
+ if (platform !== "win32") {
56
+ return [""];
57
+ }
58
+ if (/\.[a-zA-Z0-9]+$/.test(executableName)) {
59
+ return [""];
60
+ }
61
+ const configured = environment["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD";
62
+ const extensions = configured
63
+ .split(";")
64
+ .map((extension) => extension.trim())
65
+ .filter((extension) => extension.length > 0)
66
+ .map((extension) => extension.startsWith(".") ? extension : `.${extension}`);
67
+ return extensions.length > 0 ? extensions : [".EXE"];
68
+ }
69
+ export async function resolveExecutablePath(requestedPath, platform = process.platform) {
70
+ const absoluteRequestedPath = resolve(requestedPath);
71
+ try {
72
+ const resolvedPath = await realpath(absoluteRequestedPath);
73
+ const metadata = await stat(resolvedPath);
74
+ if (!metadata.isFile()) {
75
+ return null;
76
+ }
77
+ if (platform !== "win32") {
78
+ await access(resolvedPath, constants.X_OK);
79
+ }
80
+ return new ResolvedExecutable(new ExecutableIdentity(absoluteRequestedPath, resolvedPath, metadata.dev, metadata.ino, metadata.size, metadata.ctimeMs));
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ export async function findExecutableOnPath(executableName, environment, platform = process.platform) {
87
+ const encodedPath = environment["PATH"] ?? "";
88
+ const separator = platform === "win32" ? ";" : ":";
89
+ const extensions = executableExtensions(executableName, environment, platform);
90
+ for (const entry of encodedPath.split(separator)) {
91
+ if (entry.length === 0) {
92
+ continue;
93
+ }
94
+ for (const extension of extensions) {
95
+ const requestedPath = resolve(join(entry, `${executableName}${extension}`));
96
+ const executable = await resolveExecutablePath(requestedPath, platform);
97
+ if (executable !== null) {
98
+ return executable;
99
+ }
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ export async function revalidateExecutable(identity, platform = process.platform) {
105
+ const current = await resolveExecutablePath(identity.requestedPath, platform);
106
+ return current !== null && identity.matches(current.identity);
107
+ }
108
+ function appendBounded(chunks, chunk, currentBytes, limitBytes) {
109
+ const nextBytes = currentBytes + chunk.byteLength;
110
+ if (nextBytes > limitBytes) {
111
+ throw new ProcessExecutionError("process_output_limit", "The executable produced too much output");
112
+ }
113
+ chunks.push(chunk);
114
+ return nextBytes;
115
+ }
116
+ function terminateProcess(child) {
117
+ if (child.exitCode !== null ||
118
+ child.signalCode !== null ||
119
+ child.pid === undefined) {
120
+ return;
121
+ }
122
+ if (process.platform !== "win32") {
123
+ try {
124
+ process.kill(-child.pid, "SIGTERM");
125
+ return;
126
+ }
127
+ catch {
128
+ // Fall through when the process did not create a process group.
129
+ }
130
+ }
131
+ child.kill("SIGTERM");
132
+ }
133
+ function forceTerminateProcess(child) {
134
+ if (child.exitCode !== null ||
135
+ child.signalCode !== null ||
136
+ child.pid === undefined) {
137
+ return;
138
+ }
139
+ if (process.platform !== "win32") {
140
+ try {
141
+ process.kill(-child.pid, "SIGKILL");
142
+ return;
143
+ }
144
+ catch {
145
+ // Fall through when the process did not create a process group.
146
+ }
147
+ }
148
+ child.kill("SIGKILL");
149
+ }
150
+ export async function stopProcessTree(child) {
151
+ if (child.exitCode !== null || child.signalCode !== null) {
152
+ return;
153
+ }
154
+ terminateProcess(child);
155
+ const exitedAfterTermination = await waitForProcessExit(child, PROCESS_GRACEFUL_STOP_TIMEOUT_MILLISECONDS);
156
+ if (exitedAfterTermination) {
157
+ return;
158
+ }
159
+ forceTerminateProcess(child);
160
+ const exitedAfterForce = await waitForProcessExit(child, PROCESS_FORCED_STOP_TIMEOUT_MILLISECONDS);
161
+ if (!exitedAfterForce) {
162
+ throw new ProcessExecutionError("process_termination_timeout", "The executable process could not be stopped");
163
+ }
164
+ }
165
+ function waitForProcessExit(child, timeoutMilliseconds) {
166
+ if (child.exitCode !== null || child.signalCode !== null) {
167
+ return Promise.resolve(true);
168
+ }
169
+ return new Promise((resolveExit) => {
170
+ let settled = false;
171
+ const finish = (exited) => {
172
+ if (settled) {
173
+ return;
174
+ }
175
+ settled = true;
176
+ clearTimeout(timeout);
177
+ child.removeListener("exit", handleExit);
178
+ resolveExit(exited);
179
+ };
180
+ const handleExit = () => finish(true);
181
+ const timeout = setTimeout(() => finish(false), timeoutMilliseconds);
182
+ child.once("exit", handleExit);
183
+ if (child.exitCode !== null || child.signalCode !== null) {
184
+ finish(true);
185
+ }
186
+ });
187
+ }
188
+ export async function runBoundedProcess(options) {
189
+ options.signal.throwIfAborted();
190
+ const outputLimitBytes = options.outputLimitBytes ?? DEFAULT_OUTPUT_LIMIT_BYTES;
191
+ const child = spawn(options.command, [...options.arguments], {
192
+ cwd: options.cwd,
193
+ detached: process.platform !== "win32",
194
+ env: { ...options.environment },
195
+ shell: false,
196
+ stdio: ["ignore", "pipe", "pipe"],
197
+ });
198
+ const stdout = [];
199
+ const stderr = [];
200
+ let stdoutBytes = 0;
201
+ let stderrBytes = 0;
202
+ let interruptionFailure = null;
203
+ let interruptionCleanupFailure = null;
204
+ let stopping = false;
205
+ const interrupted = Promise.withResolvers();
206
+ const interrupt = (failure) => {
207
+ if (stopping) {
208
+ return;
209
+ }
210
+ stopping = true;
211
+ interruptionFailure = failure;
212
+ const stop = async () => {
213
+ try {
214
+ await stopProcessTree(child);
215
+ }
216
+ catch (error) {
217
+ interruptionCleanupFailure =
218
+ error instanceof ProcessExecutionError
219
+ ? error
220
+ : new ProcessExecutionError("process_termination_failed", "The executable process could not be stopped", { cause: error });
221
+ }
222
+ finally {
223
+ interrupted.resolve();
224
+ }
225
+ };
226
+ void stop();
227
+ };
228
+ const collectStdout = (chunk) => {
229
+ if (interruptionFailure !== null) {
230
+ return;
231
+ }
232
+ try {
233
+ stdoutBytes = appendBounded(stdout, chunk, stdoutBytes, outputLimitBytes);
234
+ }
235
+ catch (error) {
236
+ const failure = error instanceof ProcessExecutionError
237
+ ? error
238
+ : new ProcessExecutionError("process_output_limit", "The executable produced too much output", { cause: error });
239
+ interrupt(failure);
240
+ }
241
+ };
242
+ const collectStderr = (chunk) => {
243
+ if (interruptionFailure !== null) {
244
+ return;
245
+ }
246
+ try {
247
+ stderrBytes = appendBounded(stderr, chunk, stderrBytes, outputLimitBytes);
248
+ }
249
+ catch (error) {
250
+ const failure = error instanceof ProcessExecutionError
251
+ ? error
252
+ : new ProcessExecutionError("process_output_limit", "The executable produced too much output", { cause: error });
253
+ interrupt(failure);
254
+ }
255
+ };
256
+ child.stdout?.on("data", collectStdout);
257
+ child.stderr?.on("data", collectStderr);
258
+ const timeout = setTimeout(() => {
259
+ interrupt(new ProcessExecutionError("process_timeout", "The executable probe timed out"));
260
+ }, options.timeoutMilliseconds);
261
+ const abort = () => interrupt(new ProcessExecutionError("process_cancelled", "The executable probe was cancelled", { cause: options.signal.reason }));
262
+ options.signal.addEventListener("abort", abort, { once: true });
263
+ if (options.signal.aborted) {
264
+ abort();
265
+ }
266
+ try {
267
+ const exit = new Promise((resolveExit, rejectExit) => {
268
+ child.once("error", rejectExit);
269
+ child.once("exit", (code) => resolveExit(code ?? 1));
270
+ });
271
+ const exitCode = await Promise.race([
272
+ exit,
273
+ interrupted.promise.then(() => -1),
274
+ ]);
275
+ if (interruptionCleanupFailure !== null) {
276
+ throw interruptionCleanupFailure;
277
+ }
278
+ if (interruptionFailure !== null) {
279
+ throw interruptionFailure;
280
+ }
281
+ if (exitCode !== 0) {
282
+ throw new ProcessExecutionError("process_exit_failed", "The executable probe failed");
283
+ }
284
+ return new ProcessResult(Buffer.concat(stdout).toString("utf8"), Buffer.concat(stderr).toString("utf8"));
285
+ }
286
+ catch (error) {
287
+ if (error instanceof ProcessExecutionError) {
288
+ throw error;
289
+ }
290
+ throw new ProcessExecutionError("process_spawn_failed", "The executable could not be started", { cause: error });
291
+ }
292
+ finally {
293
+ clearTimeout(timeout);
294
+ options.signal.removeEventListener("abort", abort);
295
+ child.stdout?.removeListener("data", collectStdout);
296
+ child.stderr?.removeListener("data", collectStderr);
297
+ if (stopping) {
298
+ await interrupted.promise;
299
+ }
300
+ else {
301
+ await stopProcessTree(child);
302
+ }
303
+ }
304
+ }
305
+ //# sourceMappingURL=executable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.js","sourceRoot":"","sources":["../../src/process/executable.ts"],"names":[],"mappings":"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"}