@claudexor/harness-codex 3.9.7 → 3.10.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/effort-gate.d.ts +4 -5
- package/dist/effort-gate.d.ts.map +1 -1
- package/dist/effort-gate.js +4 -5
- package/dist/effort-gate.js.map +1 -1
- package/dist/effort-probe.d.ts +6 -6
- package/dist/effort-probe.d.ts.map +1 -1
- package/dist/effort-probe.js +11 -7
- package/dist/effort-probe.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/model-auth.d.ts +21 -0
- package/dist/model-auth.d.ts.map +1 -0
- package/dist/model-auth.js +202 -0
- package/dist/model-auth.js.map +1 -0
- package/dist/model.d.ts +11 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +217 -0
- package/dist/model.js.map +1 -0
- package/dist/pricing.d.ts +8 -12
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +14 -24
- package/dist/pricing.js.map +1 -1
- package/dist/responses.d.ts +18 -0
- package/dist/responses.d.ts.map +1 -0
- package/dist/responses.js +389 -0
- package/dist/responses.js.map +1 -0
- package/dist/retry-signals.d.ts.map +1 -1
- package/dist/retry-signals.js +1 -1
- package/dist/retry-signals.js.map +1 -1
- package/dist/vendor-cli-version.js +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
export const CODEX_CONTINUATION_FORMAT = "codex.responses.v1";
|
|
2
|
+
/** Carries only deliberate public diagnostics, never a provider body or credentials. */
|
|
3
|
+
export class CodexModelError extends Error {
|
|
4
|
+
problem;
|
|
5
|
+
constructor(code, message, context = {}, retryable = false) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "CodexModelError";
|
|
8
|
+
this.problem = {
|
|
9
|
+
code,
|
|
10
|
+
message,
|
|
11
|
+
context,
|
|
12
|
+
retryable,
|
|
13
|
+
fieldErrors: {},
|
|
14
|
+
requiredActions: [],
|
|
15
|
+
evidenceRefs: [],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function record(value) {
|
|
20
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
21
|
+
? value
|
|
22
|
+
: null;
|
|
23
|
+
}
|
|
24
|
+
export function text(value) {
|
|
25
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
26
|
+
}
|
|
27
|
+
function counter(value) {
|
|
28
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : null;
|
|
29
|
+
}
|
|
30
|
+
export function responseUsage(value) {
|
|
31
|
+
const usage = record(value);
|
|
32
|
+
return {
|
|
33
|
+
input_tokens: counter(usage?.input_tokens),
|
|
34
|
+
output_tokens: counter(usage?.output_tokens),
|
|
35
|
+
cached_input_tokens: counter(record(usage?.input_tokens_details)?.cached_tokens),
|
|
36
|
+
cache_write_tokens: counter(record(usage?.input_tokens_details)?.cache_write_tokens),
|
|
37
|
+
reasoning_tokens: counter(record(usage?.output_tokens_details)?.reasoning_tokens),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function emptyModelResult(route) {
|
|
41
|
+
return {
|
|
42
|
+
outcome: "failed",
|
|
43
|
+
message: null,
|
|
44
|
+
route,
|
|
45
|
+
usage: responseUsage(null),
|
|
46
|
+
appliedOptions: {},
|
|
47
|
+
problem: null,
|
|
48
|
+
cost: {
|
|
49
|
+
knowledge: "unknown",
|
|
50
|
+
billing: "unknown",
|
|
51
|
+
source: "codex.responses",
|
|
52
|
+
provenance: ["Codex Responses does not report incremental cash or token valuation."],
|
|
53
|
+
estimatedUsd: null,
|
|
54
|
+
cashUsd: null,
|
|
55
|
+
valuationUsd: null,
|
|
56
|
+
valuationKnowledge: "unknown",
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function invalid(message) {
|
|
61
|
+
throw new CodexModelError("invalid_request", message);
|
|
62
|
+
}
|
|
63
|
+
/** Blocks are translated structurally; caller text and JSON schemas are never rewritten. */
|
|
64
|
+
function content(value, role) {
|
|
65
|
+
if (value === null)
|
|
66
|
+
return [];
|
|
67
|
+
if (typeof value === "string")
|
|
68
|
+
return [{ type: role === "assistant" ? "output_text" : "input_text", text: value }];
|
|
69
|
+
return value.map((block) => {
|
|
70
|
+
if (block.type === "text" || block.type === "input_text" || block.type === "output_text") {
|
|
71
|
+
if (typeof block.text !== "string")
|
|
72
|
+
invalid("Text content requires a string.");
|
|
73
|
+
return { type: role === "assistant" ? "output_text" : "input_text", text: block.text };
|
|
74
|
+
}
|
|
75
|
+
if (block.type === "image_url" || block.type === "input_image") {
|
|
76
|
+
if (role !== "user" && role !== "tool")
|
|
77
|
+
invalid("Images are supported in user messages and tool results.");
|
|
78
|
+
const image = record(block.image_url);
|
|
79
|
+
const url = typeof block.image_url === "string" ? block.image_url : image?.url;
|
|
80
|
+
const detail = image?.detail ?? block.detail;
|
|
81
|
+
if (typeof url !== "string" || !url)
|
|
82
|
+
invalid("Image content requires an image URL or data URL.");
|
|
83
|
+
if (detail !== undefined && !["auto", "low", "high", "original"].includes(String(detail))) {
|
|
84
|
+
invalid("Image detail is not supported.");
|
|
85
|
+
}
|
|
86
|
+
return { type: "input_image", image_url: url, ...(detail !== undefined ? { detail } : {}) };
|
|
87
|
+
}
|
|
88
|
+
invalid("This content block is not supported by the Codex model transport.");
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function replay(message, route) {
|
|
92
|
+
const native = message.nativeContinuation;
|
|
93
|
+
if (!native)
|
|
94
|
+
return null;
|
|
95
|
+
if (message.role !== "assistant" ||
|
|
96
|
+
native.format !== CODEX_CONTINUATION_FORMAT ||
|
|
97
|
+
!route.accountFingerprint ||
|
|
98
|
+
native.route.accountFingerprint !== route.accountFingerprint ||
|
|
99
|
+
native.route.source !== route.source ||
|
|
100
|
+
native.route.credentialProfileId !== route.credentialProfileId ||
|
|
101
|
+
native.route.model !== route.model ||
|
|
102
|
+
!Array.isArray(native.payload) ||
|
|
103
|
+
!native.payload.every((item) => typeof record(item)?.type === "string")) {
|
|
104
|
+
throw new CodexModelError("invalid_continuation", "Native continuation must match the exact account, profile, model, and format.");
|
|
105
|
+
}
|
|
106
|
+
return native.payload;
|
|
107
|
+
}
|
|
108
|
+
export function validateCodexModelOptions(options) {
|
|
109
|
+
for (const option of ["maxOutputTokens", "temperature"]) {
|
|
110
|
+
if (options[option] !== undefined) {
|
|
111
|
+
throw new CodexModelError("unsupported_parameter", `Codex Responses does not support ${option}.`, { parameter: option });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** Pure request translation. The first system message is the actual instructions field. */
|
|
116
|
+
export function buildResponsesRequest(request, route) {
|
|
117
|
+
validateCodexModelOptions(request.options);
|
|
118
|
+
let instructions = "";
|
|
119
|
+
const input = [];
|
|
120
|
+
for (const [index, message] of request.messages.entries()) {
|
|
121
|
+
if (message.tool_calls?.length && message.role !== "assistant")
|
|
122
|
+
invalid("Only assistant messages can contain tool calls.");
|
|
123
|
+
if (message.name !== undefined && message.role !== "tool")
|
|
124
|
+
invalid("Named conversation messages are not supported by Codex Responses.");
|
|
125
|
+
const native = replay(message, route);
|
|
126
|
+
if (native) {
|
|
127
|
+
input.push(...native);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (index === 0 && message.role === "system") {
|
|
131
|
+
const parts = content(message.content, "system");
|
|
132
|
+
instructions = parts.map((part) => record(part)?.text).join("\n");
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (message.role === "tool") {
|
|
136
|
+
if (!message.tool_call_id)
|
|
137
|
+
invalid("Tool results require the original tool_call_id.");
|
|
138
|
+
input.push({
|
|
139
|
+
type: "function_call_output",
|
|
140
|
+
call_id: message.tool_call_id,
|
|
141
|
+
output: typeof message.content === "string" ? message.content : content(message.content, "tool"),
|
|
142
|
+
...(message.name !== undefined ? { name: message.name } : {}),
|
|
143
|
+
});
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const parts = content(message.content, message.role);
|
|
147
|
+
if (parts.length > 0)
|
|
148
|
+
input.push({ type: "message", role: message.role, content: parts });
|
|
149
|
+
if (message.tool_calls?.length) {
|
|
150
|
+
for (const call of message.tool_calls)
|
|
151
|
+
input.push({
|
|
152
|
+
type: "function_call",
|
|
153
|
+
call_id: call.id,
|
|
154
|
+
name: call.function.name,
|
|
155
|
+
arguments: call.function.arguments,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const options = request.options;
|
|
160
|
+
return {
|
|
161
|
+
model: request.model,
|
|
162
|
+
instructions,
|
|
163
|
+
input,
|
|
164
|
+
tools: request.tools.map(({ function: fn }) => ({
|
|
165
|
+
type: "function",
|
|
166
|
+
name: fn.name,
|
|
167
|
+
...(fn.description !== undefined ? { description: fn.description } : {}),
|
|
168
|
+
parameters: fn.parameters,
|
|
169
|
+
// The native default is strict; ordinary caller schemas must not be silently strictified.
|
|
170
|
+
strict: fn.strict ?? false,
|
|
171
|
+
})),
|
|
172
|
+
tool_choice: typeof request.toolChoice === "string"
|
|
173
|
+
? request.toolChoice
|
|
174
|
+
: { type: "function", name: request.toolChoice.function.name },
|
|
175
|
+
...(options.parallelToolCalls !== undefined
|
|
176
|
+
? { parallel_tool_calls: options.parallelToolCalls }
|
|
177
|
+
: {}),
|
|
178
|
+
...(options.reasoningEffort !== undefined
|
|
179
|
+
? { reasoning: { effort: options.reasoningEffort } }
|
|
180
|
+
: {}),
|
|
181
|
+
...(options.serviceTier !== undefined ? { service_tier: options.serviceTier } : {}),
|
|
182
|
+
...(options.cacheKey !== undefined ? { prompt_cache_key: options.cacheKey } : {}),
|
|
183
|
+
store: false,
|
|
184
|
+
stream: true,
|
|
185
|
+
include: ["reasoning.encrypted_content"],
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export function providerProblem(status, value, headers) {
|
|
189
|
+
const error = record(record(value)?.error) ?? record(value);
|
|
190
|
+
const vendorCode = text(error?.code) ?? text(error?.type);
|
|
191
|
+
const quota = vendorCode === "usage_limit_reached" ||
|
|
192
|
+
vendorCode === "quota_exceeded" ||
|
|
193
|
+
vendorCode === "insufficient_quota";
|
|
194
|
+
const code = quota
|
|
195
|
+
? "subscription_window_exhausted"
|
|
196
|
+
: vendorCode === "unsupported_parameter"
|
|
197
|
+
? "unsupported_parameter"
|
|
198
|
+
: vendorCode === "model_not_found"
|
|
199
|
+
? "model_unavailable"
|
|
200
|
+
: status === 401
|
|
201
|
+
? "auth_required"
|
|
202
|
+
: status === 429
|
|
203
|
+
? "rate_limited"
|
|
204
|
+
: status === 403
|
|
205
|
+
? "provider_refused"
|
|
206
|
+
: status === null || status >= 500
|
|
207
|
+
? "provider_failed"
|
|
208
|
+
: "invalid_request";
|
|
209
|
+
const context = status === null ? {} : { httpStatus: status };
|
|
210
|
+
if (vendorCode)
|
|
211
|
+
context.vendorCode = vendorCode;
|
|
212
|
+
if (typeof error?.param === "string")
|
|
213
|
+
context.parameter = error.param;
|
|
214
|
+
const requestId = headers?.get("x-request-id") ?? headers?.get("request-id");
|
|
215
|
+
if (requestId)
|
|
216
|
+
context.requestId = requestId;
|
|
217
|
+
const retry = headers?.get("retry-after");
|
|
218
|
+
if (retry && /^\d+(?:\.\d+)?$/.test(retry))
|
|
219
|
+
context.retryAfterMs = Number(retry) * 1000;
|
|
220
|
+
else if (retry && Number.isFinite(Date.parse(retry)))
|
|
221
|
+
context.resetsAt = new Date(retry).toISOString();
|
|
222
|
+
const reset = counter(error?.resets_at);
|
|
223
|
+
if (reset !== null && Number.isFinite(new Date(reset * 1000).getTime()))
|
|
224
|
+
context.resetsAt = new Date(reset * 1000).toISOString();
|
|
225
|
+
return new CodexModelError(code, status === null
|
|
226
|
+
? "Codex reported a failed response."
|
|
227
|
+
: `Codex model request was refused (HTTP ${status}).`, context, status === 429 || (status !== null && status >= 500)).problem;
|
|
228
|
+
}
|
|
229
|
+
function appliedOptions(response) {
|
|
230
|
+
const effort = text(record(response.reasoning)?.effort);
|
|
231
|
+
const tier = text(response.service_tier);
|
|
232
|
+
const cacheKey = text(response.prompt_cache_key);
|
|
233
|
+
return {
|
|
234
|
+
...(effort ? { reasoningEffort: effort } : {}),
|
|
235
|
+
...(tier ? { serviceTier: tier } : {}),
|
|
236
|
+
...(cacheKey ? { cacheKey } : {}),
|
|
237
|
+
...(typeof response.parallel_tool_calls === "boolean"
|
|
238
|
+
? { parallelToolCalls: response.parallel_tool_calls }
|
|
239
|
+
: {}),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function responseMessage(items, route) {
|
|
243
|
+
const texts = [];
|
|
244
|
+
const calls = [];
|
|
245
|
+
for (const item of items) {
|
|
246
|
+
if (item.type === "message" && Array.isArray(item.content)) {
|
|
247
|
+
for (const block of item.content) {
|
|
248
|
+
const part = record(block);
|
|
249
|
+
if (part?.type === "output_text" && typeof part.text === "string")
|
|
250
|
+
texts.push(part.text);
|
|
251
|
+
if (part?.type === "refusal" && typeof part.refusal === "string")
|
|
252
|
+
texts.push(part.refusal);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (item.type === "function_call") {
|
|
256
|
+
if (!text(item.call_id) || !text(item.name) || typeof item.arguments !== "string") {
|
|
257
|
+
throw new CodexModelError("transport_unknown", "Codex returned a malformed completed tool call.");
|
|
258
|
+
}
|
|
259
|
+
calls.push({
|
|
260
|
+
id: item.call_id,
|
|
261
|
+
type: "function",
|
|
262
|
+
function: { name: item.name, arguments: item.arguments },
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
role: "assistant",
|
|
268
|
+
content: texts.length ? texts.join("") : null,
|
|
269
|
+
...(calls.length ? { tool_calls: calls } : {}),
|
|
270
|
+
nativeContinuation: { route, format: CODEX_CONTINUATION_FORMAT, payload: items },
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** SSE frames use a streaming UTF-8 decoder. Only a provider terminal makes a response final. */
|
|
274
|
+
export async function readResponsesStream(response, selected) {
|
|
275
|
+
const result = emptyModelResult({ ...selected, model: null });
|
|
276
|
+
result.outcome = "unknown";
|
|
277
|
+
if (!response.body) {
|
|
278
|
+
result.problem = new CodexModelError("transport_unknown", "Codex returned no response stream.").problem;
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
const reader = response.body.getReader();
|
|
282
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
283
|
+
let buffer = "";
|
|
284
|
+
let data = [];
|
|
285
|
+
let terminal = false;
|
|
286
|
+
const done = new Map();
|
|
287
|
+
const consume = () => {
|
|
288
|
+
if (!data.length || terminal) {
|
|
289
|
+
data = [];
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
const raw = data.join("\n");
|
|
293
|
+
data = [];
|
|
294
|
+
if (raw === "[DONE]")
|
|
295
|
+
return;
|
|
296
|
+
const event = record(JSON.parse(raw));
|
|
297
|
+
if (!event)
|
|
298
|
+
throw new Error("invalid SSE object");
|
|
299
|
+
if (event.type === "response.output_item.done") {
|
|
300
|
+
const item = record(event.item), index = counter(event.output_index);
|
|
301
|
+
if (!item || index === null)
|
|
302
|
+
throw new Error("invalid output item");
|
|
303
|
+
done.set(index, item);
|
|
304
|
+
}
|
|
305
|
+
if (event.type === "error") {
|
|
306
|
+
result.problem = providerProblem(null, event);
|
|
307
|
+
result.outcome = "failed";
|
|
308
|
+
terminal = true;
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (!["response.completed", "response.incomplete", "response.failed"].includes(String(event.type)))
|
|
312
|
+
return;
|
|
313
|
+
const final = record(event.response);
|
|
314
|
+
if (!final)
|
|
315
|
+
throw new Error("missing terminal response");
|
|
316
|
+
const expectedStatus = String(event.type).slice("response.".length);
|
|
317
|
+
if (final.status !== undefined && final.status !== expectedStatus)
|
|
318
|
+
throw new Error("contradictory terminal response");
|
|
319
|
+
result.route = { ...selected, model: text(final.model) };
|
|
320
|
+
result.usage = responseUsage(final.usage);
|
|
321
|
+
result.appliedOptions = appliedOptions(final);
|
|
322
|
+
if (Array.isArray(final.output))
|
|
323
|
+
final.output.forEach((item, index) => {
|
|
324
|
+
const object = record(item);
|
|
325
|
+
if (!object)
|
|
326
|
+
throw new Error("invalid terminal item");
|
|
327
|
+
done.set(index, object);
|
|
328
|
+
});
|
|
329
|
+
else if (event.type === "response.completed" && done.size === 0)
|
|
330
|
+
throw new Error("missing completed output");
|
|
331
|
+
result.outcome =
|
|
332
|
+
event.type === "response.completed"
|
|
333
|
+
? "completed"
|
|
334
|
+
: event.type === "response.incomplete"
|
|
335
|
+
? "incomplete"
|
|
336
|
+
: "failed";
|
|
337
|
+
if (result.outcome !== "failed") {
|
|
338
|
+
result.message = responseMessage([...done].sort(([a], [b]) => a - b).map(([, item]) => item), result.route);
|
|
339
|
+
}
|
|
340
|
+
if (result.outcome === "failed")
|
|
341
|
+
result.problem = providerProblem(null, final);
|
|
342
|
+
if (result.outcome === "incomplete")
|
|
343
|
+
result.problem = new CodexModelError("provider_incomplete", "Codex returned an incomplete response.", { reason: text(record(final.incomplete_details)?.reason) }).problem;
|
|
344
|
+
terminal = true;
|
|
345
|
+
};
|
|
346
|
+
const lines = (flush = false) => {
|
|
347
|
+
for (;;) {
|
|
348
|
+
const match = /\r\n|\r|\n/.exec(buffer);
|
|
349
|
+
if (!match)
|
|
350
|
+
break;
|
|
351
|
+
// A CR at the chunk edge might be the first half of CRLF.
|
|
352
|
+
if (!flush && match[0] === "\r" && match.index === buffer.length - 1)
|
|
353
|
+
break;
|
|
354
|
+
const line = buffer.slice(0, match.index);
|
|
355
|
+
buffer = buffer.slice(match.index + match[0].length);
|
|
356
|
+
if (line === "")
|
|
357
|
+
consume();
|
|
358
|
+
else if (line === "data")
|
|
359
|
+
data.push("");
|
|
360
|
+
else if (line.startsWith("data:"))
|
|
361
|
+
data.push(line.slice(5).replace(/^ /, ""));
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
try {
|
|
365
|
+
while (!terminal) {
|
|
366
|
+
const chunk = await reader.read();
|
|
367
|
+
if (chunk.done) {
|
|
368
|
+
buffer += decoder.decode();
|
|
369
|
+
lines(true);
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
buffer += decoder.decode(chunk.value, { stream: true });
|
|
373
|
+
lines();
|
|
374
|
+
}
|
|
375
|
+
if (!terminal)
|
|
376
|
+
result.problem = new CodexModelError("transport_unknown", "Codex stream ended without a terminal response.").problem;
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
result.outcome = "unknown";
|
|
380
|
+
result.message = null;
|
|
381
|
+
result.problem = new CodexModelError("transport_unknown", "Codex response stream was interrupted or malformed.").problem;
|
|
382
|
+
}
|
|
383
|
+
finally {
|
|
384
|
+
await reader.cancel().catch(() => { });
|
|
385
|
+
reader.releaseLock();
|
|
386
|
+
}
|
|
387
|
+
return result;
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=responses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../src/responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-signals.d.ts","sourceRoot":"","sources":["../src/retry-signals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"retry-signals.d.ts","sourceRoot":"","sources":["../src/retry-signals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAStD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,GACf,YAAY,GAAG,IAAI,CAerB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAMjG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAU9E"}
|
package/dist/retry-signals.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const CODEX_RATE_LIMIT_RE = /rate.?limit|usage.?limit|usagelimitexceeded|too many requests|quota[ _-]?(?:exceeded|exhausted|reached)|(?:http|status|code)[ :/]?429|429 too many/i;
|
|
2
2
|
const CODEX_TRANSIENT_RE = /stream disconnected|request timed out|failed to lookup address information|nodename nor servname|eai_again|enotfound|econnreset|etimedout|temporar(?:y|ily) unavailable|network/i;
|
|
3
|
-
const CODEX_RECONNECT_RE = /^Reconnecting\.\.\.\s+(\d+)\/(\d+)\s+\(request timed out\)\s*$/i;
|
|
3
|
+
const CODEX_RECONNECT_RE = /^Reconnecting\.\.\.\s+(\d+)\/(\d+)\s+\((?:request timed out|stream disconnected before completion: idle timeout waiting for SSE)\)\s*$/i;
|
|
4
4
|
export function codexReconnectStatus(message, sessionId, ts, payload) {
|
|
5
5
|
const match = CODEX_RECONNECT_RE.exec(message);
|
|
6
6
|
if (!match)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-signals.js","sourceRoot":"","sources":["../src/retry-signals.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GACvB,qJAAqJ,CAAC;AACxJ,MAAM,kBAAkB,GACtB,kLAAkL,CAAC;AACrL,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"retry-signals.js","sourceRoot":"","sources":["../src/retry-signals.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GACvB,qJAAqJ,CAAC;AACxJ,MAAM,kBAAkB,GACtB,kLAAkL,CAAC;AACrL,MAAM,kBAAkB,GACtB,yIAAyI,CAAC;AAE5I,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,SAAiB,EACjB,EAAU,EACV,OAAgB;IAEhB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,SAAS;QACrB,EAAE;QACF,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE;QAC1F,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE;QACpD,OAAO,EAAE,OAAkC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,OAAe,EAAE,QAAiB;IACzF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO;IAC/C,KAAK,CAAC,UAAU,GAAG;QACjB,SAAS,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACzD,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,OAAe;IACtE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO;IAC9C,KAAK,CAAC,SAAS,GAAG;QAChB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS;QACf,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* Bump it ONLY while re-recording the effort snapshot (and re-checking the
|
|
8
8
|
* manifest's known-model hints) against the same CLI build.
|
|
9
9
|
*/
|
|
10
|
-
export const CODEX_VENDOR_CLI_VERSION = "0.
|
|
10
|
+
export const CODEX_VENDOR_CLI_VERSION = "0.153.3";
|
|
11
11
|
//# sourceMappingURL=vendor-cli-version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/harness-codex",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Codex CLI adapter (codex exec --json).",
|
|
6
6
|
"type": "module",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@claudexor/core": "3.
|
|
20
|
-
"@claudexor/
|
|
21
|
-
"@claudexor/
|
|
22
|
-
"@claudexor/
|
|
19
|
+
"@claudexor/core": "3.10.0",
|
|
20
|
+
"@claudexor/util": "3.10.0",
|
|
21
|
+
"@claudexor/secrets": "3.10.0",
|
|
22
|
+
"@claudexor/schema": "3.10.0"
|
|
23
23
|
},
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|