@botiverse/oar 0.13.1 → 0.13.2
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/runtimes/codex/app-server-client.d.ts.map +1 -1
- package/dist/runtimes/codex/app-server-client.js +11 -5
- package/dist/runtimes/codex/app-server-client.js.map +1 -1
- package/dist/shared/deliver.d.ts.map +1 -1
- package/dist/shared/deliver.js +10 -1
- package/dist/shared/deliver.js.map +1 -1
- package/dist/shared/executable/diagnostics.d.ts +25 -0
- package/dist/shared/executable/diagnostics.d.ts.map +1 -0
- package/dist/shared/executable/diagnostics.js +49 -0
- package/dist/shared/executable/diagnostics.js.map +1 -0
- package/dist/shared/executable/process.d.ts +3 -0
- package/dist/shared/executable/process.d.ts.map +1 -1
- package/dist/shared/executable/process.js +21 -2
- package/dist/shared/executable/process.js.map +1 -1
- package/dist/shared/executable/run.d.ts +2 -0
- package/dist/shared/executable/run.d.ts.map +1 -1
- package/dist/shared/executable/run.js +33 -12
- package/dist/shared/executable/run.js.map +1 -1
- package/dist/shared/installation.d.ts.map +1 -1
- package/dist/shared/installation.js +5 -2
- package/dist/shared/installation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-server-client.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-server-client.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;;;GAIG;AACH,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACpF;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5G,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACjD;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,IAAI,IAAI,IAAI,CAAC;CACd;AAQD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACtD,GAAG,CAAC,EAAE,MAAM,GACX,eAAe,CAuHjB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawnLineProcess } from "../../shared/executable/index.js";
|
|
2
|
+
import { processFailure } from "../../shared/executable/diagnostics.js";
|
|
2
3
|
import { asRecord, parseJson } from "../../shared/json.js";
|
|
3
4
|
export function startAppServerClient(command, env, configOverrides = {}, cwd) {
|
|
4
5
|
// -c KEY=VALUE injects config at launch. This is the ONLY seam that reaches
|
|
@@ -6,6 +7,11 @@ export function startAppServerClient(command, env, configOverrides = {}, cwd) {
|
|
|
6
7
|
// login: thread param honored for its own turns but exec follows config).
|
|
7
8
|
const overrideArgs = Object.entries(configOverrides).flatMap(([key, value]) => ["-c", `${key}=${value}`]);
|
|
8
9
|
const child = spawnLineProcess(command, ["app-server", ...overrideArgs, "--listen", "stdio://"], { ...(cwd === undefined ? {} : { cwd }), ...(env === undefined ? {} : { env: { ...process.env, ...env } }) });
|
|
10
|
+
// Session initialization observes spawn failures through its pending RPC.
|
|
11
|
+
// Mark this parallel promise handled while preserving its rejection for
|
|
12
|
+
// callers that explicitly await spawned.
|
|
13
|
+
// oxlint-disable-next-line promise/prefer-await-to-then -- client construction remains synchronous
|
|
14
|
+
void child.spawned.catch(() => { });
|
|
9
15
|
const pending = new Map();
|
|
10
16
|
// Inbound frames and marks share one queue until `handle` registers the
|
|
11
17
|
// handlers, so their relative order is the wire's whatever kind they are.
|
|
@@ -20,7 +26,7 @@ export function startAppServerClient(command, env, configOverrides = {}, cwd) {
|
|
|
20
26
|
}
|
|
21
27
|
};
|
|
22
28
|
let nextId = 1;
|
|
23
|
-
let
|
|
29
|
+
let exitFailure = null;
|
|
24
30
|
child.onLine((line) => {
|
|
25
31
|
const message = asRecord(parseJson(line));
|
|
26
32
|
if (message === null) {
|
|
@@ -60,9 +66,9 @@ export function startAppServerClient(command, env, configOverrides = {}, cwd) {
|
|
|
60
66
|
}
|
|
61
67
|
});
|
|
62
68
|
child.onExit(() => {
|
|
63
|
-
|
|
69
|
+
exitFailure = processFailure("app-server exited", child.diagnostics());
|
|
64
70
|
for (const waiter of pending.values()) {
|
|
65
|
-
const error =
|
|
71
|
+
const error = exitFailure;
|
|
66
72
|
waiter.settled({ kind: "error", error });
|
|
67
73
|
waiter.reject(error);
|
|
68
74
|
}
|
|
@@ -73,8 +79,8 @@ export function startAppServerClient(command, env, configOverrides = {}, cwd) {
|
|
|
73
79
|
exited: child.exited,
|
|
74
80
|
async request(method, params, onSettled) {
|
|
75
81
|
const settled = onSettled ?? (() => { });
|
|
76
|
-
if (
|
|
77
|
-
const error =
|
|
82
|
+
if (exitFailure !== null) {
|
|
83
|
+
const error = exitFailure;
|
|
78
84
|
settled({ kind: "error", error });
|
|
79
85
|
throw error;
|
|
80
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-server-client.js","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAwD5E,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,GAAsC,EACtC,kBAAoD,EAAE,EACtD,GAAY;IAEZ,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1G,MAAM,KAAK,GAAG,gBAAgB,CAC5B,OAAO,EACP,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EACvD,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAC7G,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,IAAI,GAA8C,EAAE,CAAC;IAC3D,IAAI,QAAQ,GAA6B,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,QAA+C,EAAQ,EAAE;QACxE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IACF,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,
|
|
1
|
+
{"version":3,"file":"app-server-client.js","sourceRoot":"","sources":["../../../src/runtimes/codex/app-server-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/shared/deliver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,aAAa,EAAgB,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/shared/deliver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,aAAa,EAAgB,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAkDpH,6EAA6E;AAC7E,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA2BjJ"}
|
package/dist/shared/deliver.js
CHANGED
|
@@ -9,14 +9,23 @@ function refused(inputId, result) {
|
|
|
9
9
|
? { landed: "rejected", inputId, code: result.code, reason: result.reason, result }
|
|
10
10
|
: { landed: "rejected", inputId, code: "unsupported", reason: "accepted", result };
|
|
11
11
|
}
|
|
12
|
+
/** The running turn's start, or null when the session is idle. */
|
|
13
|
+
function runningSince(session) {
|
|
14
|
+
const status = session.status().value;
|
|
15
|
+
return status.kind === "running" ? status.sinceSeq : null;
|
|
16
|
+
}
|
|
12
17
|
/** One attempt into a running turn; null when the turn ended meanwhile (try again). */
|
|
13
18
|
async function intoRunning(session, input, options, when) {
|
|
14
19
|
if (when === "now") {
|
|
20
|
+
const target = runningSince(session);
|
|
15
21
|
const steered = await session.steer(input, options);
|
|
16
22
|
if (steered.kind === "accepted") {
|
|
17
23
|
return landed("steered", options.inputId, steered);
|
|
18
24
|
}
|
|
19
|
-
|
|
25
|
+
// The turn ended while the steer was in flight. The adapter's gate says
|
|
26
|
+
// `no_active_turn`; past the gate the runtime refuses in its own words
|
|
27
|
+
// (codex 0.158.0: "no active turn to steer"), so read the status too.
|
|
28
|
+
if (steered.code === "no_active_turn" || runningSince(session) !== target) {
|
|
20
29
|
return null;
|
|
21
30
|
}
|
|
22
31
|
if (steered.code !== "unsupported") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../src/shared/deliver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,sFAAsF;AACtF,MAAM,YAAY,GAAG,CAAC,CAAC;AAGvB,SAAS,MAAM,CAAC,IAAuC,EAAE,OAAe,EAAE,MAAsB;IAC9F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,MAAsB;IACtD,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;QAC/B,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;QACnF,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACvF,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,WAAW,CAAC,OAAgB,EAAE,KAAa,EAAE,OAAoD,EAAE,IAA0B;IAC1I,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../src/shared/deliver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** A bounded observation of native process failure, not a retry policy. */
|
|
2
|
+
export interface ProcessDiagnostics {
|
|
3
|
+
readonly exitCode: number | null;
|
|
4
|
+
readonly signal: NodeJS.Signals | null;
|
|
5
|
+
readonly stderr: string;
|
|
6
|
+
readonly timeoutMs?: number;
|
|
7
|
+
readonly error?: {
|
|
8
|
+
readonly code?: string;
|
|
9
|
+
readonly message: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare const STDERR_TAIL_BYTES = 8192;
|
|
13
|
+
/** Copy retained bytes so a small suffix cannot keep a large chunk alive. */
|
|
14
|
+
export declare class StderrTail {
|
|
15
|
+
private bytes;
|
|
16
|
+
append(chunk: Buffer | string): void;
|
|
17
|
+
text(): string;
|
|
18
|
+
}
|
|
19
|
+
export declare function stderrTail(text: string): string;
|
|
20
|
+
export declare function nativeError(error: Error): {
|
|
21
|
+
readonly code?: string;
|
|
22
|
+
readonly message: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function processFailure(context: string, diagnostics: ProcessDiagnostics): Error;
|
|
25
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/diagnostics.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,6EAA6E;AAC7E,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA2B;IAExC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOpC,IAAI,IAAI,MAAM;CAYf;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAK9F;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,GAAG,KAAK,CAatF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const STDERR_TAIL_BYTES = 8192;
|
|
2
|
+
/** Copy retained bytes so a small suffix cannot keep a large chunk alive. */
|
|
3
|
+
export class StderrTail {
|
|
4
|
+
bytes = Buffer.alloc(0);
|
|
5
|
+
append(chunk) {
|
|
6
|
+
const incoming = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
7
|
+
this.bytes = incoming.length >= STDERR_TAIL_BYTES
|
|
8
|
+
? Buffer.from(incoming.subarray(-STDERR_TAIL_BYTES))
|
|
9
|
+
: Buffer.concat([this.bytes.subarray(Math.max(0, this.bytes.length + incoming.length - STDERR_TAIL_BYTES)), incoming]);
|
|
10
|
+
}
|
|
11
|
+
text() {
|
|
12
|
+
// A byte limit can cut through the first UTF-8 character. Omit that
|
|
13
|
+
// incomplete prefix instead of introducing a replacement character.
|
|
14
|
+
let start = 0;
|
|
15
|
+
for (const byte of this.bytes) {
|
|
16
|
+
if ((byte & 0xC0) !== 0x80) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
start += 1;
|
|
20
|
+
}
|
|
21
|
+
return this.bytes.subarray(start).toString("utf8");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function stderrTail(text) {
|
|
25
|
+
const tail = new StderrTail();
|
|
26
|
+
tail.append(text);
|
|
27
|
+
return tail.text();
|
|
28
|
+
}
|
|
29
|
+
export function nativeError(error) {
|
|
30
|
+
return {
|
|
31
|
+
...("code" in error && typeof error.code === "string" ? { code: error.code } : {}),
|
|
32
|
+
message: stderrTail(error.message),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function processFailure(context, diagnostics) {
|
|
36
|
+
const reasons = [
|
|
37
|
+
`exit code ${diagnostics.exitCode === null ? "unavailable" : String(diagnostics.exitCode)}`,
|
|
38
|
+
`signal ${diagnostics.signal ?? "none"}`,
|
|
39
|
+
];
|
|
40
|
+
if (diagnostics.timeoutMs !== undefined) {
|
|
41
|
+
reasons.push(`timeout after ${String(diagnostics.timeoutMs)} ms`);
|
|
42
|
+
}
|
|
43
|
+
if (diagnostics.error !== undefined) {
|
|
44
|
+
reasons.push(`${diagnostics.error.code ?? "native error"}: ${diagnostics.error.message}`);
|
|
45
|
+
}
|
|
46
|
+
const stderr = diagnostics.stderr === "" ? "" : `\nstderr (tail):\n${diagnostics.stderr}`;
|
|
47
|
+
return new Error(`${context}: ${reasons.join("; ")}${stderr}`, { cause: diagnostics });
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/shared/executable/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ChildProcess } from "node:child_process";
|
|
2
2
|
import type { Readable, Writable } from "node:stream";
|
|
3
|
+
import { type ProcessDiagnostics } from "./diagnostics.js";
|
|
3
4
|
interface ProcessOptions {
|
|
4
5
|
readonly cwd?: string;
|
|
5
6
|
readonly env?: NodeJS.ProcessEnv;
|
|
@@ -51,6 +52,8 @@ export interface LineProcess {
|
|
|
51
52
|
readonly exited: Promise<number | null>;
|
|
52
53
|
readonly stdin: Writable;
|
|
53
54
|
readonly stdout: Readable;
|
|
55
|
+
/** Native status and the last 8 KiB of stderr observed so far. */
|
|
56
|
+
diagnostics(): ProcessDiagnostics;
|
|
54
57
|
write(text: string): void;
|
|
55
58
|
/** Complete UTF-8 lines, independent of stdout byte-chunk boundaries. */
|
|
56
59
|
onLine(handler: (line: string) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,UAAU,cAAc;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,QAAS,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIxE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,SAA+B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAWpF;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,WAAW,IAAI,kBAAkB,CAAC;IAClC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yEAAyE;IACzE,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9C,+DAA+D;IAC/D,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,CAAC;CACd;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAEjF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,cAAmB,GAC3B,WAAW,CAmHb"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import spawn from "cross-spawn";
|
|
2
2
|
import { StringDecoder } from "node:string_decoder";
|
|
3
|
+
import { nativeError, StderrTail } from "./diagnostics.js";
|
|
3
4
|
/**
|
|
4
5
|
* How long a process asked to stop (SIGTERM) gets before it is killed outright
|
|
5
6
|
* (SIGKILL): the bound that keeps `kill()` followed by `await exited` from
|
|
@@ -64,10 +65,20 @@ export function spawnLineProcess(command, args, options = {}) {
|
|
|
64
65
|
const child = spawn(command, [...args], {
|
|
65
66
|
...(options.cwd === undefined ? {} : { cwd: options.cwd }),
|
|
66
67
|
env: options.env ?? process.env,
|
|
67
|
-
stdio: ["pipe", "pipe",
|
|
68
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
68
69
|
detached: OWN_PROCESS_GROUP,
|
|
69
70
|
});
|
|
70
71
|
const { stdin, stdout } = child;
|
|
72
|
+
const stderr = new StderrTail();
|
|
73
|
+
const inheritStderr = process.env.OAR_CHILD_STDERR === "inherit";
|
|
74
|
+
// Always drain stderr, even after the tail is full and without a host
|
|
75
|
+
// observer. Otherwise a verbose child can block before its next RPC reply.
|
|
76
|
+
child.stderr?.on("data", (chunk) => {
|
|
77
|
+
stderr.append(chunk);
|
|
78
|
+
if (inheritStderr) {
|
|
79
|
+
process.stderr.write(chunk);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
71
82
|
if (stdin === null || stdout === null) {
|
|
72
83
|
throw new Error("line process stdio must be piped");
|
|
73
84
|
}
|
|
@@ -77,16 +88,19 @@ export function spawnLineProcess(command, args, options = {}) {
|
|
|
77
88
|
let readingLines = false;
|
|
78
89
|
let ended = false;
|
|
79
90
|
let exitCode = null;
|
|
91
|
+
let exitSignal = null;
|
|
92
|
+
let spawnError = undefined;
|
|
80
93
|
let escalation = null;
|
|
81
94
|
const { promise: spawned, resolve: spawnOk, reject: spawnFailed } = Promise.withResolvers();
|
|
82
95
|
const { promise: exited, resolve: exitDone } = Promise.withResolvers();
|
|
83
96
|
child.once("spawn", spawnOk);
|
|
84
|
-
const end = (code) => {
|
|
97
|
+
const end = (code, signal = null) => {
|
|
85
98
|
if (ended) {
|
|
86
99
|
return;
|
|
87
100
|
}
|
|
88
101
|
ended = true;
|
|
89
102
|
exitCode = code;
|
|
103
|
+
exitSignal = signal;
|
|
90
104
|
if (escalation !== null) {
|
|
91
105
|
clearTimeout(escalation);
|
|
92
106
|
}
|
|
@@ -97,6 +111,7 @@ export function spawnLineProcess(command, args, options = {}) {
|
|
|
97
111
|
};
|
|
98
112
|
child.on("exit", end);
|
|
99
113
|
child.on("error", (error) => {
|
|
114
|
+
spawnError = nativeError(error);
|
|
100
115
|
spawnFailed(error);
|
|
101
116
|
end(null);
|
|
102
117
|
});
|
|
@@ -123,6 +138,10 @@ export function spawnLineProcess(command, args, options = {}) {
|
|
|
123
138
|
exited,
|
|
124
139
|
stdin,
|
|
125
140
|
stdout,
|
|
141
|
+
diagnostics: () => ({
|
|
142
|
+
exitCode, signal: exitSignal, stderr: stderr.text(),
|
|
143
|
+
...(spawnError === undefined ? {} : { error: spawnError }),
|
|
144
|
+
}),
|
|
126
145
|
write: (text) => {
|
|
127
146
|
stdin.write(text);
|
|
128
147
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { type ProcessDiagnostics } from "./diagnostics.js";
|
|
1
2
|
export interface ExecutableResult {
|
|
2
3
|
readonly ok: boolean;
|
|
3
4
|
readonly stdout: string;
|
|
4
5
|
readonly stderr: string;
|
|
5
6
|
readonly exitCode: number | null;
|
|
7
|
+
readonly diagnostics?: ProcessDiagnostics;
|
|
6
8
|
}
|
|
7
9
|
export interface ExecutableRunOptions {
|
|
8
10
|
readonly env?: NodeJS.ProcessEnv;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,gBAyC3B,CAAC"}
|
|
@@ -1,25 +1,46 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { requiresShell } from "./process.js";
|
|
3
|
+
import { nativeError, stderrTail } from "./diagnostics.js";
|
|
3
4
|
export const runExecutable = async (executable, args, options = {}) => {
|
|
5
|
+
const timeoutMs = options.timeoutMs ?? 5000;
|
|
4
6
|
const result = await new Promise((resolve) => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
timeout: options.timeoutMs ?? 5000,
|
|
8
|
-
maxBuffer: 2 * 1024 * 1024,
|
|
9
|
-
// Same Windows .cmd-shim rule as spawnLineProcess: modern Node throws
|
|
10
|
-
// EINVAL (synchronously) on shell-less exec of .cmd/.bat.
|
|
11
|
-
shell: requiresShell(executable, process.platform),
|
|
12
|
-
}, (error, stdout, stderr) => {
|
|
13
|
-
const exitCode = error !== null && "code" in error && typeof error.code === "number"
|
|
14
|
-
? error.code
|
|
15
|
-
: null;
|
|
7
|
+
const complete = (error, stdout, stderr) => {
|
|
8
|
+
const exitCode = error !== null && typeof error.code === "number" ? error.code : null;
|
|
16
9
|
resolve({
|
|
17
10
|
ok: error === null,
|
|
18
11
|
stdout,
|
|
19
12
|
stderr,
|
|
20
13
|
exitCode,
|
|
14
|
+
...(error === null ? {} : {
|
|
15
|
+
diagnostics: {
|
|
16
|
+
exitCode,
|
|
17
|
+
signal: error.signal ?? null,
|
|
18
|
+
stderr: stderrTail(stderr),
|
|
19
|
+
// maxBuffer also kills the child, but supplies its own string
|
|
20
|
+
// error code. Only the timer kill is a timeout.
|
|
21
|
+
...(error.killed === true && typeof error.code !== "string" ? { timeoutMs } : {}),
|
|
22
|
+
...(typeof error.code === "string" || (error.code === undefined && error.signal === undefined && error.killed !== true)
|
|
23
|
+
? { error: nativeError(error) } : {}),
|
|
24
|
+
},
|
|
25
|
+
}),
|
|
21
26
|
});
|
|
22
|
-
}
|
|
27
|
+
};
|
|
28
|
+
try {
|
|
29
|
+
execFile(executable, [...args], {
|
|
30
|
+
env: options.env,
|
|
31
|
+
timeout: timeoutMs,
|
|
32
|
+
maxBuffer: 2 * 1024 * 1024,
|
|
33
|
+
// Modern Node rejects shell-less execution of Windows .cmd/.bat shims.
|
|
34
|
+
shell: requiresShell(executable, process.platform),
|
|
35
|
+
}, complete);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Spawn can fail synchronously too (for example EINVAL on Windows).
|
|
39
|
+
if (!(error instanceof Error)) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
complete(error, "", "");
|
|
43
|
+
}
|
|
23
44
|
});
|
|
24
45
|
return result;
|
|
25
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/shared/executable/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/shared/executable/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,kBAAkB,CAAC;AAqBpF,MAAM,CAAC,MAAM,aAAa,GAAqB,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;IACtF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,CAAC,KAAyE,EAAE,MAAc,EAAE,MAAc,EAAQ,EAAE;YACnI,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,OAAO,CAAC;gBACN,EAAE,EAAE,KAAK,KAAK,IAAI;gBAClB,MAAM;gBACN,MAAM;gBACN,QAAQ;gBACR,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxB,WAAW,EAAE;wBACX,QAAQ;wBACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;wBAC5B,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;wBAC1B,8DAA8D;wBAC9D,gDAAgD;wBAChD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjF,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;4BACrH,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACxC;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,CAAC;YACH,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;gBAC1B,uEAAuE;gBACvE,KAAK,EAAE,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;aACnD,EAAE,QAAQ,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/shared/installation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAA2D,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/shared/installation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAA2D,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKpH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,MAAM,EAAE,GAAG,CAAC,MAAM,SAAS,MAAM,EAAE,CAAC,CAAC;AAmBhF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,mBAAwB,EACnC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,GAAE,6BAAkC,GAC1C,iBAAiB,CA0CnB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { readExecutableVersion, resolveExecutable, runExecutable } from "./executable/index.js";
|
|
3
|
+
import { processFailure, stderrTail } from "./executable/diagnostics.js";
|
|
3
4
|
function usable(entry) {
|
|
4
5
|
if (entry.includes("/") || entry.includes("\\")) {
|
|
5
6
|
return existsSync(entry) ? entry : null;
|
|
@@ -42,8 +43,10 @@ export function executableInstallation(envVar, command, fallbacks = [], readines
|
|
|
42
43
|
const result = await runExecutable(candidate, readiness, options.readinessTimeoutMs === undefined ? {} : {
|
|
43
44
|
timeoutMs: options.readinessTimeoutMs,
|
|
44
45
|
});
|
|
45
|
-
if (!result.ok && result.exitCode === null) {
|
|
46
|
-
throw
|
|
46
|
+
if (!result.ok && (result.exitCode === null || result.diagnostics?.timeoutMs !== undefined)) {
|
|
47
|
+
throw processFailure(`Failed to run ${candidate} ${readiness.join(" ")}`, result.diagnostics ?? {
|
|
48
|
+
exitCode: result.exitCode, signal: null, stderr: stderrTail(result.stderr),
|
|
49
|
+
});
|
|
47
50
|
}
|
|
48
51
|
if (result.ok) {
|
|
49
52
|
return versionSnapshot(candidate, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.js","sourceRoot":"","sources":["../../src/shared/installation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAsB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"installation.js","sourceRoot":"","sources":["../../src/shared/installation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botiverse/oar",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.2",
|
|
4
4
|
"description": "A programming interface for all agent harnesses: provider-independent contracts for controlling and observing agent runtimes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|