onadit 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.dev.md +1 -1
- package/README.md +5 -4
- package/dist/src/capture/triage-provider-factory.d.ts +12 -1
- package/dist/src/capture/triage-provider-factory.d.ts.map +1 -1
- package/dist/src/capture/triage-provider-factory.js +27 -1
- package/dist/src/capture/triage-provider-factory.js.map +1 -1
- package/dist/src/capture/worker-choice.d.ts +32 -0
- package/dist/src/capture/worker-choice.d.ts.map +1 -0
- package/dist/src/capture/worker-choice.js +76 -0
- package/dist/src/capture/worker-choice.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/backfill.js +2 -2
- package/dist/src/cli/commands/backfill.js.map +1 -1
- package/dist/src/cli/commands/brief.js +2 -2
- package/dist/src/cli/commands/brief.js.map +1 -1
- package/dist/src/cli/commands/bulk-ingest.js +2 -2
- package/dist/src/cli/commands/bulk-ingest.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -1
- package/dist/src/cli/commands/capture-recover.js +7 -3
- package/dist/src/cli/commands/capture-recover.js.map +1 -1
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +9 -4
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/compact.js +2 -2
- package/dist/src/cli/commands/compact.js.map +1 -1
- package/dist/src/cli/commands/doctor.d.ts.map +1 -1
- package/dist/src/cli/commands/doctor.js +7 -0
- package/dist/src/cli/commands/doctor.js.map +1 -1
- package/dist/src/cli/commands/import.d.ts.map +1 -1
- package/dist/src/cli/commands/import.js +2 -2
- package/dist/src/cli/commands/import.js.map +1 -1
- package/dist/src/cli/commands/ingest.js +2 -2
- package/dist/src/cli/commands/ingest.js.map +1 -1
- package/dist/src/cli/commands/onboard.d.ts +49 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +183 -19
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +2 -2
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/commands/reconcile.js +2 -2
- package/dist/src/cli/commands/reconcile.js.map +1 -1
- package/dist/src/cli/commands/reindex.js +2 -2
- package/dist/src/cli/commands/reindex.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts.map +1 -1
- package/dist/src/cli/commands/review.js +2 -2
- package/dist/src/cli/commands/review.js.map +1 -1
- package/dist/src/cli/commands/save.js +2 -2
- package/dist/src/cli/commands/save.js.map +1 -1
- package/dist/src/cli/commands/search.js +2 -2
- package/dist/src/cli/commands/search.js.map +1 -1
- package/dist/src/cli/commands/stats.js +2 -2
- package/dist/src/cli/commands/stats.js.map +1 -1
- package/dist/src/cli/commands/status.d.ts.map +1 -1
- package/dist/src/cli/commands/status.js +31 -3
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/triage.d.ts.map +1 -1
- package/dist/src/cli/commands/triage.js +2 -2
- package/dist/src/cli/commands/triage.js.map +1 -1
- package/dist/src/cli/http-client.d.ts +6 -0
- package/dist/src/cli/http-client.d.ts.map +1 -1
- package/dist/src/cli/http-client.js +6 -0
- package/dist/src/cli/http-client.js.map +1 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +19 -1
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/config/schema.d.ts +30 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +13 -0
- package/dist/src/config/schema.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 +1 -1
- package/dist/src/diagnostics/doctor.d.ts.map +1 -1
- package/dist/src/diagnostics/doctor.js +20 -9
- package/dist/src/diagnostics/doctor.js.map +1 -1
- package/dist/src/diagnostics/repair-prompt.js +9 -2
- package/dist/src/diagnostics/repair-prompt.js.map +1 -1
- package/dist/src/jobs/worker-entry.d.ts.map +1 -1
- package/dist/src/jobs/worker-entry.js +1 -0
- package/dist/src/jobs/worker-entry.js.map +1 -1
- package/dist/src/main.js +5 -2
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +2 -2
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/onboarding/capture-switch.d.ts +15 -2
- package/dist/src/onboarding/capture-switch.d.ts.map +1 -1
- package/dist/src/onboarding/capture-switch.js +28 -5
- package/dist/src/onboarding/capture-switch.js.map +1 -1
- package/dist/src/onboarding/setup-session.d.ts.map +1 -1
- package/dist/src/onboarding/setup-session.js +2 -0
- package/dist/src/onboarding/setup-session.js.map +1 -1
- package/dist/src/onboarding/setup-state.d.ts +8 -1
- package/dist/src/onboarding/setup-state.d.ts.map +1 -1
- package/dist/src/onboarding/setup-state.js +6 -0
- package/dist/src/onboarding/setup-state.js.map +1 -1
- package/dist/src/providers/claude-cli-runner.d.ts +17 -5
- package/dist/src/providers/claude-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/claude-cli-runner.js +35 -6
- package/dist/src/providers/claude-cli-runner.js.map +1 -1
- package/dist/src/providers/codex-cli-model.d.ts +68 -13
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-model.js +220 -41
- package/dist/src/providers/codex-cli-model.js.map +1 -1
- package/dist/src/providers/codex-cli-runner.d.ts +7 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +51 -13
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +3 -1
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/friend-status.d.ts +14 -1
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +14 -1
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/server/routes/setup.d.ts +11 -4
- package/dist/src/server/routes/setup.d.ts.map +1 -1
- package/dist/src/server/routes/setup.js +30 -8
- package/dist/src/server/routes/setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,9 +7,22 @@ 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
|
|
23
|
+
// single `.internal/codex-model` file (no level) is only the last resort.
|
|
24
|
+
const persistedModelFile = (level) => path.join(".internal", `codex-model-${level}`);
|
|
25
|
+
const LEGACY_MODEL_FILE = path.join(".internal", "codex-model");
|
|
13
26
|
const MODEL_HISTORY_FILE = path.join(".internal", "codex-model-history.json");
|
|
14
27
|
/**
|
|
15
28
|
* Thrown when no model could be resolved from config/source/persisted state
|
|
@@ -25,15 +38,34 @@ export class CodexModelUnavailableError extends Error {
|
|
|
25
38
|
this.tried = tried;
|
|
26
39
|
}
|
|
27
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
|
+
}
|
|
28
55
|
let configuredModel;
|
|
29
56
|
let configuredDataDir;
|
|
57
|
+
let configuredLevel = "balanced";
|
|
30
58
|
let resolvedModelPromise = null;
|
|
31
59
|
let resolvedModel = null;
|
|
60
|
+
// When `resolvedModel` was picked, for MODEL_RECHECK_MS.
|
|
61
|
+
let resolvedAtMs = 0;
|
|
32
62
|
// Set when a refusal invalidates the memoized model; written as the switch
|
|
33
63
|
// record once the next resolution lands on a different model.
|
|
34
64
|
let pendingSwitch = null;
|
|
35
|
-
// 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.
|
|
36
67
|
const memoryRefusals = new Map();
|
|
68
|
+
const memoryBusy = new Map();
|
|
37
69
|
/**
|
|
38
70
|
* Wire the Onadit config's model override + data dir into the resolver. Called
|
|
39
71
|
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
@@ -46,6 +78,9 @@ export function configureCodexModel(opts) {
|
|
|
46
78
|
if (typeof opts.dataDir === "string" && opts.dataDir.trim().length > 0) {
|
|
47
79
|
configuredDataDir = opts.dataDir.trim();
|
|
48
80
|
}
|
|
81
|
+
if (opts.level === "fast" || opts.level === "balanced") {
|
|
82
|
+
configuredLevel = opts.level;
|
|
83
|
+
}
|
|
49
84
|
// Re-resolve after (re)configuration so a newly-supplied override wins.
|
|
50
85
|
resolvedModelPromise = null;
|
|
51
86
|
resolvedModel = null;
|
|
@@ -53,31 +88,40 @@ export function configureCodexModel(opts) {
|
|
|
53
88
|
export function resetCodexModelCacheForTests() {
|
|
54
89
|
configuredModel = undefined;
|
|
55
90
|
configuredDataDir = undefined;
|
|
91
|
+
configuredLevel = "balanced";
|
|
56
92
|
resolvedModelPromise = null;
|
|
57
93
|
resolvedModel = null;
|
|
94
|
+
resolvedAtMs = 0;
|
|
58
95
|
pendingSwitch = null;
|
|
59
96
|
memoryRefusals.clear();
|
|
97
|
+
memoryBusy.clear();
|
|
60
98
|
}
|
|
61
99
|
/**
|
|
62
|
-
* Resolve the model to pin on `codex exec`. Memoized for the process
|
|
63
|
-
*
|
|
64
|
-
* and `listModels` are injected by the runner (rather than imported)
|
|
65
|
-
* a module cycle. `probe` resolves true when the model runs and false
|
|
66
|
-
* 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
|
|
67
106
|
* resolution, so it surfaces as itself instead of "no working model".
|
|
68
107
|
*/
|
|
69
108
|
export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
70
109
|
if (resolvedModelPromise) {
|
|
71
|
-
|
|
110
|
+
const stale = resolvedModel !== null && Date.now() - resolvedAtMs >= MODEL_RECHECK_MS;
|
|
111
|
+
if (!stale) {
|
|
112
|
+
return resolvedModelPromise;
|
|
113
|
+
}
|
|
114
|
+
resolvedModelPromise = null;
|
|
115
|
+
resolvedModel = null;
|
|
72
116
|
}
|
|
73
117
|
const pending = (async () => {
|
|
74
118
|
const now = Date.now();
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
return
|
|
119
|
+
const skipped = (model) => isRefused(model, now) || isBusy(model, now);
|
|
120
|
+
const usable = (model) => model !== undefined && !skipped(model) ? model : undefined;
|
|
121
|
+
const level = configuredLevel;
|
|
122
|
+
const pinned = usable(configuredModel);
|
|
123
|
+
if (pinned) {
|
|
124
|
+
return pinned;
|
|
81
125
|
}
|
|
82
126
|
let catalog = [];
|
|
83
127
|
try {
|
|
@@ -85,18 +129,90 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
85
129
|
}
|
|
86
130
|
catch {
|
|
87
131
|
// A Codex without `debug models`, or no network: nothing to pick from.
|
|
88
|
-
// The
|
|
132
|
+
// The steps after the list, then the thrown error, take over.
|
|
89
133
|
}
|
|
90
|
-
const
|
|
134
|
+
const persisted = usable(readPersistedModel(configuredDataDir, level));
|
|
135
|
+
const candidates = orderCodexModelCandidates(catalog, skipped, level);
|
|
136
|
+
const persistedListed = persisted !== undefined && candidates.includes(persisted);
|
|
91
137
|
const tried = [];
|
|
138
|
+
const busy = [];
|
|
92
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
|
+
}
|
|
93
148
|
tried.push(candidate);
|
|
94
|
-
|
|
95
|
-
|
|
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) {
|
|
168
|
+
persistModel(configuredDataDir, level, candidate);
|
|
96
169
|
return candidate;
|
|
97
170
|
}
|
|
98
171
|
recordRefusal(candidate, new Date());
|
|
99
172
|
}
|
|
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
|
+
}
|
|
180
|
+
const fromSource = usable(readSourceConfigModel());
|
|
181
|
+
if (fromSource && !tried.includes(fromSource)) {
|
|
182
|
+
return fromSource;
|
|
183
|
+
}
|
|
184
|
+
const legacy = usable(readLegacyPersistedModel(configuredDataDir));
|
|
185
|
+
if (legacy && !tried.includes(legacy)) {
|
|
186
|
+
tried.push(legacy);
|
|
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);
|
|
199
|
+
}
|
|
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.");
|
|
215
|
+
}
|
|
100
216
|
throw new CodexModelUnavailableError(tried);
|
|
101
217
|
})();
|
|
102
218
|
resolvedModelPromise = pending;
|
|
@@ -104,6 +220,7 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
104
220
|
if (resolvedModelPromise !== pending)
|
|
105
221
|
return;
|
|
106
222
|
resolvedModel = model;
|
|
223
|
+
resolvedAtMs = Date.now();
|
|
107
224
|
if (pendingSwitch && pendingSwitch.from !== model) {
|
|
108
225
|
recordSwitch({
|
|
109
226
|
from: pendingSwitch.from,
|
|
@@ -122,6 +239,20 @@ export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
|
122
239
|
});
|
|
123
240
|
return pending;
|
|
124
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* The model Codex runs under now, as far as this process knows, for status:
|
|
244
|
+
* the one resolved this run, else the configured or remembered one Codex has
|
|
245
|
+
* not refused. Null before the first pick.
|
|
246
|
+
*/
|
|
247
|
+
export function currentCodexModel() {
|
|
248
|
+
if (resolvedModel)
|
|
249
|
+
return resolvedModel;
|
|
250
|
+
const now = Date.now();
|
|
251
|
+
if (configuredModel && !isRefused(configuredModel, now))
|
|
252
|
+
return configuredModel;
|
|
253
|
+
const persisted = readPersistedModel(configuredDataDir, configuredLevel);
|
|
254
|
+
return persisted && !isRefused(persisted, now) ? persisted : null;
|
|
255
|
+
}
|
|
125
256
|
/**
|
|
126
257
|
* Codex refused `model`. Record it (so every resolution skips it) and, when it
|
|
127
258
|
* is the model this process resolved, drop the memo so the next
|
|
@@ -138,6 +269,21 @@ export function markCodexModelRefused(model, now = new Date()) {
|
|
|
138
269
|
resolvedModel = null;
|
|
139
270
|
}
|
|
140
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
|
+
}
|
|
141
287
|
/**
|
|
142
288
|
* Rough tier from Codex's own description of a model ("Frontier intelligence
|
|
143
289
|
* for the most demanding work", "Latest workhorse model…", "Fast and
|
|
@@ -152,26 +298,24 @@ export function classifyCodexModelTier(description) {
|
|
|
152
298
|
return "fast";
|
|
153
299
|
return "balanced";
|
|
154
300
|
}
|
|
155
|
-
//
|
|
156
|
-
//
|
|
157
|
-
// of the user's plan on every hourly run.
|
|
301
|
+
// The level's own tier first, then the other of balanced/fast; frontier last
|
|
302
|
+
// — slowest, and it uses the most of the user's plan on every hourly run.
|
|
158
303
|
const TIER_RANK = {
|
|
159
|
-
balanced: 0,
|
|
160
|
-
fast: 1,
|
|
161
|
-
frontier: 2,
|
|
304
|
+
balanced: { balanced: 0, fast: 1, frontier: 2 },
|
|
305
|
+
fast: { fast: 0, balanced: 1, frontier: 2 },
|
|
162
306
|
};
|
|
163
307
|
/**
|
|
164
308
|
* Catalog models worth probing, best first: models shown in Codex's picker
|
|
165
309
|
* (`visibility: "list"`), minus refused ones, ordered by tier and then by
|
|
166
310
|
* Codex's own priority (lower = more recommended).
|
|
167
311
|
*/
|
|
168
|
-
export function orderCodexModelCandidates(catalog, isModelRefused = () => false) {
|
|
312
|
+
export function orderCodexModelCandidates(catalog, isModelRefused = () => false, level = "balanced") {
|
|
169
313
|
return catalog
|
|
170
314
|
.filter((model) => model.visibility === undefined || model.visibility === "list")
|
|
171
315
|
.filter((model) => !isModelRefused(model.slug))
|
|
172
316
|
.map((model, index) => ({
|
|
173
317
|
slug: model.slug,
|
|
174
|
-
tier: TIER_RANK[classifyCodexModelTier(model.description)],
|
|
318
|
+
tier: TIER_RANK[level][classifyCodexModelTier(model.description)],
|
|
175
319
|
priority: typeof model.priority === "number" ? model.priority : Number.POSITIVE_INFINITY,
|
|
176
320
|
index,
|
|
177
321
|
}))
|
|
@@ -240,14 +384,14 @@ export function parseTopLevelTomlModel(text) {
|
|
|
240
384
|
}
|
|
241
385
|
return undefined;
|
|
242
386
|
}
|
|
243
|
-
function persistedModelPath(dataDir) {
|
|
387
|
+
function persistedModelPath(dataDir, level) {
|
|
244
388
|
if (!dataDir) {
|
|
245
389
|
return undefined;
|
|
246
390
|
}
|
|
247
|
-
return path.join(dataDir,
|
|
391
|
+
return path.join(dataDir, persistedModelFile(level));
|
|
248
392
|
}
|
|
249
|
-
function readPersistedModel(dataDir) {
|
|
250
|
-
const file = persistedModelPath(dataDir);
|
|
393
|
+
function readPersistedModel(dataDir, level) {
|
|
394
|
+
const file = persistedModelPath(dataDir, level);
|
|
251
395
|
if (!file) {
|
|
252
396
|
return undefined;
|
|
253
397
|
}
|
|
@@ -259,8 +403,21 @@ function readPersistedModel(dataDir) {
|
|
|
259
403
|
return undefined;
|
|
260
404
|
}
|
|
261
405
|
}
|
|
262
|
-
|
|
263
|
-
|
|
406
|
+
/** The single pick 1.0.0 saved, before picks were kept per level. */
|
|
407
|
+
function readLegacyPersistedModel(dataDir) {
|
|
408
|
+
if (!dataDir) {
|
|
409
|
+
return undefined;
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
const value = fs.readFileSync(path.join(dataDir, LEGACY_MODEL_FILE), "utf-8").trim();
|
|
413
|
+
return value.length > 0 ? value : undefined;
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
return undefined;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function persistModel(dataDir, level, model) {
|
|
420
|
+
const file = persistedModelPath(dataDir, level);
|
|
264
421
|
if (!file) {
|
|
265
422
|
return;
|
|
266
423
|
}
|
|
@@ -287,13 +444,34 @@ function recordRefusal(model, now) {
|
|
|
287
444
|
const history = readHistory(configuredDataDir);
|
|
288
445
|
history.refused[model] = now.toISOString();
|
|
289
446
|
// Drop refusals past their TTL so the file stays a handful of entries.
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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];
|
|
294
473
|
}
|
|
295
474
|
}
|
|
296
|
-
writeHistory(configuredDataDir, history);
|
|
297
475
|
}
|
|
298
476
|
function recordSwitch(modelSwitch) {
|
|
299
477
|
if (!configuredDataDir)
|
|
@@ -304,21 +482,22 @@ function recordSwitch(modelSwitch) {
|
|
|
304
482
|
}
|
|
305
483
|
function readHistory(dataDir) {
|
|
306
484
|
if (!dataDir)
|
|
307
|
-
return { refused: {} };
|
|
485
|
+
return { refused: {}, busy: {} };
|
|
308
486
|
try {
|
|
309
487
|
const parsed = JSON.parse(fs.readFileSync(path.join(dataDir, MODEL_HISTORY_FILE), "utf-8"));
|
|
310
488
|
const refused = parsed.refused && typeof parsed.refused === "object" ? parsed.refused : {};
|
|
489
|
+
const busy = parsed.busy && typeof parsed.busy === "object" ? parsed.busy : {};
|
|
311
490
|
const last = parsed.last_switch;
|
|
312
491
|
const lastValid = last &&
|
|
313
492
|
typeof last.from === "string" &&
|
|
314
493
|
typeof last.to === "string" &&
|
|
315
494
|
typeof last.at === "string";
|
|
316
495
|
return lastValid
|
|
317
|
-
? { refused, last_switch: { ...last, from_config: last.from_config === true } }
|
|
318
|
-
: { refused };
|
|
496
|
+
? { refused, busy, last_switch: { ...last, from_config: last.from_config === true } }
|
|
497
|
+
: { refused, busy };
|
|
319
498
|
}
|
|
320
499
|
catch {
|
|
321
|
-
return { refused: {} };
|
|
500
|
+
return { refused: {}, busy: {} };
|
|
322
501
|
}
|
|
323
502
|
}
|
|
324
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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"}
|
|
@@ -58,6 +58,13 @@ export declare function runCodexCliJson<T>(options: CodexCliRunOptions): Promise
|
|
|
58
58
|
* still passes here and fails later at extraction time.
|
|
59
59
|
*/
|
|
60
60
|
export declare function isCodexCliAvailable(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Is Codex signed in, as Onadit runs it? `codex login status` reads the
|
|
63
|
+
* sign-in file Onadit copies into its own Codex folder: no model call,
|
|
64
|
+
* nothing sent. Null when unknown: no `codex`, or an answer we cannot read.
|
|
65
|
+
* Used to suggest a capture worker, never to gate one.
|
|
66
|
+
*/
|
|
67
|
+
export declare function codexSignedIn(): Promise<boolean | null>;
|
|
61
68
|
export declare function resetCodexCliRunnerCacheForTests(): void;
|
|
62
69
|
/**
|
|
63
70
|
* Summarise codex output for diagnosis. The old first-500-chars slice captured
|
|
@@ -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
|
}
|
|
@@ -304,6 +312,29 @@ async function runCodexExec(exec, model) {
|
|
|
304
312
|
export function isCodexCliAvailable() {
|
|
305
313
|
return resolveCodexExecutableForTests("codex") !== undefined;
|
|
306
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Is Codex signed in, as Onadit runs it? `codex login status` reads the
|
|
317
|
+
* sign-in file Onadit copies into its own Codex folder: no model call,
|
|
318
|
+
* nothing sent. Null when unknown: no `codex`, or an answer we cannot read.
|
|
319
|
+
* Used to suggest a capture worker, never to gate one.
|
|
320
|
+
*/
|
|
321
|
+
export async function codexSignedIn() {
|
|
322
|
+
if (!isCodexCliAvailable())
|
|
323
|
+
return null;
|
|
324
|
+
try {
|
|
325
|
+
const { stdout, stderr } = await runCodexCommand(["login", "status"], {
|
|
326
|
+
cwd: ensureRuntimeTempDir(),
|
|
327
|
+
timeoutMs: 10_000,
|
|
328
|
+
});
|
|
329
|
+
const text = `${stdout}\n${stderr}`;
|
|
330
|
+
if (/not logged in/i.test(text))
|
|
331
|
+
return false;
|
|
332
|
+
return /logged in/i.test(text) ? true : null;
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
return error instanceof Error && /not logged in/i.test(error.message) ? false : null;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
307
338
|
export function resetCodexCliRunnerCacheForTests() {
|
|
308
339
|
SCHEMA_CACHE.clear();
|
|
309
340
|
codexVersionPromise = null;
|
|
@@ -440,6 +471,13 @@ async function runCodexCommandOnce(args, options) {
|
|
|
440
471
|
reject(new CodexModelRejectedError(model, rejection, code));
|
|
441
472
|
return;
|
|
442
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
|
+
}
|
|
443
481
|
reject(new Error(`Codex CLI failed (exit ${code})${summary
|
|
444
482
|
? ` — ${summary}`
|
|
445
483
|
: stdinError
|