onadit 0.1.0-beta.45 → 1.0.1
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 +6 -5
- 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 +185 -21
- 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 +32 -4
- 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/commands/update.d.ts +1 -1
- package/dist/src/cli/commands/update.d.ts.map +1 -1
- package/dist/src/cli/commands/update.js +23 -20
- package/dist/src/cli/commands/update.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 +32 -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 -0
- package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -1
- package/dist/src/diagnostics/codex-preflight.js +30 -1
- 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 +10 -7
- 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/observability/version-check.d.ts +7 -3
- package/dist/src/observability/version-check.d.ts.map +1 -1
- package/dist/src/observability/version-check.js +5 -5
- package/dist/src/observability/version-check.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 +85 -19
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-model.js +243 -51
- package/dist/src/providers/codex-cli-model.js.map +1 -1
- package/dist/src/providers/codex-cli-runner.d.ts +18 -1
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +206 -22
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/retrieval/context-pack.d.ts.map +1 -1
- package/dist/src/retrieval/context-pack.js +16 -6
- package/dist/src/retrieval/context-pack.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 +15 -1
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +12 -3
- 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
|
@@ -2,35 +2,21 @@ import fs from "node:fs";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* `auth.json` (never the user's `config.toml`), so it does NOT inherit the
|
|
9
|
-
* user's `model = "..."`. Codex then falls back to its own built-in default,
|
|
10
|
-
* which changes between releases — 0.125.0 moved it to `gpt-5.3-codex`, a
|
|
11
|
-
* model ChatGPT-auth plans reject, silently breaking every preflight. The
|
|
12
|
-
* fix: Onadit pins an explicit `--model` on every run and NEVER inherits codex's
|
|
13
|
-
* implicit default. Resolution order:
|
|
14
|
-
* 1. Onadit config (`codex_cli.model`) — operator override, authoritative.
|
|
15
|
-
* 2. Top-level `model` in the source `~/.codex/config.toml` — the user's
|
|
16
|
-
* own proven choice, which the isolated home would otherwise drop.
|
|
17
|
-
* 3. A previously probe-verified model persisted under the data dir.
|
|
18
|
-
* 4. A live probe across known-good candidates; the first that actually
|
|
19
|
-
* runs is persisted (verified, not guessed). If none work, we throw a
|
|
20
|
-
* clear, actionable error instead of looping on codex's bad default.
|
|
5
|
+
* How long a refused model stays skipped. A refusal is usually permanent (a
|
|
6
|
+
* retired model), but a plan change can bring a model back, so it is retried
|
|
7
|
+
* after a week rather than banned forever.
|
|
21
8
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const PERSISTED_MODEL_FILE = path.join(".internal", "codex-model");
|
|
9
|
+
export const REFUSAL_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
10
|
+
/** Probe at most this many catalog models per resolution — each is a real call. */
|
|
11
|
+
const MAX_CATALOG_PROBES = 4;
|
|
12
|
+
// One verified model per level, so changing the level re-picks. The earlier
|
|
13
|
+
// single `.internal/codex-model` file (no level) is only the last resort.
|
|
14
|
+
const persistedModelFile = (level) => path.join(".internal", `codex-model-${level}`);
|
|
15
|
+
const LEGACY_MODEL_FILE = path.join(".internal", "codex-model");
|
|
16
|
+
const MODEL_HISTORY_FILE = path.join(".internal", "codex-model-history.json");
|
|
31
17
|
/**
|
|
32
18
|
* Thrown when no model could be resolved from config/source/persisted state
|
|
33
|
-
* and every
|
|
19
|
+
* and every catalog candidate was refused. Carries the tried candidates so
|
|
34
20
|
* the preflight classifier can render an honest, actionable message.
|
|
35
21
|
*/
|
|
36
22
|
export class CodexModelUnavailableError extends Error {
|
|
@@ -44,11 +30,18 @@ export class CodexModelUnavailableError extends Error {
|
|
|
44
30
|
}
|
|
45
31
|
let configuredModel;
|
|
46
32
|
let configuredDataDir;
|
|
33
|
+
let configuredLevel = "balanced";
|
|
47
34
|
let resolvedModelPromise = null;
|
|
35
|
+
let resolvedModel = null;
|
|
36
|
+
// Set when a refusal invalidates the memoized model; written as the switch
|
|
37
|
+
// record once the next resolution lands on a different model.
|
|
38
|
+
let pendingSwitch = null;
|
|
39
|
+
// Refusals seen by this process — the source of truth when no data dir is set.
|
|
40
|
+
const memoryRefusals = new Map();
|
|
48
41
|
/**
|
|
49
42
|
* Wire the Onadit config's model override + data dir into the resolver. Called
|
|
50
43
|
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
51
|
-
* works via the source `config.toml` → persisted →
|
|
44
|
+
* works via the source `config.toml` → persisted → catalog chain.
|
|
52
45
|
*/
|
|
53
46
|
export function configureCodexModel(opts) {
|
|
54
47
|
if (typeof opts.model === "string" && opts.model.trim().length > 0) {
|
|
@@ -57,57 +50,181 @@ export function configureCodexModel(opts) {
|
|
|
57
50
|
if (typeof opts.dataDir === "string" && opts.dataDir.trim().length > 0) {
|
|
58
51
|
configuredDataDir = opts.dataDir.trim();
|
|
59
52
|
}
|
|
53
|
+
if (opts.level === "fast" || opts.level === "balanced") {
|
|
54
|
+
configuredLevel = opts.level;
|
|
55
|
+
}
|
|
60
56
|
// Re-resolve after (re)configuration so a newly-supplied override wins.
|
|
61
57
|
resolvedModelPromise = null;
|
|
58
|
+
resolvedModel = null;
|
|
62
59
|
}
|
|
63
60
|
export function resetCodexModelCacheForTests() {
|
|
64
61
|
configuredModel = undefined;
|
|
65
62
|
configuredDataDir = undefined;
|
|
63
|
+
configuredLevel = "balanced";
|
|
66
64
|
resolvedModelPromise = null;
|
|
65
|
+
resolvedModel = null;
|
|
66
|
+
pendingSwitch = null;
|
|
67
|
+
memoryRefusals.clear();
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
69
70
|
* Resolve the model to pin on `codex exec`. Memoized for the process so the
|
|
70
|
-
* source-config read / probe happens at most once. `probe`
|
|
71
|
-
* runner (rather than imported) to avoid
|
|
72
|
-
* a
|
|
71
|
+
* source-config read / catalog probe happens at most once per model. `probe`
|
|
72
|
+
* and `listModels` are injected by the runner (rather than imported) to avoid
|
|
73
|
+
* a module cycle. `probe` resolves true when the model runs and false when
|
|
74
|
+
* Codex refuses it; any other failure (auth, network) throws and aborts the
|
|
75
|
+
* resolution, so it surfaces as itself instead of "no working model".
|
|
73
76
|
*/
|
|
74
|
-
export async function resolveCodexModel(probe) {
|
|
77
|
+
export async function resolveCodexModel(probe, listModels = async () => []) {
|
|
75
78
|
if (resolvedModelPromise) {
|
|
76
79
|
return resolvedModelPromise;
|
|
77
80
|
}
|
|
78
81
|
const pending = (async () => {
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
const now = Date.now();
|
|
83
|
+
const usable = (model) => model !== undefined && !isRefused(model, now) ? model : undefined;
|
|
84
|
+
const level = configuredLevel;
|
|
85
|
+
const direct = usable(configuredModel) ??
|
|
86
|
+
usable(readPersistedModel(configuredDataDir, level));
|
|
87
|
+
if (direct) {
|
|
88
|
+
return direct;
|
|
81
89
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
90
|
+
let catalog = [];
|
|
91
|
+
try {
|
|
92
|
+
catalog = await listModels();
|
|
85
93
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
catch {
|
|
95
|
+
// A Codex without `debug models`, or no network: nothing to pick from.
|
|
96
|
+
// The thrown error below then tells the user to set codex_cli.model.
|
|
89
97
|
}
|
|
90
|
-
|
|
98
|
+
const candidates = orderCodexModelCandidates(catalog, (model) => isRefused(model, now), level).slice(0, MAX_CATALOG_PROBES);
|
|
91
99
|
const tried = [];
|
|
92
|
-
for (const candidate of
|
|
100
|
+
for (const candidate of candidates) {
|
|
93
101
|
tried.push(candidate);
|
|
94
102
|
if (await probe(candidate)) {
|
|
95
|
-
persistModel(configuredDataDir, candidate);
|
|
103
|
+
persistModel(configuredDataDir, level, candidate);
|
|
96
104
|
return candidate;
|
|
97
105
|
}
|
|
106
|
+
recordRefusal(candidate, new Date());
|
|
107
|
+
}
|
|
108
|
+
// Nothing from the list ran (or there is no list): the user's own Codex
|
|
109
|
+
// model, used as before without a probe — a refusal later marks it.
|
|
110
|
+
const fromSource = usable(readSourceConfigModel());
|
|
111
|
+
if (fromSource && !tried.includes(fromSource)) {
|
|
112
|
+
return fromSource;
|
|
113
|
+
}
|
|
114
|
+
const legacy = usable(readLegacyPersistedModel(configuredDataDir));
|
|
115
|
+
if (legacy && !tried.includes(legacy)) {
|
|
116
|
+
tried.push(legacy);
|
|
117
|
+
if (await probe(legacy)) {
|
|
118
|
+
persistModel(configuredDataDir, level, legacy);
|
|
119
|
+
return legacy;
|
|
120
|
+
}
|
|
121
|
+
recordRefusal(legacy, new Date());
|
|
98
122
|
}
|
|
99
123
|
throw new CodexModelUnavailableError(tried);
|
|
100
124
|
})();
|
|
101
125
|
resolvedModelPromise = pending;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
126
|
+
pending.then((model) => {
|
|
127
|
+
if (resolvedModelPromise !== pending)
|
|
128
|
+
return;
|
|
129
|
+
resolvedModel = model;
|
|
130
|
+
if (pendingSwitch && pendingSwitch.from !== model) {
|
|
131
|
+
recordSwitch({
|
|
132
|
+
from: pendingSwitch.from,
|
|
133
|
+
to: model,
|
|
134
|
+
at: new Date().toISOString(),
|
|
135
|
+
from_config: configuredModel !== undefined && isRefused(configuredModel, Date.now()),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
pendingSwitch = null;
|
|
139
|
+
}, () => {
|
|
140
|
+
// On failure, clear the cache so a later call (e.g. after the user sets a
|
|
141
|
+
// model or auth recovers) can retry instead of returning the stale rejection.
|
|
105
142
|
if (resolvedModelPromise === pending) {
|
|
106
143
|
resolvedModelPromise = null;
|
|
107
144
|
}
|
|
108
145
|
});
|
|
109
146
|
return pending;
|
|
110
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* The model Codex runs under now, as far as this process knows, for status:
|
|
150
|
+
* the one resolved this run, else the configured or remembered one Codex has
|
|
151
|
+
* not refused. Null before the first pick.
|
|
152
|
+
*/
|
|
153
|
+
export function currentCodexModel() {
|
|
154
|
+
if (resolvedModel)
|
|
155
|
+
return resolvedModel;
|
|
156
|
+
const now = Date.now();
|
|
157
|
+
if (configuredModel && !isRefused(configuredModel, now))
|
|
158
|
+
return configuredModel;
|
|
159
|
+
const persisted = readPersistedModel(configuredDataDir, configuredLevel);
|
|
160
|
+
return persisted && !isRefused(persisted, now) ? persisted : null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Codex refused `model`. Record it (so every resolution skips it) and, when it
|
|
164
|
+
* is the model this process resolved, drop the memo so the next
|
|
165
|
+
* `resolveCodexModel` picks another one. Concurrent callers refused on the same
|
|
166
|
+
* model share that single re-resolution instead of each starting their own.
|
|
167
|
+
*/
|
|
168
|
+
export function markCodexModelRefused(model, now = new Date()) {
|
|
169
|
+
if (!isRefused(model, now.getTime())) {
|
|
170
|
+
recordRefusal(model, now);
|
|
171
|
+
}
|
|
172
|
+
if (resolvedModel === model) {
|
|
173
|
+
pendingSwitch ??= { from: model };
|
|
174
|
+
resolvedModelPromise = null;
|
|
175
|
+
resolvedModel = null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Rough tier from Codex's own description of a model ("Frontier intelligence
|
|
180
|
+
* for the most demanding work", "Latest workhorse model…", "Fast and
|
|
181
|
+
* affordable model…"). Wording can change; a misread only changes which model
|
|
182
|
+
* gets probed first, never whether capture works.
|
|
183
|
+
*/
|
|
184
|
+
export function classifyCodexModelTier(description) {
|
|
185
|
+
const text = (description ?? "").toLowerCase();
|
|
186
|
+
if (/frontier|most demanding|most capable/.test(text))
|
|
187
|
+
return "frontier";
|
|
188
|
+
if (/\bfast\b|affordable|efficient|\bmini\b|lightweight/.test(text))
|
|
189
|
+
return "fast";
|
|
190
|
+
return "balanced";
|
|
191
|
+
}
|
|
192
|
+
// The level's own tier first, then the other of balanced/fast; frontier last
|
|
193
|
+
// — slowest, and it uses the most of the user's plan on every hourly run.
|
|
194
|
+
const TIER_RANK = {
|
|
195
|
+
balanced: { balanced: 0, fast: 1, frontier: 2 },
|
|
196
|
+
fast: { fast: 0, balanced: 1, frontier: 2 },
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Catalog models worth probing, best first: models shown in Codex's picker
|
|
200
|
+
* (`visibility: "list"`), minus refused ones, ordered by tier and then by
|
|
201
|
+
* Codex's own priority (lower = more recommended).
|
|
202
|
+
*/
|
|
203
|
+
export function orderCodexModelCandidates(catalog, isModelRefused = () => false, level = "balanced") {
|
|
204
|
+
return catalog
|
|
205
|
+
.filter((model) => model.visibility === undefined || model.visibility === "list")
|
|
206
|
+
.filter((model) => !isModelRefused(model.slug))
|
|
207
|
+
.map((model, index) => ({
|
|
208
|
+
slug: model.slug,
|
|
209
|
+
tier: TIER_RANK[level][classifyCodexModelTier(model.description)],
|
|
210
|
+
priority: typeof model.priority === "number" ? model.priority : Number.POSITIVE_INFINITY,
|
|
211
|
+
index,
|
|
212
|
+
}))
|
|
213
|
+
.sort((a, b) => a.tier - b.tier || a.priority - b.priority || a.index - b.index)
|
|
214
|
+
.map((model) => model.slug);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The last automatic switch, if it happened within `maxAgeMs` — for status.
|
|
218
|
+
* Reads the data dir directly so the daemon's status route sees switches made
|
|
219
|
+
* by any process (daemon, `onadit capture`, scripted captures).
|
|
220
|
+
*/
|
|
221
|
+
export function readCodexModelSwitch(dataDir, nowMs = Date.now(), maxAgeMs = REFUSAL_TTL_MS) {
|
|
222
|
+
const last = readHistory(dataDir).last_switch;
|
|
223
|
+
if (!last)
|
|
224
|
+
return null;
|
|
225
|
+
const at = Date.parse(last.at);
|
|
226
|
+
return Number.isFinite(at) && nowMs - at < maxAgeMs ? last : null;
|
|
227
|
+
}
|
|
111
228
|
/** The source CODEX_HOME the user actually authenticated, mirroring the runner. */
|
|
112
229
|
function resolveSourceCodexHome() {
|
|
113
230
|
if (typeof process.env["CODEX_HOME"] === "string") {
|
|
@@ -158,14 +275,14 @@ export function parseTopLevelTomlModel(text) {
|
|
|
158
275
|
}
|
|
159
276
|
return undefined;
|
|
160
277
|
}
|
|
161
|
-
function persistedModelPath(dataDir) {
|
|
278
|
+
function persistedModelPath(dataDir, level) {
|
|
162
279
|
if (!dataDir) {
|
|
163
280
|
return undefined;
|
|
164
281
|
}
|
|
165
|
-
return path.join(dataDir,
|
|
282
|
+
return path.join(dataDir, persistedModelFile(level));
|
|
166
283
|
}
|
|
167
|
-
function readPersistedModel(dataDir) {
|
|
168
|
-
const file = persistedModelPath(dataDir);
|
|
284
|
+
function readPersistedModel(dataDir, level) {
|
|
285
|
+
const file = persistedModelPath(dataDir, level);
|
|
169
286
|
if (!file) {
|
|
170
287
|
return undefined;
|
|
171
288
|
}
|
|
@@ -177,8 +294,21 @@ function readPersistedModel(dataDir) {
|
|
|
177
294
|
return undefined;
|
|
178
295
|
}
|
|
179
296
|
}
|
|
180
|
-
|
|
181
|
-
|
|
297
|
+
/** The single pick 1.0.0 saved, before picks were kept per level. */
|
|
298
|
+
function readLegacyPersistedModel(dataDir) {
|
|
299
|
+
if (!dataDir) {
|
|
300
|
+
return undefined;
|
|
301
|
+
}
|
|
302
|
+
try {
|
|
303
|
+
const value = fs.readFileSync(path.join(dataDir, LEGACY_MODEL_FILE), "utf-8").trim();
|
|
304
|
+
return value.length > 0 ? value : undefined;
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function persistModel(dataDir, level, model) {
|
|
311
|
+
const file = persistedModelPath(dataDir, level);
|
|
182
312
|
if (!file) {
|
|
183
313
|
return;
|
|
184
314
|
}
|
|
@@ -191,4 +321,66 @@ function persistModel(dataDir, model) {
|
|
|
191
321
|
// probe re-runs next cold start. Never fail a capture over it.
|
|
192
322
|
}
|
|
193
323
|
}
|
|
324
|
+
function isRefused(model, nowMs) {
|
|
325
|
+
const at = memoryRefusals.get(model) ?? readHistory(configuredDataDir).refused[model];
|
|
326
|
+
if (!at)
|
|
327
|
+
return false;
|
|
328
|
+
const refusedAt = Date.parse(at);
|
|
329
|
+
return Number.isFinite(refusedAt) && nowMs - refusedAt < REFUSAL_TTL_MS;
|
|
330
|
+
}
|
|
331
|
+
function recordRefusal(model, now) {
|
|
332
|
+
memoryRefusals.set(model, now.toISOString());
|
|
333
|
+
if (!configuredDataDir)
|
|
334
|
+
return;
|
|
335
|
+
const history = readHistory(configuredDataDir);
|
|
336
|
+
history.refused[model] = now.toISOString();
|
|
337
|
+
// Drop refusals past their TTL so the file stays a handful of entries.
|
|
338
|
+
for (const [name, at] of Object.entries(history.refused)) {
|
|
339
|
+
const refusedAt = Date.parse(at);
|
|
340
|
+
if (!Number.isFinite(refusedAt) || now.getTime() - refusedAt >= REFUSAL_TTL_MS) {
|
|
341
|
+
delete history.refused[name];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
writeHistory(configuredDataDir, history);
|
|
345
|
+
}
|
|
346
|
+
function recordSwitch(modelSwitch) {
|
|
347
|
+
if (!configuredDataDir)
|
|
348
|
+
return;
|
|
349
|
+
const history = readHistory(configuredDataDir);
|
|
350
|
+
history.last_switch = modelSwitch;
|
|
351
|
+
writeHistory(configuredDataDir, history);
|
|
352
|
+
}
|
|
353
|
+
function readHistory(dataDir) {
|
|
354
|
+
if (!dataDir)
|
|
355
|
+
return { refused: {} };
|
|
356
|
+
try {
|
|
357
|
+
const parsed = JSON.parse(fs.readFileSync(path.join(dataDir, MODEL_HISTORY_FILE), "utf-8"));
|
|
358
|
+
const refused = parsed.refused && typeof parsed.refused === "object" ? parsed.refused : {};
|
|
359
|
+
const last = parsed.last_switch;
|
|
360
|
+
const lastValid = last &&
|
|
361
|
+
typeof last.from === "string" &&
|
|
362
|
+
typeof last.to === "string" &&
|
|
363
|
+
typeof last.at === "string";
|
|
364
|
+
return lastValid
|
|
365
|
+
? { refused, last_switch: { ...last, from_config: last.from_config === true } }
|
|
366
|
+
: { refused };
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
return { refused: {} };
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
function writeHistory(dataDir, history) {
|
|
373
|
+
const file = path.join(dataDir, MODEL_HISTORY_FILE);
|
|
374
|
+
try {
|
|
375
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
376
|
+
// Temp + rename: the daemon and `onadit capture` can write at the same time.
|
|
377
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
378
|
+
fs.writeFileSync(tmp, `${JSON.stringify(history, null, 2)}\n`, "utf-8");
|
|
379
|
+
fs.renameSync(tmp, file);
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
// Best-effort, like the persisted model: the in-memory refusal still holds
|
|
383
|
+
// for this process, and a lost record only costs one refused call later.
|
|
384
|
+
}
|
|
385
|
+
}
|
|
194
386
|
//# sourceMappingURL=codex-cli-model.js.map
|
|
@@ -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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"}
|
|
@@ -38,6 +38,16 @@ export declare class CodexCliTimeoutError extends Error {
|
|
|
38
38
|
readonly signal: NodeJS.Signals | null;
|
|
39
39
|
constructor(timeoutMs: number, signal: NodeJS.Signals | null, detail?: string);
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when Codex exits refusing the pinned model — retired, or not on the
|
|
43
|
+
* account's plan ("The 'gpt-5.5' model is not supported when using Codex with
|
|
44
|
+
* a ChatGPT account."). Found in the FULL output before it is shortened, and
|
|
45
|
+
* named first in the message, so the recorded error always says it.
|
|
46
|
+
*/
|
|
47
|
+
export declare class CodexModelRejectedError extends Error {
|
|
48
|
+
readonly model: string;
|
|
49
|
+
constructor(model: string, reason: string, exitCode: number);
|
|
50
|
+
}
|
|
41
51
|
export declare function runCodexCliJson<T>(options: CodexCliRunOptions): Promise<CodexCliRunResult<T>>;
|
|
42
52
|
/**
|
|
43
53
|
* Cheap, synchronous "is the Codex CLI installed?" probe — resolves the
|
|
@@ -48,6 +58,13 @@ export declare function runCodexCliJson<T>(options: CodexCliRunOptions): Promise
|
|
|
48
58
|
* still passes here and fails later at extraction time.
|
|
49
59
|
*/
|
|
50
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>;
|
|
51
68
|
export declare function resetCodexCliRunnerCacheForTests(): void;
|
|
52
69
|
/**
|
|
53
70
|
* Summarise codex output for diagnosis. The old first-500-chars slice captured
|
|
@@ -56,5 +73,5 @@ export declare function resetCodexCliRunnerCacheForTests(): void;
|
|
|
56
73
|
* salient `ERROR` lines plus the tail. Short outputs are returned whole.
|
|
57
74
|
*/
|
|
58
75
|
export declare function summarizeCodexOutput(stderr: string, stdout: string): string;
|
|
59
|
-
export declare function resolveCodexExecutableForTests(name: string, pathEnv?: string | undefined, fallbackDirs?: readonly string[]): string | undefined;
|
|
76
|
+
export declare function resolveCodexExecutableForTests(name: string, pathEnv?: string | undefined, fallbackDirs?: readonly string[], keepsCodexHome?: (wrapper: string) => boolean): string | undefined;
|
|
60
77
|
//# sourceMappingURL=codex-cli-runner.d.ts.map
|
|
@@ -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":"AAkCA,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;AAsED;;;;;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,CA4C/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;AAiMD;;;;;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"}
|