@botiverse/oar 0.7.0 → 0.8.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 +3 -2
- package/dist/contracts/records.d.ts +5 -0
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/session.d.ts +21 -0
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- 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/index.d.ts +1 -1
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +1 -1
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/session-view-events.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +5 -0
- 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 -0
- package/dist/observe/session-view-fold.js.map +1 -1
- package/dist/observe/session-view.d.ts +2 -0
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/session-view.js +1 -0
- package/dist/observe/session-view.js.map +1 -1
- package/dist/observe/usage.d.ts +2 -0
- package/dist/observe/usage.d.ts.map +1 -1
- package/dist/observe/usage.js +18 -0
- package/dist/observe/usage.js.map +1 -1
- package/dist/runtimes/claude/effort.d.ts +14 -0
- package/dist/runtimes/claude/effort.d.ts.map +1 -0
- package/dist/runtimes/claude/effort.js +62 -0
- package/dist/runtimes/claude/effort.js.map +1 -0
- package/dist/runtimes/claude/session.d.ts.map +1 -1
- package/dist/runtimes/claude/session.js +40 -0
- package/dist/runtimes/claude/session.js.map +1 -1
- package/dist/runtimes/codex/open.d.ts +42 -0
- package/dist/runtimes/codex/open.d.ts.map +1 -0
- package/dist/runtimes/codex/open.js +116 -0
- package/dist/runtimes/codex/open.js.map +1 -0
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +20 -0
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/codex/session.d.ts.map +1 -1
- package/dist/runtimes/codex/session.js +42 -48
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/grok/list-models.d.ts +6 -0
- package/dist/runtimes/grok/list-models.d.ts.map +1 -1
- package/dist/runtimes/grok/list-models.js +17 -2
- package/dist/runtimes/grok/list-models.js.map +1 -1
- package/dist/runtimes/kimi/list-models.d.ts +7 -4
- package/dist/runtimes/kimi/list-models.d.ts.map +1 -1
- package/dist/runtimes/kimi/list-models.js +9 -5
- package/dist/runtimes/kimi/list-models.js.map +1 -1
- package/dist/runtimes/pi/list-models.d.ts +16 -4
- package/dist/runtimes/pi/list-models.d.ts.map +1 -1
- package/dist/runtimes/pi/list-models.js +24 -7
- package/dist/runtimes/pi/list-models.js.map +1 -1
- package/dist/runtimes/pi/open.d.ts +22 -0
- package/dist/runtimes/pi/open.d.ts.map +1 -1
- package/dist/runtimes/pi/open.js +50 -0
- package/dist/runtimes/pi/open.js.map +1 -1
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +4 -1
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi/session.d.ts.map +1 -1
- package/dist/runtimes/pi/session.js +8 -6
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/shared/acp/effort.d.ts +25 -0
- package/dist/shared/acp/effort.d.ts.map +1 -0
- package/dist/shared/acp/effort.js +47 -0
- package/dist/shared/acp/effort.js.map +1 -0
- package/dist/shared/acp/model.d.ts +19 -0
- package/dist/shared/acp/model.d.ts.map +1 -1
- package/dist/shared/acp/model.js +27 -0
- package/dist/shared/acp/model.js.map +1 -1
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js +7 -0
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/projection.d.ts.map +1 -1
- package/dist/shared/acp/projection.js +7 -2
- package/dist/shared/acp/projection.js.map +1 -1
- package/dist/shared/acp/records.d.ts +1 -1
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +6 -2
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/seal-session.d.ts +1 -1
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +3 -2
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/scripted-runtime.d.ts +50 -0
- package/dist/testing/scripted-runtime.d.ts.map +1 -0
- package/dist/testing/scripted-runtime.js +187 -0
- package/dist/testing/scripted-runtime.js.map +1 -0
- package/dist/voyage.d.ts +2 -0
- package/dist/voyage.d.ts.map +1 -1
- package/dist/voyage.js +3 -1
- package/dist/voyage.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { asRecord } from "../../shared/json.js";
|
|
2
|
+
/*
|
|
3
|
+
* claude's word on the reasoning effort it will run (claude 2.1.284, probed
|
|
4
|
+
* 2026-09-29; experiments/effort-channels.ts):
|
|
5
|
+
* - `--effort <level>` reaches the Messages API as `output_config.effort`,
|
|
6
|
+
* on a new session and on `--resume` alike; without it claude sends its
|
|
7
|
+
* default (`medium`), also on a resume of a session that ran another level:
|
|
8
|
+
* claude keeps no effort per session.
|
|
9
|
+
* - Nothing in the stream-json output names the effort: `system/init` carries
|
|
10
|
+
* only `per_turn_effort_active`, `result` none. An unknown level is dropped
|
|
11
|
+
* with a stderr warning ("Unknown --effort value 'x' — ignoring it and using
|
|
12
|
+
* the default effort"), a model without effort (haiku) sends none, and a
|
|
13
|
+
* `maxEffortLevel` setting or `CLAUDE_CODE_EFFORT_LEVEL` can clamp or
|
|
14
|
+
* override the flag, all silently on stdout.
|
|
15
|
+
* - The one report is the `get_settings` control request, answered before any
|
|
16
|
+
* turn (token-free): `response.applied.effort` is "what will actually be
|
|
17
|
+
* sent to the API" after env overrides, session state and model defaults,
|
|
18
|
+
* `null` when the model takes none. The same answer also carries the merged
|
|
19
|
+
* settings of every source (`effective`, `sources`: hooks, permissions, any
|
|
20
|
+
* `env` block) verbatim, which is why the adapter consumes it instead of
|
|
21
|
+
* recording it (see session.ts).
|
|
22
|
+
*/
|
|
23
|
+
/** How long the adapter waits for claude to answer its `get_settings` read-back (after the SessionStart hooks). */
|
|
24
|
+
export const CLAUDE_EFFORT_READBACK_MS = 30_000;
|
|
25
|
+
/** The `get_settings` control request the adapter writes to stdin, under its own request id. */
|
|
26
|
+
export function claudeSettingsRequest(requestId) {
|
|
27
|
+
return `${JSON.stringify({ type: "control_request", request_id: requestId, request: { subtype: "get_settings" } })}\n`;
|
|
28
|
+
}
|
|
29
|
+
/** The request id a `control_response` frame answers, or null for any other frame. */
|
|
30
|
+
export function claudeControlResponseId(message) {
|
|
31
|
+
if (message.type !== "control_response") {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const id = asRecord(message.response)?.request_id;
|
|
35
|
+
return typeof id === "string" ? id : null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Why claude will not run `requested`, read off its `get_settings` answer, or
|
|
39
|
+
* null when `applied.effort` is exactly the requested level. The message
|
|
40
|
+
* names the requested level and what claude said instead.
|
|
41
|
+
*/
|
|
42
|
+
export function claudeEffortRefusal(requested, answer) {
|
|
43
|
+
const response = asRecord(answer.response);
|
|
44
|
+
if (response?.subtype !== "success") {
|
|
45
|
+
const error = typeof response?.error === "string" ? response.error : "no success answer";
|
|
46
|
+
return `claude could not report the effort it runs (get_settings: ${error}), so effort ${requested} cannot be confirmed`;
|
|
47
|
+
}
|
|
48
|
+
const applied = asRecord(asRecord(response.response)?.applied);
|
|
49
|
+
if (applied === null || !("effort" in applied)) {
|
|
50
|
+
return `claude's get_settings answer names no applied effort, so effort ${requested} cannot be confirmed`;
|
|
51
|
+
}
|
|
52
|
+
const model = typeof applied.model === "string" ? ` for ${applied.model}` : "";
|
|
53
|
+
const effort = applied.effort;
|
|
54
|
+
if (effort === requested) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
if (effort === null) {
|
|
58
|
+
return `claude sends no effort${model} (the model takes none), so effort ${requested} would be dropped`;
|
|
59
|
+
}
|
|
60
|
+
return `claude applies effort ${typeof effort === "string" ? effort : JSON.stringify(effort)}${model} although ${requested} was requested`;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=effort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effort.js","sourceRoot":"","sources":["../../../src/runtimes/claude/effort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,mHAAmH;AACnH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC;AACzH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,uBAAuB,CAAC,OAAmB;IACzD,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAClD,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAkB;IACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,QAAQ,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,QAAQ,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACzF,OAAO,6DAA6D,KAAK,gBAAgB,SAAS,sBAAsB,CAAC;IAC3H,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,mEAAmE,SAAS,sBAAsB,CAAC;IAC5G,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,yBAAyB,KAAK,sCAAsC,SAAS,mBAAmB,CAAC;IAC1G,CAAC;IACD,OAAO,yBAAyB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,aAAa,SAAS,gBAAgB,CAAC;AAC7I,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,4BAA4B,CAAC;AA4DpC,eAAO,MAAM,aAAa,EAAE,YAuN3B,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { spawnLineProcess } from "../../shared/executable/index.js";
|
|
|
3
3
|
import { asRecord, parseJson } from "../../shared/json.js";
|
|
4
4
|
import { sealSession } from "../../shared/seal-session.js";
|
|
5
5
|
import { createSessionKernel } from "../../shared/session-kernel.js";
|
|
6
|
+
import { CLAUDE_EFFORT_READBACK_MS, claudeControlResponseId, claudeEffortRefusal, claudeSettingsRequest, } from "./effort.js";
|
|
6
7
|
import { claudeAbortRequested, claudePrompted, foldClaudeStdout, initialClaudeProjection, } from "./projection.js";
|
|
7
8
|
/*
|
|
8
9
|
* Live semantics this adapter is built on (drydock probes, 2026-08-21):
|
|
@@ -17,6 +18,13 @@ import { claudeAbortRequested, claudePrompted, foldClaudeStdout, initialClaudePr
|
|
|
17
18
|
* - steer/prompt `accepted` here means: the user message was written to
|
|
18
19
|
* stdin. Landing (same turn vs auto-queued next turn) is claude's timing and
|
|
19
20
|
* shows up only in the stream. Live probe: claude-session-adapter.ts.
|
|
21
|
+
* - `SessionOptions.effort` is `--effort`; claude's only report of the level
|
|
22
|
+
* it runs is its `get_settings` answer, read at open (effort.ts). That one
|
|
23
|
+
* stdout line is consumed, NOT recorded: besides `applied.effort` it dumps
|
|
24
|
+
* the merged settings of every source (hooks, permissions, any `env` block)
|
|
25
|
+
* verbatim, and a read-back oar asks for must not publish a user's settings
|
|
26
|
+
* into every consumer's log. Like codex's `initialize` reply, it is the
|
|
27
|
+
* adapter's plumbing, not the session's words; every other line is a frame.
|
|
20
28
|
*/
|
|
21
29
|
function userMessage(text, inputId) {
|
|
22
30
|
return `${JSON.stringify({
|
|
@@ -44,6 +52,7 @@ export const claudeSession = async (installation, options) => {
|
|
|
44
52
|
"--dangerously-skip-permissions",
|
|
45
53
|
...(options.resume === undefined ? ["--session-id", sessionId] : ["--resume", sessionId]),
|
|
46
54
|
...(options.model === undefined ? [] : ["--model", options.model]),
|
|
55
|
+
...(options.effort === undefined ? [] : ["--effort", options.effort]),
|
|
47
56
|
...(options.systemPrompt === undefined ? [] : ["--system-prompt", options.systemPrompt]),
|
|
48
57
|
...(options.appendSystemPrompt === undefined ? [] : ["--append-system-prompt", options.appendSystemPrompt]),
|
|
49
58
|
], {
|
|
@@ -64,6 +73,9 @@ export const claudeSession = async (installation, options) => {
|
|
|
64
73
|
const heldQueue = [];
|
|
65
74
|
const busy = () => state.active !== null || state.spontaneous;
|
|
66
75
|
let disposeRequest = null;
|
|
76
|
+
// The effort read-back in flight at open (see the header): its answer is
|
|
77
|
+
// taken off the line stream before the fold.
|
|
78
|
+
let readback = null;
|
|
67
79
|
// Drive the pure projection fold, applying its commands to the kernel. The
|
|
68
80
|
// fold owns event translation and attribution; this owns only transport
|
|
69
81
|
// and the control decisions (busy, queue drain).
|
|
@@ -72,6 +84,10 @@ export const claudeSession = async (installation, options) => {
|
|
|
72
84
|
if (message === null) {
|
|
73
85
|
return;
|
|
74
86
|
}
|
|
87
|
+
if (readback !== null && claudeControlResponseId(message) === readback.id) {
|
|
88
|
+
readback.settle(message);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
75
91
|
// A system/init while nothing is active is claude starting a turn on its
|
|
76
92
|
// own (a queued or late-steered message): a spontaneous turn.
|
|
77
93
|
if (message.type === "system" && message.subtype === "init" && !busy()) {
|
|
@@ -116,7 +132,31 @@ export const claudeSession = async (installation, options) => {
|
|
|
116
132
|
kernel.respond(disposeRequest?.id ?? "", { kind: "exited", code });
|
|
117
133
|
state.active = null;
|
|
118
134
|
state.spontaneous = false;
|
|
135
|
+
readback?.settle(new Error(`claude exited (code ${String(code)}) before answering get_settings`));
|
|
119
136
|
});
|
|
137
|
+
if (options.effort !== undefined) {
|
|
138
|
+
// Never run a silently different effort: ask claude what it will send
|
|
139
|
+
// and refuse to open on anything but the requested level.
|
|
140
|
+
const requested = options.effort;
|
|
141
|
+
const { promise: answered, resolve } = Promise.withResolvers();
|
|
142
|
+
const id = `oar-effort-${randomUUID()}`;
|
|
143
|
+
readback = { id, settle: resolve };
|
|
144
|
+
const timer = setTimeout(() => {
|
|
145
|
+
resolve(new Error(`claude did not answer get_settings within ${String(CLAUDE_EFFORT_READBACK_MS)} ms`));
|
|
146
|
+
}, CLAUDE_EFFORT_READBACK_MS);
|
|
147
|
+
child.write(claudeSettingsRequest(id));
|
|
148
|
+
const answer = await answered;
|
|
149
|
+
clearTimeout(timer);
|
|
150
|
+
readback = null;
|
|
151
|
+
const refusal = answer instanceof Error
|
|
152
|
+
? `${answer.message}, so effort ${requested} cannot be confirmed`
|
|
153
|
+
: claudeEffortRefusal(requested, answer);
|
|
154
|
+
if (refusal !== null) {
|
|
155
|
+
child.kill();
|
|
156
|
+
await child.exited;
|
|
157
|
+
throw new Error(refusal);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
120
160
|
let interruptCounter = 0;
|
|
121
161
|
const session = sealSession({
|
|
122
162
|
id: kernel.sessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtimes/claude/session.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtimes/claude/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { RuntimeEventBody, SessionOptions } from "../../contracts/session.js";
|
|
2
|
+
import { type JsonRecord } from "../../shared/json.js";
|
|
3
|
+
export type CodexOpenMethod = "thread/start" | "thread/resume";
|
|
4
|
+
/** The open request for these options: a new thread, or a resume of `options.resume`. */
|
|
5
|
+
export declare function codexThreadOpen(options: SessionOptions): {
|
|
6
|
+
readonly method: CodexOpenMethod;
|
|
7
|
+
readonly params: JsonRecord;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The open reply read back: the model and effort codex says the thread runs
|
|
11
|
+
* (the open frame's events), why that is not what was requested, if it is
|
|
12
|
+
* not, and the effort a resume still has to set on the loaded thread.
|
|
13
|
+
*
|
|
14
|
+
* Both replies report the model actually active. Still check it against the
|
|
15
|
+
* request: codex's resume_running_thread ignores overrides for a thread that
|
|
16
|
+
* is already loaded and busy (warn "thread/resume overrides ignored for
|
|
17
|
+
* loaded thread") and answers with the old model; a caller who asked for a
|
|
18
|
+
* model must not get one silently running another. The same holds for
|
|
19
|
+
* effort: `reasoningEffort` is the level the thread runs (null: no explicit
|
|
20
|
+
* level, the model's default). A resume answers the level the thread last
|
|
21
|
+
* ran with; when that is not the requested one, it is set next
|
|
22
|
+
* (`resumeEffort`). codex echoes an unknown level as given and forwards it
|
|
23
|
+
* to the provider, whose refusal then fails the first turn.
|
|
24
|
+
*/
|
|
25
|
+
export declare function codexOpenReadback(method: CodexOpenMethod, options: SessionOptions, reply: JsonRecord): {
|
|
26
|
+
readonly events: readonly RuntimeEventBody[];
|
|
27
|
+
readonly refusal: string | null;
|
|
28
|
+
readonly resumeEffort: string | null;
|
|
29
|
+
};
|
|
30
|
+
/** How long a resume waits for codex's `thread/settings/updated` after its `thread/settings/update`. */
|
|
31
|
+
export declare const CODEX_SETTINGS_REPORT_MS = 10000;
|
|
32
|
+
/**
|
|
33
|
+
* Why the resumed thread does not run `requested` after
|
|
34
|
+
* `thread/settings/update {effort}` ([env] 0.155.1: answered `{}`, then
|
|
35
|
+
* `thread/settings/updated` with the thread's settings), or null when codex
|
|
36
|
+
* reports exactly that level. `update` is the RPC's outcome, `settings` the
|
|
37
|
+
* notification's params, or null when none came.
|
|
38
|
+
*/
|
|
39
|
+
export declare function codexResumeEffortRefusal(requested: string, update: {
|
|
40
|
+
readonly error: string;
|
|
41
|
+
} | null, settings: JsonRecord | null): string | null;
|
|
42
|
+
//# sourceMappingURL=open.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/open.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQjE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC;AAE/D,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAqD1H;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,UAAU,GAChB;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAkBzH;AAED,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACzC,QAAQ,EAAE,UAAU,GAAG,IAAI,GAC1B,MAAM,GAAG,IAAI,CASf"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { asRecord } from "../../shared/json.js";
|
|
2
|
+
/** The open request for these options: a new thread, or a resume of `options.resume`. */
|
|
3
|
+
export function codexThreadOpen(options) {
|
|
4
|
+
// System prompt seams (probed 2026-08-24 via the aimock journal):
|
|
5
|
+
// baseInstructions REPLACES codex's base prompt; developerInstructions
|
|
6
|
+
// APPENDS as a developer message. "instructions"/"userInstructions" are
|
|
7
|
+
// silently ignored by thread/start.
|
|
8
|
+
const instructionParams = {
|
|
9
|
+
...(options.systemPrompt === undefined ? {} : { baseInstructions: options.systemPrompt }),
|
|
10
|
+
...(options.appendSystemPrompt === undefined ? {} : { developerInstructions: options.appendSystemPrompt }),
|
|
11
|
+
};
|
|
12
|
+
// Effort seam on a NEW thread (probed 2026-09-29, codex 0.155.1, aimock
|
|
13
|
+
// provider): the config override `model_reasoning_effort` reaches every
|
|
14
|
+
// turn's Responses request as `reasoning.effort`, a turn codex starts on
|
|
15
|
+
// its own from its queue included, and is persisted with the thread. Not
|
|
16
|
+
// on thread/resume: any config override there rebuilds the thread's
|
|
17
|
+
// settings from config.toml, so a resumed thread without `model` came back
|
|
18
|
+
// on the configured default model instead of its own ([env] live: a
|
|
19
|
+
// gpt-6-luna thread resumed as gpt-6-astra). A resume sets the effort on
|
|
20
|
+
// the loaded thread instead (codexResumeEffort). Per-turn `turn/start
|
|
21
|
+
// {effort}` would miss a turn codex starts from its queue.
|
|
22
|
+
const effortParams = options.effort === undefined ? {} : { config: { model_reasoning_effort: options.effort } };
|
|
23
|
+
const modelParams = options.model === undefined ? {} : { model: options.model };
|
|
24
|
+
if (options.resume === undefined) {
|
|
25
|
+
return {
|
|
26
|
+
method: "thread/start",
|
|
27
|
+
params: {
|
|
28
|
+
cwd: options.cwd,
|
|
29
|
+
...modelParams,
|
|
30
|
+
approvalPolicy: "never",
|
|
31
|
+
// Required in addition to initialize.experimentalApi. This exposes
|
|
32
|
+
// the completed Responses API reasoning item, whose encrypted_content
|
|
33
|
+
// lets us distinguish redaction from genuinely empty reasoning.
|
|
34
|
+
experimentalRawEvents: true,
|
|
35
|
+
...instructionParams,
|
|
36
|
+
...effortParams,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
method: "thread/resume",
|
|
42
|
+
params: {
|
|
43
|
+
threadId: options.resume,
|
|
44
|
+
excludeTurns: true,
|
|
45
|
+
cwd: options.cwd,
|
|
46
|
+
// Same-runtime model switch = resume the same thread id with a new
|
|
47
|
+
// model. thread/resume accepts `model` (codex rust-v0.153.4,
|
|
48
|
+
// protocol/v2/thread.rs ThreadResumeParams) and applies it when the
|
|
49
|
+
// thread is loaded cold, which is the normal case here because every
|
|
50
|
+
// oar session owns its own app-server process.
|
|
51
|
+
...modelParams,
|
|
52
|
+
approvalPolicy: "never",
|
|
53
|
+
...instructionParams,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** A reply's `reasoningEffort` (or `threadSettings.effort`): null when codex runs no explicit level (the model's default). */
|
|
58
|
+
function effortIn(record) {
|
|
59
|
+
const effort = record?.reasoningEffort ?? record?.effort;
|
|
60
|
+
return typeof effort === "string" && effort.length > 0 ? effort : null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The open reply read back: the model and effort codex says the thread runs
|
|
64
|
+
* (the open frame's events), why that is not what was requested, if it is
|
|
65
|
+
* not, and the effort a resume still has to set on the loaded thread.
|
|
66
|
+
*
|
|
67
|
+
* Both replies report the model actually active. Still check it against the
|
|
68
|
+
* request: codex's resume_running_thread ignores overrides for a thread that
|
|
69
|
+
* is already loaded and busy (warn "thread/resume overrides ignored for
|
|
70
|
+
* loaded thread") and answers with the old model; a caller who asked for a
|
|
71
|
+
* model must not get one silently running another. The same holds for
|
|
72
|
+
* effort: `reasoningEffort` is the level the thread runs (null: no explicit
|
|
73
|
+
* level, the model's default). A resume answers the level the thread last
|
|
74
|
+
* ran with; when that is not the requested one, it is set next
|
|
75
|
+
* (`resumeEffort`). codex echoes an unknown level as given and forwards it
|
|
76
|
+
* to the provider, whose refusal then fails the first turn.
|
|
77
|
+
*/
|
|
78
|
+
export function codexOpenReadback(method, options, reply) {
|
|
79
|
+
const model = typeof reply.model === "string" ? reply.model : null;
|
|
80
|
+
const effort = effortIn(reply);
|
|
81
|
+
const events = [
|
|
82
|
+
...(model === null ? [] : [{ kind: "model", model }]),
|
|
83
|
+
...(effort === null ? [] : [{ kind: "effort", effort }]),
|
|
84
|
+
];
|
|
85
|
+
if (options.model !== undefined && model !== null && model !== options.model) {
|
|
86
|
+
return { events, refusal: `codex ${method} kept model ${model} although ${options.model} was requested`, resumeEffort: null };
|
|
87
|
+
}
|
|
88
|
+
if (options.effort === undefined || effort === options.effort) {
|
|
89
|
+
return { events, refusal: null, resumeEffort: null };
|
|
90
|
+
}
|
|
91
|
+
if (method === "thread/resume") {
|
|
92
|
+
return { events, refusal: null, resumeEffort: options.effort };
|
|
93
|
+
}
|
|
94
|
+
const said = "reasoningEffort" in reply ? `kept effort ${effort ?? "none (the model's default)"}` : "reports no reasoningEffort";
|
|
95
|
+
return { events, refusal: `codex ${method} ${said} although effort ${options.effort} was requested`, resumeEffort: null };
|
|
96
|
+
}
|
|
97
|
+
/** How long a resume waits for codex's `thread/settings/updated` after its `thread/settings/update`. */
|
|
98
|
+
export const CODEX_SETTINGS_REPORT_MS = 10_000;
|
|
99
|
+
/**
|
|
100
|
+
* Why the resumed thread does not run `requested` after
|
|
101
|
+
* `thread/settings/update {effort}` ([env] 0.155.1: answered `{}`, then
|
|
102
|
+
* `thread/settings/updated` with the thread's settings), or null when codex
|
|
103
|
+
* reports exactly that level. `update` is the RPC's outcome, `settings` the
|
|
104
|
+
* notification's params, or null when none came.
|
|
105
|
+
*/
|
|
106
|
+
export function codexResumeEffortRefusal(requested, update, settings) {
|
|
107
|
+
if (update !== null) {
|
|
108
|
+
return `codex thread/settings/update effort=${requested} failed: ${update.error}`;
|
|
109
|
+
}
|
|
110
|
+
if (settings === null) {
|
|
111
|
+
return `codex reported no thread/settings/updated within ${String(CODEX_SETTINGS_REPORT_MS)} ms, so effort ${requested} cannot be confirmed`;
|
|
112
|
+
}
|
|
113
|
+
const effort = effortIn(asRecord(settings.threadSettings));
|
|
114
|
+
return effort === requested ? null : `codex thread/settings/update left effort ${effort ?? "none (the model's default)"} although ${requested} was requested`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/runtimes/codex/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAmB3E,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAEjF;
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAmB3E,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAEjF;AAkLD,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,GACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,CA8B3F"}
|
|
@@ -110,6 +110,24 @@ function usageViews(params) {
|
|
|
110
110
|
: Math.round((contextTokens / contextWindow) * 100);
|
|
111
111
|
return [{ kind: "usage", usage: { context: { tokens: contextTokens, contextWindow, percent }, ...tokens } }];
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* `thread/settings/updated` is codex's own report of the thread's settings
|
|
115
|
+
* after a change ([env] 0.155.1: pushed when a turn/start carries an `effort`
|
|
116
|
+
* or `model` override, "for this turn and subsequent turns"):
|
|
117
|
+
* `threadSettings.model` and `threadSettings.effort` (null: no explicit
|
|
118
|
+
* level) are the model and effort now in effect.
|
|
119
|
+
*/
|
|
120
|
+
function settingsViews(params) {
|
|
121
|
+
const settings = asRecord(params.threadSettings);
|
|
122
|
+
const events = [];
|
|
123
|
+
if (typeof settings?.model === "string" && settings.model.length > 0) {
|
|
124
|
+
events.push({ kind: "model", model: settings.model });
|
|
125
|
+
}
|
|
126
|
+
if (typeof settings?.effort === "string" && settings.effort.length > 0) {
|
|
127
|
+
events.push({ kind: "effort", effort: settings.effort });
|
|
128
|
+
}
|
|
129
|
+
return events;
|
|
130
|
+
}
|
|
113
131
|
/** Edges a collaboration item establishes: the root (sender) thread spawned or addressed the named threads. */
|
|
114
132
|
function collabEdges(state, item) {
|
|
115
133
|
if (item === null || typeof item.type !== "string" || !COLLAB_ITEM_TYPES.has(item.type)) {
|
|
@@ -161,6 +179,8 @@ function viewsFor(state, method, params) {
|
|
|
161
179
|
return [{ kind: "turn_ended", outcome: settleOutcome(state, asRecord(params.turn)?.status) }];
|
|
162
180
|
case "thread/tokenUsage/updated":
|
|
163
181
|
return usageViews(params);
|
|
182
|
+
case "thread/settings/updated":
|
|
183
|
+
return settingsViews(params);
|
|
164
184
|
default:
|
|
165
185
|
return [];
|
|
166
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/codex/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAgDpC,eAAO,MAAM,YAAY,EAAE,YA8O1B,CAAC"}
|
|
@@ -3,11 +3,17 @@ import { asRecord } from "../../shared/json.js";
|
|
|
3
3
|
import { sealSession } from "../../shared/seal-session.js";
|
|
4
4
|
import { createSessionKernel } from "../../shared/session-kernel.js";
|
|
5
5
|
import { startAppServerClient } from "./app-server-client.js";
|
|
6
|
+
import { CODEX_SETTINGS_REPORT_MS, codexOpenReadback, codexResumeEffortRefusal, codexThreadOpen } from "./open.js";
|
|
6
7
|
import { foldCodexNotification, initialCodexProjection, } from "./projection.js";
|
|
7
8
|
import { openThread, rpcControl } from "./rpc-control.js";
|
|
8
9
|
/*
|
|
9
10
|
* codex app-server v2 mapping:
|
|
10
11
|
* - initialize → initialized, thread/start {cwd, approvalPolicy:never}
|
|
12
|
+
* - SessionOptions.effort governs every turn of the thread, a drained queue
|
|
13
|
+
* submission included: a config override on thread/start, and on a resume
|
|
14
|
+
* thread/settings/update on the loaded thread (open.ts says why). codex's
|
|
15
|
+
* word on it is the open reply's `reasoningEffort` or the pushed
|
|
16
|
+
* thread/settings/updated: checked, and an `effort` event either way.
|
|
11
17
|
* - turn/start {threadId, input} → {turn{id}}: the RPC reply is the prompt's
|
|
12
18
|
* accepted response; completion is codex's own turn/completed notification
|
|
13
19
|
* (turn.status completed | interrupted | failed): the turn_ended event.
|
|
@@ -42,16 +48,9 @@ export const codexSession = async (installation, options) => {
|
|
|
42
48
|
});
|
|
43
49
|
client.notify("initialized", {});
|
|
44
50
|
// Threads persist so a later SessionOptions.resume can reattach; the thread
|
|
45
|
-
// id is the runtime-native identity and becomes Session.id.
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
// APPENDS as a developer message. "instructions"/"userInstructions" are
|
|
49
|
-
// silently ignored by thread/start.
|
|
50
|
-
const instructionParams = {
|
|
51
|
-
...(options.systemPrompt === undefined ? {} : { baseInstructions: options.systemPrompt }),
|
|
52
|
-
...(options.appendSystemPrompt === undefined ? {} : { developerInstructions: options.appendSystemPrompt }),
|
|
53
|
-
};
|
|
54
|
-
const openMethod = options.resume === undefined ? "thread/start" : "thread/resume";
|
|
51
|
+
// id is the runtime-native identity and becomes Session.id (open.ts builds
|
|
52
|
+
// the request).
|
|
53
|
+
const { method: openMethod, params: openParams } = codexThreadOpen(options);
|
|
55
54
|
// The open event is marked at the reply's wire position AS the reply line
|
|
56
55
|
// is read (onSettled → client.mark), not after this await: a frame codex
|
|
57
56
|
// wrote in the same chunk right after the reply (thread/started) would
|
|
@@ -64,30 +63,7 @@ export const codexSession = async (installation, options) => {
|
|
|
64
63
|
}
|
|
65
64
|
};
|
|
66
65
|
const started = await openThread(client, openMethod, async () => {
|
|
67
|
-
const reply = await (
|
|
68
|
-
? client.request("thread/start", {
|
|
69
|
-
cwd: options.cwd,
|
|
70
|
-
...(options.model === undefined ? {} : { model: options.model }),
|
|
71
|
-
approvalPolicy: "never",
|
|
72
|
-
// Required in addition to initialize.experimentalApi. This exposes
|
|
73
|
-
// the completed Responses API reasoning item, whose encrypted_content
|
|
74
|
-
// lets us distinguish redaction from genuinely empty reasoning.
|
|
75
|
-
experimentalRawEvents: true,
|
|
76
|
-
...instructionParams,
|
|
77
|
-
}, markOpen)
|
|
78
|
-
: client.request("thread/resume", {
|
|
79
|
-
threadId: options.resume,
|
|
80
|
-
excludeTurns: true,
|
|
81
|
-
cwd: options.cwd,
|
|
82
|
-
// Same-runtime model switch = resume the same thread id with a new
|
|
83
|
-
// model. thread/resume accepts `model` (codex rust-v0.153.4,
|
|
84
|
-
// protocol/v2/thread.rs ThreadResumeParams) and applies it when the
|
|
85
|
-
// thread is loaded cold, which is the normal case here because every
|
|
86
|
-
// oar session owns its own app-server process.
|
|
87
|
-
...(options.model === undefined ? {} : { model: options.model }),
|
|
88
|
-
approvalPolicy: "never",
|
|
89
|
-
...instructionParams,
|
|
90
|
-
}, markOpen));
|
|
66
|
+
const reply = await client.request(openMethod, openParams, markOpen);
|
|
91
67
|
return reply;
|
|
92
68
|
});
|
|
93
69
|
const threadId = asRecord(started.thread)?.id;
|
|
@@ -95,16 +71,13 @@ export const codexSession = async (installation, options) => {
|
|
|
95
71
|
client.kill();
|
|
96
72
|
throw new TypeError("codex thread start/resume returned no thread id");
|
|
97
73
|
}
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
// for loaded thread") and answers with the old model; a caller who asked
|
|
103
|
-
// for a model must not get one silently running another.
|
|
104
|
-
const effectiveModel = typeof started.model === "string" ? started.model : null;
|
|
105
|
-
if (options.model !== undefined && effectiveModel !== null && effectiveModel !== options.model) {
|
|
74
|
+
// The reply is codex's word on the model and effort the thread runs (the
|
|
75
|
+
// open frame's events); anything but what was requested refuses the open.
|
|
76
|
+
const readback = codexOpenReadback(openMethod, options, started);
|
|
77
|
+
if (readback.refusal !== null) {
|
|
106
78
|
client.kill();
|
|
107
|
-
|
|
79
|
+
await client.exited;
|
|
80
|
+
throw new Error(readback.refusal);
|
|
108
81
|
}
|
|
109
82
|
const kernel = createSessionKernel(threadId);
|
|
110
83
|
const state = {
|
|
@@ -115,12 +88,10 @@ export const codexSession = async (installation, options) => {
|
|
|
115
88
|
};
|
|
116
89
|
const busy = () => state.active !== null || state.spontaneous;
|
|
117
90
|
let disposeRequest = null;
|
|
91
|
+
// A resume's effort update in flight: codex's thread/settings/updated answers it.
|
|
92
|
+
let settingsWaiter = null;
|
|
118
93
|
recordOpen = () => {
|
|
119
|
-
kernel.frame({
|
|
120
|
-
type: openMethod,
|
|
121
|
-
native: started,
|
|
122
|
-
events: effectiveModel === null ? [] : [{ kind: "model", model: effectiveModel }],
|
|
123
|
-
});
|
|
94
|
+
kernel.frame({ type: openMethod, native: started, events: readback.events });
|
|
124
95
|
};
|
|
125
96
|
// Drive the pure projection fold, applying its commands to the kernel; the
|
|
126
97
|
// fold owns event translation, attribution and graph links; this owns the
|
|
@@ -162,6 +133,9 @@ export const codexSession = async (installation, options) => {
|
|
|
162
133
|
state.spontaneous = false;
|
|
163
134
|
state.codexTurnId = null;
|
|
164
135
|
}
|
|
136
|
+
if (isRoot && method === "thread/settings/updated") {
|
|
137
|
+
settingsWaiter?.(params);
|
|
138
|
+
}
|
|
165
139
|
};
|
|
166
140
|
// Approvals, user input, dynamic tools: recorded verbatim, never answered
|
|
167
141
|
// (approvalPolicy never means none are expected; a dangling request is
|
|
@@ -181,6 +155,26 @@ export const codexSession = async (installation, options) => {
|
|
|
181
155
|
state.spontaneous = false;
|
|
182
156
|
state.codexTurnId = null;
|
|
183
157
|
});
|
|
158
|
+
if (readback.resumeEffort !== null) {
|
|
159
|
+
// The resumed thread runs another level: set it on the loaded thread and
|
|
160
|
+
// take codex's pushed settings (a recorded frame) as the word on it.
|
|
161
|
+
const requested = readback.resumeEffort;
|
|
162
|
+
const { promise: reported, resolve } = Promise.withResolvers();
|
|
163
|
+
settingsWaiter = resolve;
|
|
164
|
+
const timer = setTimeout(() => {
|
|
165
|
+
resolve(null);
|
|
166
|
+
}, CODEX_SETTINGS_REPORT_MS);
|
|
167
|
+
const update = await client.request("thread/settings/update", { threadId, effort: requested })
|
|
168
|
+
.then(() => null, (error) => ({ error: error instanceof Error ? error.message : String(error) }));
|
|
169
|
+
const refusal = codexResumeEffortRefusal(requested, update, update === null ? await reported : null);
|
|
170
|
+
clearTimeout(timer);
|
|
171
|
+
settingsWaiter = null;
|
|
172
|
+
if (refusal !== null) {
|
|
173
|
+
client.kill();
|
|
174
|
+
await client.exited;
|
|
175
|
+
throw new Error(refusal);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
184
178
|
/** Turn a plan builder into a Session control member. */
|
|
185
179
|
const via = (plan) => async (...args) => {
|
|
186
180
|
const result = await rpcControl(kernel, client, plan(...args));
|