@ai0x0/codex-ts 0.5.5 → 0.6.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/core/src/codex_thread.d.ts +11 -0
- package/dist/core/src/codex_thread.d.ts.map +1 -1
- package/dist/core/src/codex_thread.js +10 -0
- package/dist/core/src/codex_thread.js.map +1 -1
- package/dist/core/src/compact.d.ts.map +1 -1
- package/dist/core/src/compact.js +71 -28
- package/dist/core/src/compact.js.map +1 -1
- package/dist/core/src/index.d.ts +2 -0
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/index.js +2 -0
- package/dist/core/src/index.js.map +1 -1
- package/dist/core/src/session/retry.d.ts +13 -0
- package/dist/core/src/session/retry.d.ts.map +1 -1
- package/dist/core/src/session/retry.js +27 -0
- package/dist/core/src/session/retry.js.map +1 -1
- package/dist/core/src/session/turn.d.ts +17 -0
- package/dist/core/src/session/turn.d.ts.map +1 -1
- package/dist/core/src/session/turn.js +109 -18
- package/dist/core/src/session/turn.js.map +1 -1
- package/dist/core/src/state/token_state.d.ts +52 -0
- package/dist/core/src/state/token_state.d.ts.map +1 -0
- package/dist/core/src/state/token_state.js +66 -0
- package/dist/core/src/state/token_state.js.map +1 -0
- package/dist/core/tests/suite/compact.test.js +231 -1
- package/dist/core/tests/suite/compact.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -88,6 +88,16 @@ export interface CodexThreadConfig {
|
|
|
88
88
|
* Omit to disable auto-compaction entirely.
|
|
89
89
|
*/
|
|
90
90
|
autoCompactTokenLimit?: number | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* The model's full context window in tokens (mirrors model_context_window in
|
|
93
|
+
* codex-rs). Arms the absolute compaction trigger (compact when TOTAL active
|
|
94
|
+
* context reaches the window, independent of the growth budget above) and
|
|
95
|
+
* the context-window-exceeded self-heal (a request rejected with "prompt is
|
|
96
|
+
* too long"/"context_length_exceeded" marks the session full, so the next
|
|
97
|
+
* turn compacts before sampling instead of failing forever). Strongly
|
|
98
|
+
* recommended for long-lived interactive threads.
|
|
99
|
+
*/
|
|
100
|
+
contextWindow?: number | undefined;
|
|
91
101
|
/**
|
|
92
102
|
* Max retries for transient Responses request/stream failures — network
|
|
93
103
|
* errors, 5xx / 408 / 409 / 429, or a stream dropped before any visible
|
|
@@ -114,6 +124,7 @@ export declare class CodexThread {
|
|
|
114
124
|
* Op::Interrupt; AbortController is the browser-native equivalent.
|
|
115
125
|
*/
|
|
116
126
|
private readonly compactWindow;
|
|
127
|
+
private readonly tokenState;
|
|
117
128
|
private currentTurnAbort;
|
|
118
129
|
constructor(config: CodexThreadConfig);
|
|
119
130
|
/** The thread's stable identifier (use for resume) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex_thread.d.ts","sourceRoot":"","sources":["../../../core/src/codex_thread.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,KAAK,EAEL,EAAE,EAGH,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAuB,MAAM,kCAAkC,CAAC;AAMlF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex_thread.d.ts","sourceRoot":"","sources":["../../../core/src/codex_thread.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,KAAK,EAEL,EAAE,EAGH,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAuB,MAAM,kCAAkC,CAAC;AAMlF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8CjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACrC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3E;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAmBD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IAEtD,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IAEJ,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;;;OAIG;IAIH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IAIzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,gBAAgB,CAAgC;gBAE5C,MAAM,EAAE,iBAAiB;IAkCrC,sDAAsD;IACtD,IAAI,EAAE,IAAI,MAAM,CAA0B;IAE1C;;;;;;;;;OASG;WACU,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IASpE;;;OAGG;IACG,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAgIrC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;IAIjC,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -14,6 +14,7 @@ import { InMemoryThreadStore, LocalThreadStore, LiveThread, } from "../../thread
|
|
|
14
14
|
import { ToolRouter } from "./tools/router.js";
|
|
15
15
|
import { runTurn } from "./session/turn.js";
|
|
16
16
|
import { AutoCompactWindow } from "./state/auto_compact_window.js";
|
|
17
|
+
import { SessionTokenState } from "./state/token_state.js";
|
|
17
18
|
import { DEFAULT_BASE_INSTRUCTIONS } from "./base_instructions.js";
|
|
18
19
|
import { renderSkillsCatalog } from "./skills.js";
|
|
19
20
|
class AsyncQueue {
|
|
@@ -74,6 +75,10 @@ export class CodexThread {
|
|
|
74
75
|
// runTurn so auto-compaction measures context growth across turns, not just
|
|
75
76
|
// within a turn (mirrors codex-rs session state). See TurnConfig.compactWindow.
|
|
76
77
|
compactWindow = new AutoCompactWindow();
|
|
78
|
+
// Session-scoped token accounting — same pattern (mirrors sess token_info):
|
|
79
|
+
// usage recorded in one turn drives the NEXT turn's pre-sampling compaction
|
|
80
|
+
// check, including the context-window-exceeded self-heal. See TurnConfig.
|
|
81
|
+
tokenState = new SessionTokenState();
|
|
77
82
|
currentTurnAbort = null;
|
|
78
83
|
constructor(config) {
|
|
79
84
|
this.config = {
|
|
@@ -87,6 +92,7 @@ export class CodexThread {
|
|
|
87
92
|
loadSkillContent: config.loadSkillContent,
|
|
88
93
|
agentsMd: config.agentsMd,
|
|
89
94
|
autoCompactTokenLimit: config.autoCompactTokenLimit,
|
|
95
|
+
contextWindow: config.contextWindow,
|
|
90
96
|
maxRetries: config.maxRetries,
|
|
91
97
|
};
|
|
92
98
|
this.threadId = config.threadId ?? nextId();
|
|
@@ -172,6 +178,7 @@ export class CodexThread {
|
|
|
172
178
|
fetch: this.config.fetch,
|
|
173
179
|
model: op.model ?? this.config.model,
|
|
174
180
|
compactWindow: this.compactWindow,
|
|
181
|
+
tokenState: this.tokenState,
|
|
175
182
|
...(instructions ? { instructions } : {}),
|
|
176
183
|
...(contextItems.length > 0 ? { contextItems } : {}),
|
|
177
184
|
...(this.config.skills.length > 0
|
|
@@ -183,6 +190,9 @@ export class CodexThread {
|
|
|
183
190
|
...(this.config.autoCompactTokenLimit !== undefined
|
|
184
191
|
? { autoCompactTokenLimit: this.config.autoCompactTokenLimit }
|
|
185
192
|
: {}),
|
|
193
|
+
...(this.config.contextWindow !== undefined
|
|
194
|
+
? { contextWindow: this.config.contextWindow }
|
|
195
|
+
: {}),
|
|
186
196
|
...(this.config.maxRetries !== undefined
|
|
187
197
|
? { maxRetries: this.config.maxRetries }
|
|
188
198
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex_thread.js","sourceRoot":"","sources":["../../../core/src/codex_thread.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,GACX,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AASlD,MAAM,UAAU;IACN,GAAG,GAAQ,EAAE,CAAC;IACd,OAAO,GAAuC,EAAE,CAAC;IACjD,MAAM,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,KAAQ;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM;YAAE,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;;YACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAG,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACxD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1B,IAAI,KAAK,CAAC,IAAI;oBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;;oBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,iFAAiF;AAEjF,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,SAAS,MAAM;IACb,OAAO,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"codex_thread.js","sourceRoot":"","sources":["../../../core/src/codex_thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../core/src/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../core/src/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAcpD,kDAAkD;AAClD,eAAO,MAAM,oBAAoB,QAQ4D,CAAC;AAE9F,0DAA0D;AAC1D,eAAO,MAAM,cAAc,QAK8D,CAAC;AAmB1F;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAezE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAE,MAAM,GAClB,gBAAgB,EAAE,CAmCpB;AAID;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CA+FjB"}
|
package/dist/core/src/compact.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* request and replace history with the summary + recent user messages.
|
|
8
8
|
*/
|
|
9
9
|
import { parseSseStream } from "./session/sse.js";
|
|
10
|
+
import { computeRetryDelay, DEFAULT_MAX_RETRIES, isContextWindowExceededError, isRetryableError, parseRetryAfter, ResponsesApiError, sleep, } from "./session/retry.js";
|
|
10
11
|
// ─── Prompt constants (verbatim from codex-rs templates) ──────────────────────
|
|
11
12
|
/** mirrors prompts/templates/compact/prompt.md */
|
|
12
13
|
export const SUMMARIZATION_PROMPT = "You are performing a CONTEXT CHECKPOINT COMPACTION. " +
|
|
@@ -110,35 +111,77 @@ export function buildCompactedHistory(userMessages, summaryText) {
|
|
|
110
111
|
* Returns the raw summary text (without SUMMARY_PREFIX).
|
|
111
112
|
*/
|
|
112
113
|
export async function runInlineAutoCompactTask(history, config) {
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
};
|
|
123
|
-
if (config.instructions)
|
|
124
|
-
body["instructions"] = config.instructions;
|
|
125
|
-
const res = await (config.fetch ?? fetch)(`${config.baseUrl}/responses`, {
|
|
126
|
-
method: "POST",
|
|
127
|
-
headers: {
|
|
128
|
-
"Content-Type": "application/json",
|
|
129
|
-
Authorization: `Bearer ${config.apiKey}`,
|
|
130
|
-
},
|
|
131
|
-
body: JSON.stringify(body),
|
|
132
|
-
});
|
|
133
|
-
if (!res.ok || !res.body) {
|
|
134
|
-
const text = res.body ? await res.text() : "(no body)";
|
|
135
|
-
throw new Error(`Compaction request failed ${res.status}: ${text}`);
|
|
136
|
-
}
|
|
137
|
-
// Collect the assistant's summary text from the stream
|
|
114
|
+
// Working copy sent to the summarizer. When the compaction request ITSELF
|
|
115
|
+
// exceeds the context window, drop the OLDEST item and retry (mirrors
|
|
116
|
+
// compact.rs:232-241 history.remove_first_item(): trims from the front to
|
|
117
|
+
// keep the prefix cache and the recent messages intact). The replacement
|
|
118
|
+
// history below is still built from the ORIGINAL `history` (mirrors rs,
|
|
119
|
+
// which collects user messages from the untrimmed session history).
|
|
120
|
+
let summarizerInput = [...history];
|
|
121
|
+
const maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
122
|
+
let retries = 0;
|
|
138
123
|
let summaryText = "";
|
|
139
|
-
for
|
|
140
|
-
|
|
141
|
-
|
|
124
|
+
for (;;) {
|
|
125
|
+
// Build the compaction request: history + the summarization prompt at the end
|
|
126
|
+
const compactInput = [
|
|
127
|
+
...summarizerInput,
|
|
128
|
+
{ type: "message", role: "user", content: SUMMARIZATION_PROMPT },
|
|
129
|
+
];
|
|
130
|
+
const body = {
|
|
131
|
+
model: config.model,
|
|
132
|
+
input: compactInput,
|
|
133
|
+
stream: true,
|
|
134
|
+
};
|
|
135
|
+
if (config.instructions)
|
|
136
|
+
body["instructions"] = config.instructions;
|
|
137
|
+
try {
|
|
138
|
+
const res = await (config.fetch ?? fetch)(`${config.baseUrl}/responses`, {
|
|
139
|
+
method: "POST",
|
|
140
|
+
headers: {
|
|
141
|
+
"Content-Type": "application/json",
|
|
142
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
143
|
+
},
|
|
144
|
+
body: JSON.stringify(body),
|
|
145
|
+
});
|
|
146
|
+
if (!res.ok || !res.body) {
|
|
147
|
+
const text = res.body ? await res.text() : "(no body)";
|
|
148
|
+
throw new ResponsesApiError(res.status, text, parseRetryAfter(res.headers));
|
|
149
|
+
}
|
|
150
|
+
// Collect the assistant's summary text from the stream
|
|
151
|
+
summaryText = "";
|
|
152
|
+
for await (const raw of parseSseStream(res.body)) {
|
|
153
|
+
if (raw["type"] === "response.output_text.delta") {
|
|
154
|
+
summaryText += String(raw["delta"] ?? "");
|
|
155
|
+
}
|
|
156
|
+
else if (raw["type"] === "response.failed") {
|
|
157
|
+
// Terminal stream error — same classification as the turn loop
|
|
158
|
+
// (context-window-exceeded → trim; otherwise retryable).
|
|
159
|
+
const resp = raw["response"];
|
|
160
|
+
throw new ResponsesApiError(503, JSON.stringify(resp?.["error"] ?? raw));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
break; // summary collected → leave the retry loop
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
if (isContextWindowExceededError(err)) {
|
|
167
|
+
if (summarizerInput.length > 1) {
|
|
168
|
+
// mirrors compact.rs:233-240: drop the oldest item and try again.
|
|
169
|
+
summarizerInput = summarizerInput.slice(1);
|
|
170
|
+
retries = 0;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Nothing left to trim — mark tokens full and surface the error
|
|
174
|
+
// (mirrors compact.rs:242-246).
|
|
175
|
+
config.tokenState?.setFull(config.contextWindow);
|
|
176
|
+
throw err;
|
|
177
|
+
}
|
|
178
|
+
// Transient failures back off and retry (mirrors compact.rs:248-259).
|
|
179
|
+
if (retries < maxRetries && isRetryableError(err)) {
|
|
180
|
+
retries += 1;
|
|
181
|
+
await sleep(computeRetryDelay(err, retries));
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
throw err;
|
|
142
185
|
}
|
|
143
186
|
}
|
|
144
187
|
const fullSummary = `${SUMMARY_PREFIX}\n${summaryText}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../core/src/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../core/src/compact.ts"],"names":[],"mappings":"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"}
|
package/dist/core/src/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { CodexThread } from "./codex_thread.js";
|
|
2
2
|
export { SUMMARIZATION_PROMPT, SUMMARY_PREFIX } from "./compact.js";
|
|
3
3
|
export { AutoCompactWindow } from "./state/auto_compact_window.js";
|
|
4
|
+
export { approxTokenCount, estimateItemsTokenCount, SessionTokenState, } from "./state/token_state.js";
|
|
5
|
+
export { isContextWindowExceededError, isContextWindowExceededText, ResponsesApiError, } from "./session/retry.js";
|
|
4
6
|
export type { CodexThreadConfig } from "./codex_thread.js";
|
|
5
7
|
export { DEFAULT_BASE_INSTRUCTIONS } from "./base_instructions.js";
|
|
6
8
|
export { renderSkillsCatalog, extractSkillMentions, renderSkillInjection, defaultSkillMetadataBudget, } from "./skills.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/core/src/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { CodexThread } from "./codex_thread.js";
|
|
2
2
|
export { SUMMARIZATION_PROMPT, SUMMARY_PREFIX } from "./compact.js";
|
|
3
3
|
export { AutoCompactWindow } from "./state/auto_compact_window.js";
|
|
4
|
+
export { approxTokenCount, estimateItemsTokenCount, SessionTokenState, } from "./state/token_state.js";
|
|
5
|
+
export { isContextWindowExceededError, isContextWindowExceededText, ResponsesApiError, } from "./session/retry.js";
|
|
4
6
|
export { DEFAULT_BASE_INSTRUCTIONS } from "./base_instructions.js";
|
|
5
7
|
export { renderSkillsCatalog, extractSkillMentions, renderSkillInjection, defaultSkillMetadataBudget, } from "./skills.js";
|
|
6
8
|
export { ToolRouter } from "./tools/router.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -33,6 +33,19 @@ export declare class ResponsesApiError extends Error {
|
|
|
33
33
|
* terminal except 408 (request timeout), 409 (conflict) and 429 (rate limit).
|
|
34
34
|
*/
|
|
35
35
|
export declare function isRetryableStatus(status: number): boolean;
|
|
36
|
+
/** Message-level probe — rs classifies purely by the error payload (its
|
|
37
|
+
* canonical `code`), never by HTTP status; SSE `response.failed` has no
|
|
38
|
+
* status at all. Exposed for both the turn loop and the compaction task. */
|
|
39
|
+
export declare function isContextWindowExceededText(text: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Classify a terminal request failure as context-window-exceeded.
|
|
42
|
+
* mirrors CodexErr::ContextWindowExceeded classification: turn.ts marks the
|
|
43
|
+
* session tokens FULL on this error so the next turn compacts before sampling
|
|
44
|
+
* (turn.rs:1045-1047), and compact.ts trims the oldest history item and
|
|
45
|
+
* retries (compact.rs:232-241). Callers must check this BEFORE the retry
|
|
46
|
+
* decision — the same request would fail again.
|
|
47
|
+
*/
|
|
48
|
+
export declare function isContextWindowExceededError(error: unknown): boolean;
|
|
36
49
|
/**
|
|
37
50
|
* Classify a thrown error as retryable. Aborts (interrupts) are terminal;
|
|
38
51
|
* ResponsesApiError defers to its status; anything else (network TypeError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../core/src/session/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;iFACiF;AACjF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS;CAM5E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASzE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAcpE;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjF"}
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../core/src/session/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;iFACiF;AACjF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS;CAM5E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAaD;;6EAE6E;AAC7E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASzE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAcpE;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjF"}
|
|
@@ -49,6 +49,33 @@ export class ResponsesApiError extends Error {
|
|
|
49
49
|
export function isRetryableStatus(status) {
|
|
50
50
|
return status === 408 || status === 409 || status === 429 || status >= 500;
|
|
51
51
|
}
|
|
52
|
+
// mirrors codex-api/src/sse/responses.rs is_context_window_error — codex-rs only
|
|
53
|
+
// needs the OpenAI canonical `code: "context_length_exceeded"`, because its
|
|
54
|
+
// upstream speaks pure OpenAI. codex-ts rides OpenRouter/codeproxy, whose error
|
|
55
|
+
// bodies wrap the ORIGINAL provider error verbatim (`metadata.raw`), so the
|
|
56
|
+
// canonical code rarely survives — match each provider's wording too:
|
|
57
|
+
// - OpenAI: "context_length_exceeded" / "exceeds the context window"
|
|
58
|
+
// - Anthropic/Bedrock: "prompt is too long: N tokens > M maximum"
|
|
59
|
+
// - Gemini: "input token count ... exceeds the maximum"
|
|
60
|
+
const CONTEXT_WINDOW_ERROR_RE = /context_length_exceeded|exceeds the context window|prompt is too long|exceeds the maximum number of tokens|input token count .{0,40}exceeds/iu;
|
|
61
|
+
/** Message-level probe — rs classifies purely by the error payload (its
|
|
62
|
+
* canonical `code`), never by HTTP status; SSE `response.failed` has no
|
|
63
|
+
* status at all. Exposed for both the turn loop and the compaction task. */
|
|
64
|
+
export function isContextWindowExceededText(text) {
|
|
65
|
+
return CONTEXT_WINDOW_ERROR_RE.test(text);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Classify a terminal request failure as context-window-exceeded.
|
|
69
|
+
* mirrors CodexErr::ContextWindowExceeded classification: turn.ts marks the
|
|
70
|
+
* session tokens FULL on this error so the next turn compacts before sampling
|
|
71
|
+
* (turn.rs:1045-1047), and compact.ts trims the oldest history item and
|
|
72
|
+
* retries (compact.rs:232-241). Callers must check this BEFORE the retry
|
|
73
|
+
* decision — the same request would fail again.
|
|
74
|
+
*/
|
|
75
|
+
export function isContextWindowExceededError(error) {
|
|
76
|
+
return (error instanceof ResponsesApiError &&
|
|
77
|
+
isContextWindowExceededText(error.message));
|
|
78
|
+
}
|
|
52
79
|
/**
|
|
53
80
|
* Classify a thrown error as retryable. Aborts (interrupts) are terminal;
|
|
54
81
|
* ResponsesApiError defers to its status; anything else (network TypeError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../core/src/session/retry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../core/src/session/retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ import type { PendingInputs } from "../tools/handlers/request_user_input.js";
|
|
|
17
17
|
import type { LiveThread } from "../../../thread-store/src/live_thread.js";
|
|
18
18
|
import type { ConversationItem } from "../../../thread-store/src/types.js";
|
|
19
19
|
import { AutoCompactWindow } from "../state/auto_compact_window.js";
|
|
20
|
+
import { SessionTokenState } from "../state/token_state.js";
|
|
20
21
|
type HistoryItem = ConversationItem;
|
|
21
22
|
export interface TurnConfig {
|
|
22
23
|
apiKey: string;
|
|
@@ -58,6 +59,22 @@ export interface TurnConfig {
|
|
|
58
59
|
* model's window → "prompt is too long".
|
|
59
60
|
*/
|
|
60
61
|
compactWindow?: AutoCompactWindow | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* The model's full context window in tokens (mirrors model_context_window in
|
|
64
|
+
* codex-rs TurnContext). Enables the SECOND compaction trigger: compact when
|
|
65
|
+
* the TOTAL active context reaches the window — independent of the growth
|
|
66
|
+
* budget above (turn.rs:752-757) — and the context-window-exceeded self-heal
|
|
67
|
+
* (a rejected request marks tokens full so the next turn compacts first,
|
|
68
|
+
* turn.rs:1045-1047). Omit to disable both (growth-only behaviour).
|
|
69
|
+
*/
|
|
70
|
+
contextWindow?: number | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Session-scoped token accounting (mirrors sess.get_total_token_usage state).
|
|
73
|
+
* The thread owns ONE instance, threaded through every runTurn like
|
|
74
|
+
* compactWindow, so pre-sampling checks see usage from previous turns.
|
|
75
|
+
* Omit → a fresh per-turn state (one-shot/tests).
|
|
76
|
+
*/
|
|
77
|
+
tokenState?: SessionTokenState | undefined;
|
|
61
78
|
/**
|
|
62
79
|
* Max retries for transient Responses request/stream failures — network
|
|
63
80
|
* errors, 5xx / 408 / 409 / 429, or a stream dropped before any visible
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../../../core/src/session/turn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../../../core/src/session/turn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;AAY5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAGL,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAIjC,KAAK,WAAW,GAAG,gBAAgB,CAAC;AAIpC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;wBAGoB;IACpB,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9E,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3E;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CAC1C;AAiED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EAAE,EACtB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,EAClC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS;AACnC;oDACoD;AACpD,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS;AACrC;;;;;iCAKiC;AACjC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,SAAS,GAC5C,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CA4XvC"}
|
|
@@ -12,9 +12,53 @@
|
|
|
12
12
|
import { toolSpecToRequestJson } from "../../../tools/src/tool_spec.js";
|
|
13
13
|
import { extractSkillMentions, renderSkillInjection } from "../skills.js";
|
|
14
14
|
import { parseSseStream } from "./sse.js";
|
|
15
|
-
import { computeRetryDelay, DEFAULT_MAX_RETRIES, isRetryableError, parseRetryAfter, ResponsesApiError, sleep, } from "./retry.js";
|
|
15
|
+
import { computeRetryDelay, DEFAULT_MAX_RETRIES, isContextWindowExceededError, isRetryableError, parseRetryAfter, ResponsesApiError, sleep, } from "./retry.js";
|
|
16
16
|
import { runInlineAutoCompactTask } from "../compact.js";
|
|
17
17
|
import { AutoCompactWindow } from "../state/auto_compact_window.js";
|
|
18
|
+
import { approxTokenCount, estimateItemsTokenCount, SessionTokenState, } from "../state/token_state.js";
|
|
19
|
+
// ─── Auto-compaction status + orchestration ──────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* mirrors auto_compact_token_status (turn.rs:719-769), BodyAfterPrefix scope:
|
|
22
|
+
* the limit is reached when EITHER the growth since the window baseline hits
|
|
23
|
+
* `autoCompactTokenLimit`, OR the total active context reaches the model's
|
|
24
|
+
* full `contextWindow`. The second condition is what keeps a session with a
|
|
25
|
+
* large baseline (or a force-filled one after a context-window-exceeded
|
|
26
|
+
* rejection) from sailing past the model's window.
|
|
27
|
+
*/
|
|
28
|
+
function autoCompactTokenStatus(config, compactWindow, tokenState) {
|
|
29
|
+
const activeContextTokens = tokenState.totalTokens ?? 0;
|
|
30
|
+
const scopeTokens = compactWindow.bodyAfterPrefix(activeContextTokens);
|
|
31
|
+
const scopeLimit = config.autoCompactTokenLimit ?? Number.POSITIVE_INFINITY;
|
|
32
|
+
const fullContextWindowLimitReached = config.contextWindow !== undefined &&
|
|
33
|
+
activeContextTokens >= config.contextWindow;
|
|
34
|
+
return {
|
|
35
|
+
activeContextTokens,
|
|
36
|
+
tokenLimitReached: scopeTokens >= scopeLimit || fullContextWindowLimitReached,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run one inline compaction and reseed the token bookkeeping.
|
|
41
|
+
* mirrors run_auto_compact + recompute_token_usage (session/mod.rs:3059-3095):
|
|
42
|
+
* after history is rewritten, the session total and the NEW window's baseline
|
|
43
|
+
* both restart from a byte-based estimate of the compacted context (replaced
|
|
44
|
+
* by real server usage on the next sampled response).
|
|
45
|
+
*/
|
|
46
|
+
async function runCompactAndRecompute(history, config, compactWindow, tokenState, emitEvent) {
|
|
47
|
+
emitEvent({ type: "ContextCompacted", event: {} });
|
|
48
|
+
await runInlineAutoCompactTask(history, config);
|
|
49
|
+
compactWindow.startNext();
|
|
50
|
+
const estimated = estimateItemsTokenCount([...(config.contextItems ?? []), ...history]) +
|
|
51
|
+
approxTokenCount(config.instructions ?? "");
|
|
52
|
+
tokenState.setEstimated(estimated);
|
|
53
|
+
compactWindow.setEstimatedPrefill(estimated);
|
|
54
|
+
emitEvent({
|
|
55
|
+
type: "Warning",
|
|
56
|
+
event: {
|
|
57
|
+
message: "Heads up: Long threads and multiple compactions can cause the model to be less accurate. " +
|
|
58
|
+
"Start a new thread when possible to keep threads small and targeted.",
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
18
62
|
export async function runTurn(turnId, userItems, history, config, router, pendingInputs, emitEvent, liveThread,
|
|
19
63
|
/** mirrors: codex-rs propagates a tokio CancellationToken into the turn loop;
|
|
20
64
|
* AbortSignal is the browser-native equivalent. */
|
|
@@ -87,6 +131,33 @@ extraUserMessages) {
|
|
|
87
131
|
// silently grows past the model's context window → "prompt is too long". Fall
|
|
88
132
|
// back to a private window only when no shared one is supplied (one-shot/tests).
|
|
89
133
|
const compactWindow = config.compactWindow ?? new AutoCompactWindow();
|
|
134
|
+
// Session token accounting — same thread-owned pattern (mirrors session state).
|
|
135
|
+
const tokenState = config.tokenState ?? new SessionTokenState();
|
|
136
|
+
// ── Estimated baseline seed (mirrors set_estimated_prefill, mod.rs:1290) ────
|
|
137
|
+
// Until the first server usage arrives (fresh thread, resumed thread, or a
|
|
138
|
+
// freshly compacted window) the window baseline and session total start from
|
|
139
|
+
// a byte-based estimate of what this turn is about to send. Server usage
|
|
140
|
+
// overrides both on the next sampled response.
|
|
141
|
+
if (compactWindow.snapshot().prefillInputTokens === null) {
|
|
142
|
+
const estimated = estimateItemsTokenCount([...(config.contextItems ?? []), ...history]) +
|
|
143
|
+
approxTokenCount(config.instructions ?? "");
|
|
144
|
+
compactWindow.setEstimatedPrefill(estimated);
|
|
145
|
+
if (tokenState.totalTokens === null) {
|
|
146
|
+
tokenState.setEstimated(estimated);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ── Pre-sampling compaction (mirrors run_pre_sampling_compact, turn.rs:149) ─
|
|
150
|
+
// Compact BEFORE the first request of the turn when the context is already
|
|
151
|
+
// at/over budget — e.g. the previous turn ended with a context-window-exceeded
|
|
152
|
+
// rejection (which force-filled the session total), or a resumed thread's
|
|
153
|
+
// history estimate already exceeds the window. This is the self-heal path:
|
|
154
|
+
// without it, every subsequent request would keep failing with 400.
|
|
155
|
+
{
|
|
156
|
+
const preStatus = autoCompactTokenStatus(config, compactWindow, tokenState);
|
|
157
|
+
if (preStatus.tokenLimitReached) {
|
|
158
|
+
await runCompactAndRecompute(history, config, compactWindow, tokenState, emitEvent);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
90
161
|
for (;;) {
|
|
91
162
|
// Bail out before sampling again if the turn was interrupted.
|
|
92
163
|
if (abortSignal?.aborted) {
|
|
@@ -207,15 +278,35 @@ extraUserMessages) {
|
|
|
207
278
|
// the same "response.completed" (codex-api/src/sse/responses.rs) to read
|
|
208
279
|
// usage. (An earlier port used "response.done", which no Responses
|
|
209
280
|
// backend emits, so usage never arrived and auto-compaction never armed.)
|
|
210
|
-
// Mirrors
|
|
281
|
+
// Mirrors record_token_usage_info (turn.rs:2072): session total ←
|
|
282
|
+
// usage, window prefill ← first server-observed input_tokens.
|
|
211
283
|
const resp = raw["response"];
|
|
212
284
|
const usage = resp?.["usage"];
|
|
213
285
|
if (typeof usage?.["input_tokens"] === "number") {
|
|
214
286
|
inputTokensThisRound = usage["input_tokens"];
|
|
287
|
+
tokenState.updateFromUsage({
|
|
288
|
+
inputTokens: inputTokensThisRound,
|
|
289
|
+
outputTokens: typeof usage["output_tokens"] === "number"
|
|
290
|
+
? usage["output_tokens"]
|
|
291
|
+
: undefined,
|
|
292
|
+
totalTokens: typeof usage["total_tokens"] === "number"
|
|
293
|
+
? usage["total_tokens"]
|
|
294
|
+
: undefined,
|
|
295
|
+
});
|
|
215
296
|
compactWindow.ensureServerObservedPrefill(inputTokensThisRound);
|
|
216
297
|
}
|
|
217
298
|
break;
|
|
218
299
|
}
|
|
300
|
+
case "response.failed": {
|
|
301
|
+
// mirrors codex-api sse/responses.rs "response.failed": the stream's
|
|
302
|
+
// terminal error event. Surface it as a ResponsesApiError so the
|
|
303
|
+
// catch below classifies it — context-window-exceeded is terminal
|
|
304
|
+
// (and marks tokens full); anything else is treated as a transient
|
|
305
|
+
// stream failure (rs defaults response.failed to Retryable; the
|
|
306
|
+
// 503 status keeps it in the retryable set here).
|
|
307
|
+
const resp = raw["response"];
|
|
308
|
+
throw new ResponsesApiError(503, JSON.stringify(resp?.["error"] ?? raw));
|
|
309
|
+
}
|
|
219
310
|
}
|
|
220
311
|
}
|
|
221
312
|
break; // stream consumed successfully → leave the retry loop
|
|
@@ -224,6 +315,14 @@ extraUserMessages) {
|
|
|
224
315
|
// An interrupt is terminal — never retry past a cancellation.
|
|
225
316
|
if (abortSignal?.aborted)
|
|
226
317
|
throw err;
|
|
318
|
+
// Context-window-exceeded is terminal AND self-healing: mark the
|
|
319
|
+
// session tokens FULL so the NEXT turn's pre-sampling check compacts
|
|
320
|
+
// before sampling (mirrors turn.rs:1045-1047 set_total_tokens_full).
|
|
321
|
+
// Retrying the identical request would only fail again.
|
|
322
|
+
if (isContextWindowExceededError(err)) {
|
|
323
|
+
tokenState.setFull(config.contextWindow);
|
|
324
|
+
throw err;
|
|
325
|
+
}
|
|
227
326
|
// Stop retrying once visible output streamed (would duplicate), the
|
|
228
327
|
// budget is spent, or the error is not transient.
|
|
229
328
|
if (emittedOutput ||
|
|
@@ -266,23 +365,15 @@ extraUserMessages) {
|
|
|
266
365
|
// ── Done when no tool calls ─────────────────────────────────────────────
|
|
267
366
|
if (functionCalls.length === 0)
|
|
268
367
|
break;
|
|
269
|
-
// ── Auto-compaction check (mirrors post-sampling compact
|
|
368
|
+
// ── Auto-compaction check (mirrors post-sampling compact, turn.rs:266-292) ─
|
|
270
369
|
// Only triggered mid-turn (when there are more tool calls to dispatch),
|
|
271
|
-
// matching
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
await
|
|
278
|
-
compactWindow.startNext();
|
|
279
|
-
emitEvent({
|
|
280
|
-
type: "Warning",
|
|
281
|
-
event: {
|
|
282
|
-
message: "Heads up: Long threads and multiple compactions can cause the model to be less accurate. " +
|
|
283
|
-
"Start a new thread when possible to keep threads small and targeted.",
|
|
284
|
-
},
|
|
285
|
-
});
|
|
370
|
+
// matching `token_limit_reached && needs_follow_up` in codex-rs. Fires on
|
|
371
|
+
// EITHER growth-since-baseline ≥ autoCompactTokenLimit OR total active
|
|
372
|
+
// context ≥ contextWindow (see autoCompactTokenStatus).
|
|
373
|
+
{
|
|
374
|
+
const status = autoCompactTokenStatus(config, compactWindow, tokenState);
|
|
375
|
+
if (status.tokenLimitReached) {
|
|
376
|
+
await runCompactAndRecompute(history, config, compactWindow, tokenState, emitEvent);
|
|
286
377
|
}
|
|
287
378
|
}
|
|
288
379
|
// ── Dispatch tool calls ─────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../../core/src/session/turn.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../../core/src/session/turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mirrors codex-rs/core/src/context_manager/history.rs (the token_info face)
|
|
3
|
+
* codex-rs/protocol/src/protocol.rs TokenUsageInfo::fill_to_context_window
|
|
4
|
+
*
|
|
5
|
+
* Session-scoped token accounting: the last known size of the active context,
|
|
6
|
+
* fed from server usage after each sampled response, from a byte-based estimate
|
|
7
|
+
* when no usage has arrived yet (fresh/resumed threads, post-compaction), or
|
|
8
|
+
* force-filled to the context window when the provider rejects a request with
|
|
9
|
+
* context-window-exceeded. `autoCompactTokenStatus` in turn.ts reads this to
|
|
10
|
+
* decide when to compact — mirrors sess.get_total_token_usage() in codex-rs.
|
|
11
|
+
*/
|
|
12
|
+
import type { ConversationItem } from "../../../thread-store/src/types.js";
|
|
13
|
+
/** ~4 chars per token — coarse lower bound, same heuristic as codex-rs
|
|
14
|
+
* approx_token_count (utils/output-truncation). Good enough for budgeting. */
|
|
15
|
+
export declare function approxTokenCount(text: string): number;
|
|
16
|
+
/**
|
|
17
|
+
* Estimate the token size of serialized conversation items.
|
|
18
|
+
* mirrors history.estimate_token_count_with_base_instructions (history.rs:149):
|
|
19
|
+
* per-item byte-based estimates, summed. JSON form approximates wire size.
|
|
20
|
+
*/
|
|
21
|
+
export declare function estimateItemsTokenCount(items: ConversationItem[]): number;
|
|
22
|
+
export declare class SessionTokenState {
|
|
23
|
+
/** Last known active-context size in tokens (server usage, estimate, or
|
|
24
|
+
* forced-full). null until the first sample/estimate. */
|
|
25
|
+
private total;
|
|
26
|
+
get totalTokens(): number | null;
|
|
27
|
+
/**
|
|
28
|
+
* Record the terminal usage of a sampled response.
|
|
29
|
+
* mirrors record_token_usage_info → history.update_token_info: the session
|
|
30
|
+
* total becomes the response's total_tokens (the active context as the
|
|
31
|
+
* server measured it). Falls back to input+output when total is absent.
|
|
32
|
+
*/
|
|
33
|
+
updateFromUsage(input: {
|
|
34
|
+
inputTokens: number;
|
|
35
|
+
outputTokens?: number | undefined;
|
|
36
|
+
totalTokens?: number | undefined;
|
|
37
|
+
}): void;
|
|
38
|
+
/**
|
|
39
|
+
* Seed/replace the total with a byte-based estimate — used before the first
|
|
40
|
+
* server usage arrives and after compaction rewrites history.
|
|
41
|
+
* mirrors recompute_token_usage (session/mod.rs:3059).
|
|
42
|
+
*/
|
|
43
|
+
setEstimated(tokens: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Mark the context as FULL after a context-window-exceeded rejection, so the
|
|
46
|
+
* next pre-sampling check is guaranteed to compact first.
|
|
47
|
+
* mirrors set_total_tokens_full (session/mod.rs:3140) — a no-op when the
|
|
48
|
+
* host didn't configure a context window, exactly like the rs guard.
|
|
49
|
+
*/
|
|
50
|
+
setFull(contextWindow: number | undefined): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=token_state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_state.d.ts","sourceRoot":"","sources":["../../../../core/src/state/token_state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E;+EAC+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAMzE;AAED,qBAAa,iBAAiB;IAC5B;8DAC0D;IAC1D,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAClC,GAAG,IAAI;IAMR;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAKjD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mirrors codex-rs/core/src/context_manager/history.rs (the token_info face)
|
|
3
|
+
* codex-rs/protocol/src/protocol.rs TokenUsageInfo::fill_to_context_window
|
|
4
|
+
*
|
|
5
|
+
* Session-scoped token accounting: the last known size of the active context,
|
|
6
|
+
* fed from server usage after each sampled response, from a byte-based estimate
|
|
7
|
+
* when no usage has arrived yet (fresh/resumed threads, post-compaction), or
|
|
8
|
+
* force-filled to the context window when the provider rejects a request with
|
|
9
|
+
* context-window-exceeded. `autoCompactTokenStatus` in turn.ts reads this to
|
|
10
|
+
* decide when to compact — mirrors sess.get_total_token_usage() in codex-rs.
|
|
11
|
+
*/
|
|
12
|
+
/** ~4 chars per token — coarse lower bound, same heuristic as codex-rs
|
|
13
|
+
* approx_token_count (utils/output-truncation). Good enough for budgeting. */
|
|
14
|
+
export function approxTokenCount(text) {
|
|
15
|
+
return Math.ceil(text.length / 4);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Estimate the token size of serialized conversation items.
|
|
19
|
+
* mirrors history.estimate_token_count_with_base_instructions (history.rs:149):
|
|
20
|
+
* per-item byte-based estimates, summed. JSON form approximates wire size.
|
|
21
|
+
*/
|
|
22
|
+
export function estimateItemsTokenCount(items) {
|
|
23
|
+
let total = 0;
|
|
24
|
+
for (const item of items) {
|
|
25
|
+
total += approxTokenCount(JSON.stringify(item));
|
|
26
|
+
}
|
|
27
|
+
return total;
|
|
28
|
+
}
|
|
29
|
+
export class SessionTokenState {
|
|
30
|
+
/** Last known active-context size in tokens (server usage, estimate, or
|
|
31
|
+
* forced-full). null until the first sample/estimate. */
|
|
32
|
+
total = null;
|
|
33
|
+
get totalTokens() {
|
|
34
|
+
return this.total;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Record the terminal usage of a sampled response.
|
|
38
|
+
* mirrors record_token_usage_info → history.update_token_info: the session
|
|
39
|
+
* total becomes the response's total_tokens (the active context as the
|
|
40
|
+
* server measured it). Falls back to input+output when total is absent.
|
|
41
|
+
*/
|
|
42
|
+
updateFromUsage(input) {
|
|
43
|
+
const total = input.totalTokens ?? input.inputTokens + (input.outputTokens ?? 0);
|
|
44
|
+
this.total = Math.max(0, total);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Seed/replace the total with a byte-based estimate — used before the first
|
|
48
|
+
* server usage arrives and after compaction rewrites history.
|
|
49
|
+
* mirrors recompute_token_usage (session/mod.rs:3059).
|
|
50
|
+
*/
|
|
51
|
+
setEstimated(tokens) {
|
|
52
|
+
this.total = Math.max(0, tokens);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Mark the context as FULL after a context-window-exceeded rejection, so the
|
|
56
|
+
* next pre-sampling check is guaranteed to compact first.
|
|
57
|
+
* mirrors set_total_tokens_full (session/mod.rs:3140) — a no-op when the
|
|
58
|
+
* host didn't configure a context window, exactly like the rs guard.
|
|
59
|
+
*/
|
|
60
|
+
setFull(contextWindow) {
|
|
61
|
+
if (contextWindow !== undefined) {
|
|
62
|
+
this.total = contextWindow;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=token_state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_state.js","sourceRoot":"","sources":["../../../../core/src/state/token_state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;+EAC+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,iBAAiB;IAC5B;8DAC0D;IAClD,KAAK,GAAkB,IAAI,CAAC;IAEpC,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,KAIf;QACC,MAAM,KAAK,GACT,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,aAAiC;QACvC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { describe, expect, it, vi, beforeEach } from "vitest";
|
|
10
10
|
import { AutoCompactWindow } from "../../src/state/auto_compact_window.js";
|
|
11
|
-
import { collectUserMessages, buildCompactedHistory, SUMMARIZATION_PROMPT, SUMMARY_PREFIX, } from "../../src/compact.js";
|
|
11
|
+
import { collectUserMessages, buildCompactedHistory, runInlineAutoCompactTask, SUMMARIZATION_PROMPT, SUMMARY_PREFIX, } from "../../src/compact.js";
|
|
12
12
|
import { CodexThread } from "../../src/codex_thread.js";
|
|
13
|
+
import { SessionTokenState } from "../../src/state/token_state.js";
|
|
14
|
+
import { isContextWindowExceededText } from "../../src/session/retry.js";
|
|
13
15
|
import { evAssistantMessage, evCompleted, evFunctionCall, evResponseCreated, makeSseResponse, sseFlat, waitForEvent, } from "../common/lib.js";
|
|
14
16
|
// ─── AutoCompactWindow unit tests ─────────────────────────────────────────────
|
|
15
17
|
describe("AutoCompactWindow — BodyAfterPrefix tracking", () => {
|
|
@@ -241,4 +243,232 @@ describe("cross-turn auto-compaction (thread-owned window)", () => {
|
|
|
241
243
|
expect(fetchMock).toHaveBeenCalledTimes(4);
|
|
242
244
|
});
|
|
243
245
|
});
|
|
246
|
+
// ─── Shared helpers for the context-window suites ──────────────────────────────
|
|
247
|
+
function makeErrorResponse(status, bodyText) {
|
|
248
|
+
return {
|
|
249
|
+
ok: false,
|
|
250
|
+
status,
|
|
251
|
+
headers: new Headers(),
|
|
252
|
+
body: new ReadableStream({
|
|
253
|
+
start(controller) {
|
|
254
|
+
controller.enqueue(new TextEncoder().encode(bodyText));
|
|
255
|
+
controller.close();
|
|
256
|
+
},
|
|
257
|
+
}),
|
|
258
|
+
text: async () => bodyText,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
function sseWithFullUsage(inputTokens, totalTokens, items) {
|
|
262
|
+
return sseFlat([
|
|
263
|
+
...items,
|
|
264
|
+
{
|
|
265
|
+
type: "response.completed",
|
|
266
|
+
response: {
|
|
267
|
+
id: "resp",
|
|
268
|
+
status: "completed",
|
|
269
|
+
usage: {
|
|
270
|
+
input_tokens: inputTokens,
|
|
271
|
+
output_tokens: totalTokens - inputTokens,
|
|
272
|
+
total_tokens: totalTokens,
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
]);
|
|
277
|
+
}
|
|
278
|
+
// The EXACT body OpenRouter returned in the production incident (Anthropic raw
|
|
279
|
+
// error wrapped in metadata.raw — no OpenAI-canonical code anywhere).
|
|
280
|
+
const OPENROUTER_PROMPT_TOO_LONG_BODY = JSON.stringify({
|
|
281
|
+
error: {
|
|
282
|
+
message: "Provider returned error",
|
|
283
|
+
code: 400,
|
|
284
|
+
metadata: {
|
|
285
|
+
raw: '{"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 1102084 tokens > 1000000 maximum"},"request_id":"req_x"}',
|
|
286
|
+
provider_name: "Azure",
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
});
|
|
290
|
+
// ─── Unit: context-window-exceeded classification ──────────────────────────────
|
|
291
|
+
// mirrors is_context_window_error (codex-api/src/sse/responses.rs:513) — rs only
|
|
292
|
+
// matches the OpenAI-canonical code; the ts port also matches each provider's
|
|
293
|
+
// wording because OpenRouter/codeproxy pass the ORIGINAL provider error through.
|
|
294
|
+
describe("isContextWindowExceededText", () => {
|
|
295
|
+
it("matches the OpenRouter/Anthropic incident payload", () => {
|
|
296
|
+
expect(isContextWindowExceededText(OPENROUTER_PROMPT_TOO_LONG_BODY)).toBe(true);
|
|
297
|
+
});
|
|
298
|
+
it("matches the OpenAI canonical code and message", () => {
|
|
299
|
+
expect(isContextWindowExceededText('{"code":"context_length_exceeded"}')).toBe(true);
|
|
300
|
+
expect(isContextWindowExceededText("Your input exceeds the context window of this model.")).toBe(true);
|
|
301
|
+
});
|
|
302
|
+
it("does NOT match unrelated 4xx bodies", () => {
|
|
303
|
+
expect(isContextWindowExceededText('{"error":{"message":"insufficient credits"}}')).toBe(false);
|
|
304
|
+
expect(isContextWindowExceededText("Bad Request")).toBe(false);
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
// ─── Integration: absolute context-window trigger ──────────────────────────────
|
|
308
|
+
// mirrors full_context_window_limit_reached (turn.rs:752-757): compaction must
|
|
309
|
+
// fire when TOTAL active context reaches the model window even though the
|
|
310
|
+
// growth-since-baseline budget (autoCompactTokenLimit) was never configured.
|
|
311
|
+
describe("full-context-window auto-compaction", () => {
|
|
312
|
+
beforeEach(() => {
|
|
313
|
+
vi.unstubAllGlobals();
|
|
314
|
+
});
|
|
315
|
+
it("compacts when total usage reaches contextWindow (no growth budget set)", async () => {
|
|
316
|
+
const fetchMock = vi.fn();
|
|
317
|
+
// Round 1 — tool call; usage total 810 < window 1000 → no compaction.
|
|
318
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseWithFullUsage(800, 810, [
|
|
319
|
+
evResponseCreated("r1"),
|
|
320
|
+
evFunctionCall("call-1", "get_goal", {}),
|
|
321
|
+
])));
|
|
322
|
+
// Round 2 — tool call; usage total 1020 ≥ window 1000 → compact.
|
|
323
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseWithFullUsage(1010, 1020, [
|
|
324
|
+
evResponseCreated("r2"),
|
|
325
|
+
evFunctionCall("call-2", "get_goal", {}),
|
|
326
|
+
])));
|
|
327
|
+
// Compaction request → summary.
|
|
328
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
329
|
+
evResponseCreated("compact"),
|
|
330
|
+
evAssistantMessage("summary text"),
|
|
331
|
+
evCompleted("compact"),
|
|
332
|
+
])));
|
|
333
|
+
// Round 3 — final reply.
|
|
334
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
335
|
+
evResponseCreated("r3"),
|
|
336
|
+
evAssistantMessage("done"),
|
|
337
|
+
evCompleted("r3"),
|
|
338
|
+
])));
|
|
339
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
340
|
+
const codex = new CodexThread({
|
|
341
|
+
apiKey: "test",
|
|
342
|
+
model: "gpt-4o",
|
|
343
|
+
contextWindow: 1000, // NOTE: no autoCompactTokenLimit at all
|
|
344
|
+
});
|
|
345
|
+
await codex.submit({
|
|
346
|
+
type: "UserInput",
|
|
347
|
+
items: [{ type: "text", text: "hi" }],
|
|
348
|
+
});
|
|
349
|
+
const compacted = await waitForEvent(codex, (msg) => msg.type === "ContextCompacted");
|
|
350
|
+
expect(compacted.type).toBe("ContextCompacted");
|
|
351
|
+
await waitForEvent(codex, (msg) => msg.type === "TurnComplete");
|
|
352
|
+
expect(fetchMock).toHaveBeenCalledTimes(4);
|
|
353
|
+
// The compaction request (index 2) carries the summarization prompt.
|
|
354
|
+
const compactBody = JSON.parse(fetchMock.mock.calls[2][1].body);
|
|
355
|
+
expect(JSON.stringify(compactBody.input[compactBody.input.length - 1])).toContain(SUMMARIZATION_PROMPT.slice(0, 30));
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
// ─── Integration: context-window-exceeded self-heal across turns ───────────────
|
|
359
|
+
// mirrors turn.rs:1045-1047 (set_total_tokens_full on ContextWindowExceeded) +
|
|
360
|
+
// run_pre_sampling_compact (turn.rs:149): a rejected request marks the session
|
|
361
|
+
// tokens FULL; the NEXT turn compacts BEFORE sampling instead of failing with
|
|
362
|
+
// the same 400 forever — this is exactly the production incident shape.
|
|
363
|
+
describe("context-window-exceeded self-heal", () => {
|
|
364
|
+
beforeEach(() => {
|
|
365
|
+
vi.unstubAllGlobals();
|
|
366
|
+
});
|
|
367
|
+
it("marks tokens full on the 400 and compacts before sampling on the next turn", async () => {
|
|
368
|
+
const fetchMock = vi.fn();
|
|
369
|
+
// Turn 1 — provider rejects the sampling request outright (the incident).
|
|
370
|
+
fetchMock.mockResolvedValueOnce(makeErrorResponse(400, OPENROUTER_PROMPT_TOO_LONG_BODY));
|
|
371
|
+
// Turn 2 — FIRST request must be the pre-sampling compaction…
|
|
372
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
373
|
+
evResponseCreated("compact"),
|
|
374
|
+
evAssistantMessage("summary text"),
|
|
375
|
+
evCompleted("compact"),
|
|
376
|
+
])));
|
|
377
|
+
// …then the actual sampling request succeeds on the compacted history.
|
|
378
|
+
fetchMock.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
379
|
+
evResponseCreated("t2"),
|
|
380
|
+
evAssistantMessage("recovered"),
|
|
381
|
+
evCompleted("t2"),
|
|
382
|
+
])));
|
|
383
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
384
|
+
const codex = new CodexThread({
|
|
385
|
+
apiKey: "test",
|
|
386
|
+
model: "gpt-4o",
|
|
387
|
+
contextWindow: 1000,
|
|
388
|
+
});
|
|
389
|
+
// Turn 1 fails with the 400 (no retry — the same request would fail again).
|
|
390
|
+
await codex.submit({
|
|
391
|
+
type: "UserInput",
|
|
392
|
+
items: [{ type: "text", text: "hi" }],
|
|
393
|
+
});
|
|
394
|
+
const errorEvent = await waitForEvent(codex, (msg) => msg.type === "Error");
|
|
395
|
+
expect(JSON.stringify(errorEvent)).toContain("prompt is too long");
|
|
396
|
+
expect(fetchMock).toHaveBeenCalledTimes(1);
|
|
397
|
+
// Turn 2 self-heals: compaction first, then sampling.
|
|
398
|
+
await codex.submit({
|
|
399
|
+
type: "UserInput",
|
|
400
|
+
items: [{ type: "text", text: "continue" }],
|
|
401
|
+
});
|
|
402
|
+
const compacted = await waitForEvent(codex, (msg) => msg.type === "ContextCompacted");
|
|
403
|
+
expect(compacted.type).toBe("ContextCompacted");
|
|
404
|
+
await waitForEvent(codex, (msg) => msg.type === "TurnComplete");
|
|
405
|
+
expect(fetchMock).toHaveBeenCalledTimes(3);
|
|
406
|
+
// Call 2 (index 1) is the compaction request (summarization prompt last)…
|
|
407
|
+
const compactBody = JSON.parse(fetchMock.mock.calls[1][1].body);
|
|
408
|
+
expect(JSON.stringify(compactBody.input[compactBody.input.length - 1])).toContain(SUMMARIZATION_PROMPT.slice(0, 30));
|
|
409
|
+
// …and call 3 (index 2) samples on the compacted history.
|
|
410
|
+
const finalBody = JSON.parse(fetchMock.mock.calls[2][1].body);
|
|
411
|
+
expect(JSON.stringify(finalBody.input)).toContain(SUMMARY_PREFIX.slice(0, 30));
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
// ─── Unit: compaction request trims itself out of the window ───────────────────
|
|
415
|
+
// mirrors compact.rs:232-241: when the compaction request ITSELF exceeds the
|
|
416
|
+
// window, drop the OLDEST history item and retry (prefix-preserving), instead
|
|
417
|
+
// of dying in the exact deadlock the production incident hit.
|
|
418
|
+
describe("runInlineAutoCompactTask — trim on context-window-exceeded", () => {
|
|
419
|
+
function turnConfig(fetchMock, tokenState) {
|
|
420
|
+
return {
|
|
421
|
+
apiKey: "test",
|
|
422
|
+
baseUrl: "http://mock",
|
|
423
|
+
model: "gpt-4o",
|
|
424
|
+
fetch: fetchMock,
|
|
425
|
+
contextWindow: 1000,
|
|
426
|
+
tokenState,
|
|
427
|
+
maxRetries: 0,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
it("drops the oldest item and retries until the summarizer fits", async () => {
|
|
431
|
+
const history = [
|
|
432
|
+
{ type: "message", role: "user", content: "oldest" },
|
|
433
|
+
{ type: "message", role: "assistant", content: "middle" },
|
|
434
|
+
{ type: "message", role: "user", content: "newest" },
|
|
435
|
+
];
|
|
436
|
+
const tokenState = new SessionTokenState();
|
|
437
|
+
const fetchMock = vi
|
|
438
|
+
.fn()
|
|
439
|
+
// First attempt (full history) → the compaction request is too big.
|
|
440
|
+
.mockResolvedValueOnce(makeErrorResponse(400, OPENROUTER_PROMPT_TOO_LONG_BODY))
|
|
441
|
+
// Second attempt (oldest item dropped) → summary streams back.
|
|
442
|
+
.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
443
|
+
evResponseCreated("compact"),
|
|
444
|
+
evAssistantMessage("trimmed summary"),
|
|
445
|
+
evCompleted("compact"),
|
|
446
|
+
])));
|
|
447
|
+
const summary = await runInlineAutoCompactTask(history, turnConfig(fetchMock, tokenState));
|
|
448
|
+
expect(summary).toBe("trimmed summary");
|
|
449
|
+
expect(fetchMock).toHaveBeenCalledTimes(2);
|
|
450
|
+
// Attempt 1 sent 3 history items + prompt; attempt 2 sent 2 + prompt.
|
|
451
|
+
const firstInput = JSON.parse(fetchMock.mock.calls[0][1].body).input;
|
|
452
|
+
const secondInput = JSON.parse(fetchMock.mock.calls[1][1].body).input;
|
|
453
|
+
expect(firstInput).toHaveLength(4);
|
|
454
|
+
expect(secondInput).toHaveLength(3);
|
|
455
|
+
expect(JSON.stringify(secondInput)).not.toContain("oldest");
|
|
456
|
+
// Replacement history was still built from the ORIGINAL user messages.
|
|
457
|
+
expect(JSON.stringify(history)).toContain(SUMMARY_PREFIX.slice(0, 30));
|
|
458
|
+
expect(JSON.stringify(history)).toContain("oldest");
|
|
459
|
+
});
|
|
460
|
+
it("marks tokens full and surfaces the error when nothing is left to trim", async () => {
|
|
461
|
+
const history = [
|
|
462
|
+
{ type: "message", role: "user", content: "only" },
|
|
463
|
+
];
|
|
464
|
+
const tokenState = new SessionTokenState();
|
|
465
|
+
const fetchMock = vi
|
|
466
|
+
.fn()
|
|
467
|
+
.mockResolvedValue(makeErrorResponse(400, OPENROUTER_PROMPT_TOO_LONG_BODY));
|
|
468
|
+
await expect(runInlineAutoCompactTask(history, turnConfig(fetchMock, tokenState))).rejects.toThrow(/prompt is too long/u);
|
|
469
|
+
// mirrors compact.rs:242: set_total_tokens_full before surfacing.
|
|
470
|
+
expect(tokenState.totalTokens).toBe(1000);
|
|
471
|
+
expect(fetchMock).toHaveBeenCalledTimes(1);
|
|
472
|
+
});
|
|
473
|
+
});
|
|
244
474
|
//# sourceMappingURL=compact.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.test.js","sourceRoot":"","sources":["../../../../core/tests/suite/compact.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compact.test.js","sourceRoot":"","sources":["../../../../core/tests/suite/compact.test.ts"],"names":[],"mappings":"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"}
|