@claudexor/harness-codex 1.0.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/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +641 -0
- package/dist/index.js.map +1 -0
- package/dist/parse.d.ts +13 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +299 -0
- package/dist/parse.js.map +1 -0
- package/dist/pricing.d.ts +28 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +49 -0
- package/dist/pricing.js.map +1 -0
- package/dist/transcript.d.ts +24 -0
- package/dist/transcript.d.ts.map +1 -0
- package/dist/transcript.js +145 -0
- package/dist/transcript.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HarnessEvent } from "@claudexor/schema";
|
|
2
|
+
type Json = any;
|
|
3
|
+
/**
|
|
4
|
+
* Map a single Codex `exec --json` JSONL object to normalized HarnessEvents.
|
|
5
|
+
* Codex event names: thread.*, turn.*, item.started|updated|completed, error.
|
|
6
|
+
*
|
|
7
|
+
* Returns `null` for unrecognized shapes (counted as dropped by the run loop)
|
|
8
|
+
* and `[]` for recognized-but-intentionally-skipped events (e.g. item.updated
|
|
9
|
+
* progress ticks that would double-register a tool call).
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseCodexEvent(obj: Json, sessionId: string): HarnessEvent[] | null;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAW,MAAM,mBAAmB,CAAC;AAG/D,KAAK,IAAI,GAAG,GAAG,CAAC;AAUhB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,IAAI,CAuLnF"}
|
package/dist/parse.js
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { nowIso, redactSecrets } from "@claudexor/util";
|
|
2
|
+
// Native codex error phrasing that indicates a rate-limit / quota condition.
|
|
3
|
+
// This regex lives in the ADAPTER (native-output translation is its job), not
|
|
4
|
+
// in the budget/governance layer.
|
|
5
|
+
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;
|
|
6
|
+
const CODEX_TRANSIENT_RE = /stream disconnected|failed to lookup address information|nodename nor servname|eai_again|enotfound|econnreset|etimedout|temporar(?:y|ily) unavailable|network/i;
|
|
7
|
+
/**
|
|
8
|
+
* Map a single Codex `exec --json` JSONL object to normalized HarnessEvents.
|
|
9
|
+
* Codex event names: thread.*, turn.*, item.started|updated|completed, error.
|
|
10
|
+
*
|
|
11
|
+
* Returns `null` for unrecognized shapes (counted as dropped by the run loop)
|
|
12
|
+
* and `[]` for recognized-but-intentionally-skipped events (e.g. item.updated
|
|
13
|
+
* progress ticks that would double-register a tool call).
|
|
14
|
+
*/
|
|
15
|
+
export function parseCodexEvent(obj, sessionId) {
|
|
16
|
+
const ts = nowIso();
|
|
17
|
+
const type = obj?.type;
|
|
18
|
+
if (type === "thread.started") {
|
|
19
|
+
// Expose the native session id uniformly so the engine can record it for resume.
|
|
20
|
+
return [{ type: "started", session_id: sessionId, ts, payload: { thread_id: obj.thread_id, native_session_id: obj.thread_id } }];
|
|
21
|
+
}
|
|
22
|
+
if (type === "turn.completed") {
|
|
23
|
+
const u = obj.usage ?? {};
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
type: "usage",
|
|
27
|
+
session_id: sessionId,
|
|
28
|
+
ts,
|
|
29
|
+
usage: {
|
|
30
|
+
input_tokens: numberOrUndef(u.input_tokens),
|
|
31
|
+
output_tokens: numberOrUndef(u.output_tokens),
|
|
32
|
+
cached_input_tokens: numberOrUndef(u.cached_input_tokens),
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
if (type === "turn.failed") {
|
|
38
|
+
const message = obj.error?.message ?? "turn failed";
|
|
39
|
+
const ev = { type: "error", session_id: sessionId, ts, error: message, payload: obj };
|
|
40
|
+
applyCodexRateLimit(ev, message, obj.error?.resets_at ?? obj.resets_at);
|
|
41
|
+
applyCodexTransient(ev, message);
|
|
42
|
+
return [ev];
|
|
43
|
+
}
|
|
44
|
+
if (type === "turn.started") {
|
|
45
|
+
return [{ type: "thinking", session_id: sessionId, ts, text: "turn started", payload: { turn_id: obj.turn_id } }];
|
|
46
|
+
}
|
|
47
|
+
if (type === "error") {
|
|
48
|
+
const message = typeof obj.message === "string" ? obj.message : (obj.error?.message ?? "codex error");
|
|
49
|
+
const ev = { type: "error", session_id: sessionId, ts, error: message, payload: obj };
|
|
50
|
+
applyCodexRateLimit(ev, message, obj.resets_at ?? obj.error?.resets_at);
|
|
51
|
+
applyCodexTransient(ev, message);
|
|
52
|
+
return [ev];
|
|
53
|
+
}
|
|
54
|
+
if (type === "item.started" || type === "item.updated") {
|
|
55
|
+
const item = obj.item ?? {};
|
|
56
|
+
const updated = type === "item.updated";
|
|
57
|
+
switch (item.type) {
|
|
58
|
+
case "reasoning":
|
|
59
|
+
return [
|
|
60
|
+
{ type: "thinking", session_id: sessionId, ts, text: String(item.text ?? item.summary ?? "reasoning"), payload: { status: type, item_id: item.id } },
|
|
61
|
+
];
|
|
62
|
+
case "command_execution":
|
|
63
|
+
if (updated)
|
|
64
|
+
return [];
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
type: "tool_call",
|
|
68
|
+
session_id: sessionId,
|
|
69
|
+
ts,
|
|
70
|
+
text: String(item.command ?? "command execution"),
|
|
71
|
+
tool: commandToolRef(item),
|
|
72
|
+
payload: { status: item.status ?? type, item_id: item.id },
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
case "mcp_tool_call":
|
|
76
|
+
if (updated)
|
|
77
|
+
return [];
|
|
78
|
+
return [
|
|
79
|
+
{
|
|
80
|
+
type: "tool_call",
|
|
81
|
+
session_id: sessionId,
|
|
82
|
+
ts,
|
|
83
|
+
text: String(item.tool ?? item.server ?? "mcp tool"),
|
|
84
|
+
tool: mcpToolRef(item),
|
|
85
|
+
payload: { server: item.server, tool: item.tool, status: item.status ?? type, item_id: item.id },
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
case "web_search":
|
|
89
|
+
if (updated)
|
|
90
|
+
return [];
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
type: "tool_call",
|
|
94
|
+
session_id: sessionId,
|
|
95
|
+
ts,
|
|
96
|
+
text: webSearchQuery(item) ?? "web search",
|
|
97
|
+
tool: webSearchToolRef(item),
|
|
98
|
+
payload: { status: item.status ?? type, item_id: item.id },
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
case "file_change":
|
|
102
|
+
return [{ type: "file_change", session_id: sessionId, ts, tool: fileToolRef(item), payload: { path: item.path, status: item.status ?? type, item_id: item.id } }];
|
|
103
|
+
default:
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (type === "item.completed") {
|
|
108
|
+
const item = obj.item ?? {};
|
|
109
|
+
switch (item.type) {
|
|
110
|
+
case "agent_message":
|
|
111
|
+
return [{ type: "message", session_id: sessionId, ts, text: String(item.text ?? "") }];
|
|
112
|
+
case "reasoning":
|
|
113
|
+
return [{ type: "thinking", session_id: sessionId, ts, text: String(item.text ?? "") }];
|
|
114
|
+
case "file_change": {
|
|
115
|
+
const path = item.path ?? (Array.isArray(item.changes) ? item.changes[0]?.path : undefined);
|
|
116
|
+
return [{ type: "file_change", session_id: sessionId, ts, tool: fileToolRef(item), payload: { path, item } }];
|
|
117
|
+
}
|
|
118
|
+
case "command_execution": {
|
|
119
|
+
const failed = item.status === "failed" || (typeof item.exit_code === "number" && item.exit_code !== 0);
|
|
120
|
+
const detail = summarizeCodexOutput(item.aggregated_output ?? item.output);
|
|
121
|
+
return [
|
|
122
|
+
{
|
|
123
|
+
type: "tool_result",
|
|
124
|
+
session_id: sessionId,
|
|
125
|
+
ts,
|
|
126
|
+
text: failed ? `tool_result: error${detail ? `: ${detail}` : ""}` : "tool_result",
|
|
127
|
+
tool: {
|
|
128
|
+
...commandToolRef(item),
|
|
129
|
+
status: failed ? "error" : "ok",
|
|
130
|
+
exit_code: numberOrUndef(item.exit_code),
|
|
131
|
+
error_summary: failed ? detail || commandFailureSummary(item) : undefined,
|
|
132
|
+
content_summary: detail || undefined,
|
|
133
|
+
},
|
|
134
|
+
payload: { exit_code: item.exit_code, status: item.status, item_id: item.id },
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
case "mcp_tool_call": {
|
|
139
|
+
const failed = item.status === "failed";
|
|
140
|
+
return [
|
|
141
|
+
{
|
|
142
|
+
type: "tool_result",
|
|
143
|
+
session_id: sessionId,
|
|
144
|
+
ts,
|
|
145
|
+
text: failed ? "tool_result: error" : "tool_result",
|
|
146
|
+
tool: {
|
|
147
|
+
...mcpToolRef(item),
|
|
148
|
+
status: failed ? "error" : "ok",
|
|
149
|
+
error_summary: failed ? summarizeCodexOutput(item.error ?? item.result) || "mcp tool call failed" : undefined,
|
|
150
|
+
},
|
|
151
|
+
payload: { server: item.server, tool: item.tool, status: item.status, item_id: item.id },
|
|
152
|
+
},
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
case "web_search": {
|
|
156
|
+
const failed = item.status === "failed";
|
|
157
|
+
return [
|
|
158
|
+
{
|
|
159
|
+
type: "tool_result",
|
|
160
|
+
session_id: sessionId,
|
|
161
|
+
ts,
|
|
162
|
+
text: failed ? "tool_result: error" : "tool_result",
|
|
163
|
+
tool: {
|
|
164
|
+
...webSearchToolRef(item),
|
|
165
|
+
status: failed ? "error" : "ok",
|
|
166
|
+
error_summary: failed ? summarizeCodexOutput(item.error) || "web search failed" : undefined,
|
|
167
|
+
},
|
|
168
|
+
payload: { status: item.status, item_id: item.id },
|
|
169
|
+
},
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
case "todo_list": {
|
|
173
|
+
// Codex's structured plan (re-emitted on revision; last wins). The
|
|
174
|
+
// TYPED plan_progress rides a message event: the UI renders the
|
|
175
|
+
// live checklist from the typed field while the prose stays available
|
|
176
|
+
// to plan-extraction. Verified shape: item.items[].{text,completed}.
|
|
177
|
+
const items = Array.isArray(item.items) ? item.items : [];
|
|
178
|
+
const lines = items.map((t) => `${t.completed ? "[x]" : "[ ]"} ${String(t.text ?? "")}`);
|
|
179
|
+
return [
|
|
180
|
+
{
|
|
181
|
+
type: "message",
|
|
182
|
+
session_id: sessionId,
|
|
183
|
+
ts,
|
|
184
|
+
text: lines.length ? `Plan:\n${lines.join("\n")}` : "Plan updated",
|
|
185
|
+
plan_progress: {
|
|
186
|
+
items: items.map((t, i) => ({
|
|
187
|
+
id: `codex-${i}`,
|
|
188
|
+
title: String(t.text ?? ""),
|
|
189
|
+
status: t.completed ? "completed" : "pending",
|
|
190
|
+
})),
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
default:
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Set the TYPED `rate_limit` signal on an error event when codex's native error
|
|
203
|
+
* text indicates a 429 / quota / overload. Fires for BOTH `error` and
|
|
204
|
+
* `turn.failed` (the two ways codex surfaces a rate limit). The budget layer
|
|
205
|
+
* reads `ev.rate_limit` instead of regex-matching prose; this adapter-local
|
|
206
|
+
* recognition of its OWN CLI's native error phrasing is the allowed knowledge.
|
|
207
|
+
*/
|
|
208
|
+
function applyCodexRateLimit(ev, message, resetsAt) {
|
|
209
|
+
if (!CODEX_RATE_LIMIT_RE.test(message))
|
|
210
|
+
return;
|
|
211
|
+
ev.rate_limit = {
|
|
212
|
+
resets_at: typeof resetsAt === "string" ? resetsAt : null,
|
|
213
|
+
retry_delay_ms: null,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
function applyCodexTransient(ev, message) {
|
|
217
|
+
if (!CODEX_TRANSIENT_RE.test(message))
|
|
218
|
+
return;
|
|
219
|
+
ev.transient = {
|
|
220
|
+
kind: /stream disconnected/i.test(message) ? "stream_disconnect" : "network",
|
|
221
|
+
retry_delay_ms: null,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
function commandToolRef(item) {
|
|
225
|
+
return {
|
|
226
|
+
name: "command",
|
|
227
|
+
kind: "command",
|
|
228
|
+
use_id: stringOrUndef(item.id),
|
|
229
|
+
target: boundedTarget(item.command),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function mcpToolRef(item) {
|
|
233
|
+
return {
|
|
234
|
+
name: String(item.tool ?? item.server ?? "mcp"),
|
|
235
|
+
kind: "mcp",
|
|
236
|
+
use_id: stringOrUndef(item.id),
|
|
237
|
+
target: boundedTarget(item.tool ? `${item.server ?? "mcp"}:${item.tool}` : item.server),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function webSearchToolRef(item) {
|
|
241
|
+
return {
|
|
242
|
+
name: "web_search",
|
|
243
|
+
kind: "web",
|
|
244
|
+
use_id: stringOrUndef(item.id),
|
|
245
|
+
target: boundedTarget(webSearchQuery(item)),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Resolve a codex web_search query. On `item.started` the top-level `query` is
|
|
250
|
+
* often EMPTY ("") while the real query lives in `action.query` (or the first
|
|
251
|
+
* of `action.queries[]`) — live-verified on codex 0.137. Prefer a non-empty
|
|
252
|
+
* top-level query, then fall back to the action shape so a started web search is
|
|
253
|
+
* never surfaced as a query-less "web search".
|
|
254
|
+
*/
|
|
255
|
+
function webSearchQuery(item) {
|
|
256
|
+
const direct = stringOrUndef(item.query);
|
|
257
|
+
if (direct)
|
|
258
|
+
return direct;
|
|
259
|
+
const action = item.action;
|
|
260
|
+
if (action && typeof action === "object") {
|
|
261
|
+
const fromAction = stringOrUndef(action.query);
|
|
262
|
+
if (fromAction)
|
|
263
|
+
return fromAction;
|
|
264
|
+
if (Array.isArray(action.queries)) {
|
|
265
|
+
const first = action.queries.find((q) => typeof q === "string" && q.trim());
|
|
266
|
+
if (first)
|
|
267
|
+
return first;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
function fileToolRef(item) {
|
|
273
|
+
return {
|
|
274
|
+
name: "apply_patch",
|
|
275
|
+
kind: "file",
|
|
276
|
+
use_id: stringOrUndef(item.id),
|
|
277
|
+
target: boundedTarget(item.path),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
function commandFailureSummary(item) {
|
|
281
|
+
return typeof item.exit_code === "number" ? `command exited with code ${item.exit_code}` : "command execution failed";
|
|
282
|
+
}
|
|
283
|
+
function summarizeCodexOutput(value) {
|
|
284
|
+
if (typeof value !== "string" || !value.trim())
|
|
285
|
+
return "";
|
|
286
|
+
return redactSecrets(value).trim().replace(/\s+/g, " ").slice(0, 1000);
|
|
287
|
+
}
|
|
288
|
+
function boundedTarget(value) {
|
|
289
|
+
if (typeof value !== "string" || !value.trim())
|
|
290
|
+
return undefined;
|
|
291
|
+
return redactSecrets(value).slice(0, 500);
|
|
292
|
+
}
|
|
293
|
+
function stringOrUndef(v) {
|
|
294
|
+
return typeof v === "string" && v ? v : undefined;
|
|
295
|
+
}
|
|
296
|
+
function numberOrUndef(v) {
|
|
297
|
+
return typeof v === "number" ? v : undefined;
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex cost estimation. Codex `exec --json` reports token usage but NOT a
|
|
3
|
+
* dollar cost, so the budget ledger would otherwise see $0 for every codex run.
|
|
4
|
+
* We derive an ESTIMATE from token counts and per-model list prices. The result
|
|
5
|
+
* is flagged `estimated: true` so the budget layer records it as an "observed"
|
|
6
|
+
* (not "exact") signal — honest about its provenance.
|
|
7
|
+
*
|
|
8
|
+
* Prices are approximate USD per 1M tokens and can drift; override per model via
|
|
9
|
+
* env: CLAUDEXOR_CODEX_PRICE_INPUT / _OUTPUT / _CACHED (USD per 1M tokens).
|
|
10
|
+
*/
|
|
11
|
+
export interface TokenUsage {
|
|
12
|
+
input_tokens?: number;
|
|
13
|
+
output_tokens?: number;
|
|
14
|
+
cached_input_tokens?: number;
|
|
15
|
+
}
|
|
16
|
+
interface Price {
|
|
17
|
+
input: number;
|
|
18
|
+
output: number;
|
|
19
|
+
cached: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function priceForModel(model: string | null | undefined): Price;
|
|
22
|
+
/**
|
|
23
|
+
* Estimate USD cost from token usage. Returns undefined when no usable token
|
|
24
|
+
* counts are present (so we never fabricate a zero/spurious cost).
|
|
25
|
+
*/
|
|
26
|
+
export declare function estimateCodexCostUsd(model: string | null | undefined, usage: TokenUsage): number | undefined;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAuBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAOrE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAe5G"}
|
package/dist/pricing.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Approximate public list prices (USD / 1M tokens). Matched by substring so
|
|
2
|
+
// versioned model ids (gpt-5.1-codex, gpt-5-codex, ...) resolve to a family.
|
|
3
|
+
// ORDER MATTERS: mini/nano rows come FIRST — a `gpt-5.x-mini` must resolve to
|
|
4
|
+
// the mini price, not fall into the broad gpt-5 row above it (that ordering
|
|
5
|
+
// bug over-estimated mini turns ~8x in the budget ledger).
|
|
6
|
+
const TABLE = [
|
|
7
|
+
{ match: /mini|nano/i, price: { input: 0.15, output: 0.6, cached: 0.075 } },
|
|
8
|
+
{ match: /gpt-5[.\d]*-codex|gpt-5[.\d]*-pro/i, price: { input: 1.25, output: 10, cached: 0.125 } },
|
|
9
|
+
{ match: /gpt-5|o3|o4/i, price: { input: 1.25, output: 10, cached: 0.125 } },
|
|
10
|
+
{ match: /gpt-4o|gpt-4\.1/i, price: { input: 2.5, output: 10, cached: 1.25 } },
|
|
11
|
+
];
|
|
12
|
+
const DEFAULT_PRICE = { input: 1.25, output: 10, cached: 0.125 };
|
|
13
|
+
function envNum(name) {
|
|
14
|
+
const v = process.env[name];
|
|
15
|
+
if (v === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
const n = Number.parseFloat(v);
|
|
18
|
+
return Number.isFinite(n) ? n : undefined;
|
|
19
|
+
}
|
|
20
|
+
export function priceForModel(model) {
|
|
21
|
+
const base = TABLE.find((e) => model && e.match.test(model))?.price ?? DEFAULT_PRICE;
|
|
22
|
+
return {
|
|
23
|
+
input: envNum("CLAUDEXOR_CODEX_PRICE_INPUT") ?? base.input,
|
|
24
|
+
output: envNum("CLAUDEXOR_CODEX_PRICE_OUTPUT") ?? base.output,
|
|
25
|
+
cached: envNum("CLAUDEXOR_CODEX_PRICE_CACHED") ?? base.cached,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Estimate USD cost from token usage. Returns undefined when no usable token
|
|
30
|
+
* counts are present (so we never fabricate a zero/spurious cost).
|
|
31
|
+
*/
|
|
32
|
+
export function estimateCodexCostUsd(model, usage) {
|
|
33
|
+
const input = usage.input_tokens ?? 0;
|
|
34
|
+
const output = usage.output_tokens ?? 0;
|
|
35
|
+
// Codex usage reports cached_input_tokens as a SUBSET of input_tokens (the
|
|
36
|
+
// total prompt), matching OpenAI usage semantics. Clamp defensively.
|
|
37
|
+
const cached = Math.min(usage.cached_input_tokens ?? 0, input);
|
|
38
|
+
if (input === 0 && output === 0 && cached === 0)
|
|
39
|
+
return undefined;
|
|
40
|
+
const p = priceForModel(model);
|
|
41
|
+
// Bill the non-cached prompt portion at the input rate and the cached subset
|
|
42
|
+
// at the (cheaper) cached rate. Previously the cached tokens were billed
|
|
43
|
+
// twice (once inside input_tokens at the full input rate, once at the cached
|
|
44
|
+
// rate), over-reporting codex spend by up to ~4x on cache-heavy turns.
|
|
45
|
+
const nonCached = Math.max(0, input - cached);
|
|
46
|
+
const usd = (nonCached / 1e6) * p.input + (output / 1e6) * p.output + (cached / 1e6) * p.cached;
|
|
47
|
+
return Number.isFinite(usd) ? usd : undefined;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route proof: recover the model codex ACTUALLY ran from its own session
|
|
3
|
+
* rollout file (`$CODEX_HOME/sessions/<Y>/<M>/<D>/rollout-*-<threadId>.jsonl`,
|
|
4
|
+
* `turn_context.payload.model`). This is the codex CLI's OWN record — a real
|
|
5
|
+
* observation, not an argv echo — so it honestly upgrades the cross-family route
|
|
6
|
+
* proof to `verified` (CLAUDEXOR_BIBLE §5) for a CLI whose `--json` stream never
|
|
7
|
+
* carries the model. Best-effort: any missing/ambiguous/unreadable state returns
|
|
8
|
+
* null and the proof stays unobserved (safe degradation, never throws).
|
|
9
|
+
*/
|
|
10
|
+
export declare function codexTranscriptModel(codexHome: string | null | undefined, threadId: string | undefined): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Quota headroom: recover codex's OWN rate-window record from the rollout
|
|
13
|
+
* (`event_msg.payload.token_count.rate_limits.{primary,secondary}`), the same
|
|
14
|
+
* native machine-readable source route proof uses. Returns the LAST record's
|
|
15
|
+
* binding window (max used_percent across primary/secondary — the tighter
|
|
16
|
+
* window is the one that throttles). Best-effort: null on anything missing.
|
|
17
|
+
*/
|
|
18
|
+
export declare function codexTranscriptRateLimits(codexHome: string | null | undefined, threadId: string | undefined): {
|
|
19
|
+
used_percent: number;
|
|
20
|
+
resets_at: string | null;
|
|
21
|
+
} | null;
|
|
22
|
+
/** Locate the rollout file whose name binds to this run's threadId (the id is unique per session). */
|
|
23
|
+
export declare function findCodexRollout(sessionsDir: string, threadId: string): string | null;
|
|
24
|
+
//# sourceMappingURL=transcript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA0BtH;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAwC3D;AAED,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBrF"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex rollout-transcript readers: the CLI's own session record
|
|
3
|
+
* (`$CODEX_HOME/sessions/<Y>/<M>/<D>/rollout-*-<threadId>.jsonl`) is the
|
|
4
|
+
* native machine-readable source for the observed model (route proof)
|
|
5
|
+
* and the rate-window quota. One owner for rollout facts.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
8
|
+
import { homedir } from "node:os";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
/**
|
|
11
|
+
* Route proof: recover the model codex ACTUALLY ran from its own session
|
|
12
|
+
* rollout file (`$CODEX_HOME/sessions/<Y>/<M>/<D>/rollout-*-<threadId>.jsonl`,
|
|
13
|
+
* `turn_context.payload.model`). This is the codex CLI's OWN record — a real
|
|
14
|
+
* observation, not an argv echo — so it honestly upgrades the cross-family route
|
|
15
|
+
* proof to `verified` (CLAUDEXOR_BIBLE §5) for a CLI whose `--json` stream never
|
|
16
|
+
* carries the model. Best-effort: any missing/ambiguous/unreadable state returns
|
|
17
|
+
* null and the proof stays unobserved (safe degradation, never throws).
|
|
18
|
+
*/
|
|
19
|
+
export function codexTranscriptModel(codexHome, threadId) {
|
|
20
|
+
if (!threadId)
|
|
21
|
+
return null;
|
|
22
|
+
const home = codexHome && codexHome.trim() ? codexHome : join(homedir(), ".codex");
|
|
23
|
+
const rollout = findCodexRollout(join(home, "sessions"), threadId);
|
|
24
|
+
if (!rollout)
|
|
25
|
+
return null;
|
|
26
|
+
let observed = null;
|
|
27
|
+
try {
|
|
28
|
+
for (const line of readFileSync(rollout, "utf8").split("\n")) {
|
|
29
|
+
if (!line.includes("turn_context"))
|
|
30
|
+
continue;
|
|
31
|
+
let obj;
|
|
32
|
+
try {
|
|
33
|
+
obj = JSON.parse(line);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const model = obj?.payload?.model;
|
|
39
|
+
// Keep the LAST turn_context, not the first: a RESUMED codex session
|
|
40
|
+
// (`exec resume <id>`) accumulates multiple turns in one rollout, so the
|
|
41
|
+
// observed model must reflect the most recent turn — the one the usage
|
|
42
|
+
// event this is attached to actually ran — not a stale earlier turn.
|
|
43
|
+
if (typeof model === "string" && model.trim())
|
|
44
|
+
observed = model;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
/* unreadable rollout: stay unobserved */
|
|
49
|
+
}
|
|
50
|
+
return observed;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Quota headroom: recover codex's OWN rate-window record from the rollout
|
|
54
|
+
* (`event_msg.payload.token_count.rate_limits.{primary,secondary}`), the same
|
|
55
|
+
* native machine-readable source route proof uses. Returns the LAST record's
|
|
56
|
+
* binding window (max used_percent across primary/secondary — the tighter
|
|
57
|
+
* window is the one that throttles). Best-effort: null on anything missing.
|
|
58
|
+
*/
|
|
59
|
+
export function codexTranscriptRateLimits(codexHome, threadId) {
|
|
60
|
+
if (!threadId)
|
|
61
|
+
return null;
|
|
62
|
+
const home = codexHome && codexHome.trim() ? codexHome : join(homedir(), ".codex");
|
|
63
|
+
const rollout = findCodexRollout(join(home, "sessions"), threadId);
|
|
64
|
+
if (!rollout)
|
|
65
|
+
return null;
|
|
66
|
+
let latest = null;
|
|
67
|
+
try {
|
|
68
|
+
for (const line of readFileSync(rollout, "utf8").split("\n")) {
|
|
69
|
+
if (!line.includes("rate_limits"))
|
|
70
|
+
continue;
|
|
71
|
+
let obj;
|
|
72
|
+
try {
|
|
73
|
+
obj = JSON.parse(line);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const rl = obj?.payload?.rate_limits;
|
|
79
|
+
if (!rl || typeof rl !== "object")
|
|
80
|
+
continue;
|
|
81
|
+
const windows = [rl["primary"], rl["secondary"]].filter((w) => Boolean(w) && typeof w === "object");
|
|
82
|
+
let used = null;
|
|
83
|
+
let resets = null;
|
|
84
|
+
for (const w of windows) {
|
|
85
|
+
if (typeof w.used_percent !== "number" || !Number.isFinite(w.used_percent))
|
|
86
|
+
continue;
|
|
87
|
+
if (used === null || w.used_percent > used) {
|
|
88
|
+
used = Math.min(100, Math.max(0, w.used_percent));
|
|
89
|
+
resets =
|
|
90
|
+
typeof w.resets_at === "number"
|
|
91
|
+
? new Date(w.resets_at * 1000).toISOString()
|
|
92
|
+
: typeof w.resets_at === "string"
|
|
93
|
+
? w.resets_at
|
|
94
|
+
: null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (used !== null)
|
|
98
|
+
latest = { used_percent: used, resets_at: resets };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* unreadable rollout: no quota signal */
|
|
103
|
+
}
|
|
104
|
+
return latest;
|
|
105
|
+
}
|
|
106
|
+
/** Locate the rollout file whose name binds to this run's threadId (the id is unique per session). */
|
|
107
|
+
export function findCodexRollout(sessionsDir, threadId) {
|
|
108
|
+
if (!existsSync(sessionsDir))
|
|
109
|
+
return null;
|
|
110
|
+
try {
|
|
111
|
+
for (const y of listDirsDesc(sessionsDir)) {
|
|
112
|
+
for (const m of listDirsDesc(join(sessionsDir, y))) {
|
|
113
|
+
for (const d of listDirsDesc(join(sessionsDir, y, m))) {
|
|
114
|
+
const dayDir = join(sessionsDir, y, m, d);
|
|
115
|
+
const hit = readdirSync(dayDir).find((f) => f.includes(threadId) && f.endsWith(".jsonl"));
|
|
116
|
+
if (hit)
|
|
117
|
+
return join(dayDir, hit);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
/* ignore */
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
/** Subdirectory names sorted newest-first (date partitions), directories only. */
|
|
128
|
+
function listDirsDesc(dir) {
|
|
129
|
+
try {
|
|
130
|
+
return readdirSync(dir)
|
|
131
|
+
.filter((n) => {
|
|
132
|
+
try {
|
|
133
|
+
return statSync(join(dir, n)).isDirectory();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
.sort((a, b) => (a < b ? 1 : a > b ? -1 : 0));
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=transcript.js.map
|