@botiverse/oar 0.41.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/contracts/failure.d.ts +21 -0
- package/dist/contracts/failure.d.ts.map +1 -0
- package/dist/contracts/failure.js +2 -0
- package/dist/contracts/failure.js.map +1 -0
- package/dist/contracts/records.d.ts +12 -3
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/runtime-failure-error.d.ts +23 -0
- package/dist/contracts/runtime-failure-error.d.ts.map +1 -0
- package/dist/contracts/runtime-failure-error.js +27 -0
- package/dist/contracts/runtime-failure-error.js.map +1 -0
- package/dist/contracts/session.d.ts +17 -3
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +1 -0
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/conversation.d.ts +6 -1
- package/dist/observe/conversation.d.ts.map +1 -1
- package/dist/observe/conversation.js +42 -22
- package/dist/observe/conversation.js.map +1 -1
- package/dist/observe/display-text.d.ts +7 -3
- package/dist/observe/display-text.d.ts.map +1 -1
- package/dist/observe/display-text.js +19 -3
- package/dist/observe/display-text.js.map +1 -1
- package/dist/observe/failure-advice.d.ts +17 -0
- package/dist/observe/failure-advice.d.ts.map +1 -0
- package/dist/observe/failure-advice.js +18 -0
- package/dist/observe/failure-advice.js.map +1 -0
- package/dist/observe/index.d.ts +2 -0
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +1 -0
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/input-delivery.d.ts +13 -0
- package/dist/observe/input-delivery.d.ts.map +1 -0
- package/dist/observe/input-delivery.js +38 -0
- package/dist/observe/input-delivery.js.map +1 -0
- package/dist/observe/session-view-events.js +1 -1
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-inputs.d.ts +1 -10
- package/dist/observe/session-view-inputs.d.ts.map +1 -1
- package/dist/observe/session-view-inputs.js +0 -22
- package/dist/observe/session-view-inputs.js.map +1 -1
- package/dist/observe/session-view.d.ts +1 -1
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/session-view.js +2 -1
- package/dist/observe/session-view.js.map +1 -1
- package/dist/runtimes/claude/failure.d.ts +15 -0
- package/dist/runtimes/claude/failure.d.ts.map +1 -0
- package/dist/runtimes/claude/failure.js +44 -0
- package/dist/runtimes/claude/failure.js.map +1 -0
- package/dist/runtimes/claude/projection.d.ts +3 -0
- package/dist/runtimes/claude/projection.d.ts.map +1 -1
- package/dist/runtimes/claude/projection.js +15 -4
- package/dist/runtimes/claude/projection.js.map +1 -1
- package/dist/runtimes/claude/session.d.ts.map +1 -1
- package/dist/runtimes/claude/session.js +2 -1
- package/dist/runtimes/claude/session.js.map +1 -1
- package/dist/runtimes/codex/app-server-client.d.ts +3 -0
- package/dist/runtimes/codex/app-server-client.d.ts.map +1 -1
- package/dist/runtimes/codex/app-server-client.js +1 -0
- package/dist/runtimes/codex/app-server-client.js.map +1 -1
- package/dist/runtimes/codex/failure.d.ts +6 -0
- package/dist/runtimes/codex/failure.d.ts.map +1 -0
- package/dist/runtimes/codex/failure.js +45 -0
- package/dist/runtimes/codex/failure.js.map +1 -0
- package/dist/runtimes/codex/home-initialization.d.ts.map +1 -1
- package/dist/runtimes/codex/home-initialization.js +5 -0
- package/dist/runtimes/codex/home-initialization.js.map +1 -1
- package/dist/runtimes/codex/input-delivery.d.ts +22 -0
- package/dist/runtimes/codex/input-delivery.d.ts.map +1 -0
- package/dist/runtimes/codex/input-delivery.js +39 -0
- package/dist/runtimes/codex/input-delivery.js.map +1 -0
- package/dist/runtimes/codex/projection.d.ts +3 -0
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +13 -16
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/codex/rpc-control.d.ts +2 -1
- package/dist/runtimes/codex/rpc-control.d.ts.map +1 -1
- package/dist/runtimes/codex/rpc-control.js +4 -2
- package/dist/runtimes/codex/rpc-control.js.map +1 -1
- package/dist/runtimes/codex/session.d.ts.map +1 -1
- package/dist/runtimes/codex/session.js +20 -19
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/cursor/failure.d.ts +2 -0
- package/dist/runtimes/cursor/failure.d.ts.map +1 -0
- package/dist/runtimes/cursor/failure.js +17 -0
- package/dist/runtimes/cursor/failure.js.map +1 -0
- package/dist/runtimes/cursor/model.d.ts +9 -1
- package/dist/runtimes/cursor/model.d.ts.map +1 -1
- package/dist/runtimes/cursor/model.js +20 -0
- package/dist/runtimes/cursor/model.js.map +1 -1
- package/dist/runtimes/cursor/session.d.ts.map +1 -1
- package/dist/runtimes/cursor/session.js +2 -13
- package/dist/runtimes/cursor/session.js.map +1 -1
- package/dist/runtimes/grok/failure.d.ts +3 -0
- package/dist/runtimes/grok/failure.d.ts.map +1 -0
- package/dist/runtimes/grok/failure.js +36 -0
- package/dist/runtimes/grok/failure.js.map +1 -0
- package/dist/runtimes/grok/session.d.ts.map +1 -1
- package/dist/runtimes/grok/session.js +2 -0
- package/dist/runtimes/grok/session.js.map +1 -1
- package/dist/runtimes/pi/failure.d.ts +12 -0
- package/dist/runtimes/pi/failure.d.ts.map +1 -0
- package/dist/runtimes/pi/failure.js +18 -0
- package/dist/runtimes/pi/failure.js.map +1 -0
- package/dist/runtimes/pi/projection.d.ts +9 -2
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +6 -6
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi/resolve.d.ts.map +1 -1
- package/dist/runtimes/pi/resolve.js +2 -1
- package/dist/runtimes/pi/resolve.js.map +1 -1
- package/dist/runtimes/pi/session.d.ts.map +1 -1
- package/dist/runtimes/pi/session.js +9 -1
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/shared/acp/failure.d.ts +14 -0
- package/dist/shared/acp/failure.d.ts.map +1 -0
- package/dist/shared/acp/failure.js +63 -0
- package/dist/shared/acp/failure.js.map +1 -0
- package/dist/shared/acp/process.d.ts +3 -0
- package/dist/shared/acp/process.d.ts.map +1 -1
- package/dist/shared/acp/process.js +1 -0
- package/dist/shared/acp/process.js.map +1 -1
- package/dist/shared/acp/profile.d.ts +3 -0
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js +6 -4
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/projection.d.ts +1 -3
- package/dist/shared/acp/projection.d.ts.map +1 -1
- package/dist/shared/acp/projection.js +1 -12
- package/dist/shared/acp/projection.js.map +1 -1
- package/dist/shared/acp/session.d.ts.map +1 -1
- package/dist/shared/acp/session.js +1 -0
- package/dist/shared/acp/session.js.map +1 -1
- package/dist/shared/acp/turns.d.ts +2 -0
- package/dist/shared/acp/turns.d.ts.map +1 -1
- package/dist/shared/acp/turns.js +5 -3
- package/dist/shared/acp/turns.js.map +1 -1
- package/dist/shared/control-input.d.ts +4 -0
- package/dist/shared/control-input.d.ts.map +1 -0
- package/dist/shared/control-input.js +9 -0
- package/dist/shared/control-input.js.map +1 -0
- package/dist/shared/executable/process-resources.d.ts +11 -0
- package/dist/shared/executable/process-resources.d.ts.map +1 -0
- package/dist/shared/executable/process-resources.js +139 -0
- package/dist/shared/executable/process-resources.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 +2 -0
- package/dist/shared/executable/process.js.map +1 -1
- package/dist/shared/failure-class.d.ts +36 -4
- package/dist/shared/failure-class.d.ts.map +1 -1
- package/dist/shared/failure-class.js +103 -5
- package/dist/shared/failure-class.js.map +1 -1
- package/dist/shared/mcp-servers.d.ts +5 -1
- package/dist/shared/mcp-servers.d.ts.map +1 -1
- package/dist/shared/mcp-servers.js +11 -5
- package/dist/shared/mcp-servers.js.map +1 -1
- package/dist/shared/session-kernel.d.ts +5 -2
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +2 -1
- package/dist/shared/session-kernel.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAgD,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,OAAO,EAAmB,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RequestBody, ResponseBody } from "../contracts/session.js";
|
|
2
|
+
/** Refuse an input with neither text nor images before contacting the runtime. Whitespace is left intact. */
|
|
3
|
+
export declare function emptyInputRefusal(body: RequestBody): ResponseBody | null;
|
|
4
|
+
//# sourceMappingURL=control-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-input.d.ts","sourceRoot":"","sources":["../../src/shared/control-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEzE,6GAA6G;AAC7G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAMxE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Refuse an input with neither text nor images before contacting the runtime. Whitespace is left intact. */
|
|
2
|
+
export function emptyInputRefusal(body) {
|
|
3
|
+
if ((body.kind === "prompt" || body.kind === "steer" || body.kind === "queue")
|
|
4
|
+
&& body.input === "" && (body.images?.length ?? 0) === 0) {
|
|
5
|
+
return { kind: "rejected", code: "unsupported", reason: "empty input: give text or images" };
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=control-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-input.js","sourceRoot":"","sources":["../../src/shared/control-input.ts"],"names":[],"mappings":"AAEA,6GAA6G;AAC7G,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;WACzE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ChildProcess } from "node:child_process";
|
|
2
|
+
import type { SessionResources } from "../../contracts/session.js";
|
|
3
|
+
/**
|
|
4
|
+
* The resident memory of `pid`, the process group it leads and its
|
|
5
|
+
* descendants, and how many processes that is. Null when `pid` is no longer
|
|
6
|
+
* in the table, when the table cannot be read, and on Windows.
|
|
7
|
+
*/
|
|
8
|
+
export declare function processTreeResources(pid: number, platform?: NodeJS.Platform): Promise<SessionResources | null>;
|
|
9
|
+
/** A line process's `resources()`: null once `exited()` says it has, or before it has a pid. */
|
|
10
|
+
export declare function treeResourcesReader(child: ChildProcess, exited: () => boolean): () => Promise<SessionResources | null>;
|
|
11
|
+
//# sourceMappingURL=process-resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-resources.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/process-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAmInE;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAatI;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAKtH"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import { descendantsOf } from "./process-tree.js";
|
|
3
|
+
import { runExecutable } from "./run.js";
|
|
4
|
+
const DEFAULT_PAGE_SIZE = 4096;
|
|
5
|
+
let pageSize = null;
|
|
6
|
+
/** The kernel's page size (`getconf PAGESIZE`), read once; 4096 when it cannot be read. */
|
|
7
|
+
async function linuxPageSize() {
|
|
8
|
+
if (pageSize === null) {
|
|
9
|
+
const result = await runExecutable("getconf", ["PAGESIZE"], { timeoutMs: 5000 });
|
|
10
|
+
const size = Number(result.stdout.trim());
|
|
11
|
+
pageSize = result.ok && Number.isInteger(size) && size > 0 ? size : DEFAULT_PAGE_SIZE;
|
|
12
|
+
}
|
|
13
|
+
return pageSize;
|
|
14
|
+
}
|
|
15
|
+
/** The process went away between the listing and the read: skipped. Any other failure fails the reading. */
|
|
16
|
+
function gone(error) {
|
|
17
|
+
if (error instanceof Error && "code" in error && (error.code === "ENOENT" || error.code === "ESRCH")) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
/** `/proc/<pid>/stat`'s ppid, pgrp and rss (field 24, in pages); null once the process is gone. */
|
|
23
|
+
async function readStat(pid, page) {
|
|
24
|
+
const stat = await readFile(`/proc/${String(pid)}/stat`, "utf8").catch(gone);
|
|
25
|
+
if (stat === null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
// The command name (field 2) is parenthesized and may hold spaces; fields resume after its last ")".
|
|
29
|
+
const fields = stat.slice(stat.lastIndexOf(")") + 2).split(" ");
|
|
30
|
+
const [ppid, pgid, pages] = [Number(fields[1]), Number(fields[2]), Number(fields[21])];
|
|
31
|
+
return Number.isInteger(ppid) && Number.isInteger(pgid) && Number.isInteger(pages)
|
|
32
|
+
? { pid, ppid, pgid, start: "", rss: pages * page }
|
|
33
|
+
: null;
|
|
34
|
+
}
|
|
35
|
+
/** How many `stat` files are open at once: well under a low `ulimit -n` (1024). */
|
|
36
|
+
const BATCH = 64;
|
|
37
|
+
async function readProcfs() {
|
|
38
|
+
const page = await linuxPageSize();
|
|
39
|
+
const listed = await readdir("/proc");
|
|
40
|
+
const pids = listed.filter((name) => /^\d+$/u.test(name)).map(Number);
|
|
41
|
+
const table = new Map();
|
|
42
|
+
for (let start = 0; start < pids.length; start += BATCH) {
|
|
43
|
+
const batch = await Promise.all(pids.slice(start, start + BATCH).map(async (pid) => {
|
|
44
|
+
const entry = await readStat(pid, page);
|
|
45
|
+
return entry;
|
|
46
|
+
}));
|
|
47
|
+
for (const entry of batch) {
|
|
48
|
+
if (entry !== null) {
|
|
49
|
+
table.set(entry.pid, entry);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return table;
|
|
54
|
+
}
|
|
55
|
+
async function readPs() {
|
|
56
|
+
const result = await runExecutable("ps", ["-A", "-o", "pid=,ppid=,pgid=,rss="], { env: { ...process.env, LC_ALL: "C" }, timeoutMs: 5000 });
|
|
57
|
+
if (!result.ok) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const table = new Map();
|
|
61
|
+
for (const line of result.stdout.split("\n")) {
|
|
62
|
+
const match = /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*$/u.exec(line);
|
|
63
|
+
if (match !== null) {
|
|
64
|
+
const pid = Number(match[1]);
|
|
65
|
+
table.set(pid, { pid, ppid: Number(match[2]), pgid: Number(match[3]), start: "", rss: Number(match[4]) * 1024 });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return table;
|
|
69
|
+
}
|
|
70
|
+
/** The processes counted for `pid`: itself, the group it leads, and its descendants (those that left the group too). */
|
|
71
|
+
function counted(table, root) {
|
|
72
|
+
const members = new Map([[root.pid, root]]);
|
|
73
|
+
for (const entry of table.values()) {
|
|
74
|
+
if (entry.pgid === root.pid) {
|
|
75
|
+
members.set(entry.pid, entry);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
for (const { pid } of descendantsOf(table, root.pid)) {
|
|
79
|
+
const resident = table.get(pid);
|
|
80
|
+
if (resident !== undefined) {
|
|
81
|
+
members.set(pid, resident);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return members;
|
|
85
|
+
}
|
|
86
|
+
/** The table read each source has in flight. */
|
|
87
|
+
const inFlight = new Map();
|
|
88
|
+
/** One read of the table, forgotten once it settles; null when it cannot be read whole. */
|
|
89
|
+
async function readTable(source) {
|
|
90
|
+
try {
|
|
91
|
+
const table = await (source === "procfs" ? readProcfs() : readPs());
|
|
92
|
+
return table;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
inFlight.delete(source);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** The process table now: the read already in flight, if one is, else a fresh one. */
|
|
102
|
+
async function currentTable(source) {
|
|
103
|
+
let read = inFlight.get(source);
|
|
104
|
+
if (read === undefined) {
|
|
105
|
+
read = readTable(source);
|
|
106
|
+
inFlight.set(source, read);
|
|
107
|
+
}
|
|
108
|
+
const table = await read;
|
|
109
|
+
return table;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The resident memory of `pid`, the process group it leads and its
|
|
113
|
+
* descendants, and how many processes that is. Null when `pid` is no longer
|
|
114
|
+
* in the table, when the table cannot be read, and on Windows.
|
|
115
|
+
*/
|
|
116
|
+
export async function processTreeResources(pid, platform = process.platform) {
|
|
117
|
+
if (platform === "win32") {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const table = await currentTable(platform === "linux" ? "procfs" : "ps");
|
|
121
|
+
const root = table?.get(pid);
|
|
122
|
+
if (table === null || root === undefined) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const members = counted(table, root);
|
|
126
|
+
let rss = 0;
|
|
127
|
+
for (const member of members.values()) {
|
|
128
|
+
rss += member.rss;
|
|
129
|
+
}
|
|
130
|
+
return { rss, processes: members.size };
|
|
131
|
+
}
|
|
132
|
+
/** A line process's `resources()`: null once `exited()` says it has, or before it has a pid. */
|
|
133
|
+
export function treeResourcesReader(child, exited) {
|
|
134
|
+
return async () => {
|
|
135
|
+
const reading = exited() || child.pid === undefined ? null : await processTreeResources(child.pid);
|
|
136
|
+
return reading;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=process-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-resources.js","sourceRoot":"","sources":["../../../src/shared/executable/process-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ChildProcess } from "node:child_process";
|
|
2
2
|
import type { Readable, Writable } from "node:stream";
|
|
3
3
|
import { type ProcessDiagnostics } from "./diagnostics.js";
|
|
4
|
+
import { treeResourcesReader } from "./process-resources.js";
|
|
4
5
|
export { trackOwnedProcess } from "./ownership.js";
|
|
5
6
|
export interface LineProcessOptions {
|
|
6
7
|
readonly cwd?: string;
|
|
@@ -86,6 +87,8 @@ export interface LineProcess {
|
|
|
86
87
|
* already belong to another process.
|
|
87
88
|
*/
|
|
88
89
|
kill(): void;
|
|
90
|
+
/** The child's memory with its group and descendants (process-resources.ts); null once it has exited. */
|
|
91
|
+
readonly resources: ReturnType<typeof treeResourcesReader>;
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
91
94
|
* Windows has no process groups: end the child and everything it started by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;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;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IACb,yGAAyG;IACzG,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;CAC5D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAWzD;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,kBAAuB,GAC/B,WAAW,CAqJb"}
|
|
@@ -3,6 +3,7 @@ import spawn from "cross-spawn";
|
|
|
3
3
|
import { StringDecoder } from "node:string_decoder";
|
|
4
4
|
import { nativeError, StderrTail } from "./diagnostics.js";
|
|
5
5
|
import { trackOwnedProcess } from "./ownership.js";
|
|
6
|
+
import { treeResourcesReader } from "./process-resources.js";
|
|
6
7
|
import { descendantsOf, killEntries, readProcessTable } from "./process-tree.js";
|
|
7
8
|
export { trackOwnedProcess } from "./ownership.js";
|
|
8
9
|
/**
|
|
@@ -193,6 +194,7 @@ export function spawnLineProcess(command, args, options = {}) {
|
|
|
193
194
|
exitHandlers.push(handler);
|
|
194
195
|
}
|
|
195
196
|
},
|
|
197
|
+
resources: treeResourcesReader(child, () => ended),
|
|
196
198
|
kill() {
|
|
197
199
|
stdin.end();
|
|
198
200
|
if (ended || escalation !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,mBAAmB,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAwBnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,MAAsB;IAC5E,IAAI,iBAAiB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,gEAAgE;QAClE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/executable/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,mBAAmB,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAwBnD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,MAAsB;IAC5E,IAAI,iBAAiB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,gEAAgE;QAClE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC;AAiCD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;QACrF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAyB;IACtE,OAAO,QAAQ,KAAK,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,IAAuB,EACvB,UAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACtC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IACH,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAC1F,sEAAsE;IACtE,2EAA2E;IAC3E,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAClD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,YAAY,GAA+B,EAAE,CAAC;IACpD,MAAM,YAAY,GAAsC,EAAE,CAAC;IAC3D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,UAAU,GAA0B,IAAI,CAAC;IAC7C,IAAI,UAAU,GAAgC,SAAS,CAAC;IACxD,IAAI,UAAU,GAA0B,IAAI,CAAC;IAC7C,0EAA0E;IAC1E,0BAA0B;IAC1B,IAAI,WAAW,GAA4B,EAAE,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;IAClG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,aAAa,EAAiB,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,IAAmB,EAAE,SAAgC,IAAI,EAAQ,EAAE;QAC9E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,GAAG,MAAM,CAAC;QACpB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,oEAAoE;YACpE,oEAAoE;YACpE,WAAW,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC7C,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAC3C,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;wBACnC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QACP,MAAM;QACN,KAAK;QACL,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACnD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;SAC3D,CAAC;QACF,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,IAAI,CAAC;gBACpB,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,IAAI,KAAK,EAAE,CAAC;gBACV,cAAc,CAAC,GAAG,EAAE;oBAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;QAClD,IAAI;YACF,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,IAAI,KAAK,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC9D,eAAe,CAAC,KAAK,CAAC,CAAC;gBACvB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YACtB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC;YAC5D,IAAI,IAAI,EAAE,CAAC;gBACT,qEAAqE;gBACrE,4CAA4C;gBAC5C,WAAW,GAAG,aAAa,CAAC,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;YACD,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrC,sEAAsE;YACtE,gEAAgE;YAChE,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;gBACD,2DAA2D;gBAC3D,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACtC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACrC,WAAW,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7C,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,40 @@
|
|
|
1
|
-
import type { FailureClass } from "../contracts/session.js";
|
|
1
|
+
import type { CredentialProblem, FailureClass } from "../contracts/session.js";
|
|
2
|
+
/** A failed outcome's classification: the class, and the credential problem and HTTP status where the runtime said them. */
|
|
3
|
+
export interface Classified {
|
|
4
|
+
readonly failure: FailureClass;
|
|
5
|
+
readonly credential?: CredentialProblem;
|
|
6
|
+
readonly status?: number;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
9
|
+
* What an HTTP status means at the providers (the Anthropic, OpenAI and
|
|
10
|
+
* Gemini error references) when nothing richer says. A 401 says the
|
|
11
|
+
* credential failed, not whether it was missing or refused; a 400 is any
|
|
12
|
+
* rejected request.
|
|
13
|
+
*/
|
|
14
|
+
export declare function failureFromStatus(status: number): FailureClass;
|
|
15
|
+
/** The class a provider error code or type names; null for one no runtime was seen to carry. */
|
|
16
|
+
export declare function failureFromErrorCode(code: string): FailureClass | null;
|
|
17
|
+
/**
|
|
18
|
+
* Anthropic's 400s that have no type of their own (both are
|
|
19
|
+
* `invalid_request_error`): an organization's spend limit and an exhausted
|
|
20
|
+
* credit balance. Matched on the API's own wording, the last resort for the
|
|
21
|
+
* adapters that carry Anthropic's message (claude, pi); pinned by their
|
|
22
|
+
* vendor tests.
|
|
23
|
+
*/
|
|
24
|
+
export declare function anthropicLimitText(message: string): FailureClass | null;
|
|
25
|
+
/**
|
|
26
|
+
* A provider's JSON error body, as Anthropic (`{type: "error", error: {type,
|
|
27
|
+
* message}}`) and OpenAI (`{error: {code, type, message}}`) send it: the
|
|
28
|
+
* class its code names, else its type's (Anthropic's 400 wording first).
|
|
29
|
+
* Null when `text` is no such body or names nothing known.
|
|
30
|
+
*/
|
|
31
|
+
export declare function failureFromErrorBody(text: string): FailureClass | null;
|
|
32
|
+
/**
|
|
33
|
+
* Best-effort classification of vendor error prose: the documented last
|
|
34
|
+
* resort of the adapters whose runtime reports no structure for a failure
|
|
35
|
+
* (opencode's prompt errors, cursor's run errors). The patterns are pinned by
|
|
36
|
+
* the vendor snapshot tests: when a runtime changes its wording, the snapshot
|
|
37
|
+
* moves and this table gets a conscious update.
|
|
6
38
|
*/
|
|
7
39
|
export declare function classifyFailure(reason: string): FailureClass;
|
|
8
40
|
//# sourceMappingURL=failure-class.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-class.d.ts","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"failure-class.d.ts","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAW/E,4HAA4H;AAC5H,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAW9D;AA6BD,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQvE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CActE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA2B5D"}
|
|
@@ -1,15 +1,113 @@
|
|
|
1
|
+
import { asRecord, parseJson } from "./json.js";
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* What an HTTP status means at the providers (the Anthropic, OpenAI and
|
|
4
|
+
* Gemini error references) when nothing richer says. A 401 says the
|
|
5
|
+
* credential failed, not whether it was missing or refused; a 400 is any
|
|
6
|
+
* rejected request.
|
|
7
|
+
*/
|
|
8
|
+
export function failureFromStatus(status) {
|
|
9
|
+
switch (status) {
|
|
10
|
+
case 400: return "invalid_request";
|
|
11
|
+
case 401: return "auth";
|
|
12
|
+
case 402: return "billing";
|
|
13
|
+
case 404: return "model_unavailable";
|
|
14
|
+
case 429: return "rate_limited";
|
|
15
|
+
case 503:
|
|
16
|
+
case 529: return "overloaded";
|
|
17
|
+
default: return status >= 500 && status < 600 ? "provider" : "unknown";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Provider error `code`s and `type`s some runtime was observed to carry:
|
|
22
|
+
* OpenAI's codes (and its ChatGPT backend's `usage_limit_reached`,
|
|
23
|
+
* `usage_not_included`), Anthropic's types. An OpenAI 429 is a quota or a
|
|
24
|
+
* billing failure when its code says so, throttling only when it does not.
|
|
25
|
+
*/
|
|
26
|
+
const ERROR_CODES = {
|
|
27
|
+
invalid_api_key: "auth",
|
|
28
|
+
model_not_found: "model_unavailable",
|
|
29
|
+
rate_limit_exceeded: "rate_limited",
|
|
30
|
+
insufficient_quota: "quota",
|
|
31
|
+
organization_usage_limit_exceeded: "quota",
|
|
32
|
+
usage_limit_reached: "quota",
|
|
33
|
+
usage_not_included: "quota",
|
|
34
|
+
credit_balance_exhausted: "billing",
|
|
35
|
+
context_length_exceeded: "input_too_large",
|
|
36
|
+
server_is_overloaded: "overloaded",
|
|
37
|
+
authentication_error: "auth",
|
|
38
|
+
not_found_error: "model_unavailable",
|
|
39
|
+
rate_limit_error: "rate_limited",
|
|
40
|
+
billing_error: "billing",
|
|
41
|
+
overloaded_error: "overloaded",
|
|
42
|
+
api_error: "provider",
|
|
43
|
+
server_error: "provider",
|
|
44
|
+
invalid_request_error: "invalid_request",
|
|
45
|
+
};
|
|
46
|
+
/** The class a provider error code or type names; null for one no runtime was seen to carry. */
|
|
47
|
+
export function failureFromErrorCode(code) {
|
|
48
|
+
return ERROR_CODES[code] ?? null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Anthropic's 400s that have no type of their own (both are
|
|
52
|
+
* `invalid_request_error`): an organization's spend limit and an exhausted
|
|
53
|
+
* credit balance. Matched on the API's own wording, the last resort for the
|
|
54
|
+
* adapters that carry Anthropic's message (claude, pi); pinned by their
|
|
55
|
+
* vendor tests.
|
|
56
|
+
*/
|
|
57
|
+
export function anthropicLimitText(message) {
|
|
58
|
+
if (/credit balance is too low/iu.test(message)) {
|
|
59
|
+
return "billing";
|
|
60
|
+
}
|
|
61
|
+
if (/reached your specified API usage limits/iu.test(message)) {
|
|
62
|
+
return "quota";
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A provider's JSON error body, as Anthropic (`{type: "error", error: {type,
|
|
68
|
+
* message}}`) and OpenAI (`{error: {code, type, message}}`) send it: the
|
|
69
|
+
* class its code names, else its type's (Anthropic's 400 wording first).
|
|
70
|
+
* Null when `text` is no such body or names nothing known.
|
|
71
|
+
*/
|
|
72
|
+
export function failureFromErrorBody(text) {
|
|
73
|
+
const error = asRecord(asRecord(parseJson(text))?.error);
|
|
74
|
+
if (error === null) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const code = typeof error.code === "string" ? failureFromErrorCode(error.code) : null;
|
|
78
|
+
if (code !== null) {
|
|
79
|
+
return code;
|
|
80
|
+
}
|
|
81
|
+
const message = typeof error.message === "string" ? error.message : "";
|
|
82
|
+
if (error.type === "invalid_request_error") {
|
|
83
|
+
return anthropicLimitText(message) ?? "invalid_request";
|
|
84
|
+
}
|
|
85
|
+
return typeof error.type === "string" ? failureFromErrorCode(error.type) : null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Best-effort classification of vendor error prose: the documented last
|
|
89
|
+
* resort of the adapters whose runtime reports no structure for a failure
|
|
90
|
+
* (opencode's prompt errors, cursor's run errors). The patterns are pinned by
|
|
91
|
+
* the vendor snapshot tests: when a runtime changes its wording, the snapshot
|
|
92
|
+
* moves and this table gets a conscious update.
|
|
5
93
|
*/
|
|
6
94
|
export function classifyFailure(reason) {
|
|
7
|
-
if (/\b401\b|authenticat(?:e|ed|ion)|\boauth\b|unauthorized|invalid (?:user )?(?:x-)?api[- ]?key|log(?:ged)? ?in/iu.test(reason)) {
|
|
95
|
+
if (/\b401\b|authenticat(?:e|ed|ion)|\boauth\b|unauthorized|invalid (?:user )?(?:x-)?api[- ]?key|x-api-key|log(?:ged)? ?in/iu.test(reason)) {
|
|
8
96
|
return "auth";
|
|
9
97
|
}
|
|
10
|
-
|
|
98
|
+
const limit = anthropicLimitText(reason);
|
|
99
|
+
if (limit !== null) {
|
|
100
|
+
return limit;
|
|
101
|
+
}
|
|
102
|
+
if (/\b429\b|rate.?limit/iu.test(reason)) {
|
|
103
|
+
return "rate_limited";
|
|
104
|
+
}
|
|
105
|
+
if (/quota|usage limit/iu.test(reason)) {
|
|
11
106
|
return "quota";
|
|
12
107
|
}
|
|
108
|
+
if (/billing/iu.test(reason)) {
|
|
109
|
+
return "billing";
|
|
110
|
+
}
|
|
13
111
|
if (/\b400\b|invalid_request|issue with the selected model|model .* (?:does not|doesn't|may not) exist|unknown model|invalid model/iu.test(reason)) {
|
|
14
112
|
return "invalid_request";
|
|
15
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-class.js","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"failure-class.js","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,10 @@ export declare function checkMcpServerNames(servers: readonly McpServer[]): void
|
|
|
23
23
|
* entries hold none.
|
|
24
24
|
*/
|
|
25
25
|
export declare function mcpCredentialRedactor(servers: readonly McpServer[] | undefined): (text: string) => string;
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* `error` with its message and stack passed through `redact`, and so every
|
|
28
|
+
* error down its `cause` chain (a `RuntimeFailureError` keeps the agent's
|
|
29
|
+
* error there); in place, so classes and fields stay. Anything else as it is.
|
|
30
|
+
*/
|
|
27
31
|
export declare function redactError(error: unknown, redact: (text: string) => string): unknown;
|
|
28
32
|
//# sourceMappingURL=mcp-servers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../../src/shared/mcp-servers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAQzD,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC1E,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAE/D,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,aAAa,CAE1E;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,IAAI,CAWtG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAYvE;AAWD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAMzG;AAED
|
|
1
|
+
{"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../../src/shared/mcp-servers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAQzD,sFAAsF;AACtF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC1E,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAE/D,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,aAAa,CAE1E;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,IAAI,CAWtG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAYvE;AAWD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAMzG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAUrF"}
|
|
@@ -57,12 +57,18 @@ export function mcpCredentialRedactor(servers) {
|
|
|
57
57
|
}
|
|
58
58
|
return (text) => values.reduce((redacted, value) => redacted.replaceAll(value, "[redacted]"), text);
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* `error` with its message and stack passed through `redact`, and so every
|
|
62
|
+
* error down its `cause` chain (a `RuntimeFailureError` keeps the agent's
|
|
63
|
+
* error there); in place, so classes and fields stay. Anything else as it is.
|
|
64
|
+
*/
|
|
61
65
|
export function redactError(error, redact) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
const seen = new Set();
|
|
67
|
+
for (let current = error; current instanceof Error && !seen.has(current); current = current.cause) {
|
|
68
|
+
seen.add(current);
|
|
69
|
+
current.message = redact(current.message);
|
|
70
|
+
if (current.stack !== undefined) {
|
|
71
|
+
current.stack = redact(current.stack);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
return error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-servers.js","sourceRoot":"","sources":["../../src/shared/mcp-servers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp-servers.js","sourceRoot":"","sources":["../../src/shared/mcp-servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,9 @@ export interface RecordAt {
|
|
|
26
26
|
* adapter decide, and records the accept/reject response; and the
|
|
27
27
|
* reachability rule: once the stream holds an `exited` response or a
|
|
28
28
|
* `dispose` request, control is rejected here without consulting the
|
|
29
|
-
* adapter (record-stream.md, "Reachability is read off the stream")
|
|
29
|
+
* adapter (record-stream.md, "Reachability is read off the stream");
|
|
30
|
+
* - empty prompt/steer/queue input without images is recorded and refused
|
|
31
|
+
* before the adapter is consulted (conversation.md, "Images").
|
|
30
32
|
*
|
|
31
33
|
* What is deliberately NOT here: any gate on facts. Nothing in the kernel
|
|
32
34
|
* decides whether a runtime frame may enter the stream; control never
|
|
@@ -49,7 +51,8 @@ export interface SessionKernel {
|
|
|
49
51
|
* A `toRuntime` control action: record the request, decide, record the
|
|
50
52
|
* response. Exceptions from `decide` become a rejected response carrying the
|
|
51
53
|
* message. When the stream already says the runtime is unreachable (see
|
|
52
|
-
* `unreachable()`),
|
|
54
|
+
* `unreachable()`), or input is empty with no images, the request is
|
|
55
|
+
* rejected without consulting `decide`.
|
|
53
56
|
*/
|
|
54
57
|
control(body: RequestBody, decide: (request: RequestRecord) => ResponseBody | Promise<ResponseBody>, at?: RecordAt): Promise<ControlResult>;
|
|
55
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,gHAAgH;AAChH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC7C,gHAAgH;IAChH,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACjH,iDAAiD;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC9E;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5I;;;;;;OAMG;IACH,WAAW,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3H,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACpE,OAAO,IAAI,SAAS,QAAQ,EAAE,CAAC;IAC/B,KAAK,IAAI,YAAY,CAAC;IACtB,gGAAgG;IAChG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,wIAAwI;IACxI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAqBD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAqB,GAAG,aAAa,CAgGnF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { emptyInputRefusal } from "./control-input.js";
|
|
1
2
|
import { randomUUID } from "node:crypto";
|
|
2
3
|
async function settle(decide, issued) {
|
|
3
4
|
try {
|
|
@@ -61,7 +62,7 @@ export function createSessionKernel(sessionId = randomUUID()) {
|
|
|
61
62
|
async control(body, decide, at) {
|
|
62
63
|
const blocked = unreachable();
|
|
63
64
|
const issued = request("toRuntime", body, at);
|
|
64
|
-
const decided = blocked ?? await settle(decide, issued);
|
|
65
|
+
const decided = blocked ?? emptyInputRefusal(body) ?? await settle(decide, issued);
|
|
65
66
|
return { request: issued, response: respond(issued.id, decided, at) };
|
|
66
67
|
},
|
|
67
68
|
unreachable,
|