@botiverse/oar 0.77.0 → 0.78.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/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +15 -3
- package/dist/agents/subagent.js.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/contracts/errors.d.ts +2 -2
- package/dist/contracts/errors.d.ts.map +1 -1
- package/dist/contracts/errors.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/placement.d.ts +37 -0
- package/dist/contracts/placement.d.ts.map +1 -0
- package/dist/contracts/placement.js +42 -0
- package/dist/contracts/placement.js.map +1 -0
- package/dist/contracts/records.d.ts +17 -9
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/runtime.d.ts +9 -3
- package/dist/contracts/runtime.d.ts.map +1 -1
- package/dist/contracts/runtime.js +10 -2
- package/dist/contracts/runtime.js.map +1 -1
- package/dist/contracts/session.d.ts +15 -2
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/contracts/status.d.ts +1 -0
- package/dist/contracts/status.d.ts.map +1 -1
- package/dist/observe/agent-status.d.ts +2 -0
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +15 -1
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/conversation.js +1 -1
- package/dist/observe/conversation.js.map +1 -1
- package/dist/observe/display-text.d.ts.map +1 -1
- package/dist/observe/display-text.js +2 -0
- package/dist/observe/display-text.js.map +1 -1
- package/dist/observe/events.d.ts.map +1 -1
- package/dist/observe/events.js +7 -1
- package/dist/observe/events.js.map +1 -1
- package/dist/observe/session-view-events.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +12 -1
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-fold.d.ts +1 -0
- package/dist/observe/session-view-fold.d.ts.map +1 -1
- package/dist/observe/session-view-fold.js +2 -1
- package/dist/observe/session-view-fold.js.map +1 -1
- package/dist/observe/session-view-tools.d.ts +1 -1
- package/dist/observe/session-view-tools.d.ts.map +1 -1
- package/dist/observe/session-view-tools.js +3 -3
- package/dist/observe/session-view-tools.js.map +1 -1
- package/dist/observe/session-view.d.ts +5 -1
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/session-view.js +1 -1
- package/dist/observe/session-view.js.map +1 -1
- package/dist/observe/turn-stop.d.ts +2 -0
- package/dist/observe/turn-stop.d.ts.map +1 -1
- package/dist/observe/turn-stop.js +5 -0
- package/dist/observe/turn-stop.js.map +1 -1
- package/dist/observe/turns.d.ts +9 -5
- package/dist/observe/turns.d.ts.map +1 -1
- package/dist/observe/turns.js +20 -7
- package/dist/observe/turns.js.map +1 -1
- package/dist/runtimes/antigravity/index.d.ts +3 -5
- package/dist/runtimes/antigravity/index.d.ts.map +1 -1
- package/dist/runtimes/antigravity/index.js +1 -1
- package/dist/runtimes/antigravity/index.js.map +1 -1
- package/dist/runtimes/claude/index.d.ts +2 -4
- package/dist/runtimes/claude/index.d.ts.map +1 -1
- package/dist/runtimes/claude/index.js +1 -1
- package/dist/runtimes/claude/index.js.map +1 -1
- package/dist/runtimes/codebuddy/index.d.ts +3 -5
- package/dist/runtimes/codebuddy/index.d.ts.map +1 -1
- package/dist/runtimes/codebuddy/index.js +1 -1
- package/dist/runtimes/codebuddy/index.js.map +1 -1
- package/dist/runtimes/codebuddy/session.js +2 -2
- package/dist/runtimes/codebuddy/session.js.map +1 -1
- package/dist/runtimes/codex/index.d.ts +2 -4
- package/dist/runtimes/codex/index.d.ts.map +1 -1
- package/dist/runtimes/codex/index.js +1 -1
- package/dist/runtimes/codex/index.js.map +1 -1
- package/dist/runtimes/cursor/index.js +1 -1
- package/dist/runtimes/cursor/index.js.map +1 -1
- package/dist/runtimes/cursor/session.d.ts.map +1 -1
- package/dist/runtimes/cursor/session.js +2 -1
- package/dist/runtimes/cursor/session.js.map +1 -1
- package/dist/runtimes/grok/index.d.ts +3 -5
- package/dist/runtimes/grok/index.d.ts.map +1 -1
- package/dist/runtimes/grok/index.js +1 -1
- package/dist/runtimes/grok/index.js.map +1 -1
- package/dist/runtimes/kimi/index.d.ts +3 -5
- package/dist/runtimes/kimi/index.d.ts.map +1 -1
- package/dist/runtimes/kimi/index.js +1 -1
- package/dist/runtimes/kimi/index.js.map +1 -1
- package/dist/runtimes/opencode/index.d.ts +3 -5
- package/dist/runtimes/opencode/index.d.ts.map +1 -1
- package/dist/runtimes/opencode/index.js +1 -1
- package/dist/runtimes/opencode/index.js.map +1 -1
- package/dist/runtimes/opencode/session.js +4 -4
- package/dist/runtimes/opencode/session.js.map +1 -1
- package/dist/runtimes/pi/index.js +1 -1
- package/dist/runtimes/pi/index.js.map +1 -1
- package/dist/runtimes/pi/session.d.ts.map +1 -1
- package/dist/runtimes/pi/session.js +1 -1
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/runtimes/pi-durable/index.d.ts.map +1 -1
- package/dist/runtimes/pi-durable/index.js +3 -3
- package/dist/runtimes/pi-durable/index.js.map +1 -1
- package/dist/runtimes/pi-durable/session.d.ts +2 -1
- package/dist/runtimes/pi-durable/session.d.ts.map +1 -1
- package/dist/runtimes/pi-durable/session.js +2 -1
- package/dist/runtimes/pi-durable/session.js.map +1 -1
- package/dist/runtimes/qoder/index.d.ts +3 -5
- package/dist/runtimes/qoder/index.d.ts.map +1 -1
- package/dist/runtimes/qoder/index.js +1 -1
- package/dist/runtimes/qoder/index.js.map +1 -1
- package/dist/runtimes/qwen/index.d.ts +3 -5
- package/dist/runtimes/qwen/index.d.ts.map +1 -1
- package/dist/runtimes/qwen/index.js +1 -1
- package/dist/runtimes/qwen/index.js.map +1 -1
- package/dist/shared/deliver-interrupt.d.ts +1 -0
- package/dist/shared/deliver-interrupt.d.ts.map +1 -1
- package/dist/shared/deliver-interrupt.js +11 -6
- package/dist/shared/deliver-interrupt.js.map +1 -1
- package/dist/shared/process-pool.d.ts +33 -0
- package/dist/shared/process-pool.d.ts.map +1 -0
- package/dist/shared/process-pool.js +115 -0
- package/dist/shared/process-pool.js.map +1 -0
- package/dist/shared/process-session.d.ts +11 -0
- package/dist/shared/process-session.d.ts.map +1 -0
- package/dist/shared/process-session.js +126 -0
- package/dist/shared/process-session.js.map +1 -0
- package/dist/shared/seal-session.d.ts +2 -2
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +14 -4
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/shared/session-credentials.d.ts +2 -1
- package/dist/shared/session-credentials.d.ts.map +1 -1
- package/dist/shared/session-credentials.js +7 -6
- package/dist/shared/session-credentials.js.map +1 -1
- package/dist/shared/session-kernel.d.ts +7 -4
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +23 -3
- package/dist/shared/session-kernel.js.map +1 -1
- package/dist/testing/scripted-runtime.d.ts.map +1 -1
- package/dist/testing/scripted-runtime.js +3 -2
- package/dist/testing/scripted-runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
function configurationKey(config) {
|
|
3
|
+
const values = JSON.stringify([config.command, config.args, Object.entries(config.env).toSorted(([a], [b]) => a < b ? -1 : (a > b ? 1 : 0)),
|
|
4
|
+
config.home, config.configDirectories, config.cwd]);
|
|
5
|
+
return createHash("sha256").update(values).digest("hex");
|
|
6
|
+
}
|
|
7
|
+
async function observeExit(entry, remove) {
|
|
8
|
+
try {
|
|
9
|
+
const process = await entry.ready;
|
|
10
|
+
entry.code = await process.exited;
|
|
11
|
+
}
|
|
12
|
+
catch { /* Startup failure is delivered to each acquire caller. */ }
|
|
13
|
+
finally {
|
|
14
|
+
entry.exited = true;
|
|
15
|
+
remove();
|
|
16
|
+
for (const listener of entry.listeners) {
|
|
17
|
+
try {
|
|
18
|
+
listener(entry.code);
|
|
19
|
+
}
|
|
20
|
+
catch { /* One observer cannot hide exit from its peers. */ }
|
|
21
|
+
}
|
|
22
|
+
entry.listeners.clear();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function leaseOf(process, owned, placement, retire) {
|
|
26
|
+
let disposal = null;
|
|
27
|
+
let surrendered = false;
|
|
28
|
+
const hasExited = () => owned.exited;
|
|
29
|
+
const dispose = async () => {
|
|
30
|
+
if (!surrendered) {
|
|
31
|
+
owned.leases -= 1;
|
|
32
|
+
surrendered = true;
|
|
33
|
+
}
|
|
34
|
+
if (owned.exited) {
|
|
35
|
+
return "exited";
|
|
36
|
+
}
|
|
37
|
+
if (owned.leases !== 0) {
|
|
38
|
+
return "released";
|
|
39
|
+
}
|
|
40
|
+
// A new open must not join shutdown. Keep the retiring entry owned until
|
|
41
|
+
// actual exit, including a failed stop whose last lease can retry.
|
|
42
|
+
retire();
|
|
43
|
+
await process.stop();
|
|
44
|
+
await process.exited;
|
|
45
|
+
return "exited";
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
process, placement,
|
|
49
|
+
onExit(listener) {
|
|
50
|
+
if (owned.exited) {
|
|
51
|
+
listener(owned.code);
|
|
52
|
+
return () => { };
|
|
53
|
+
}
|
|
54
|
+
owned.listeners.add(listener);
|
|
55
|
+
return () => { owned.listeners.delete(listener); };
|
|
56
|
+
},
|
|
57
|
+
async dispose() {
|
|
58
|
+
disposal ??= (async () => {
|
|
59
|
+
try {
|
|
60
|
+
return await dispose();
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
disposal = null;
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
})();
|
|
67
|
+
const result = await disposal;
|
|
68
|
+
return result;
|
|
69
|
+
},
|
|
70
|
+
async resources() {
|
|
71
|
+
if (hasExited()) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const result = await process.resources();
|
|
75
|
+
return hasExited() || result === null ? null : { ...result, ...(placement === "shared" ? { scope: "shared_process" } : {}) };
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** One runtime instance's pool. Nothing is global, restarted, or keyed by a runtime name. */
|
|
80
|
+
export function createProcessPool(start) {
|
|
81
|
+
const entries = new Map();
|
|
82
|
+
// Retain strong references to processes removed from acquisition during
|
|
83
|
+
// shutdown, including failed stops. Only actual exit removes this ownership;
|
|
84
|
+
// the last lease can retry shutdown without admitting new sessions.
|
|
85
|
+
const retiring = new Set();
|
|
86
|
+
return {
|
|
87
|
+
async acquire(configuration, placement) {
|
|
88
|
+
const captured = { ...configuration, args: [...configuration.args], env: { ...configuration.env },
|
|
89
|
+
...(configuration.configDirectories === undefined ? {} : { configDirectories: [...configuration.configDirectories] }) };
|
|
90
|
+
const key = configurationKey(captured);
|
|
91
|
+
let entry = placement === "shared" ? entries.get(key) : undefined;
|
|
92
|
+
if (entry === undefined) {
|
|
93
|
+
// Reserve before asynchronous start so concurrent opens join one promise.
|
|
94
|
+
entry = { ready: (async () => { await Promise.resolve(); return start(captured); })(), leases: 0, exited: false, code: null, listeners: new Set() };
|
|
95
|
+
if (placement === "shared") {
|
|
96
|
+
entries.set(key, entry);
|
|
97
|
+
}
|
|
98
|
+
const created = entry;
|
|
99
|
+
void observeExit(created, () => { if (entries.get(key) === created) {
|
|
100
|
+
entries.delete(key);
|
|
101
|
+
} retiring.delete(created); });
|
|
102
|
+
}
|
|
103
|
+
entry.leases += 1;
|
|
104
|
+
const owned = entry;
|
|
105
|
+
const process = await owned.ready;
|
|
106
|
+
return leaseOf(process, owned, placement, () => {
|
|
107
|
+
if (entries.get(key) === owned) {
|
|
108
|
+
entries.delete(key);
|
|
109
|
+
}
|
|
110
|
+
retiring.add(owned);
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=process-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-pool.js","sources":["../../src/shared/process-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ControlResult, RequestRecord } from "../contracts/session.js";
|
|
2
|
+
import type { ProcessLease, PooledProcess } from "./process-pool.js";
|
|
3
|
+
import type { SessionKernel } from "./session-kernel.js";
|
|
4
|
+
export interface ProcessSessionLifecycle {
|
|
5
|
+
/** Only after the runtime's interrupt failed to settle within its fallback interval. */
|
|
6
|
+
abortFallback(request: RequestRecord): Promise<ControlResult>;
|
|
7
|
+
dispose(this: void): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/** Recording and process ownership; native per-session cleanup stays in the adapter. */
|
|
10
|
+
export declare function processSessionLifecycle(kernel: SessionKernel, lease: ProcessLease<PooledProcess>, cleanup: () => Promise<void>, cleanupTimeoutMs?: number): ProcessSessionLifecycle;
|
|
11
|
+
//# sourceMappingURL=process-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-session.d.ts","sources":["../../src/shared/process-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAkB,MAAM,yBAAyB,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,wFAAwF;IACxF,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAwBD,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,SAAO,GAAG,uBAAuB,CA2DjL"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
function cleanupQueue(kernel, cleanup, timeoutMs) {
|
|
2
|
+
let chain = Promise.resolve();
|
|
3
|
+
const run = async (request) => {
|
|
4
|
+
let timer = undefined;
|
|
5
|
+
const deadline = new Promise((resolve) => { timer = setTimeout(() => { resolve({ kind: "failed", reason: "session cleanup timed out; work may still be running" }); }, timeoutMs); });
|
|
6
|
+
const attempt = (async () => {
|
|
7
|
+
try {
|
|
8
|
+
await cleanup();
|
|
9
|
+
return { kind: "completed" };
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return { kind: "failed", reason: error instanceof Error ? error.message : String(error) };
|
|
13
|
+
}
|
|
14
|
+
})();
|
|
15
|
+
try {
|
|
16
|
+
kernel.respond(request.id, { kind: "cleanup", result: await Promise.race([attempt, deadline]) });
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
clearTimeout(timer);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return async (request) => {
|
|
23
|
+
const previous = chain;
|
|
24
|
+
chain = (async () => {
|
|
25
|
+
try {
|
|
26
|
+
await previous;
|
|
27
|
+
}
|
|
28
|
+
catch { /* A prior reporting failure cannot poison later cleanup attempts. */ }
|
|
29
|
+
await run(request);
|
|
30
|
+
})();
|
|
31
|
+
await chain;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** Recording and process ownership; native per-session cleanup stays in the adapter. */
|
|
35
|
+
export function processSessionLifecycle(kernel, lease, cleanup, cleanupTimeoutMs = 1000) {
|
|
36
|
+
let exitObserved = false;
|
|
37
|
+
let released = undefined;
|
|
38
|
+
let disposeRequest = undefined;
|
|
39
|
+
let disposal = undefined;
|
|
40
|
+
const hasExited = () => exitObserved;
|
|
41
|
+
const recordExit = (code) => {
|
|
42
|
+
if (exitObserved) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
exitObserved = true;
|
|
46
|
+
kernel.respond(disposeRequest?.id ?? "", { kind: "exited", code });
|
|
47
|
+
};
|
|
48
|
+
const unsubscribe = lease.onExit(recordExit);
|
|
49
|
+
const clean = cleanupQueue(kernel, cleanup, cleanupTimeoutMs);
|
|
50
|
+
const release = (request, reason) => {
|
|
51
|
+
released ??= kernel.respond(request.id, { kind: "released", reason, nativeTurnMayContinue: true, workStartedAfterCleanupMayContinue: true });
|
|
52
|
+
return released;
|
|
53
|
+
};
|
|
54
|
+
const dispose = async () => {
|
|
55
|
+
const request = kernel.request("toRuntime", { kind: "dispose" });
|
|
56
|
+
disposeRequest = request;
|
|
57
|
+
try {
|
|
58
|
+
if (hasExited()) {
|
|
59
|
+
kernel.respond(request.id, { kind: "accepted" });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (lease.placement === "shared") {
|
|
63
|
+
await clean(request);
|
|
64
|
+
}
|
|
65
|
+
const result = await lease.dispose();
|
|
66
|
+
if (result === "released" && !hasExited()) {
|
|
67
|
+
unsubscribe();
|
|
68
|
+
if (released === undefined) {
|
|
69
|
+
release(request, "dispose");
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
kernel.respond(request.id, { kind: "accepted" });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
recordExit(await lease.process.exited);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (hasExited()) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
kernel.respond(request.id, { kind: "rejected", code: "error", reason: error instanceof Error ? error.message : String(error) });
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
disposeRequest = undefined;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
async abortFallback(request) {
|
|
92
|
+
const answered = kernel.records().find((record) => record.kind === "response" && record.requestId === request.id && (record.body.kind === "accepted" || record.body.kind === "rejected"));
|
|
93
|
+
if (answered?.body.kind === "rejected") {
|
|
94
|
+
return { request, response: answered };
|
|
95
|
+
}
|
|
96
|
+
const blocked = kernel.unreachable();
|
|
97
|
+
if (blocked !== null) {
|
|
98
|
+
return { request, response: answered ?? kernel.respond(request.id, blocked) };
|
|
99
|
+
}
|
|
100
|
+
// Reuse native acceptance; only a still-pending abort needs a response.
|
|
101
|
+
const response = answered ?? kernel.respond(request.id, { kind: "accepted" });
|
|
102
|
+
if (lease.placement === "shared") {
|
|
103
|
+
release(request, "abort_fallback");
|
|
104
|
+
await clean(request);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
await lease.dispose();
|
|
108
|
+
recordExit(await lease.process.exited);
|
|
109
|
+
}
|
|
110
|
+
return { request, response };
|
|
111
|
+
},
|
|
112
|
+
async dispose() {
|
|
113
|
+
disposal ??= (async () => {
|
|
114
|
+
try {
|
|
115
|
+
await dispose();
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
disposal = undefined;
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
})();
|
|
122
|
+
await disposal;
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=process-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-session.js","sources":["../../src/shared/process-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ControlOutcome, ControlResult, AdapterSession, Session } from "../contracts/session.js";
|
|
2
2
|
/**
|
|
3
3
|
* Read a control's answer off its two records. A toRuntime control is only
|
|
4
|
-
* ever answered `accepted` or `rejected`; the other
|
|
5
|
-
*
|
|
4
|
+
* ever answered `accepted` or `rejected`; the other bodies answer opening,
|
|
5
|
+
* cleanup, release, exit or a toApp request, so they are
|
|
6
6
|
* mapped totally rather than thrown on, should an adapter ever route one here.
|
|
7
7
|
*/
|
|
8
8
|
export declare function controlOutcomeOf(result: ControlResult): ControlOutcome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seal-session.d.ts","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seal-session.d.ts","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAGb,cAAc,EACd,OAAO,EAER,MAAM,yBAAyB,CAAC;AAcjC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAUtE;AAUD;;;;;;;;GAQG;AAEH,wBAAgB,WAAW,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAkEnE"}
|
|
@@ -11,8 +11,8 @@ const identify = (options = {}) => {
|
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
13
|
* Read a control's answer off its two records. A toRuntime control is only
|
|
14
|
-
* ever answered `accepted` or `rejected`; the other
|
|
15
|
-
*
|
|
14
|
+
* ever answered `accepted` or `rejected`; the other bodies answer opening,
|
|
15
|
+
* cleanup, release, exit or a toApp request, so they are
|
|
16
16
|
* mapped totally rather than thrown on, should an adapter ever route one here.
|
|
17
17
|
*/
|
|
18
18
|
export function controlOutcomeOf(result) {
|
|
@@ -21,11 +21,20 @@ export function controlOutcomeOf(result) {
|
|
|
21
21
|
if (response.body.kind === "rejected") {
|
|
22
22
|
return { kind: "rejected", code: response.body.code, reason: response.body.reason, ...at };
|
|
23
23
|
}
|
|
24
|
-
if (response.body.kind === "exited") {
|
|
25
|
-
return { kind: "rejected", code: "runtime_exited", reason: "runtime exited", ...at };
|
|
24
|
+
if (response.body.kind === "exited" || response.body.kind === "released") {
|
|
25
|
+
return { kind: "rejected", code: response.body.kind === "released" ? "session_released" : "runtime_exited", reason: response.body.kind === "released" ? "session released; native work may continue" : "runtime exited", ...at };
|
|
26
26
|
}
|
|
27
27
|
return { kind: "accepted", ...at };
|
|
28
28
|
}
|
|
29
|
+
function sessionPlacement(session) {
|
|
30
|
+
for (const record of session.records()) {
|
|
31
|
+
if (record.sessionId === session.id && record.agentPath.length === 0 && record.kind === "response" && record.body.kind === "opened") {
|
|
32
|
+
return record.body.placement;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Legacy custom adapters have no process-placement record.
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
29
38
|
/**
|
|
30
39
|
* Derive the API face of a Session from what the adapter built: the read
|
|
31
40
|
* control answers (`ControlOutcome` over the adapter's records), the flat
|
|
@@ -67,6 +76,7 @@ export function sealSession(adapterSession) {
|
|
|
67
76
|
const adapterGoal = adapterSession.goal;
|
|
68
77
|
const sealed = {
|
|
69
78
|
...adapterFace,
|
|
79
|
+
placement: sessionPlacement(adapterSession),
|
|
70
80
|
...(adapterGoal === undefined ? {} : { goal: {
|
|
71
81
|
set: async (options) => controlOutcomeOf(await adapterGoal.set(options)),
|
|
72
82
|
read: async () => controlOutcomeOf(await adapterGoal.read()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seal-session.js","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seal-session.js","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SessionOpenContext, SessionPlacement } from "../contracts/placement.js";
|
|
1
2
|
import type { AvailableInstallation } from "../contracts/installation.js";
|
|
2
3
|
import type { AdapterSession, Session, SessionOptions, StartSession } from "../contracts/session.js";
|
|
3
4
|
import { type CredentialRedactor } from "./credential-redactor.js";
|
|
@@ -7,5 +8,5 @@ export interface SessionCredentials extends CredentialRedactor {
|
|
|
7
8
|
seal(adapter: AdapterSession): Session;
|
|
8
9
|
}
|
|
9
10
|
/** Keep opening failures and later adapter errors under the same session credential rules as the record stream. */
|
|
10
|
-
export declare function withSessionCredentials(open: (installation: AvailableInstallation, options: SessionOptions, credentials: SessionCredentials) => Promise<Session
|
|
11
|
+
export declare function withSessionCredentials(open: (installation: AvailableInstallation, options: SessionOptions, credentials: SessionCredentials, context: SessionOpenContext) => Promise<Session>, placement?: SessionPlacement): StartSession;
|
|
11
12
|
//# sourceMappingURL=session-credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-credentials.d.ts","sources":["../../src/shared/session-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;CACxC;AAiCD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"session-credentials.d.ts","sources":["../../src/shared/session-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;CACxC;AAiCD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAE,gBAA6B,GAAG,YAAY,CAOrP"}
|
|
@@ -2,7 +2,7 @@ import { sessionCredentialRedactor } from "./credential-redactor.js";
|
|
|
2
2
|
import { sealSession } from "./seal-session.js";
|
|
3
3
|
import { createSessionKernel } from "./session-kernel.js";
|
|
4
4
|
/** Credentials supplied for this session, plus native keys the adapter resolves. No inherited environment or credential-file scan. */
|
|
5
|
-
function sessionCredentials(options) {
|
|
5
|
+
function sessionCredentials(options, context) {
|
|
6
6
|
const { add, redact, redactValue } = sessionCredentialRedactor(options);
|
|
7
7
|
const guard = (method) => async (...args) => {
|
|
8
8
|
try {
|
|
@@ -16,7 +16,7 @@ function sessionCredentials(options) {
|
|
|
16
16
|
add,
|
|
17
17
|
redact,
|
|
18
18
|
redactValue,
|
|
19
|
-
kernel: (id) => createSessionKernel(id, redactValue),
|
|
19
|
+
kernel: (id) => { const kernel = createSessionKernel(id, redactValue); kernel.opened(context); return kernel; },
|
|
20
20
|
seal: (adapter) => sealSession({
|
|
21
21
|
...adapter,
|
|
22
22
|
...(adapter.goal === undefined ? {} : { goal: {
|
|
@@ -36,11 +36,12 @@ function sessionCredentials(options) {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
/** Keep opening failures and later adapter errors under the same session credential rules as the record stream. */
|
|
39
|
-
export function withSessionCredentials(open) {
|
|
40
|
-
return async (installation, options) => {
|
|
41
|
-
const
|
|
39
|
+
export function withSessionCredentials(open, placement = "isolated") {
|
|
40
|
+
return async (installation, options, context) => {
|
|
41
|
+
const selected = context ?? { requested: "auto", placement };
|
|
42
|
+
const credentials = sessionCredentials(options, selected);
|
|
42
43
|
try {
|
|
43
|
-
return await open(installation, options, credentials);
|
|
44
|
+
return await open(installation, options, credentials, selected);
|
|
44
45
|
}
|
|
45
46
|
catch (error) {
|
|
46
47
|
throw credentials.redactValue(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-credentials.js","sources":["../../src/shared/session-credentials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-credentials.js","sources":["../../src/shared/session-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SessionOpenContext } from "../contracts/placement.js";
|
|
1
2
|
import type { ControlResult, Cursor, FrameBody, Frame, RequestBody, RequestDirection, RequestRecord, ResponseBody, ResponseRecord, SessionEdge, SessionGraph, RuntimeEventBody, RawEventObserver, RawEvent, Unsubscribe } from "../contracts/session.js";
|
|
2
3
|
/** Where a record sits: another session id for derived children, a sub-agent path, a runtime-native span id. */
|
|
3
4
|
export interface RecordAt {
|
|
@@ -25,7 +26,7 @@ export interface RecordAt {
|
|
|
25
26
|
* - the control shape: `control()` records a `toRuntime` request, lets the
|
|
26
27
|
* adapter decide, and records the accept/reject response; and the
|
|
27
28
|
* reachability rule: once the stream holds an `exited` response or a
|
|
28
|
-
* `dispose` request, control is rejected here without consulting the
|
|
29
|
+
* `released` response or `dispose` request, control is rejected here without consulting the
|
|
29
30
|
* adapter (record-stream.md, "Reachability is read off the stream");
|
|
30
31
|
* - empty prompt/steer/queue input without images is recorded and refused
|
|
31
32
|
* before the adapter is consulted (conversation.md, "Images").
|
|
@@ -39,6 +40,8 @@ export interface RecordAt {
|
|
|
39
40
|
*/
|
|
40
41
|
export interface SessionKernel {
|
|
41
42
|
readonly sessionId: string;
|
|
43
|
+
/** Record requested and selected placement before any native records are observed. */
|
|
44
|
+
opened(context: SessionOpenContext): void;
|
|
42
45
|
/** Append the runtime's frame. Returns the stamped record. */
|
|
43
46
|
frame(body: FrameBody, at?: RecordAt): Frame;
|
|
44
47
|
/** Append a request; `id` defaults to a fresh UUID (runtime-issued ids for `toApp` requests keep their own). */
|
|
@@ -57,14 +60,14 @@ export interface SessionKernel {
|
|
|
57
60
|
control(body: RequestBody, decide: (request: RequestRecord) => ResponseBody | Promise<ResponseBody>, at?: RecordAt): Promise<ControlResult>;
|
|
58
61
|
/**
|
|
59
62
|
* Why a control cannot reach the runtime any more, derived from the stream
|
|
60
|
-
* itself: an `exited` response
|
|
61
|
-
* `dispose` request
|
|
63
|
+
* itself: an `exited` response (the runtime is gone), a `released` response, or a
|
|
64
|
+
* `dispose` request (the session is being released). Null while the
|
|
62
65
|
* runtime is reachable. Adapters that record control outside `control()`
|
|
63
66
|
* apply it themselves; adapter-held liveness flags are not needed.
|
|
64
67
|
*/
|
|
65
68
|
unreachable(): {
|
|
66
69
|
readonly kind: "rejected";
|
|
67
|
-
readonly code: "runtime_exited" | "disposed";
|
|
70
|
+
readonly code: "runtime_exited" | "disposed" | "session_released";
|
|
68
71
|
readonly reason: string;
|
|
69
72
|
} | null;
|
|
70
73
|
rawEvents(observer: RawEventObserver, cursor?: Cursor): Unsubscribe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-kernel.d.ts","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-kernel.d.ts","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,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,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,sFAAsF;IACtF,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,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,GAAG,kBAAkB,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChJ,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,6IAA6I;IAC7I,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;CACzF;AAqBD,mIAAmI;AACnI,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAuC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,aAAa,CAoHpJ"}
|
|
@@ -44,6 +44,8 @@ export function createSessionKernel(sessionId = globalThis.crypto.randomUUID(),
|
|
|
44
44
|
let graph = { nodes: [{ id: sessionId }], edges: [] };
|
|
45
45
|
let seq = 0;
|
|
46
46
|
let exited = false;
|
|
47
|
+
let released = false;
|
|
48
|
+
let opened = false;
|
|
47
49
|
let disposing = false;
|
|
48
50
|
const append = (build, at) => {
|
|
49
51
|
const spanId = at?.spanId;
|
|
@@ -58,10 +60,14 @@ export function createSessionKernel(sessionId = globalThis.crypto.randomUUID(),
|
|
|
58
60
|
const retained = redact === undefined ? record : redact(record);
|
|
59
61
|
log.push(retained);
|
|
60
62
|
graph = withSessionRecord(graph, retained, nodeIds);
|
|
61
|
-
|
|
63
|
+
const root = record.sessionId === sessionId && record.agentPath.length === 0;
|
|
64
|
+
if (root && record.kind === "response" && record.body.kind === "released") {
|
|
65
|
+
released = true;
|
|
66
|
+
}
|
|
67
|
+
if (root && record.kind === "response" && record.body.kind === "exited") {
|
|
62
68
|
exited = true;
|
|
63
69
|
}
|
|
64
|
-
if (record.kind === "request" && record.direction === "toRuntime" && record.body.kind === "dispose") {
|
|
70
|
+
if (root && record.kind === "request" && record.direction === "toRuntime" && record.body.kind === "dispose") {
|
|
65
71
|
disposing = true;
|
|
66
72
|
}
|
|
67
73
|
// A synchronous observer may withdraw before an adapter drains. Its new
|
|
@@ -73,12 +79,26 @@ export function createSessionKernel(sessionId = globalThis.crypto.randomUUID(),
|
|
|
73
79
|
if (exited) {
|
|
74
80
|
return { kind: "rejected", code: "runtime_exited", reason: "runtime exited" };
|
|
75
81
|
}
|
|
76
|
-
|
|
82
|
+
if (disposing) {
|
|
83
|
+
return { kind: "rejected", code: "disposed", reason: "session disposed" };
|
|
84
|
+
}
|
|
85
|
+
return released ? { kind: "rejected", code: "session_released", reason: "session released; its runtime process may still be running" } : null;
|
|
77
86
|
};
|
|
78
87
|
const request = (direction, body, at) => append((envelope) => ({ ...envelope, kind: "request", id: at?.id ?? globalThis.crypto.randomUUID(), direction, body }), at);
|
|
79
88
|
const respond = (requestId, body, at) => append((envelope) => ({ ...envelope, kind: "response", requestId, body }), at);
|
|
80
89
|
return {
|
|
81
90
|
sessionId,
|
|
91
|
+
opened(context) {
|
|
92
|
+
if (opened) {
|
|
93
|
+
throw new Error("Session placement was already recorded");
|
|
94
|
+
}
|
|
95
|
+
if (seq !== 0) {
|
|
96
|
+
throw new Error("Session opening must precede all native records");
|
|
97
|
+
}
|
|
98
|
+
opened = true;
|
|
99
|
+
const issued = request("toRuntime", { kind: "open", placement: context.requested });
|
|
100
|
+
respond(issued.id, { kind: "opened", placement: context.placement });
|
|
101
|
+
},
|
|
82
102
|
frame: (body, at) => append((envelope) => ({ ...envelope, kind: "frame", body }), at),
|
|
83
103
|
request,
|
|
84
104
|
respond,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-kernel.js","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-kernel.js","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripted-runtime.d.ts","sources":["../../src/testing/scripted-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAgE,cAAc,EAA0C,MAAM,yBAAyB,CAAC;AAIhL,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2BAA2B;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"scripted-runtime.d.ts","sources":["../../src/testing/scripted-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAgE,cAAc,EAA0C,MAAM,yBAAyB,CAAC;AAIhL,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2BAA2B;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,YAAY,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAmNxE"}
|
|
@@ -14,13 +14,14 @@ const tokensOf = (text) => Math.ceil(text.length / 4);
|
|
|
14
14
|
export function scriptedRuntime(options) {
|
|
15
15
|
const id = options.id ?? "scripted";
|
|
16
16
|
const model = options.model ?? "scripted-1";
|
|
17
|
-
const start = async (_installation, sessionOptions) => {
|
|
17
|
+
const start = async (_installation, sessionOptions, context) => {
|
|
18
18
|
await Promise.resolve();
|
|
19
19
|
// SessionOptions.effort's contract: a runtime that lists no effort levels refuses one, never ignores it.
|
|
20
20
|
if (sessionOptions.effort !== undefined) {
|
|
21
21
|
throw new Error(`${id} lists no reasoning-effort levels; it cannot run at effort "${sessionOptions.effort}"`);
|
|
22
22
|
}
|
|
23
23
|
const kernel = createSessionKernel(sessionOptions.resume);
|
|
24
|
+
kernel.opened(context ?? { requested: "auto", placement: "in_process" });
|
|
24
25
|
const queued = [];
|
|
25
26
|
const totals = { input: 0, output: 0 };
|
|
26
27
|
let active = null;
|
|
@@ -217,6 +218,6 @@ export function scriptedRuntime(options) {
|
|
|
217
218
|
await Promise.resolve();
|
|
218
219
|
return { kind: "available", via: "bundled" };
|
|
219
220
|
},
|
|
220
|
-
});
|
|
221
|
+
}, { execution: "in_process" });
|
|
221
222
|
}
|
|
222
223
|
//# sourceMappingURL=scripted-runtime.js.map
|