@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.
- package/dist/acp/native-session.d.ts +30 -0
- package/dist/acp/native-session.d.ts.map +1 -0
- package/dist/acp/native-session.js +25 -0
- package/dist/acp/native-session.js.map +1 -0
- package/dist/acp/session-history.d.ts +9 -0
- package/dist/acp/session-history.d.ts.map +1 -0
- package/dist/acp/session-history.js +69 -0
- package/dist/acp/session-history.js.map +1 -0
- package/dist/acp/session-manager.d.ts +16 -5
- package/dist/acp/session-manager.d.ts.map +1 -1
- package/dist/acp/session-manager.js +226 -41
- package/dist/acp/session-manager.js.map +1 -1
- package/dist/acp/session-store.d.ts +9 -0
- package/dist/acp/session-store.d.ts.map +1 -1
- package/dist/acp/session-store.js +43 -0
- package/dist/acp/session-store.js.map +1 -1
- package/dist/agent-catalog/agent-diagnostics.d.ts +3 -0
- package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -0
- package/dist/agent-catalog/agent-diagnostics.js +62 -0
- package/dist/agent-catalog/agent-diagnostics.js.map +1 -0
- package/dist/agent-catalog/discover-local-agents.d.ts +77 -0
- package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -0
- package/dist/agent-catalog/discover-local-agents.js +467 -0
- package/dist/agent-catalog/discover-local-agents.js.map +1 -0
- package/dist/agent-catalog/local-agent.d.ts +38 -0
- package/dist/agent-catalog/local-agent.d.ts.map +1 -0
- package/dist/agent-catalog/local-agent.js +93 -0
- package/dist/agent-catalog/local-agent.js.map +1 -0
- package/dist/agent-catalog/publish-agent-catalog.d.ts +3 -0
- package/dist/agent-catalog/publish-agent-catalog.d.ts.map +1 -0
- package/dist/agent-catalog/publish-agent-catalog.js +58 -0
- package/dist/agent-catalog/publish-agent-catalog.js.map +1 -0
- package/dist/agent-installation/agent-installation-manager.d.ts +60 -0
- package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -0
- package/dist/agent-installation/agent-installation-manager.js +242 -0
- package/dist/agent-installation/agent-installation-manager.js.map +1 -0
- package/dist/agent-installation/automatic-adapter-provisioner.d.ts +18 -0
- package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -0
- package/dist/agent-installation/automatic-adapter-provisioner.js +116 -0
- package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -0
- package/dist/agent-installation/fixed-agent-install-recipes.d.ts +20 -0
- package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -0
- package/dist/agent-installation/fixed-agent-install-recipes.js +163 -0
- package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -0
- package/dist/agent-installation/fixed-installation-executor.d.ts +20 -0
- package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -0
- package/dist/agent-installation/fixed-installation-executor.js +204 -0
- package/dist/agent-installation/fixed-installation-executor.js.map +1 -0
- package/dist/agent-installation/installation-grants.d.ts +2 -0
- package/dist/agent-installation/installation-grants.d.ts.map +1 -0
- package/dist/agent-installation/installation-grants.js +52 -0
- package/dist/agent-installation/installation-grants.js.map +1 -0
- package/dist/agent-installation/local-installation-authorizer.d.ts +7 -0
- package/dist/agent-installation/local-installation-authorizer.d.ts.map +1 -0
- package/dist/agent-installation/local-installation-authorizer.js +32 -0
- package/dist/agent-installation/local-installation-authorizer.js.map +1 -0
- package/dist/agent-installation/managed-adapter-installer.d.ts +20 -0
- package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -0
- package/dist/agent-installation/managed-adapter-installer.js +159 -0
- package/dist/agent-installation/managed-adapter-installer.js.map +1 -0
- package/dist/agent-installation/verified-download.d.ts +24 -0
- package/dist/agent-installation/verified-download.d.ts.map +1 -0
- package/dist/agent-installation/verified-download.js +158 -0
- package/dist/agent-installation/verified-download.js.map +1 -0
- package/dist/audit/audit-store.d.ts +1 -0
- package/dist/audit/audit-store.d.ts.map +1 -1
- package/dist/audit/audit-store.js +12 -4
- package/dist/audit/audit-store.js.map +1 -1
- package/dist/authorization/local-authorization-error.d.ts +5 -0
- package/dist/authorization/local-authorization-error.d.ts.map +1 -0
- package/dist/authorization/local-authorization-error.js +8 -0
- package/dist/authorization/local-authorization-error.js.map +1 -0
- package/dist/authorization/workspace-directory.d.ts +16 -5
- package/dist/authorization/workspace-directory.d.ts.map +1 -1
- package/dist/authorization/workspace-directory.js +109 -119
- package/dist/authorization/workspace-directory.js.map +1 -1
- package/dist/cli.js +6289 -2124
- package/dist/cli.js.map +4 -4
- package/dist/config.d.ts +8 -12
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -55
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4894 -852
- package/dist/index.js.map +4 -4
- package/dist/native-sessions/codex-history.d.ts +11 -0
- package/dist/native-sessions/codex-history.d.ts.map +1 -0
- package/dist/native-sessions/codex-history.js +223 -0
- package/dist/native-sessions/codex-history.js.map +1 -0
- package/dist/native-sessions/service.d.ts +14 -0
- package/dist/native-sessions/service.d.ts.map +1 -0
- package/dist/native-sessions/service.js +249 -0
- package/dist/native-sessions/service.js.map +1 -0
- package/dist/pairing/pair-local-machine.d.ts +2 -2
- package/dist/pairing/pair-local-machine.d.ts.map +1 -1
- package/dist/pairing/pair-local-machine.js +65 -41
- package/dist/pairing/pair-local-machine.js.map +1 -1
- package/dist/process/executable.d.ts +40 -0
- package/dist/process/executable.d.ts.map +1 -0
- package/dist/process/executable.js +305 -0
- package/dist/process/executable.js.map +1 -0
- package/dist/run-daemon.d.ts +1 -1
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +431 -180
- package/dist/run-daemon.js.map +1 -1
- package/dist/storage/state-directory.d.ts +2 -0
- package/dist/storage/state-directory.d.ts.map +1 -0
- package/dist/storage/state-directory.js +10 -0
- package/dist/storage/state-directory.js.map +1 -0
- package/package.json +5 -6
- package/dist/authorization/authorize-binding.d.ts +0 -6
- package/dist/authorization/authorize-binding.d.ts.map +0 -1
- package/dist/authorization/authorize-binding.js +0 -30
- 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 {
|
|
3
|
+
import { hostname } from "node:os";
|
|
4
4
|
import { basename, join, resolve } from "node:path";
|
|
5
5
|
import { fetch } from "undici";
|
|
6
|
-
import {
|
|
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
|
-
"
|
|
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 !== "--
|
|
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
|
-
|
|
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
|
|
112
|
-
const
|
|
115
|
+
async function resolveDefaultWorkspace(path) {
|
|
116
|
+
const requestedWorkspace = resolve(path);
|
|
113
117
|
try {
|
|
114
|
-
|
|
115
|
-
const
|
|
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
|
|
122
|
+
throw new PairingClientError("invalid_workspace", "The default workspace is not a directory");
|
|
118
123
|
}
|
|
119
|
-
return
|
|
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
|
|
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,
|
|
168
|
-
const agents =
|
|
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(
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
291
|
-
const
|
|
292
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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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"}
|