onadit 1.0.1 → 1.0.3
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/src/cli/commands/chunk-backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/chunk-backfill.js +5 -3
- package/dist/src/cli/commands/chunk-backfill.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +5 -3
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +7 -1
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/diagnostics/codex-preflight.d.ts +10 -1
- package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -1
- package/dist/src/diagnostics/codex-preflight.js +40 -0
- package/dist/src/diagnostics/codex-preflight.js.map +1 -1
- package/dist/src/diagnostics/doctor.d.ts.map +1 -1
- package/dist/src/diagnostics/doctor.js +11 -3
- package/dist/src/diagnostics/doctor.js.map +1 -1
- package/dist/src/jobs/worker-process.d.ts.map +1 -1
- package/dist/src/jobs/worker-process.js +5 -3
- package/dist/src/jobs/worker-process.js.map +1 -1
- package/dist/src/providers/codex-cli-model.d.ts +53 -15
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-model.js +161 -30
- package/dist/src/providers/codex-cli-model.js.map +1 -1
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +28 -13
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/retrieval/brief.d.ts.map +1 -1
- package/dist/src/retrieval/brief.js +3 -0
- package/dist/src/retrieval/brief.js.map +1 -1
- package/dist/src/retrieval/git-state.js +4 -0
- package/dist/src/retrieval/git-state.js.map +1 -1
- package/dist/src/server/routes/friend-status.d.ts +6 -0
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +8 -0
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/storage/maintenance.d.ts +17 -6
- package/dist/src/storage/maintenance.d.ts.map +1 -1
- package/dist/src/storage/maintenance.js +18 -7
- package/dist/src/storage/maintenance.js.map +1 -1
- package/dist/src/storage/tables.d.ts.map +1 -1
- package/dist/src/storage/tables.js +4 -3
- package/dist/src/storage/tables.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,27 +9,37 @@
|
|
|
9
9
|
* fix: Onadit pins an explicit `--model` on every run and NEVER inherits codex's
|
|
10
10
|
* implicit default. Resolution order:
|
|
11
11
|
* 1. Onadit config (`codex_cli.model`) — operator override.
|
|
12
|
-
* 2.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* 2. The account's live model list (`codex debug models`, no model call), the
|
|
13
|
+
* level's own tier first: balanced (the default) then fast, or fast then
|
|
14
|
+
* balanced; frontier last; each tier by Codex's own priority. The first
|
|
15
|
+
* that runs wins. The model verified earlier for the configured level
|
|
16
|
+
* (`capture.triage.level`, persisted under the data dir) is taken without
|
|
17
|
+
* a probe when the list reaches it; a model ranked above it is probed with
|
|
18
|
+
* a tiny real call first, and persisted if it runs. So when OpenAI ships a
|
|
19
|
+
* model and Codex ranks it first, capture moves to it on its own.
|
|
20
|
+
* 3. When the list gives nothing that runs (an older Codex without `debug
|
|
21
|
+
* models`, or offline): the model verified earlier for the level.
|
|
22
|
+
* 4. Top-level `model` in the source `~/.codex/config.toml`. It is the user's
|
|
23
|
+
* interactive choice, often a frontier model, so it no longer comes before
|
|
24
|
+
* the level.
|
|
22
25
|
* 5. The model 1.0.0 verified, kept in the level-less `.internal/codex-model`,
|
|
23
26
|
* probed again and then saved for the level. Last, so an upgrade with an
|
|
24
27
|
* older Codex keeps the model that ran before instead of stopping capture.
|
|
25
28
|
* If none work, we throw a clear, actionable error instead of looping on a
|
|
26
29
|
* bad default.
|
|
27
30
|
*
|
|
31
|
+
* A process keeps its pick for MODEL_RECHECK_MS, then reads the list again: the
|
|
32
|
+
* daemon runs for days, and kept its first pick until Codex refused it. On
|
|
33
|
+
* 2026-10-19 that pick, by then listed as "Older generation", was at capacity.
|
|
34
|
+
*
|
|
28
35
|
* Models get retired. On 2026-10-14 OpenAI stopped accepting `gpt-5.5` for
|
|
29
36
|
* ChatGPT-plan Codex, and capture stopped until someone edited config.json by
|
|
30
37
|
* hand. So a model Codex refuses is recorded and skipped at every step for
|
|
31
38
|
* REFUSAL_TTL_MS — including an explicit `codex_cli.model` (the owner chose
|
|
32
39
|
* switching over stopping) — and the switch is recorded for `onadit status`.
|
|
40
|
+
* A model at capacity is skipped the same way, but only for BUSY_TTL_MS: it is
|
|
41
|
+
* up, just busy, and capture goes back to it once that passes. Every switch
|
|
42
|
+
* stays inside Codex: the conversations never go to another worker.
|
|
33
43
|
*/
|
|
34
44
|
/** One entry of `codex debug models` — only the fields we pick by. */
|
|
35
45
|
export interface CodexCatalogModel {
|
|
@@ -55,6 +65,16 @@ export interface CodexModelSwitch {
|
|
|
55
65
|
* after a week rather than banned forever.
|
|
56
66
|
*/
|
|
57
67
|
export declare const REFUSAL_TTL_MS: number;
|
|
68
|
+
/**
|
|
69
|
+
* How long a model at capacity stays skipped. Short, so the next hourly
|
|
70
|
+
* capture tries the preferred model again.
|
|
71
|
+
*/
|
|
72
|
+
export declare const BUSY_TTL_MS: number;
|
|
73
|
+
/**
|
|
74
|
+
* How long a process keeps its pick before reading Codex's list again. The list
|
|
75
|
+
* costs no model call, so the daemon checks it about once per capture run.
|
|
76
|
+
*/
|
|
77
|
+
export declare const MODEL_RECHECK_MS: number;
|
|
58
78
|
/**
|
|
59
79
|
* Thrown when no model could be resolved from config/source/persisted state
|
|
60
80
|
* and every catalog candidate was refused. Carries the tried candidates so
|
|
@@ -64,6 +84,16 @@ export declare class CodexModelUnavailableError extends Error {
|
|
|
64
84
|
readonly tried: string[];
|
|
65
85
|
constructor(tried: string[]);
|
|
66
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Thrown when Codex says a model is at capacity ("Selected model is at
|
|
89
|
+
* capacity. Please try a different model."), by the runner for one model, or
|
|
90
|
+
* by the resolution when every model it tried was. Lives here, not in the
|
|
91
|
+
* runner, so the resolution can catch it without a module cycle.
|
|
92
|
+
*/
|
|
93
|
+
export declare class CodexModelBusyError extends Error {
|
|
94
|
+
readonly models: string[];
|
|
95
|
+
constructor(models: string[], message: string);
|
|
96
|
+
}
|
|
67
97
|
/**
|
|
68
98
|
* Wire the Onadit config's model override + data dir into the resolver. Called
|
|
69
99
|
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
@@ -76,11 +106,12 @@ export declare function configureCodexModel(opts: {
|
|
|
76
106
|
}): void;
|
|
77
107
|
export declare function resetCodexModelCacheForTests(): void;
|
|
78
108
|
/**
|
|
79
|
-
* Resolve the model to pin on `codex exec`. Memoized for the process
|
|
80
|
-
*
|
|
81
|
-
* and `listModels` are injected by the runner (rather than imported)
|
|
82
|
-
* a module cycle. `probe` resolves true when the model runs and false
|
|
83
|
-
* Codex refuses it
|
|
109
|
+
* Resolve the model to pin on `codex exec`. Memoized for the process, for
|
|
110
|
+
* MODEL_RECHECK_MS, so the list read / probe happens about once an hour.
|
|
111
|
+
* `probe` and `listModels` are injected by the runner (rather than imported)
|
|
112
|
+
* to avoid a module cycle. `probe` resolves true when the model runs and false
|
|
113
|
+
* when Codex refuses it, and throws CodexModelBusyError when it is at
|
|
114
|
+
* capacity; any other failure (auth, network) throws and aborts the
|
|
84
115
|
* resolution, so it surfaces as itself instead of "no working model".
|
|
85
116
|
*/
|
|
86
117
|
export declare function resolveCodexModel(probe: (model: string) => Promise<boolean>, listModels?: () => Promise<CodexCatalogModel[]>): Promise<string>;
|
|
@@ -97,6 +128,13 @@ export declare function currentCodexModel(): string | null;
|
|
|
97
128
|
* model share that single re-resolution instead of each starting their own.
|
|
98
129
|
*/
|
|
99
130
|
export declare function markCodexModelRefused(model: string, now?: Date): void;
|
|
131
|
+
/**
|
|
132
|
+
* Codex said `model` is at capacity. Skip it for BUSY_TTL_MS and, when it is
|
|
133
|
+
* the model this process resolved, drop the memo so the next
|
|
134
|
+
* `resolveCodexModel` picks another one. Not a switch for status: the model is
|
|
135
|
+
* not gone, and capture goes back to it once the time passes.
|
|
136
|
+
*/
|
|
137
|
+
export declare function markCodexModelBusy(model: string, now?: Date): void;
|
|
100
138
|
/**
|
|
101
139
|
* Rough tier from Codex's own description of a model ("Frontier intelligence
|
|
102
140
|
* for the most demanding work", "Latest workhorse model…", "Fast and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-model.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"codex-cli-model.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9D,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC;AAElD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAiB,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAoB/C;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACb,KAAK,EAAE,MAAM,EAAE;CAQ5B;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM;CAK9C;AAiBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACrC,GAAG,IAAI,CAaP;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAUnD;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC1C,UAAU,GAAE,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAkB,GAC9D,OAAO,CAAC,MAAM,CAAC,CAgJjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAMjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,IAAI,CAS3E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,IAAI,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,cAAc,CAKhB;AASD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,cAAc,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAqB,EACxD,KAAK,GAAE,eAA4B,GAClC,MAAM,EAAE,CAaV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,SAAa,EAClB,QAAQ,SAAiB,GACxB,gBAAgB,GAAG,IAAI,CAKzB;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAwBvE"}
|
|
@@ -7,6 +7,16 @@ import path from "node:path";
|
|
|
7
7
|
* after a week rather than banned forever.
|
|
8
8
|
*/
|
|
9
9
|
export const REFUSAL_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
10
|
+
/**
|
|
11
|
+
* How long a model at capacity stays skipped. Short, so the next hourly
|
|
12
|
+
* capture tries the preferred model again.
|
|
13
|
+
*/
|
|
14
|
+
export const BUSY_TTL_MS = 30 * 60 * 1000;
|
|
15
|
+
/**
|
|
16
|
+
* How long a process keeps its pick before reading Codex's list again. The list
|
|
17
|
+
* costs no model call, so the daemon checks it about once per capture run.
|
|
18
|
+
*/
|
|
19
|
+
export const MODEL_RECHECK_MS = 60 * 60 * 1000;
|
|
10
20
|
/** Probe at most this many catalog models per resolution — each is a real call. */
|
|
11
21
|
const MAX_CATALOG_PROBES = 4;
|
|
12
22
|
// One verified model per level, so changing the level re-picks. The earlier
|
|
@@ -28,16 +38,34 @@ export class CodexModelUnavailableError extends Error {
|
|
|
28
38
|
this.tried = tried;
|
|
29
39
|
}
|
|
30
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when Codex says a model is at capacity ("Selected model is at
|
|
43
|
+
* capacity. Please try a different model."), by the runner for one model, or
|
|
44
|
+
* by the resolution when every model it tried was. Lives here, not in the
|
|
45
|
+
* runner, so the resolution can catch it without a module cycle.
|
|
46
|
+
*/
|
|
47
|
+
export class CodexModelBusyError extends Error {
|
|
48
|
+
models;
|
|
49
|
+
constructor(models, message) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.name = "CodexModelBusyError";
|
|
52
|
+
this.models = models;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
31
55
|
let configuredModel;
|
|
32
56
|
let configuredDataDir;
|
|
33
57
|
let configuredLevel = "balanced";
|
|
34
58
|
let resolvedModelPromise = null;
|
|
35
59
|
let resolvedModel = null;
|
|
60
|
+
// When `resolvedModel` was picked, for MODEL_RECHECK_MS.
|
|
61
|
+
let resolvedAtMs = 0;
|
|
36
62
|
// Set when a refusal invalidates the memoized model; written as the switch
|
|
37
63
|
// record once the next resolution lands on a different model.
|
|
38
64
|
let pendingSwitch = null;
|
|
39
|
-
// Refusals seen by this process — the source of truth
|
|
65
|
+
// Refusals and capacity errors seen by this process — the source of truth
|
|
66
|
+
// when no data dir is set.
|
|
40
67
|
const memoryRefusals = new Map();
|
|
68
|
+
const memoryBusy = new Map();
|
|
41
69
|
/**
|
|
42
70
|
* Wire the Onadit config's model override + data dir into the resolver. Called
|
|
43
71
|
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
@@ -63,29 +91,37 @@ export function resetCodexModelCacheForTests() {
|
|
|
63
91
|
configuredLevel = "balanced";
|
|
64
92
|
resolvedModelPromise = null;
|
|
65
93
|
resolvedModel = null;
|
|
94
|
+
resolvedAtMs = 0;
|
|
66
95
|
pendingSwitch = null;
|
|
67
96
|
memoryRefusals.clear();
|
|
97
|
+
memoryBusy.clear();
|
|
68
98
|
}
|
|
69
99
|
/**
|
|
70
|
-
* Resolve the model to pin on `codex exec`. Memoized for the process
|
|
71
|
-
*
|
|
72
|
-
* and `listModels` are injected by the runner (rather than imported)
|
|
73
|
-
* a module cycle. `probe` resolves true when the model runs and false
|
|
74
|
-
* Codex refuses it
|
|
100
|
+
* Resolve the model to pin on `codex exec`. Memoized for the process, for
|
|
101
|
+
* MODEL_RECHECK_MS, so the list read / probe happens about once an hour.
|
|
102
|
+
* `probe` and `listModels` are injected by the runner (rather than imported)
|
|
103
|
+
* to avoid a module cycle. `probe` resolves true when the model runs and false
|
|
104
|
+
* when Codex refuses it, and throws CodexModelBusyError when it is at
|
|
105
|
+
* capacity; any other failure (auth, network) throws and aborts the
|
|
75
106
|
* resolution, so it surfaces as itself instead of "no working model".
|
|
76
107
|
*/
|
|
77
108
|
export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
78
109
|
if (resolvedModelPromise) {
|
|
79
|
-
|
|
110
|
+
const stale = resolvedModel !== null && Date.now() - resolvedAtMs >= MODEL_RECHECK_MS;
|
|
111
|
+
if (!stale) {
|
|
112
|
+
return resolvedModelPromise;
|
|
113
|
+
}
|
|
114
|
+
resolvedModelPromise = null;
|
|
115
|
+
resolvedModel = null;
|
|
80
116
|
}
|
|
81
117
|
const pending = (async () => {
|
|
82
118
|
const now = Date.now();
|
|
83
|
-
const
|
|
119
|
+
const skipped = (model) => isRefused(model, now) || isBusy(model, now);
|
|
120
|
+
const usable = (model) => model !== undefined && !skipped(model) ? model : undefined;
|
|
84
121
|
const level = configuredLevel;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return direct;
|
|
122
|
+
const pinned = usable(configuredModel);
|
|
123
|
+
if (pinned) {
|
|
124
|
+
return pinned;
|
|
89
125
|
}
|
|
90
126
|
let catalog = [];
|
|
91
127
|
try {
|
|
@@ -93,20 +129,54 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
93
129
|
}
|
|
94
130
|
catch {
|
|
95
131
|
// A Codex without `debug models`, or no network: nothing to pick from.
|
|
96
|
-
// The
|
|
132
|
+
// The steps after the list, then the thrown error, take over.
|
|
97
133
|
}
|
|
98
|
-
const
|
|
134
|
+
const persisted = usable(readPersistedModel(configuredDataDir, level));
|
|
135
|
+
const candidates = orderCodexModelCandidates(catalog, skipped, level);
|
|
136
|
+
const persistedListed = persisted !== undefined && candidates.includes(persisted);
|
|
99
137
|
const tried = [];
|
|
138
|
+
const busy = [];
|
|
100
139
|
for (const candidate of candidates) {
|
|
140
|
+
// Verified earlier and still listed: everything Codex ranks above it
|
|
141
|
+
// has been tried, so keep it without a call.
|
|
142
|
+
if (candidate === persisted) {
|
|
143
|
+
return persisted;
|
|
144
|
+
}
|
|
145
|
+
if (tried.length >= MAX_CATALOG_PROBES) {
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
101
148
|
tried.push(candidate);
|
|
102
|
-
|
|
149
|
+
let runs;
|
|
150
|
+
try {
|
|
151
|
+
runs = await probe(candidate);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
if (error instanceof CodexModelBusyError) {
|
|
155
|
+
recordBusy(candidate, new Date());
|
|
156
|
+
busy.push(candidate);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// Checking a model ranked above the one that already works must not
|
|
160
|
+
// stop capture: keep that one, and the real call surfaces a lasting
|
|
161
|
+
// failure as itself.
|
|
162
|
+
if (persistedListed) {
|
|
163
|
+
return persisted;
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
if (runs) {
|
|
103
168
|
persistModel(configuredDataDir, level, candidate);
|
|
104
169
|
return candidate;
|
|
105
170
|
}
|
|
106
171
|
recordRefusal(candidate, new Date());
|
|
107
172
|
}
|
|
108
|
-
// Nothing from the list ran (or there is no list): the
|
|
109
|
-
//
|
|
173
|
+
// Nothing from the list ran (or there is no list): the model verified
|
|
174
|
+
// earlier — only when there is no list, or it is still on it, since a
|
|
175
|
+
// model Codex no longer lists is gone — then the user's own Codex model,
|
|
176
|
+
// used as before without a probe — a refusal later marks it.
|
|
177
|
+
if (persisted && (catalog.length === 0 || persistedListed) && !tried.includes(persisted)) {
|
|
178
|
+
return persisted;
|
|
179
|
+
}
|
|
110
180
|
const fromSource = usable(readSourceConfigModel());
|
|
111
181
|
if (fromSource && !tried.includes(fromSource)) {
|
|
112
182
|
return fromSource;
|
|
@@ -114,11 +184,34 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
114
184
|
const legacy = usable(readLegacyPersistedModel(configuredDataDir));
|
|
115
185
|
if (legacy && !tried.includes(legacy)) {
|
|
116
186
|
tried.push(legacy);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
187
|
+
try {
|
|
188
|
+
if (await probe(legacy)) {
|
|
189
|
+
persistModel(configuredDataDir, level, legacy);
|
|
190
|
+
return legacy;
|
|
191
|
+
}
|
|
192
|
+
recordRefusal(legacy, new Date());
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (!(error instanceof CodexModelBusyError))
|
|
196
|
+
throw error;
|
|
197
|
+
recordBusy(legacy, new Date());
|
|
198
|
+
busy.push(legacy);
|
|
120
199
|
}
|
|
121
|
-
|
|
200
|
+
}
|
|
201
|
+
// Models skipped because they were at capacity a moment ago count too:
|
|
202
|
+
// within the cooldown nothing is probed, and the cause is still capacity,
|
|
203
|
+
// not a model to change in the config.
|
|
204
|
+
const stillBusy = [
|
|
205
|
+
configuredModel,
|
|
206
|
+
readPersistedModel(configuredDataDir, level),
|
|
207
|
+
...catalog.map((model) => model.slug),
|
|
208
|
+
readSourceConfigModel(),
|
|
209
|
+
readLegacyPersistedModel(configuredDataDir),
|
|
210
|
+
].filter((model) => model !== undefined && isBusy(model, now));
|
|
211
|
+
const allBusy = [...new Set([...busy, ...stillBusy])];
|
|
212
|
+
if (allBusy.length > 0) {
|
|
213
|
+
throw new CodexModelBusyError(allBusy, `Every Codex model Onadit tried is at capacity (${allBusy.join(", ")}). ` +
|
|
214
|
+
"Onadit tries again on its next pass.");
|
|
122
215
|
}
|
|
123
216
|
throw new CodexModelUnavailableError(tried);
|
|
124
217
|
})();
|
|
@@ -127,6 +220,7 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
127
220
|
if (resolvedModelPromise !== pending)
|
|
128
221
|
return;
|
|
129
222
|
resolvedModel = model;
|
|
223
|
+
resolvedAtMs = Date.now();
|
|
130
224
|
if (pendingSwitch && pendingSwitch.from !== model) {
|
|
131
225
|
recordSwitch({
|
|
132
226
|
from: pendingSwitch.from,
|
|
@@ -175,6 +269,21 @@ export function markCodexModelRefused(model, now = new Date()) {
|
|
|
175
269
|
resolvedModel = null;
|
|
176
270
|
}
|
|
177
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Codex said `model` is at capacity. Skip it for BUSY_TTL_MS and, when it is
|
|
274
|
+
* the model this process resolved, drop the memo so the next
|
|
275
|
+
* `resolveCodexModel` picks another one. Not a switch for status: the model is
|
|
276
|
+
* not gone, and capture goes back to it once the time passes.
|
|
277
|
+
*/
|
|
278
|
+
export function markCodexModelBusy(model, now = new Date()) {
|
|
279
|
+
if (!isBusy(model, now.getTime())) {
|
|
280
|
+
recordBusy(model, now);
|
|
281
|
+
}
|
|
282
|
+
if (resolvedModel === model) {
|
|
283
|
+
resolvedModelPromise = null;
|
|
284
|
+
resolvedModel = null;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
178
287
|
/**
|
|
179
288
|
* Rough tier from Codex's own description of a model ("Frontier intelligence
|
|
180
289
|
* for the most demanding work", "Latest workhorse model…", "Fast and
|
|
@@ -335,13 +444,34 @@ function recordRefusal(model, now) {
|
|
|
335
444
|
const history = readHistory(configuredDataDir);
|
|
336
445
|
history.refused[model] = now.toISOString();
|
|
337
446
|
// Drop refusals past their TTL so the file stays a handful of entries.
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
447
|
+
dropExpired(history.refused, now, REFUSAL_TTL_MS);
|
|
448
|
+
writeHistory(configuredDataDir, history);
|
|
449
|
+
}
|
|
450
|
+
function isBusy(model, nowMs) {
|
|
451
|
+
const at = memoryBusy.get(model) ?? readHistory(configuredDataDir).busy[model];
|
|
452
|
+
if (!at)
|
|
453
|
+
return false;
|
|
454
|
+
const busyAt = Date.parse(at);
|
|
455
|
+
return Number.isFinite(busyAt) && nowMs - busyAt < BUSY_TTL_MS;
|
|
456
|
+
}
|
|
457
|
+
// Kept in the data dir too, so `onadit capture` and the scripted captures of
|
|
458
|
+
// other agent homes skip a busy model the daemon just met, and the other way.
|
|
459
|
+
function recordBusy(model, now) {
|
|
460
|
+
memoryBusy.set(model, now.toISOString());
|
|
461
|
+
if (!configuredDataDir)
|
|
462
|
+
return;
|
|
463
|
+
const history = readHistory(configuredDataDir);
|
|
464
|
+
history.busy[model] = now.toISOString();
|
|
465
|
+
dropExpired(history.busy, now, BUSY_TTL_MS);
|
|
466
|
+
writeHistory(configuredDataDir, history);
|
|
467
|
+
}
|
|
468
|
+
function dropExpired(entries, now, ttlMs) {
|
|
469
|
+
for (const [name, at] of Object.entries(entries)) {
|
|
470
|
+
const atMs = Date.parse(at);
|
|
471
|
+
if (!Number.isFinite(atMs) || now.getTime() - atMs >= ttlMs) {
|
|
472
|
+
delete entries[name];
|
|
342
473
|
}
|
|
343
474
|
}
|
|
344
|
-
writeHistory(configuredDataDir, history);
|
|
345
475
|
}
|
|
346
476
|
function recordSwitch(modelSwitch) {
|
|
347
477
|
if (!configuredDataDir)
|
|
@@ -352,21 +482,22 @@ function recordSwitch(modelSwitch) {
|
|
|
352
482
|
}
|
|
353
483
|
function readHistory(dataDir) {
|
|
354
484
|
if (!dataDir)
|
|
355
|
-
return { refused: {} };
|
|
485
|
+
return { refused: {}, busy: {} };
|
|
356
486
|
try {
|
|
357
487
|
const parsed = JSON.parse(fs.readFileSync(path.join(dataDir, MODEL_HISTORY_FILE), "utf-8"));
|
|
358
488
|
const refused = parsed.refused && typeof parsed.refused === "object" ? parsed.refused : {};
|
|
489
|
+
const busy = parsed.busy && typeof parsed.busy === "object" ? parsed.busy : {};
|
|
359
490
|
const last = parsed.last_switch;
|
|
360
491
|
const lastValid = last &&
|
|
361
492
|
typeof last.from === "string" &&
|
|
362
493
|
typeof last.to === "string" &&
|
|
363
494
|
typeof last.at === "string";
|
|
364
495
|
return lastValid
|
|
365
|
-
? { refused, last_switch: { ...last, from_config: last.from_config === true } }
|
|
366
|
-
: { refused };
|
|
496
|
+
? { refused, busy, last_switch: { ...last, from_config: last.from_config === true } }
|
|
497
|
+
: { refused, busy };
|
|
367
498
|
}
|
|
368
499
|
catch {
|
|
369
|
-
return { refused: {} };
|
|
500
|
+
return { refused: {}, busy: {} };
|
|
370
501
|
}
|
|
371
502
|
}
|
|
372
503
|
function writeHistory(dataDir, history) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-model.js","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-cli-model.js","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"AAuCA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAwED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,GACxD,IAAI,CAGN;AA2DD;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC3B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,SAAK;CAS1E;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK5D;AASD,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA+C/B;AAwFD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAa7D;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAQvD;AA6MD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe3E;AA4GD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAA+B,EACjD,YAAY,GAAE,SAAS,MAAM,EAAmC,EAChE,cAAc,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAA+B,GACnE,MAAM,GAAG,SAAS,CA8BpB"}
|
|
@@ -3,8 +3,8 @@ import fs from "node:fs";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { spawn, spawnSync } from "node:child_process";
|
|
6
|
-
import { findCodexModelRejection } from "../diagnostics/codex-preflight.js";
|
|
7
|
-
import { markCodexModelRefused, resetCodexModelCacheForTests, resolveCodexModel, } from "./codex-cli-model.js";
|
|
6
|
+
import { findCodexModelBusy, findCodexModelRejection, } from "../diagnostics/codex-preflight.js";
|
|
7
|
+
import { CodexModelBusyError, markCodexModelBusy, markCodexModelRefused, resetCodexModelCacheForTests, resolveCodexModel, } from "./codex-cli-model.js";
|
|
8
8
|
const SCHEMA_CACHE = new Map();
|
|
9
9
|
let codexVersionPromise = null;
|
|
10
10
|
let isolatedCodexHomePath = null;
|
|
@@ -32,9 +32,11 @@ const CODEX_MODEL_PROBE_SCHEMA = {
|
|
|
32
32
|
/**
|
|
33
33
|
* Does this model actually run under our isolated CODEX_HOME? A tiny real
|
|
34
34
|
* `codex exec` — true on a clean structured response, false when Codex refuses
|
|
35
|
-
* the model.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* the model. A model at capacity throws CodexModelBusyError, which the
|
|
36
|
+
* resolution reads as "skip it for now". Any other failure (auth, network,
|
|
37
|
+
* timeout) throws: it is not about the model, so trying the next one would
|
|
38
|
+
* only hide it. Injected into resolveCodexModel so the pick is verified
|
|
39
|
+
* rather than guessed.
|
|
38
40
|
*/
|
|
39
41
|
async function probeCodexModel(model) {
|
|
40
42
|
try {
|
|
@@ -205,21 +207,27 @@ export async function runCodexCliJson(options) {
|
|
|
205
207
|
// default — that default changes between releases and silently broke every
|
|
206
208
|
// preflight when 0.125.0 moved it to a ChatGPT-plan-rejected model.
|
|
207
209
|
let model = await resolveCodexModel(probeCodexModel, listCodexCatalog);
|
|
208
|
-
// When Codex refuses the model (OpenAI retired it, or the plan lost it),
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
// source and persisted models are tried unprobed,
|
|
212
|
-
// before resolution reaches the probed catalog.
|
|
210
|
+
// When Codex refuses the model (OpenAI retired it, or the plan lost it), or
|
|
211
|
+
// says it is at capacity, record that, pick another model and run again,
|
|
212
|
+
// instead of failing the session (or, at the preflight, the whole run).
|
|
213
|
+
// Bounded: the configured, source and persisted models are tried unprobed,
|
|
214
|
+
// so each can fail once before resolution reaches the probed catalog.
|
|
213
215
|
for (let switches = 0;; switches++) {
|
|
214
216
|
try {
|
|
215
217
|
return await runCodexExec(exec, model);
|
|
216
218
|
}
|
|
217
219
|
catch (error) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
const refused = error instanceof CodexModelRejectedError;
|
|
221
|
+
const busy = error instanceof CodexModelBusyError;
|
|
222
|
+
if ((!refused && !busy) || switches >= CODEX_MODEL_SWITCH_LIMIT) {
|
|
220
223
|
throw error;
|
|
221
224
|
}
|
|
222
|
-
|
|
225
|
+
if (refused) {
|
|
226
|
+
markCodexModelRefused(model);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
markCodexModelBusy(model);
|
|
230
|
+
}
|
|
223
231
|
model = await resolveCodexModel(probeCodexModel, listCodexCatalog);
|
|
224
232
|
}
|
|
225
233
|
}
|
|
@@ -463,6 +471,13 @@ async function runCodexCommandOnce(args, options) {
|
|
|
463
471
|
reject(new CodexModelRejectedError(model, rejection, code));
|
|
464
472
|
return;
|
|
465
473
|
}
|
|
474
|
+
const busy = model
|
|
475
|
+
? findCodexModelBusy(`${stderr}\n${stdout}`, options.stdinText ?? "")
|
|
476
|
+
: null;
|
|
477
|
+
if (model && busy) {
|
|
478
|
+
reject(new CodexModelBusyError([model], `Codex CLI failed (exit ${code}) — the model "${model}" is at capacity: ${busy}`));
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
466
481
|
reject(new Error(`Codex CLI failed (exit ${code})${summary
|
|
467
482
|
? ` — ${summary}`
|
|
468
483
|
: stdinError
|