@resolveio/server-lib 22.1.32 → 22.2.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/collections/ai-terminal-message.collection.js +8 -0
- package/collections/ai-terminal-message.collection.js.map +1 -1
- package/fixtures/cron-jobs.js +21 -12
- package/fixtures/cron-jobs.js.map +1 -1
- package/managers/worker-dispatcher.manager.js +2 -2
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/methods/ai-terminal.d.ts +7 -0
- package/methods/ai-terminal.js +596 -309
- package/methods/ai-terminal.js.map +1 -1
- package/methods/cron-jobs.js +14 -4
- package/methods/cron-jobs.js.map +1 -1
- package/methods/mongo-explorer.js +75 -62
- package/methods/mongo-explorer.js.map +1 -1
- package/methods/report-builder.js +1 -1
- package/methods/report-builder.js.map +1 -1
- package/package.json +1 -1
- package/server-app.js +2 -2
- package/server-app.js.map +1 -1
- package/services/codex-client.js +15 -15
- package/services/codex-client.js.map +1 -1
- package/services/openai-client.js +8 -5
- package/services/openai-client.js.map +1 -1
- package/workers/codex-runner.worker.js +1 -1
- package/workers/codex-runner.worker.js.map +1 -1
package/services/codex-client.js
CHANGED
|
@@ -110,7 +110,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
110
110
|
this.modelUnavailableTtlMs = this.resolveModelUnavailableTtlMs();
|
|
111
111
|
this.config = config;
|
|
112
112
|
if (!this.config.apiKey) {
|
|
113
|
-
throw new Error('
|
|
113
|
+
throw new Error('AI API key is required for AI client');
|
|
114
114
|
}
|
|
115
115
|
this.defaultThreadOptions = this.resolveDefaultThreadOptions();
|
|
116
116
|
}
|
|
@@ -281,10 +281,10 @@ var CodexClient = /** @class */ (function () {
|
|
|
281
281
|
case 11:
|
|
282
282
|
_h.sent();
|
|
283
283
|
if ((event_1 === null || event_1 === void 0 ? void 0 : event_1.type) === 'turn.failed') {
|
|
284
|
-
throw new Error(((_f = event_1.error) === null || _f === void 0 ? void 0 : _f.message) || '
|
|
284
|
+
throw new Error(((_f = event_1.error) === null || _f === void 0 ? void 0 : _f.message) || 'AI run failed.');
|
|
285
285
|
}
|
|
286
286
|
if ((event_1 === null || event_1 === void 0 ? void 0 : event_1.type) === 'error') {
|
|
287
|
-
throw new Error(event_1.message || '
|
|
287
|
+
throw new Error(event_1.message || 'AI stream error.');
|
|
288
288
|
}
|
|
289
289
|
_h.label = 12;
|
|
290
290
|
case 12:
|
|
@@ -312,7 +312,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
312
312
|
error_3 = _h.sent();
|
|
313
313
|
if ((_g = controller === null || controller === void 0 ? void 0 : controller.signal) === null || _g === void 0 ? void 0 : _g.aborted) {
|
|
314
314
|
this.log("runStreamed timed out (durationMs=".concat(Date.now() - startedAt, ")"));
|
|
315
|
-
throw new Error('
|
|
315
|
+
throw new Error('AI request timed out.');
|
|
316
316
|
}
|
|
317
317
|
message = error_3 instanceof Error ? error_3.message : String(error_3 || 'Unknown error');
|
|
318
318
|
this.log("runStreamed failed (durationMs=".concat(Date.now() - startedAt, "): ").concat(message));
|
|
@@ -324,7 +324,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
324
324
|
return [7 /*endfinally*/];
|
|
325
325
|
case 23:
|
|
326
326
|
if (!finalResponse) {
|
|
327
|
-
throw new Error('
|
|
327
|
+
throw new Error('AI returned no completion content.');
|
|
328
328
|
}
|
|
329
329
|
this.log("runStreamed complete (contentLength=".concat(finalResponse.length, ", durationMs=").concat(Date.now() - startedAt, ")"));
|
|
330
330
|
return [2 /*return*/, finalResponse.trim()];
|
|
@@ -355,7 +355,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
355
355
|
result = _b.sent();
|
|
356
356
|
content = this.extractContent(result);
|
|
357
357
|
if (!content) {
|
|
358
|
-
throw new Error('
|
|
358
|
+
throw new Error('AI returned no completion content.');
|
|
359
359
|
}
|
|
360
360
|
this.log("runOnce complete (contentLength=".concat(content.length, ", durationMs=").concat(Date.now() - startedAt, ")"));
|
|
361
361
|
return [2 /*return*/, content];
|
|
@@ -664,7 +664,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
664
664
|
if (!!done) return [3 /*break*/, 4];
|
|
665
665
|
elapsed = Date.now() - startedAt;
|
|
666
666
|
if (elapsed >= timeoutMs) {
|
|
667
|
-
throw new Error('
|
|
667
|
+
throw new Error('AI request timed out.');
|
|
668
668
|
}
|
|
669
669
|
remaining = timeoutMs - elapsed;
|
|
670
670
|
return [4 /*yield*/, (0, promises_1.setTimeout)(Math.min(heartbeatMs, remaining))];
|
|
@@ -676,7 +676,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
676
676
|
case 3:
|
|
677
677
|
currentElapsed = Date.now() - startedAt;
|
|
678
678
|
if (currentElapsed >= timeoutMs) {
|
|
679
|
-
throw new Error('
|
|
679
|
+
throw new Error('AI request timed out.');
|
|
680
680
|
}
|
|
681
681
|
currentRemaining = Math.max(0, timeoutMs - currentElapsed);
|
|
682
682
|
this.log("runOnce waiting (elapsedMs=".concat(currentElapsed, ", remainingMs=").concat(currentRemaining, ")"));
|
|
@@ -731,7 +731,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
731
731
|
}
|
|
732
732
|
push(primary);
|
|
733
733
|
fallbackModels.forEach(push);
|
|
734
|
-
if (!fallbackModels.length
|
|
734
|
+
if (!fallbackModels.length) {
|
|
735
735
|
push(CodexClient.DEFAULT_FALLBACK_MODEL);
|
|
736
736
|
}
|
|
737
737
|
if (!sequence.length) {
|
|
@@ -802,7 +802,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
802
802
|
};
|
|
803
803
|
CodexClient.prototype.isRetryableError = function (error) {
|
|
804
804
|
var message = error instanceof Error ? error.message : String(error || '');
|
|
805
|
-
if (/Codex returned no completion content/i.test(message)) {
|
|
805
|
+
if (/AI returned no completion content|Codex returned no completion content/i.test(message)) {
|
|
806
806
|
return true;
|
|
807
807
|
}
|
|
808
808
|
if (this.isCodexEnvironmentError(error)) {
|
|
@@ -1051,16 +1051,16 @@ var CodexClient = /** @class */ (function () {
|
|
|
1051
1051
|
return __generator(this, function (_b) {
|
|
1052
1052
|
switch (_b.label) {
|
|
1053
1053
|
case 0:
|
|
1054
|
-
this.log('Loading
|
|
1054
|
+
this.log('Loading AI SDK module...');
|
|
1055
1055
|
importer = new Function('specifier', 'return import(specifier)');
|
|
1056
1056
|
return [4 /*yield*/, importer('@openai/codex-sdk')];
|
|
1057
1057
|
case 1:
|
|
1058
1058
|
mod = _b.sent();
|
|
1059
1059
|
CodexCtor = (mod === null || mod === void 0 ? void 0 : mod.Codex) || ((_a = mod === null || mod === void 0 ? void 0 : mod.default) === null || _a === void 0 ? void 0 : _a.Codex) || (mod === null || mod === void 0 ? void 0 : mod.default) || mod;
|
|
1060
1060
|
if (!CodexCtor) {
|
|
1061
|
-
throw new Error('
|
|
1061
|
+
throw new Error('AI SDK export not found.');
|
|
1062
1062
|
}
|
|
1063
|
-
this.log('
|
|
1063
|
+
this.log('AI SDK module loaded.');
|
|
1064
1064
|
return [4 /*yield*/, this.buildCodexEnv()];
|
|
1065
1065
|
case 2:
|
|
1066
1066
|
env = _b.sent();
|
|
@@ -1070,7 +1070,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
1070
1070
|
model: this.config.model,
|
|
1071
1071
|
env: env
|
|
1072
1072
|
});
|
|
1073
|
-
this.log('
|
|
1073
|
+
this.log('AI client initialized.');
|
|
1074
1074
|
return [2 /*return*/];
|
|
1075
1075
|
}
|
|
1076
1076
|
});
|
|
@@ -1087,7 +1087,7 @@ var CodexClient = /** @class */ (function () {
|
|
|
1087
1087
|
if (!this.debugEnabled) {
|
|
1088
1088
|
return;
|
|
1089
1089
|
}
|
|
1090
|
-
console.log("[AI-Dashboard][
|
|
1090
|
+
console.log("[AI-Dashboard][AI] ".concat(message));
|
|
1091
1091
|
};
|
|
1092
1092
|
CodexClient.prototype.resolveDefaultTimeoutMs = function () {
|
|
1093
1093
|
var raw = Number(process.env.AI_DASHBOARD_CODEX_TIMEOUT_MS || process.env.AI_DASHBOARD_AGENT_TIMEOUT_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/codex-client.ts"],"names":[],"mappings":"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","file":"codex-client.js","sourcesContent":["import { promises as fs } from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { setTimeout as sleepTimeout } from 'timers/promises';\nexport interface CodexConfig {\n\tapiKey?: string;\n\tbaseUrl?: string;\n\tmodel?: string;\n\tfallbackModel?: string;\n\tfallbackModels?: string[];\n\tmaxRetries?: number;\n\tretryDelayMs?: number;\n}\n\n/* eslint-disable no-unused-vars -- Function type params are required for clarity. */\ntype StreamEventHandler = (event: any) => void | Promise<void>;\ntype StreamTextHandler = (delta: string, fullText: string) => void | Promise<void>;\ntype AgentMessageHandler = (text: string) => void | Promise<void>;\ntype DynamicImport = (specifier: string) => Promise<any>;\n/* eslint-enable no-unused-vars */\n\ntype CodexModelFallbackPreference = {\n\tfallbackModel: string;\n\texpiresAt: number;\n\tupdatedAt: number;\n};\n\nexport interface CodexRunOptions {\n\ttimeoutMs?: number;\n\tthreadOptions?: CodexThreadOptions;\n\tthreadKey?: string;\n\treuseThread?: boolean;\n\tfallbackModels?: string[];\n\tonStreamEvent?: StreamEventHandler;\n\tonStreamText?: StreamTextHandler;\n}\n\nexport type CodexThreadOptions = {\n\tmodel?: string;\n\tsandboxMode?: 'read-only' | 'workspace-write' | 'danger-full-access';\n\tworkingDirectory?: string;\n\tskipGitRepoCheck?: boolean;\n\tmodelReasoningEffort?: 'minimal' | 'none' | 'low' | 'medium' | 'high' | 'xhigh';\n\tnetworkAccessEnabled?: boolean;\n\twebSearchMode?: 'disabled' | 'cached' | 'live';\n\twebSearchEnabled?: boolean;\n\tapprovalPolicy?: 'never' | 'on-request' | 'on-failure' | 'untrusted';\n\tadditionalDirectories?: string[];\n};\n\nexport class CodexClient {\n\tprivate static readonly PING_PROMPT = \"Say 'pong'\";\n\tprivate static readonly DEFAULT_FALLBACK_MODEL = 'gpt-5.2-codex';\n\tprivate static readonly MODEL_UNAVAILABLE_FALLBACK_FILE = path.join(os.tmpdir(), 'resolveio-codex-model-fallbacks.json');\n\tprivate static readonly DEFAULT_MODEL_UNAVAILABLE_TTL_MS = 6 * 60 * 60 * 1000;\n\tprivate static readonly MIN_MODEL_UNAVAILABLE_TTL_MS = 60 * 1000;\n\tprivate static readonly modelFallbackPreferences = new Map<string, CodexModelFallbackPreference>();\n\tprivate static modelFallbackPreferencesLoaded = false;\n\tprivate static modelFallbackPreferencesLoadPromise: Promise<void> | null = null;\n\tprivate codex: any | null = null;\n\tprivate codexInit: Promise<void> | null = null;\n\tprivate readonly threadCache = new Map<string, { thread: any; optionsKey: string; modelKey: string }>();\n\tprivate readonly debugEnabled = (process.env.AI_DASHBOARD_DEBUG || '').trim().toLowerCase() === 'true';\n\tprivate readonly streamEnabled = this.resolveStreamEnabled();\n\tprivate readonly cleanZdotdirEnabled = this.resolveCleanZdotdirEnabled();\n\tprivate zDotDir: string | null = null;\n\tprivate readonly defaultTimeoutMs = this.resolveDefaultTimeoutMs();\n\tprivate readonly pingEnabled = this.resolvePingEnabled();\n\tprivate readonly pingTimeoutMs = this.resolvePingTimeoutMs();\n\tprivate readonly modelUnavailableTtlMs = this.resolveModelUnavailableTtlMs();\n\tprivate readonly config: CodexConfig;\n\tprivate readonly defaultThreadOptions: CodexThreadOptions;\n\n\tconstructor(config: CodexConfig) {\n\t\tthis.config = config;\n\t\tif (!this.config.apiKey) {\n\t\t\tthrow new Error('OPENAI_API_KEY is required for CodexClient');\n\t\t}\n\t\tthis.defaultThreadOptions = this.resolveDefaultThreadOptions();\n\t}\n\n\tasync run(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tawait this.ensureModelFallbackPreferencesLoaded();\n\t\tconst maxRetries = this.normalizeRetryCount(this.config.maxRetries);\n\t\tconst retryDelayMs = this.normalizeRetryDelay(this.config.retryDelayMs);\n\t\tlet lastError: unknown = null;\n\t\tconst modelSequence = this.resolveModelSequence(options);\n\t\tfor (let modelIndex = 0; modelIndex < modelSequence.length; modelIndex += 1) {\n\t\t\tconst model = modelSequence[modelIndex];\n\t\t\tconst nextModel = modelSequence[modelIndex + 1];\n\t\t\tconst modelOptions = this.applyModelOverride(options, model);\n\t\t\tlet attempt = 0;\n\t\t\twhile (attempt <= maxRetries) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.log(`run model=${model || this.config.model || 'default'} attempt ${attempt + 1}/${maxRetries + 1}`);\n\t\t\t\t\tif (this.pingEnabled && !this.isPingPrompt(prompt)) {\n\t\t\t\t\t\tawait this.runPing(modelOptions?.threadOptions);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.streamEnabled && !this.isPingPrompt(prompt)) {\n\t\t\t\t\t\tconst result = await this.runStreamedOnce(prompt, modelOptions);\n\t\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tconst result = await this.runOnce(prompt, modelOptions);\n\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tlastError = error;\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\tthis.log(`run model=${model || this.config.model || 'default'} attempt ${attempt + 1} failed: ${message}`);\n\t\t\t\t\t\tif (nextModel && this.isModelAvailabilityError(error)) {\n\t\t\t\t\t\t\tawait this.rememberModelFallbackPreference(model, nextModel);\n\t\t\t\t\t\t\tthis.log(`model unavailable; retrying with fallback model ${nextModel}`);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.isCodexEnvironmentError(error)) {\n\t\t\t\t\t\t\tthis.recoverCodexEnvironment(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (attempt >= maxRetries || !this.isRetryableError(error)) {\n\t\t\t\t\t\t\tthrow lastError;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst delay = retryDelayMs * Math.pow(2, attempt);\n\t\t\t\t\t\tawait this.sleep(delay);\n\t\t\t\t\tattempt += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError;\n\t}\n\n\tprivate async runStreamedOnce(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tconst startedAt = Date.now();\n\t\tthis.log(`runStreamed start (promptLength=${prompt.length})`);\n\t\tconst thread = await this.startThread(options?.threadOptions, options?.threadKey, options?.reuseThread);\n\t\tconst timeoutMs = options?.timeoutMs ?? this.defaultTimeoutMs;\n\t\tconst controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n\t\tconst timeoutId = controller\n\t\t\t? setTimeout(() => controller.abort(), timeoutMs)\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\ttry {\n\t\t\tconst { events } = await thread.runStreamed(prompt, controller ? { signal: controller.signal } : undefined);\n\t\t\tfor await (const event of events) {\n\t\t\t\tif (options?.onStreamEvent) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait options.onStreamEvent(event);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\tthis.log(`onStreamEvent failed: ${message}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait this.handleStreamEvent(event, async (text: string) => {\n\t\t\t\t\tconst next = text || '';\n\t\t\t\t\tif (!next) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst delta = next.startsWith(lastText) ? next.slice(lastText.length) : next;\n\t\t\t\t\tif (delta) {\n\t\t\t\t\t\tthis.logStreamText(delta);\n\t\t\t\t\t\tif (options?.onStreamText) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait options.onStreamText(delta, next);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\t\t\tthis.log(`onStreamText failed: ${message}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastText = next;\n\t\t\t\t\tfinalResponse = next;\n\t\t\t\t});\n\t\t\t\tif (event?.type === 'turn.failed') {\n\t\t\t\t\tthrow new Error(event.error?.message || 'Codex turn failed.');\n\t\t\t\t}\n\t\t\t\tif (event?.type === 'error') {\n\t\t\t\t\tthrow new Error(event.message || 'Codex stream error.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (controller?.signal?.aborted) {\n\t\t\t\tthis.log(`runStreamed timed out (durationMs=${Date.now() - startedAt})`);\n\t\t\t\tthrow new Error('Codex request timed out.');\n\t\t\t}\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runStreamed failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t\tfinally {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t\tif (!finalResponse) {\n\t\t\tthrow new Error('Codex returned no completion content.');\n\t\t}\n\t\tthis.log(`runStreamed complete (contentLength=${finalResponse.length}, durationMs=${Date.now() - startedAt})`);\n\t\treturn finalResponse.trim();\n\t}\n\n\tprivate async runOnce(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tconst startedAt = Date.now();\n\t\tthis.log(`runOnce start (promptLength=${prompt.length})`);\n\t\ttry {\n\t\t\tconst thread = await this.startThread(options?.threadOptions, options?.threadKey, options?.reuseThread);\n\t\t\tconst runPromise = thread.run(prompt);\n\t\t\tconst timeoutMs = options?.timeoutMs ?? this.defaultTimeoutMs;\n\t\t\tthis.log(`runOnce awaiting result (timeoutMs=${timeoutMs})`);\n\t\t\tconst result = await this.withTimeout(runPromise, timeoutMs);\n\t\t\tconst content = this.extractContent(result);\n\t\t\tif (!content) {\n\t\t\t\tthrow new Error('Codex returned no completion content.');\n\t\t\t}\n\t\t\tthis.log(`runOnce complete (contentLength=${content.length}, durationMs=${Date.now() - startedAt})`);\n\t\t\treturn content;\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runOnce failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async startThread(threadOptions?: CodexThreadOptions, threadKey?: string, reuseThread = true): Promise<any> {\n\t\tawait this.ensureCodex();\n\t\tconst mergedOptions = this.mergeThreadOptions(threadOptions);\n\t\tconst optionsKey = this.buildThreadOptionsKey(mergedOptions);\n\t\tconst effectiveModel = mergedOptions?.model || this.config.model || 'default';\n\t\tconst modelKey = this.normalizeOptionalString(effectiveModel).toLowerCase() || 'default';\n\t\tconst cacheKey = this.buildThreadCacheKey(threadKey, mergedOptions);\n\t\tconst explicitThreadKey = (threadKey || '').trim();\n\t\tconst hasExplicitThreadKey = explicitThreadKey.length > 0;\n\t\tif (reuseThread && cacheKey) {\n\t\t\tconst existing = this.threadCache.get(cacheKey);\n\t\t\tif (existing) {\n\t\t\t\tconst sameOptions = existing.optionsKey === optionsKey;\n\t\t\t\tconst sameModel = existing.modelKey === modelKey;\n\t\t\t\tif (sameOptions || (hasExplicitThreadKey && sameModel)) {\n\t\t\t\t\tif (hasExplicitThreadKey && existing.optionsKey !== optionsKey) {\n\t\t\t\t\t\tthis.log(`startThread reuse explicit key (${cacheKey}) despite option change`);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.log(`startThread reuse (${cacheKey})`);\n\t\t\t\t\t}\n\t\t\t\t\treturn existing.thread;\n\t\t\t\t}\n\t\t\t\tif (hasExplicitThreadKey && !sameModel) {\n\t\t\t\t\tthis.log(`startThread explicit key (${cacheKey}) model changed (${existing.modelKey} -> ${modelKey}); creating new thread`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.log(`startThread (model=${effectiveModel})`);\n\t\tif (mergedOptions?.model) {\n\t\t\tthis.log(`startThread options: ${this.formatThreadOptions(mergedOptions)}`);\n\t\t\tconst thread = this.codex.startThread(mergedOptions);\n\t\t\tthis.log('startThread created with model override');\n\t\t\tif (cacheKey) {\n\t\t\t\tthis.threadCache.set(cacheKey, { thread, optionsKey, modelKey });\n\t\t\t}\n\t\t\treturn thread;\n\t\t}\n\t\tif (mergedOptions && Object.keys(mergedOptions).length) {\n\t\t\tthis.log(`startThread options: ${this.formatThreadOptions(mergedOptions)}`);\n\t\t}\n\t\tconst thread = this.codex.startThread(mergedOptions);\n\t\tthis.log('startThread created');\n\t\tif (cacheKey) {\n\t\t\tthis.threadCache.set(cacheKey, { thread, optionsKey, modelKey });\n\t\t}\n\t\treturn thread;\n\t}\n\n\tprivate extractContent(result: any): string {\n\t\tif (!result) {\n\t\t\treturn '';\n\t\t}\n\t\tif (typeof result.finalResponse === 'string') {\n\t\t\treturn result.finalResponse.trim();\n\t\t}\n\t\tif (typeof result === 'string') {\n\t\t\treturn result.trim();\n\t\t}\n\t\tif (Array.isArray(result.items)) {\n\t\t\tconst lastMessage = [...result.items].reverse().find((item: any) => item?.type === 'agent_message' && typeof item.text === 'string');\n\t\t\tif (lastMessage?.text) {\n\t\t\t\treturn lastMessage.text.trim();\n\t\t\t}\n\t\t}\n\t\tif (typeof result.output_text === 'string') {\n\t\t\treturn result.output_text.trim();\n\t\t}\n\t\tif (typeof result.outputText === 'string') {\n\t\t\treturn result.outputText.trim();\n\t\t}\n\t\tif (typeof result.content === 'string') {\n\t\t\treturn result.content.trim();\n\t\t}\n\t\tif (typeof result.text === 'string') {\n\t\t\treturn result.text.trim();\n\t\t}\n\t\tif (Array.isArray(result.content)) {\n\t\t\tconst text = result.content\n\t\t\t\t.map((part: any) => this.extractPartText(part))\n\t\t\t\t.join('')\n\t\t\t\t.trim();\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(result.output)) {\n\t\t\tconst text = result.output\n\t\t\t\t.map((item: any) => {\n\t\t\t\t\tif (!item) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item === 'string') {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item.text === 'string') {\n\t\t\t\t\t\treturn item.text;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item.content === 'string') {\n\t\t\t\t\t\treturn item.content;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(item.content)) {\n\t\t\t\t\t\treturn item.content.map((part: any) => this.extractPartText(part)).join('');\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.trim();\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t}\n\n\tprivate async handleStreamEvent(event: any, onAgentMessage: AgentMessageHandler): Promise<void> {\n\t\tif (!event || !event.type) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (event.type) {\n\t\t\tcase 'thread.started':\n\t\t\t\tthis.log(`stream thread.started (id=${event.thread_id || 'unknown'})`);\n\t\t\t\tbreak;\n\t\t\tcase 'turn.started':\n\t\t\t\tthis.log('stream turn.started');\n\t\t\t\tbreak;\n\t\t\tcase 'turn.completed':\n\t\t\t\tthis.log('stream turn.completed');\n\t\t\t\tbreak;\n\t\t\tcase 'item.started':\n\t\t\tcase 'item.updated':\n\t\t\tcase 'item.completed':\n\t\t\t\tawait this.handleStreamItem(event.item, onAgentMessage);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate async handleStreamItem(item: any, onAgentMessage: AgentMessageHandler): Promise<void> {\n\t\tif (!item || !item.type) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (item.type) {\n\t\t\tcase 'agent_message':\n\t\t\t\tawait onAgentMessage(item.text || '');\n\t\t\t\tbreak;\n\t\t\tcase 'command_execution':\n\t\t\t\tif (item.command) {\n\t\t\t\t\tthis.log(`stream command: ${item.command} (${item.status || 'unknown'})`);\n\t\t\t\t}\n\t\t\t\tif (item.aggregated_output) {\n\t\t\t\t\tconst output = item.aggregated_output.length > 800\n\t\t\t\t\t\t? `${item.aggregated_output.slice(0, 800)}...`\n\t\t\t\t\t\t: item.aggregated_output;\n\t\t\t\t\tthis.log(`stream command output: ${output}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'file_change':\n\t\t\t\tif (Array.isArray(item.changes) && item.changes.length) {\n\t\t\t\t\tconst summary = item.changes.map((change: any) => `${change.kind}:${change.path}`).join(', ');\n\t\t\t\t\tthis.log(`stream file_change (${item.status || 'unknown'}): ${summary}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'mcp_tool_call':\n\t\t\t\tif (item.tool) {\n\t\t\t\t\tthis.log(`stream tool_call: ${item.tool} (${item.status || 'unknown'})`);\n\t\t\t\t}\n\t\t\t\tif (item.error?.message) {\n\t\t\t\t\tthis.log(`stream tool_call error: ${item.error.message}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'web_search':\n\t\t\t\tif (item.query) {\n\t\t\t\t\tthis.log(`stream web_search: ${item.query}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'todo_list':\n\t\t\t\tif (Array.isArray(item.items)) {\n\t\t\t\t\tconst total = item.items.length;\n\t\t\t\t\tconst done = item.items.filter((entry: any) => entry?.completed).length;\n\t\t\t\t\tthis.log(`stream todo_list: ${done}/${total} completed`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'reasoning':\n\t\t\t\tif (item.text) {\n\t\t\t\t\tconst snippet = item.text.length > 200 ? `${item.text.slice(0, 200)}...` : item.text;\n\t\t\t\t\tthis.log(`stream reasoning: ${snippet}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\tif (item.message) {\n\t\t\t\t\tthis.log(`stream error: ${item.message}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate logStreamText(text: string): void {\n\t\tif (!this.debugEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst lines = text.split(/\\r?\\n/);\n\t\tfor (const line of lines) {\n\t\t\tthis.log(`stream: ${line}`);\n\t\t}\n\t}\n\n\tprivate extractPartText(part: any): string {\n\t\tif (!part) {\n\t\t\treturn '';\n\t\t}\n\t\tif (typeof part === 'string') {\n\t\t\treturn part;\n\t\t}\n\t\tif (typeof part.text === 'string') {\n\t\t\treturn part.text;\n\t\t}\n\t\tif (typeof part.content === 'string') {\n\t\t\treturn part.content;\n\t\t}\n\t\treturn '';\n\t}\n\n\tprivate async withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T> {\n\t\tlet done = false;\n\t\tconst startedAt = Date.now();\n\t\tconst heartbeatMs = Math.max(10000, Math.min(30000, Math.floor(timeoutMs / 4)));\n\t\tconst timeoutPromise = (async (): Promise<T> => {\n\t\t\twhile (!done) {\n\t\t\t\tconst elapsed = Date.now() - startedAt;\n\t\t\t\tif (elapsed >= timeoutMs) {\n\t\t\t\t\tthrow new Error('Codex request timed out.');\n\t\t\t\t}\n\t\t\t\tconst remaining = timeoutMs - elapsed;\n\t\t\t\tawait sleepTimeout(Math.min(heartbeatMs, remaining));\n\t\t\t\tif (done) {\n\t\t\t\t\treturn await promise;\n\t\t\t\t}\n\t\t\t\tconst currentElapsed = Date.now() - startedAt;\n\t\t\t\tif (currentElapsed >= timeoutMs) {\n\t\t\t\t\tthrow new Error('Codex request timed out.');\n\t\t\t\t}\n\t\t\t\tconst currentRemaining = Math.max(0, timeoutMs - currentElapsed);\n\t\t\t\tthis.log(`runOnce waiting (elapsedMs=${currentElapsed}, remainingMs=${currentRemaining})`);\n\t\t\t}\n\t\t\treturn await promise;\n\t\t})();\n\t\ttry {\n\t\t\treturn await Promise.race([promise, timeoutPromise]);\n\t\t}\n\t\tfinally {\n\t\t\tdone = true;\n\t\t}\n\t}\n\n\tprivate normalizeRetryCount(value?: number): number {\n\t\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\t\treturn 2;\n\t\t}\n\t\treturn Math.max(0, Math.floor(value));\n\t}\n\n\tprivate normalizeRetryDelay(value?: number): number {\n\t\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\t\treturn 500;\n\t\t}\n\t\treturn Math.max(100, Math.floor(value));\n\t}\n\n\tprivate resolveModelSequence(options?: CodexRunOptions): string[] {\n\t\tconst primary = this.normalizeOptionalString(options?.threadOptions?.model || this.config.model);\n\t\tconst fallbackModels = this.collectFallbackModels(options?.fallbackModels);\n\t\tconst sequence: string[] = [];\n\t\tconst push = (value: any) => {\n\t\t\tconst normalized = this.normalizeOptionalString(value);\n\t\t\tif (!normalized || sequence.includes(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsequence.push(normalized);\n\t\t};\n\t\tconst preferredFallback = this.getModelFallbackPreference(primary);\n\t\tif (preferredFallback) {\n\t\t\tpush(preferredFallback);\n\t\t\tthis.log(`sticky model fallback active: ${primary} -> ${preferredFallback}`);\n\t\t}\n\t\tpush(primary);\n\t\tfallbackModels.forEach(push);\n\t\tif (!fallbackModels.length && primary.toLowerCase().includes('codex')) {\n\t\t\tpush(CodexClient.DEFAULT_FALLBACK_MODEL);\n\t\t}\n\t\tif (!sequence.length) {\n\t\t\tsequence.push('');\n\t\t}\n\t\treturn sequence;\n\t}\n\n\tprivate collectFallbackModels(runFallbackModels?: string[]): string[] {\n\t\tconst models: string[] = [];\n\t\tconst push = (value: any) => {\n\t\t\tconst normalized = this.normalizeOptionalString(value);\n\t\t\tif (!normalized || models.includes(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmodels.push(normalized);\n\t\t};\n\t\tthis.normalizeModelList(runFallbackModels).forEach(push);\n\t\tthis.normalizeModelList(this.config.fallbackModels).forEach(push);\n\t\tpush(this.config.fallbackModel);\n\t\tthis.normalizeModelList(process.env.AI_ASSISTANT_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_ASSISTANT_CODEX_FALLBACK_MODEL);\n\t\tthis.normalizeModelList(process.env.AI_TERMINAL_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_TERMINAL_CODEX_FALLBACK_MODEL);\n\t\tthis.normalizeModelList(process.env.AI_DASHBOARD_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_DASHBOARD_CODEX_FALLBACK_MODEL);\n\t\treturn models;\n\t}\n\n\tprivate normalizeModelList(value: any): string[] {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.map(entry => this.normalizeOptionalString(entry))\n\t\t\t\t.filter(Boolean);\n\t\t}\n\t\tconst raw = this.normalizeOptionalString(value);\n\t\tif (!raw) {\n\t\t\treturn [];\n\t\t}\n\t\treturn raw\n\t\t\t.split(',')\n\t\t\t.map(entry => this.normalizeOptionalString(entry))\n\t\t\t.filter(Boolean);\n\t}\n\n\tprivate applyModelOverride(options: CodexRunOptions | undefined, model: string): CodexRunOptions {\n\t\tconst nextThreadOptions: CodexThreadOptions = {\n\t\t\t...(options?.threadOptions || {})\n\t\t};\n\t\tif (model) {\n\t\t\tnextThreadOptions.model = model;\n\t\t}\n\t\telse {\n\t\t\tdelete nextThreadOptions.model;\n\t\t}\n\t\treturn {\n\t\t\t...(options || {}),\n\t\t\tthreadOptions: nextThreadOptions\n\t\t};\n\t}\n\n\tprivate isModelAvailabilityError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\tconst normalized = message.toLowerCase();\n\t\tif (!normalized.includes('model')) {\n\t\t\treturn false;\n\t\t}\n\t\tif (/does not exist|not found|unknown model|invalid model|unsupported model|model_not_found|no such model/.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (/not available|unavailable|not enabled|not allowed|do not have access|don't have access|insufficient permissions/.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /404/.test(normalized) && /model/.test(normalized);\n\t}\n\n\tprivate isRetryableError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\tif (/Codex returned no completion content/i.test(message)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this.isCodexEnvironmentError(error)) {\n\t\t\treturn true;\n\t\t}\n\t\tconst statusMatch = message.match(/\\\\b(429|5\\\\d{2})\\\\b/);\n\t\tif (statusMatch) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /ECONNRESET|ETIMEDOUT|EAI_AGAIN|ENOTFOUND|fetch failed|timed out|timeout/i.test(message);\n\t}\n\n\tprivate isCodexEnvironmentError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\treturn /error finding codex home|could not update path: no such file or directory/i.test(message);\n\t}\n\n\tprivate recoverCodexEnvironment(error: unknown): void {\n\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\tthis.log(`recovering codex environment after error: ${message}`);\n\t\tthis.threadCache.clear();\n\t\tthis.codex = null;\n\t\tthis.codexInit = null;\n\t\tthis.zDotDir = null;\n\t}\n\n\tprivate normalizeOptionalString(value: any): string {\n\t\treturn typeof value === 'string' ? value.trim() : '';\n\t}\n\n\tprivate resolveModelUnavailableTtlMs(): number {\n\t\tconst raw = Number(\n\t\t\tprocess.env.AI_DASHBOARD_CODEX_MODEL_UNAVAILABLE_TTL_MS\n\t\t\t|| process.env.AI_ASSISTANT_CODEX_MODEL_UNAVAILABLE_TTL_MS\n\t\t);\n\t\tif (Number.isFinite(raw) && raw >= CodexClient.MIN_MODEL_UNAVAILABLE_TTL_MS) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn CodexClient.DEFAULT_MODEL_UNAVAILABLE_TTL_MS;\n\t}\n\n\tprivate async ensureModelFallbackPreferencesLoaded(): Promise<void> {\n\t\tif (CodexClient.modelFallbackPreferencesLoaded) {\n\t\t\tthis.pruneModelFallbackPreferences();\n\t\t\treturn;\n\t\t}\n\t\tif (CodexClient.modelFallbackPreferencesLoadPromise !== null) {\n\t\t\tawait CodexClient.modelFallbackPreferencesLoadPromise;\n\t\t\tthis.pruneModelFallbackPreferences();\n\t\t\treturn;\n\t\t}\n\t\tCodexClient.modelFallbackPreferencesLoadPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tconst raw = await fs.readFile(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE, 'utf8');\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tObject.entries(parsed).forEach(([model, entry]) => {\n\t\t\t\t\tconst key = this.normalizeOptionalString(model);\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst fallbackModel = this.normalizeOptionalString((entry as any)?.fallbackModel);\n\t\t\t\t\tconst expiresAt = Number((entry as any)?.expiresAt);\n\t\t\t\t\tconst updatedAt = Number((entry as any)?.updatedAt);\n\t\t\t\t\tif (!fallbackModel || !Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tCodexClient.modelFallbackPreferences.set(key, {\n\t\t\t\t\t\tfallbackModel,\n\t\t\t\t\t\texpiresAt: Math.floor(expiresAt),\n\t\t\t\t\t\tupdatedAt: Number.isFinite(updatedAt) ? Math.floor(updatedAt) : Date.now()\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore cache load errors.\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tCodexClient.modelFallbackPreferencesLoaded = true;\n\t\t\t\tCodexClient.modelFallbackPreferencesLoadPromise = null;\n\t\t\t}\n\t\t})();\n\t\tawait CodexClient.modelFallbackPreferencesLoadPromise;\n\t\tthis.pruneModelFallbackPreferences();\n\t}\n\n\tprivate pruneModelFallbackPreferences(now = Date.now()): void {\n\t\tArray.from(CodexClient.modelFallbackPreferences.entries()).forEach(([model, entry]) => {\n\t\t\tif (!entry || !Number.isFinite(entry.expiresAt) || entry.expiresAt <= now) {\n\t\t\t\tCodexClient.modelFallbackPreferences.delete(model);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getModelFallbackPreference(model: string): string {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tif (!normalizedModel) {\n\t\t\treturn '';\n\t\t}\n\t\tthis.pruneModelFallbackPreferences();\n\t\tconst entry = CodexClient.modelFallbackPreferences.get(normalizedModel);\n\t\tif (!entry || entry.expiresAt <= Date.now()) {\n\t\t\tif (entry) {\n\t\t\t\tCodexClient.modelFallbackPreferences.delete(normalizedModel);\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t\treturn entry.fallbackModel;\n\t}\n\n\tprivate async rememberModelFallbackPreference(model: string, fallbackModel: string): Promise<void> {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tconst normalizedFallback = this.normalizeOptionalString(fallbackModel);\n\t\tif (!normalizedModel || !normalizedFallback || normalizedModel === normalizedFallback) {\n\t\t\treturn;\n\t\t}\n\t\tconst now = Date.now();\n\t\tCodexClient.modelFallbackPreferences.set(normalizedModel, {\n\t\t\tfallbackModel: normalizedFallback,\n\t\t\texpiresAt: now + this.modelUnavailableTtlMs,\n\t\t\tupdatedAt: now\n\t\t});\n\t\tthis.pruneModelFallbackPreferences(now);\n\t\tawait this.persistModelFallbackPreferences();\n\t}\n\n\tprivate async clearModelFallbackPreference(model: string): Promise<void> {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tif (!normalizedModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (!CodexClient.modelFallbackPreferences.has(normalizedModel)) {\n\t\t\treturn;\n\t\t}\n\t\tCodexClient.modelFallbackPreferences.delete(normalizedModel);\n\t\tawait this.persistModelFallbackPreferences();\n\t}\n\n\tprivate async persistModelFallbackPreferences(): Promise<void> {\n\t\tthis.pruneModelFallbackPreferences();\n\t\tif (!CodexClient.modelFallbackPreferences.size) {\n\t\t\ttry {\n\t\t\t\tawait fs.unlink(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore file cleanup errors.\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst serialized: Record<string, CodexModelFallbackPreference> = {};\n\t\tCodexClient.modelFallbackPreferences.forEach((entry, model) => {\n\t\t\tserialized[model] = entry;\n\t\t});\n\t\ttry {\n\t\t\tawait fs.writeFile(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE, JSON.stringify(serialized), 'utf8');\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore cache persistence errors.\n\t\t}\n\t}\n\n\tprivate async sleep(ms: number): Promise<void> {\n\t\tawait sleepTimeout(ms);\n\t}\n\n\tprivate async ensureCodex(): Promise<void> {\n\t\tif (this.codex) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.codexInit !== null) {\n\t\t\tawait this.codexInit;\n\t\t\treturn;\n\t\t}\n\t\tthis.codexInit = (async () => {\n\t\t\tthis.log('Loading Codex SDK module...');\n\t\t\tconst importer = new Function('specifier', 'return import(specifier)') as DynamicImport;\n\t\t\tconst mod = await importer('@openai/codex-sdk');\n\t\t\tconst CodexCtor = mod?.Codex || mod?.default?.Codex || mod?.default || mod;\n\t\t\tif (!CodexCtor) {\n\t\t\t\tthrow new Error('Codex SDK export not found.');\n\t\t\t}\n\t\t\tthis.log('Codex SDK module loaded.');\n\t\t\tconst env = await this.buildCodexEnv();\n\t\t\tthis.codex = new CodexCtor({\n\t\t\t\tapiKey: this.config.apiKey,\n\t\t\t\tbaseUrl: this.config.baseUrl,\n\t\t\t\tmodel: this.config.model,\n\t\t\t\tenv\n\t\t\t});\n\t\t\tthis.log('Codex client initialized.');\n\t\t})();\n\t\tawait this.codexInit;\n\t}\n\n\tprivate log(message: string): void {\n\t\tif (!this.debugEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(`[AI-Dashboard][Codex] ${message}`);\n\t}\n\n\tprivate resolveDefaultTimeoutMs(): number {\n\t\tconst raw = Number(process.env.AI_DASHBOARD_CODEX_TIMEOUT_MS || process.env.AI_DASHBOARD_AGENT_TIMEOUT_MS);\n\t\tif (Number.isFinite(raw) && raw > 0) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn 600000;\n\t}\n\n\tprivate resolveStreamEnabled(): boolean {\n\t\tconst raw = (process.env.AI_DASHBOARD_CODEX_STREAM || '').trim().toLowerCase();\n\t\tif (!raw) {\n\t\t\treturn this.debugEnabled;\n\t\t}\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(raw)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(raw)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.debugEnabled;\n\t}\n\n\tprivate resolveCleanZdotdirEnabled(): boolean {\n\t\tconst raw = (process.env.AI_DASHBOARD_CODEX_CLEAN_ZDOTDIR ?? '').trim().toLowerCase();\n\t\tif (!raw) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(raw)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(raw)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async buildCodexEnv(): Promise<Record<string, string>> {\n\t\tconst env: Record<string, string> = {};\n\t\tfor (const [key, value] of Object.entries(process.env)) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tenv[key] = value;\n\t\t\t}\n\t\t}\n\t\tif (!this.normalizeOptionalString(env.HOME)) {\n\t\t\tconst fallbackHome = this.normalizeOptionalString(process.env.HOME || os.homedir());\n\t\t\tif (fallbackHome) {\n\t\t\t\tenv.HOME = fallbackHome;\n\t\t\t}\n\t\t}\n\t\tawait this.ensureCodexHome(env);\n\t\tif (this.cleanZdotdirEnabled) {\n\t\t\tenv.ZDOTDIR = await this.ensureZdotdir();\n\t\t}\n\t\treturn env;\n\t}\n\n\tprivate async ensureCodexHome(env: Record<string, string>): Promise<void> {\n\t\tconst current = this.normalizeOptionalString(env.CODEX_HOME || process.env.CODEX_HOME);\n\t\tconst homeRoot = this.normalizeOptionalString(env.HOME || process.env.HOME || os.homedir());\n\t\tconst primary = current || (homeRoot ? path.join(homeRoot, '.codex') : path.join(os.tmpdir(), 'resolveio-codex-home'));\n\t\ttry {\n\t\t\tawait fs.mkdir(path.join(primary, 'sessions'), { recursive: true });\n\t\t\tenv.CODEX_HOME = primary;\n\t\t\tprocess.env.CODEX_HOME = primary;\n\t\t\treturn;\n\t\t}\n\t\tcatch {\n\t\t\tconst fallback = path.join(os.tmpdir(), 'resolveio-codex-home');\n\t\t\tawait fs.mkdir(path.join(fallback, 'sessions'), { recursive: true });\n\t\t\tenv.CODEX_HOME = fallback;\n\t\t\tprocess.env.CODEX_HOME = fallback;\n\t\t}\n\t}\n\n\tprivate async ensureZdotdir(): Promise<string> {\n\t\tif (this.zDotDir) {\n\t\t\treturn this.zDotDir;\n\t\t}\n\t\tconst override = (process.env.AI_DASHBOARD_CODEX_ZDOTDIR || '').trim();\n\t\tconst dir = override || path.join(os.tmpdir(), 'codex-zdotdir');\n\t\tawait fs.mkdir(dir, { recursive: true });\n\t\tawait Promise.allSettled([\n\t\t\tfs.writeFile(path.join(dir, '.zshrc'), '', { flag: 'a' }),\n\t\t\tfs.writeFile(path.join(dir, '.zprofile'), '', { flag: 'a' })\n\t\t]);\n\t\tthis.zDotDir = dir;\n\t\treturn dir;\n\t}\n\n\tprivate resolvePingEnabled(): boolean {\n\t\treturn this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_PING, false);\n\t}\n\n\tprivate resolvePingTimeoutMs(): number {\n\t\tconst raw = Number(process.env.AI_DASHBOARD_CODEX_PING_TIMEOUT_MS);\n\t\tif (Number.isFinite(raw) && raw > 0) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn 10000;\n\t}\n\n\tprivate resolveDefaultThreadOptions(): CodexThreadOptions {\n\t\tconst approvalPolicy = this.normalizeApprovalPolicy(process.env.AI_DASHBOARD_CODEX_APPROVAL_POLICY);\n\t\tconst sandboxMode = this.normalizeSandboxMode(process.env.AI_DASHBOARD_CODEX_SANDBOX_MODE, 'workspace-write');\n\t\tconst skipGitRepoCheck = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_SKIP_GIT_CHECK, true);\n\t\tconst webSearchMode = this.normalizeWebSearchMode(process.env.AI_DASHBOARD_CODEX_WEB_SEARCH_MODE);\n\t\tconst webSearchEnabled = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_WEB_SEARCH_ENABLED, false);\n\t\tconst networkAccessEnabled = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_NETWORK_ACCESS_ENABLED, false);\n\t\tconst modelReasoningEffort = this.normalizeModelReasoningEffort(process.env.AI_DASHBOARD_CODEX_REASONING_EFFORT);\n\t\treturn {\n\t\t\tmodel: this.config.model,\n\t\t\tapprovalPolicy,\n\t\t\tsandboxMode,\n\t\t\tskipGitRepoCheck,\n\t\t\twebSearchMode,\n\t\t\twebSearchEnabled,\n\t\t\tnetworkAccessEnabled,\n\t\t\tmodelReasoningEffort\n\t\t};\n\t}\n\n\tprivate mergeThreadOptions(overrides?: CodexThreadOptions): CodexThreadOptions | undefined {\n\t\tconst merged: CodexThreadOptions = {\n\t\t\t...this.defaultThreadOptions,\n\t\t\t...(overrides || {})\n\t\t};\n\t\tconst effectiveModel = this.normalizeOptionalString(merged.model || this.config.model);\n\t\tconst normalizedEffort = this.normalizeModelReasoningEffortForModel(effectiveModel, merged.modelReasoningEffort);\n\t\tif (normalizedEffort && normalizedEffort !== merged.modelReasoningEffort) {\n\t\t\tthis.log(`normalized reasoning effort for model=${effectiveModel || 'default'}: ${merged.modelReasoningEffort} -> ${normalizedEffort}`);\n\t\t\tmerged.modelReasoningEffort = normalizedEffort;\n\t\t}\n\t\tconst cleaned = Object.entries(merged).reduce((acc, [key, value]) => {\n\t\t\tif (value === undefined || value === null || value === '') {\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t(acc as any)[key] = value;\n\t\t\treturn acc;\n\t\t}, {} as CodexThreadOptions);\n\t\treturn Object.keys(cleaned).length ? cleaned : undefined;\n\t}\n\n\tprivate normalizeApprovalPolicy(value?: string): CodexThreadOptions['approvalPolicy'] {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'never' || normalized === 'on-request' || normalized === 'on-failure' || normalized === 'untrusted') {\n\t\t\treturn normalized as CodexThreadOptions['approvalPolicy'];\n\t\t}\n\t\treturn 'never';\n\t}\n\n\tprivate normalizeSandboxMode(value?: string, fallback: CodexThreadOptions['sandboxMode'] = 'read-only'): CodexThreadOptions['sandboxMode'] {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'read-only' || normalized === 'workspace-write' || normalized === 'danger-full-access') {\n\t\t\treturn normalized as CodexThreadOptions['sandboxMode'];\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate normalizeWebSearchMode(value?: string): CodexThreadOptions['webSearchMode'] | undefined {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'disabled' || normalized === 'cached' || normalized === 'live') {\n\t\t\treturn normalized as CodexThreadOptions['webSearchMode'];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate normalizeModelReasoningEffort(value?: string): CodexThreadOptions['modelReasoningEffort'] | undefined {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'minimal' || normalized === 'none' || normalized === 'low' || normalized === 'medium' || normalized === 'high' || normalized === 'xhigh') {\n\t\t\treturn normalized as CodexThreadOptions['modelReasoningEffort'];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate normalizeModelReasoningEffortForModel(\n\t\tmodel: string,\n\t\teffort?: CodexThreadOptions['modelReasoningEffort']\n\t): CodexThreadOptions['modelReasoningEffort'] | undefined {\n\t\tif (!effort) {\n\t\t\treturn effort;\n\t\t}\n\t\tconst normalizedModel = this.normalizeOptionalString(model).toLowerCase();\n\t\tif (effort === 'minimal' && (!normalizedModel || normalizedModel.startsWith('gpt-5') || normalizedModel.includes('codex'))) {\n\t\t\treturn 'low';\n\t\t}\n\t\treturn effort;\n\t}\n\n\tprivate normalizeBoolean(value: string | undefined, fallback: boolean): boolean {\n\t\tif (!value) {\n\t\t\treturn fallback;\n\t\t}\n\t\tconst normalized = value.trim().toLowerCase();\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate formatThreadOptions(options: CodexThreadOptions): string {\n\t\tconst summary: Record<string, string> = {};\n\t\tObject.entries(options).forEach(([key, value]) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsummary[key] = String(value);\n\t\t});\n\t\treturn JSON.stringify(summary);\n\t}\n\n\tprivate buildThreadOptionsKey(options?: CodexThreadOptions): string {\n\t\tif (!options) {\n\t\t\treturn '';\n\t\t}\n\t\tconst ordered: Record<string, string> = {};\n\t\tObject.keys(options)\n\t\t\t.sort()\n\t\t\t.forEach((key) => {\n\t\t\t\tconst value = (options as Record<string, unknown>)[key];\n\t\t\t\tif (value === undefined || value === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tordered[key] = Array.isArray(value) ? JSON.stringify(value) : String(value);\n\t\t\t});\n\t\treturn JSON.stringify(ordered);\n\t}\n\n\tprivate buildThreadCacheKey(threadKey: string | undefined, options?: CodexThreadOptions): string | null {\n\t\tif (threadKey) {\n\t\t\treturn `thread:${threadKey}`;\n\t\t}\n\t\tconst model = options?.model || this.config.model;\n\t\tconst workingDirectory = options?.workingDirectory;\n\t\tif (!model && !workingDirectory) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `thread:auto:${model || 'default'}:${workingDirectory || 'root'}`;\n\t}\n\n\tprivate isPingPrompt(prompt: string): boolean {\n\t\treturn prompt.trim() === CodexClient.PING_PROMPT;\n\t}\n\n\tprivate async runPing(threadOptions?: CodexThreadOptions): Promise<void> {\n\t\tthis.log(`runPing start (timeoutMs=${this.pingTimeoutMs})`);\n\t\ttry {\n\t\t\tconst content = await this.runOnce(CodexClient.PING_PROMPT, {\n\t\t\t\ttimeoutMs: this.pingTimeoutMs,\n\t\t\t\tthreadOptions,\n\t\t\t\treuseThread: false\n\t\t\t});\n\t\t\tconst trimmed = content.trim();\n\t\t\tconst preview = trimmed.length > 80 ? `${trimmed.slice(0, 80)}…` : trimmed;\n\t\t\tthis.log(`runPing response: ${preview}`);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runPing failed: ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/services/codex-client.ts"],"names":[],"mappings":"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","file":"codex-client.js","sourcesContent":["import { promises as fs } from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { setTimeout as sleepTimeout } from 'timers/promises';\nexport interface CodexConfig {\n\tapiKey?: string;\n\tbaseUrl?: string;\n\tmodel?: string;\n\tfallbackModel?: string;\n\tfallbackModels?: string[];\n\tmaxRetries?: number;\n\tretryDelayMs?: number;\n}\n\n/* eslint-disable no-unused-vars -- Function type params are required for clarity. */\ntype StreamEventHandler = (event: any) => void | Promise<void>;\ntype StreamTextHandler = (delta: string, fullText: string) => void | Promise<void>;\ntype AgentMessageHandler = (text: string) => void | Promise<void>;\ntype DynamicImport = (specifier: string) => Promise<any>;\n/* eslint-enable no-unused-vars */\n\ntype CodexModelFallbackPreference = {\n\tfallbackModel: string;\n\texpiresAt: number;\n\tupdatedAt: number;\n};\n\nexport interface CodexRunOptions {\n\ttimeoutMs?: number;\n\tthreadOptions?: CodexThreadOptions;\n\tthreadKey?: string;\n\treuseThread?: boolean;\n\tfallbackModels?: string[];\n\tonStreamEvent?: StreamEventHandler;\n\tonStreamText?: StreamTextHandler;\n}\n\nexport type CodexThreadOptions = {\n\tmodel?: string;\n\tsandboxMode?: 'read-only' | 'workspace-write' | 'danger-full-access';\n\tworkingDirectory?: string;\n\tskipGitRepoCheck?: boolean;\n\tmodelReasoningEffort?: 'minimal' | 'none' | 'low' | 'medium' | 'high' | 'xhigh';\n\tnetworkAccessEnabled?: boolean;\n\twebSearchMode?: 'disabled' | 'cached' | 'live';\n\twebSearchEnabled?: boolean;\n\tapprovalPolicy?: 'never' | 'on-request' | 'on-failure' | 'untrusted';\n\tadditionalDirectories?: string[];\n};\n\nexport class CodexClient {\n\tprivate static readonly PING_PROMPT = \"Say 'pong'\";\n\tprivate static readonly DEFAULT_FALLBACK_MODEL = 'gpt-5.2-codex';\n\tprivate static readonly MODEL_UNAVAILABLE_FALLBACK_FILE = path.join(os.tmpdir(), 'resolveio-codex-model-fallbacks.json');\n\tprivate static readonly DEFAULT_MODEL_UNAVAILABLE_TTL_MS = 6 * 60 * 60 * 1000;\n\tprivate static readonly MIN_MODEL_UNAVAILABLE_TTL_MS = 60 * 1000;\n\tprivate static readonly modelFallbackPreferences = new Map<string, CodexModelFallbackPreference>();\n\tprivate static modelFallbackPreferencesLoaded = false;\n\tprivate static modelFallbackPreferencesLoadPromise: Promise<void> | null = null;\n\tprivate codex: any | null = null;\n\tprivate codexInit: Promise<void> | null = null;\n\tprivate readonly threadCache = new Map<string, { thread: any; optionsKey: string; modelKey: string }>();\n\tprivate readonly debugEnabled = (process.env.AI_DASHBOARD_DEBUG || '').trim().toLowerCase() === 'true';\n\tprivate readonly streamEnabled = this.resolveStreamEnabled();\n\tprivate readonly cleanZdotdirEnabled = this.resolveCleanZdotdirEnabled();\n\tprivate zDotDir: string | null = null;\n\tprivate readonly defaultTimeoutMs = this.resolveDefaultTimeoutMs();\n\tprivate readonly pingEnabled = this.resolvePingEnabled();\n\tprivate readonly pingTimeoutMs = this.resolvePingTimeoutMs();\n\tprivate readonly modelUnavailableTtlMs = this.resolveModelUnavailableTtlMs();\n\tprivate readonly config: CodexConfig;\n\tprivate readonly defaultThreadOptions: CodexThreadOptions;\n\n\tconstructor(config: CodexConfig) {\n\t\tthis.config = config;\n\t\tif (!this.config.apiKey) {\n\t\t\tthrow new Error('AI API key is required for AI client');\n\t\t}\n\t\tthis.defaultThreadOptions = this.resolveDefaultThreadOptions();\n\t}\n\n\tasync run(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tawait this.ensureModelFallbackPreferencesLoaded();\n\t\tconst maxRetries = this.normalizeRetryCount(this.config.maxRetries);\n\t\tconst retryDelayMs = this.normalizeRetryDelay(this.config.retryDelayMs);\n\t\tlet lastError: unknown = null;\n\t\tconst modelSequence = this.resolveModelSequence(options);\n\t\tfor (let modelIndex = 0; modelIndex < modelSequence.length; modelIndex += 1) {\n\t\t\tconst model = modelSequence[modelIndex];\n\t\t\tconst nextModel = modelSequence[modelIndex + 1];\n\t\t\tconst modelOptions = this.applyModelOverride(options, model);\n\t\t\tlet attempt = 0;\n\t\t\twhile (attempt <= maxRetries) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.log(`run model=${model || this.config.model || 'default'} attempt ${attempt + 1}/${maxRetries + 1}`);\n\t\t\t\t\tif (this.pingEnabled && !this.isPingPrompt(prompt)) {\n\t\t\t\t\t\tawait this.runPing(modelOptions?.threadOptions);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.streamEnabled && !this.isPingPrompt(prompt)) {\n\t\t\t\t\t\tconst result = await this.runStreamedOnce(prompt, modelOptions);\n\t\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tconst result = await this.runOnce(prompt, modelOptions);\n\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tlastError = error;\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\tthis.log(`run model=${model || this.config.model || 'default'} attempt ${attempt + 1} failed: ${message}`);\n\t\t\t\t\t\tif (nextModel && this.isModelAvailabilityError(error)) {\n\t\t\t\t\t\t\tawait this.rememberModelFallbackPreference(model, nextModel);\n\t\t\t\t\t\t\tthis.log(`model unavailable; retrying with fallback model ${nextModel}`);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.isCodexEnvironmentError(error)) {\n\t\t\t\t\t\t\tthis.recoverCodexEnvironment(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (attempt >= maxRetries || !this.isRetryableError(error)) {\n\t\t\t\t\t\t\tthrow lastError;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst delay = retryDelayMs * Math.pow(2, attempt);\n\t\t\t\t\t\tawait this.sleep(delay);\n\t\t\t\t\tattempt += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError;\n\t}\n\n\tprivate async runStreamedOnce(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tconst startedAt = Date.now();\n\t\tthis.log(`runStreamed start (promptLength=${prompt.length})`);\n\t\tconst thread = await this.startThread(options?.threadOptions, options?.threadKey, options?.reuseThread);\n\t\tconst timeoutMs = options?.timeoutMs ?? this.defaultTimeoutMs;\n\t\tconst controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n\t\tconst timeoutId = controller\n\t\t\t? setTimeout(() => controller.abort(), timeoutMs)\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\ttry {\n\t\t\tconst { events } = await thread.runStreamed(prompt, controller ? { signal: controller.signal } : undefined);\n\t\t\tfor await (const event of events) {\n\t\t\t\tif (options?.onStreamEvent) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait options.onStreamEvent(event);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\tthis.log(`onStreamEvent failed: ${message}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait this.handleStreamEvent(event, async (text: string) => {\n\t\t\t\t\tconst next = text || '';\n\t\t\t\t\tif (!next) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst delta = next.startsWith(lastText) ? next.slice(lastText.length) : next;\n\t\t\t\t\tif (delta) {\n\t\t\t\t\t\tthis.logStreamText(delta);\n\t\t\t\t\t\tif (options?.onStreamText) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait options.onStreamText(delta, next);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\t\t\t\t\tthis.log(`onStreamText failed: ${message}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastText = next;\n\t\t\t\t\tfinalResponse = next;\n\t\t\t\t});\n\t\t\t\tif (event?.type === 'turn.failed') {\n\t\t\t\t\tthrow new Error(event.error?.message || 'AI run failed.');\n\t\t\t\t}\n\t\t\t\tif (event?.type === 'error') {\n\t\t\t\t\tthrow new Error(event.message || 'AI stream error.');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (controller?.signal?.aborted) {\n\t\t\t\tthis.log(`runStreamed timed out (durationMs=${Date.now() - startedAt})`);\n\t\t\t\tthrow new Error('AI request timed out.');\n\t\t\t}\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runStreamed failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t\tfinally {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t\tif (!finalResponse) {\n\t\t\tthrow new Error('AI returned no completion content.');\n\t\t}\n\t\tthis.log(`runStreamed complete (contentLength=${finalResponse.length}, durationMs=${Date.now() - startedAt})`);\n\t\treturn finalResponse.trim();\n\t}\n\n\tprivate async runOnce(prompt: string, options?: CodexRunOptions): Promise<string> {\n\t\tconst startedAt = Date.now();\n\t\tthis.log(`runOnce start (promptLength=${prompt.length})`);\n\t\ttry {\n\t\t\tconst thread = await this.startThread(options?.threadOptions, options?.threadKey, options?.reuseThread);\n\t\t\tconst runPromise = thread.run(prompt);\n\t\t\tconst timeoutMs = options?.timeoutMs ?? this.defaultTimeoutMs;\n\t\t\tthis.log(`runOnce awaiting result (timeoutMs=${timeoutMs})`);\n\t\t\tconst result = await this.withTimeout(runPromise, timeoutMs);\n\t\t\tconst content = this.extractContent(result);\n\t\t\tif (!content) {\n\t\t\t\tthrow new Error('AI returned no completion content.');\n\t\t\t}\n\t\t\tthis.log(`runOnce complete (contentLength=${content.length}, durationMs=${Date.now() - startedAt})`);\n\t\t\treturn content;\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runOnce failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async startThread(threadOptions?: CodexThreadOptions, threadKey?: string, reuseThread = true): Promise<any> {\n\t\tawait this.ensureCodex();\n\t\tconst mergedOptions = this.mergeThreadOptions(threadOptions);\n\t\tconst optionsKey = this.buildThreadOptionsKey(mergedOptions);\n\t\tconst effectiveModel = mergedOptions?.model || this.config.model || 'default';\n\t\tconst modelKey = this.normalizeOptionalString(effectiveModel).toLowerCase() || 'default';\n\t\tconst cacheKey = this.buildThreadCacheKey(threadKey, mergedOptions);\n\t\tconst explicitThreadKey = (threadKey || '').trim();\n\t\tconst hasExplicitThreadKey = explicitThreadKey.length > 0;\n\t\tif (reuseThread && cacheKey) {\n\t\t\tconst existing = this.threadCache.get(cacheKey);\n\t\t\tif (existing) {\n\t\t\t\tconst sameOptions = existing.optionsKey === optionsKey;\n\t\t\t\tconst sameModel = existing.modelKey === modelKey;\n\t\t\t\tif (sameOptions || (hasExplicitThreadKey && sameModel)) {\n\t\t\t\t\tif (hasExplicitThreadKey && existing.optionsKey !== optionsKey) {\n\t\t\t\t\t\tthis.log(`startThread reuse explicit key (${cacheKey}) despite option change`);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.log(`startThread reuse (${cacheKey})`);\n\t\t\t\t\t}\n\t\t\t\t\treturn existing.thread;\n\t\t\t\t}\n\t\t\t\tif (hasExplicitThreadKey && !sameModel) {\n\t\t\t\t\tthis.log(`startThread explicit key (${cacheKey}) model changed (${existing.modelKey} -> ${modelKey}); creating new thread`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.log(`startThread (model=${effectiveModel})`);\n\t\tif (mergedOptions?.model) {\n\t\t\tthis.log(`startThread options: ${this.formatThreadOptions(mergedOptions)}`);\n\t\t\tconst thread = this.codex.startThread(mergedOptions);\n\t\t\tthis.log('startThread created with model override');\n\t\t\tif (cacheKey) {\n\t\t\t\tthis.threadCache.set(cacheKey, { thread, optionsKey, modelKey });\n\t\t\t}\n\t\t\treturn thread;\n\t\t}\n\t\tif (mergedOptions && Object.keys(mergedOptions).length) {\n\t\t\tthis.log(`startThread options: ${this.formatThreadOptions(mergedOptions)}`);\n\t\t}\n\t\tconst thread = this.codex.startThread(mergedOptions);\n\t\tthis.log('startThread created');\n\t\tif (cacheKey) {\n\t\t\tthis.threadCache.set(cacheKey, { thread, optionsKey, modelKey });\n\t\t}\n\t\treturn thread;\n\t}\n\n\tprivate extractContent(result: any): string {\n\t\tif (!result) {\n\t\t\treturn '';\n\t\t}\n\t\tif (typeof result.finalResponse === 'string') {\n\t\t\treturn result.finalResponse.trim();\n\t\t}\n\t\tif (typeof result === 'string') {\n\t\t\treturn result.trim();\n\t\t}\n\t\tif (Array.isArray(result.items)) {\n\t\t\tconst lastMessage = [...result.items].reverse().find((item: any) => item?.type === 'agent_message' && typeof item.text === 'string');\n\t\t\tif (lastMessage?.text) {\n\t\t\t\treturn lastMessage.text.trim();\n\t\t\t}\n\t\t}\n\t\tif (typeof result.output_text === 'string') {\n\t\t\treturn result.output_text.trim();\n\t\t}\n\t\tif (typeof result.outputText === 'string') {\n\t\t\treturn result.outputText.trim();\n\t\t}\n\t\tif (typeof result.content === 'string') {\n\t\t\treturn result.content.trim();\n\t\t}\n\t\tif (typeof result.text === 'string') {\n\t\t\treturn result.text.trim();\n\t\t}\n\t\tif (Array.isArray(result.content)) {\n\t\t\tconst text = result.content\n\t\t\t\t.map((part: any) => this.extractPartText(part))\n\t\t\t\t.join('')\n\t\t\t\t.trim();\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(result.output)) {\n\t\t\tconst text = result.output\n\t\t\t\t.map((item: any) => {\n\t\t\t\t\tif (!item) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item === 'string') {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item.text === 'string') {\n\t\t\t\t\t\treturn item.text;\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof item.content === 'string') {\n\t\t\t\t\t\treturn item.content;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(item.content)) {\n\t\t\t\t\t\treturn item.content.map((part: any) => this.extractPartText(part)).join('');\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.trim();\n\t\t\tif (text) {\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t}\n\n\tprivate async handleStreamEvent(event: any, onAgentMessage: AgentMessageHandler): Promise<void> {\n\t\tif (!event || !event.type) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (event.type) {\n\t\t\tcase 'thread.started':\n\t\t\t\tthis.log(`stream thread.started (id=${event.thread_id || 'unknown'})`);\n\t\t\t\tbreak;\n\t\t\tcase 'turn.started':\n\t\t\t\tthis.log('stream turn.started');\n\t\t\t\tbreak;\n\t\t\tcase 'turn.completed':\n\t\t\t\tthis.log('stream turn.completed');\n\t\t\t\tbreak;\n\t\t\tcase 'item.started':\n\t\t\tcase 'item.updated':\n\t\t\tcase 'item.completed':\n\t\t\t\tawait this.handleStreamItem(event.item, onAgentMessage);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate async handleStreamItem(item: any, onAgentMessage: AgentMessageHandler): Promise<void> {\n\t\tif (!item || !item.type) {\n\t\t\treturn;\n\t\t}\n\t\tswitch (item.type) {\n\t\t\tcase 'agent_message':\n\t\t\t\tawait onAgentMessage(item.text || '');\n\t\t\t\tbreak;\n\t\t\tcase 'command_execution':\n\t\t\t\tif (item.command) {\n\t\t\t\t\tthis.log(`stream command: ${item.command} (${item.status || 'unknown'})`);\n\t\t\t\t}\n\t\t\t\tif (item.aggregated_output) {\n\t\t\t\t\tconst output = item.aggregated_output.length > 800\n\t\t\t\t\t\t? `${item.aggregated_output.slice(0, 800)}...`\n\t\t\t\t\t\t: item.aggregated_output;\n\t\t\t\t\tthis.log(`stream command output: ${output}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'file_change':\n\t\t\t\tif (Array.isArray(item.changes) && item.changes.length) {\n\t\t\t\t\tconst summary = item.changes.map((change: any) => `${change.kind}:${change.path}`).join(', ');\n\t\t\t\t\tthis.log(`stream file_change (${item.status || 'unknown'}): ${summary}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'mcp_tool_call':\n\t\t\t\tif (item.tool) {\n\t\t\t\t\tthis.log(`stream tool_call: ${item.tool} (${item.status || 'unknown'})`);\n\t\t\t\t}\n\t\t\t\tif (item.error?.message) {\n\t\t\t\t\tthis.log(`stream tool_call error: ${item.error.message}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'web_search':\n\t\t\t\tif (item.query) {\n\t\t\t\t\tthis.log(`stream web_search: ${item.query}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'todo_list':\n\t\t\t\tif (Array.isArray(item.items)) {\n\t\t\t\t\tconst total = item.items.length;\n\t\t\t\t\tconst done = item.items.filter((entry: any) => entry?.completed).length;\n\t\t\t\t\tthis.log(`stream todo_list: ${done}/${total} completed`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'reasoning':\n\t\t\t\tif (item.text) {\n\t\t\t\t\tconst snippet = item.text.length > 200 ? `${item.text.slice(0, 200)}...` : item.text;\n\t\t\t\t\tthis.log(`stream reasoning: ${snippet}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\tif (item.message) {\n\t\t\t\t\tthis.log(`stream error: ${item.message}`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate logStreamText(text: string): void {\n\t\tif (!this.debugEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst lines = text.split(/\\r?\\n/);\n\t\tfor (const line of lines) {\n\t\t\tthis.log(`stream: ${line}`);\n\t\t}\n\t}\n\n\tprivate extractPartText(part: any): string {\n\t\tif (!part) {\n\t\t\treturn '';\n\t\t}\n\t\tif (typeof part === 'string') {\n\t\t\treturn part;\n\t\t}\n\t\tif (typeof part.text === 'string') {\n\t\t\treturn part.text;\n\t\t}\n\t\tif (typeof part.content === 'string') {\n\t\t\treturn part.content;\n\t\t}\n\t\treturn '';\n\t}\n\n\tprivate async withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T> {\n\t\tlet done = false;\n\t\tconst startedAt = Date.now();\n\t\tconst heartbeatMs = Math.max(10000, Math.min(30000, Math.floor(timeoutMs / 4)));\n\t\tconst timeoutPromise = (async (): Promise<T> => {\n\t\t\twhile (!done) {\n\t\t\t\tconst elapsed = Date.now() - startedAt;\n\t\t\t\tif (elapsed >= timeoutMs) {\n\t\t\t\t\tthrow new Error('AI request timed out.');\n\t\t\t\t}\n\t\t\t\tconst remaining = timeoutMs - elapsed;\n\t\t\t\tawait sleepTimeout(Math.min(heartbeatMs, remaining));\n\t\t\t\tif (done) {\n\t\t\t\t\treturn await promise;\n\t\t\t\t}\n\t\t\t\tconst currentElapsed = Date.now() - startedAt;\n\t\t\t\tif (currentElapsed >= timeoutMs) {\n\t\t\t\t\tthrow new Error('AI request timed out.');\n\t\t\t\t}\n\t\t\t\tconst currentRemaining = Math.max(0, timeoutMs - currentElapsed);\n\t\t\t\tthis.log(`runOnce waiting (elapsedMs=${currentElapsed}, remainingMs=${currentRemaining})`);\n\t\t\t}\n\t\t\treturn await promise;\n\t\t})();\n\t\ttry {\n\t\t\treturn await Promise.race([promise, timeoutPromise]);\n\t\t}\n\t\tfinally {\n\t\t\tdone = true;\n\t\t}\n\t}\n\n\tprivate normalizeRetryCount(value?: number): number {\n\t\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\t\treturn 2;\n\t\t}\n\t\treturn Math.max(0, Math.floor(value));\n\t}\n\n\tprivate normalizeRetryDelay(value?: number): number {\n\t\tif (typeof value !== 'number' || Number.isNaN(value)) {\n\t\t\treturn 500;\n\t\t}\n\t\treturn Math.max(100, Math.floor(value));\n\t}\n\n\tprivate resolveModelSequence(options?: CodexRunOptions): string[] {\n\t\tconst primary = this.normalizeOptionalString(options?.threadOptions?.model || this.config.model);\n\t\tconst fallbackModels = this.collectFallbackModels(options?.fallbackModels);\n\t\tconst sequence: string[] = [];\n\t\tconst push = (value: any) => {\n\t\t\tconst normalized = this.normalizeOptionalString(value);\n\t\t\tif (!normalized || sequence.includes(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsequence.push(normalized);\n\t\t};\n\t\tconst preferredFallback = this.getModelFallbackPreference(primary);\n\t\tif (preferredFallback) {\n\t\t\tpush(preferredFallback);\n\t\t\tthis.log(`sticky model fallback active: ${primary} -> ${preferredFallback}`);\n\t\t}\n\t\tpush(primary);\n\t\tfallbackModels.forEach(push);\n\t\tif (!fallbackModels.length) {\n\t\t\tpush(CodexClient.DEFAULT_FALLBACK_MODEL);\n\t\t}\n\t\tif (!sequence.length) {\n\t\t\tsequence.push('');\n\t\t}\n\t\treturn sequence;\n\t}\n\n\tprivate collectFallbackModels(runFallbackModels?: string[]): string[] {\n\t\tconst models: string[] = [];\n\t\tconst push = (value: any) => {\n\t\t\tconst normalized = this.normalizeOptionalString(value);\n\t\t\tif (!normalized || models.includes(normalized)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmodels.push(normalized);\n\t\t};\n\t\tthis.normalizeModelList(runFallbackModels).forEach(push);\n\t\tthis.normalizeModelList(this.config.fallbackModels).forEach(push);\n\t\tpush(this.config.fallbackModel);\n\t\tthis.normalizeModelList(process.env.AI_ASSISTANT_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_ASSISTANT_CODEX_FALLBACK_MODEL);\n\t\tthis.normalizeModelList(process.env.AI_TERMINAL_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_TERMINAL_CODEX_FALLBACK_MODEL);\n\t\tthis.normalizeModelList(process.env.AI_DASHBOARD_CODEX_FALLBACK_MODELS).forEach(push);\n\t\tpush(process.env.AI_DASHBOARD_CODEX_FALLBACK_MODEL);\n\t\treturn models;\n\t}\n\n\tprivate normalizeModelList(value: any): string[] {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.map(entry => this.normalizeOptionalString(entry))\n\t\t\t\t.filter(Boolean);\n\t\t}\n\t\tconst raw = this.normalizeOptionalString(value);\n\t\tif (!raw) {\n\t\t\treturn [];\n\t\t}\n\t\treturn raw\n\t\t\t.split(',')\n\t\t\t.map(entry => this.normalizeOptionalString(entry))\n\t\t\t.filter(Boolean);\n\t}\n\n\tprivate applyModelOverride(options: CodexRunOptions | undefined, model: string): CodexRunOptions {\n\t\tconst nextThreadOptions: CodexThreadOptions = {\n\t\t\t...(options?.threadOptions || {})\n\t\t};\n\t\tif (model) {\n\t\t\tnextThreadOptions.model = model;\n\t\t}\n\t\telse {\n\t\t\tdelete nextThreadOptions.model;\n\t\t}\n\t\treturn {\n\t\t\t...(options || {}),\n\t\t\tthreadOptions: nextThreadOptions\n\t\t};\n\t}\n\n\tprivate isModelAvailabilityError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\tconst normalized = message.toLowerCase();\n\t\tif (!normalized.includes('model')) {\n\t\t\treturn false;\n\t\t}\n\t\tif (/does not exist|not found|unknown model|invalid model|unsupported model|model_not_found|no such model/.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (/not available|unavailable|not enabled|not allowed|do not have access|don't have access|insufficient permissions/.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /404/.test(normalized) && /model/.test(normalized);\n\t}\n\n\tprivate isRetryableError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\tif (/AI returned no completion content|Codex returned no completion content/i.test(message)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this.isCodexEnvironmentError(error)) {\n\t\t\treturn true;\n\t\t}\n\t\tconst statusMatch = message.match(/\\\\b(429|5\\\\d{2})\\\\b/);\n\t\tif (statusMatch) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /ECONNRESET|ETIMEDOUT|EAI_AGAIN|ENOTFOUND|fetch failed|timed out|timeout/i.test(message);\n\t}\n\n\tprivate isCodexEnvironmentError(error: unknown): boolean {\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\treturn /error finding codex home|could not update path: no such file or directory/i.test(message);\n\t}\n\n\tprivate recoverCodexEnvironment(error: unknown): void {\n\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\tthis.log(`recovering codex environment after error: ${message}`);\n\t\tthis.threadCache.clear();\n\t\tthis.codex = null;\n\t\tthis.codexInit = null;\n\t\tthis.zDotDir = null;\n\t}\n\n\tprivate normalizeOptionalString(value: any): string {\n\t\treturn typeof value === 'string' ? value.trim() : '';\n\t}\n\n\tprivate resolveModelUnavailableTtlMs(): number {\n\t\tconst raw = Number(\n\t\t\tprocess.env.AI_DASHBOARD_CODEX_MODEL_UNAVAILABLE_TTL_MS\n\t\t\t|| process.env.AI_ASSISTANT_CODEX_MODEL_UNAVAILABLE_TTL_MS\n\t\t);\n\t\tif (Number.isFinite(raw) && raw >= CodexClient.MIN_MODEL_UNAVAILABLE_TTL_MS) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn CodexClient.DEFAULT_MODEL_UNAVAILABLE_TTL_MS;\n\t}\n\n\tprivate async ensureModelFallbackPreferencesLoaded(): Promise<void> {\n\t\tif (CodexClient.modelFallbackPreferencesLoaded) {\n\t\t\tthis.pruneModelFallbackPreferences();\n\t\t\treturn;\n\t\t}\n\t\tif (CodexClient.modelFallbackPreferencesLoadPromise !== null) {\n\t\t\tawait CodexClient.modelFallbackPreferencesLoadPromise;\n\t\t\tthis.pruneModelFallbackPreferences();\n\t\t\treturn;\n\t\t}\n\t\tCodexClient.modelFallbackPreferencesLoadPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tconst raw = await fs.readFile(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE, 'utf8');\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tObject.entries(parsed).forEach(([model, entry]) => {\n\t\t\t\t\tconst key = this.normalizeOptionalString(model);\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst fallbackModel = this.normalizeOptionalString((entry as any)?.fallbackModel);\n\t\t\t\t\tconst expiresAt = Number((entry as any)?.expiresAt);\n\t\t\t\t\tconst updatedAt = Number((entry as any)?.updatedAt);\n\t\t\t\t\tif (!fallbackModel || !Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tCodexClient.modelFallbackPreferences.set(key, {\n\t\t\t\t\t\tfallbackModel,\n\t\t\t\t\t\texpiresAt: Math.floor(expiresAt),\n\t\t\t\t\t\tupdatedAt: Number.isFinite(updatedAt) ? Math.floor(updatedAt) : Date.now()\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore cache load errors.\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tCodexClient.modelFallbackPreferencesLoaded = true;\n\t\t\t\tCodexClient.modelFallbackPreferencesLoadPromise = null;\n\t\t\t}\n\t\t})();\n\t\tawait CodexClient.modelFallbackPreferencesLoadPromise;\n\t\tthis.pruneModelFallbackPreferences();\n\t}\n\n\tprivate pruneModelFallbackPreferences(now = Date.now()): void {\n\t\tArray.from(CodexClient.modelFallbackPreferences.entries()).forEach(([model, entry]) => {\n\t\t\tif (!entry || !Number.isFinite(entry.expiresAt) || entry.expiresAt <= now) {\n\t\t\t\tCodexClient.modelFallbackPreferences.delete(model);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getModelFallbackPreference(model: string): string {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tif (!normalizedModel) {\n\t\t\treturn '';\n\t\t}\n\t\tthis.pruneModelFallbackPreferences();\n\t\tconst entry = CodexClient.modelFallbackPreferences.get(normalizedModel);\n\t\tif (!entry || entry.expiresAt <= Date.now()) {\n\t\t\tif (entry) {\n\t\t\t\tCodexClient.modelFallbackPreferences.delete(normalizedModel);\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t\treturn entry.fallbackModel;\n\t}\n\n\tprivate async rememberModelFallbackPreference(model: string, fallbackModel: string): Promise<void> {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tconst normalizedFallback = this.normalizeOptionalString(fallbackModel);\n\t\tif (!normalizedModel || !normalizedFallback || normalizedModel === normalizedFallback) {\n\t\t\treturn;\n\t\t}\n\t\tconst now = Date.now();\n\t\tCodexClient.modelFallbackPreferences.set(normalizedModel, {\n\t\t\tfallbackModel: normalizedFallback,\n\t\t\texpiresAt: now + this.modelUnavailableTtlMs,\n\t\t\tupdatedAt: now\n\t\t});\n\t\tthis.pruneModelFallbackPreferences(now);\n\t\tawait this.persistModelFallbackPreferences();\n\t}\n\n\tprivate async clearModelFallbackPreference(model: string): Promise<void> {\n\t\tconst normalizedModel = this.normalizeOptionalString(model);\n\t\tif (!normalizedModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (!CodexClient.modelFallbackPreferences.has(normalizedModel)) {\n\t\t\treturn;\n\t\t}\n\t\tCodexClient.modelFallbackPreferences.delete(normalizedModel);\n\t\tawait this.persistModelFallbackPreferences();\n\t}\n\n\tprivate async persistModelFallbackPreferences(): Promise<void> {\n\t\tthis.pruneModelFallbackPreferences();\n\t\tif (!CodexClient.modelFallbackPreferences.size) {\n\t\t\ttry {\n\t\t\t\tawait fs.unlink(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore file cleanup errors.\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst serialized: Record<string, CodexModelFallbackPreference> = {};\n\t\tCodexClient.modelFallbackPreferences.forEach((entry, model) => {\n\t\t\tserialized[model] = entry;\n\t\t});\n\t\ttry {\n\t\t\tawait fs.writeFile(CodexClient.MODEL_UNAVAILABLE_FALLBACK_FILE, JSON.stringify(serialized), 'utf8');\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore cache persistence errors.\n\t\t}\n\t}\n\n\tprivate async sleep(ms: number): Promise<void> {\n\t\tawait sleepTimeout(ms);\n\t}\n\n\tprivate async ensureCodex(): Promise<void> {\n\t\tif (this.codex) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.codexInit !== null) {\n\t\t\tawait this.codexInit;\n\t\t\treturn;\n\t\t}\n\t\tthis.codexInit = (async () => {\n\t\t\tthis.log('Loading AI SDK module...');\n\t\t\tconst importer = new Function('specifier', 'return import(specifier)') as DynamicImport;\n\t\t\tconst mod = await importer('@openai/codex-sdk');\n\t\t\tconst CodexCtor = mod?.Codex || mod?.default?.Codex || mod?.default || mod;\n\t\t\tif (!CodexCtor) {\n\t\t\t\tthrow new Error('AI SDK export not found.');\n\t\t\t}\n\t\t\tthis.log('AI SDK module loaded.');\n\t\t\tconst env = await this.buildCodexEnv();\n\t\t\tthis.codex = new CodexCtor({\n\t\t\t\tapiKey: this.config.apiKey,\n\t\t\t\tbaseUrl: this.config.baseUrl,\n\t\t\t\tmodel: this.config.model,\n\t\t\t\tenv\n\t\t\t});\n\t\t\tthis.log('AI client initialized.');\n\t\t})();\n\t\tawait this.codexInit;\n\t}\n\n\tprivate log(message: string): void {\n\t\tif (!this.debugEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(`[AI-Dashboard][AI] ${message}`);\n\t}\n\n\tprivate resolveDefaultTimeoutMs(): number {\n\t\tconst raw = Number(process.env.AI_DASHBOARD_CODEX_TIMEOUT_MS || process.env.AI_DASHBOARD_AGENT_TIMEOUT_MS);\n\t\tif (Number.isFinite(raw) && raw > 0) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn 600000;\n\t}\n\n\tprivate resolveStreamEnabled(): boolean {\n\t\tconst raw = (process.env.AI_DASHBOARD_CODEX_STREAM || '').trim().toLowerCase();\n\t\tif (!raw) {\n\t\t\treturn this.debugEnabled;\n\t\t}\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(raw)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(raw)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.debugEnabled;\n\t}\n\n\tprivate resolveCleanZdotdirEnabled(): boolean {\n\t\tconst raw = (process.env.AI_DASHBOARD_CODEX_CLEAN_ZDOTDIR ?? '').trim().toLowerCase();\n\t\tif (!raw) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(raw)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(raw)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async buildCodexEnv(): Promise<Record<string, string>> {\n\t\tconst env: Record<string, string> = {};\n\t\tfor (const [key, value] of Object.entries(process.env)) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tenv[key] = value;\n\t\t\t}\n\t\t}\n\t\tif (!this.normalizeOptionalString(env.HOME)) {\n\t\t\tconst fallbackHome = this.normalizeOptionalString(process.env.HOME || os.homedir());\n\t\t\tif (fallbackHome) {\n\t\t\t\tenv.HOME = fallbackHome;\n\t\t\t}\n\t\t}\n\t\tawait this.ensureCodexHome(env);\n\t\tif (this.cleanZdotdirEnabled) {\n\t\t\tenv.ZDOTDIR = await this.ensureZdotdir();\n\t\t}\n\t\treturn env;\n\t}\n\n\tprivate async ensureCodexHome(env: Record<string, string>): Promise<void> {\n\t\tconst current = this.normalizeOptionalString(env.CODEX_HOME || process.env.CODEX_HOME);\n\t\tconst homeRoot = this.normalizeOptionalString(env.HOME || process.env.HOME || os.homedir());\n\t\tconst primary = current || (homeRoot ? path.join(homeRoot, '.codex') : path.join(os.tmpdir(), 'resolveio-codex-home'));\n\t\ttry {\n\t\t\tawait fs.mkdir(path.join(primary, 'sessions'), { recursive: true });\n\t\t\tenv.CODEX_HOME = primary;\n\t\t\tprocess.env.CODEX_HOME = primary;\n\t\t\treturn;\n\t\t}\n\t\tcatch {\n\t\t\tconst fallback = path.join(os.tmpdir(), 'resolveio-codex-home');\n\t\t\tawait fs.mkdir(path.join(fallback, 'sessions'), { recursive: true });\n\t\t\tenv.CODEX_HOME = fallback;\n\t\t\tprocess.env.CODEX_HOME = fallback;\n\t\t}\n\t}\n\n\tprivate async ensureZdotdir(): Promise<string> {\n\t\tif (this.zDotDir) {\n\t\t\treturn this.zDotDir;\n\t\t}\n\t\tconst override = (process.env.AI_DASHBOARD_CODEX_ZDOTDIR || '').trim();\n\t\tconst dir = override || path.join(os.tmpdir(), 'codex-zdotdir');\n\t\tawait fs.mkdir(dir, { recursive: true });\n\t\tawait Promise.allSettled([\n\t\t\tfs.writeFile(path.join(dir, '.zshrc'), '', { flag: 'a' }),\n\t\t\tfs.writeFile(path.join(dir, '.zprofile'), '', { flag: 'a' })\n\t\t]);\n\t\tthis.zDotDir = dir;\n\t\treturn dir;\n\t}\n\n\tprivate resolvePingEnabled(): boolean {\n\t\treturn this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_PING, false);\n\t}\n\n\tprivate resolvePingTimeoutMs(): number {\n\t\tconst raw = Number(process.env.AI_DASHBOARD_CODEX_PING_TIMEOUT_MS);\n\t\tif (Number.isFinite(raw) && raw > 0) {\n\t\t\treturn Math.floor(raw);\n\t\t}\n\t\treturn 10000;\n\t}\n\n\tprivate resolveDefaultThreadOptions(): CodexThreadOptions {\n\t\tconst approvalPolicy = this.normalizeApprovalPolicy(process.env.AI_DASHBOARD_CODEX_APPROVAL_POLICY);\n\t\tconst sandboxMode = this.normalizeSandboxMode(process.env.AI_DASHBOARD_CODEX_SANDBOX_MODE, 'workspace-write');\n\t\tconst skipGitRepoCheck = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_SKIP_GIT_CHECK, true);\n\t\tconst webSearchMode = this.normalizeWebSearchMode(process.env.AI_DASHBOARD_CODEX_WEB_SEARCH_MODE);\n\t\tconst webSearchEnabled = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_WEB_SEARCH_ENABLED, false);\n\t\tconst networkAccessEnabled = this.normalizeBoolean(process.env.AI_DASHBOARD_CODEX_NETWORK_ACCESS_ENABLED, false);\n\t\tconst modelReasoningEffort = this.normalizeModelReasoningEffort(process.env.AI_DASHBOARD_CODEX_REASONING_EFFORT);\n\t\treturn {\n\t\t\tmodel: this.config.model,\n\t\t\tapprovalPolicy,\n\t\t\tsandboxMode,\n\t\t\tskipGitRepoCheck,\n\t\t\twebSearchMode,\n\t\t\twebSearchEnabled,\n\t\t\tnetworkAccessEnabled,\n\t\t\tmodelReasoningEffort\n\t\t};\n\t}\n\n\tprivate mergeThreadOptions(overrides?: CodexThreadOptions): CodexThreadOptions | undefined {\n\t\tconst merged: CodexThreadOptions = {\n\t\t\t...this.defaultThreadOptions,\n\t\t\t...(overrides || {})\n\t\t};\n\t\tconst effectiveModel = this.normalizeOptionalString(merged.model || this.config.model);\n\t\tconst normalizedEffort = this.normalizeModelReasoningEffortForModel(effectiveModel, merged.modelReasoningEffort);\n\t\tif (normalizedEffort && normalizedEffort !== merged.modelReasoningEffort) {\n\t\t\tthis.log(`normalized reasoning effort for model=${effectiveModel || 'default'}: ${merged.modelReasoningEffort} -> ${normalizedEffort}`);\n\t\t\tmerged.modelReasoningEffort = normalizedEffort;\n\t\t}\n\t\tconst cleaned = Object.entries(merged).reduce((acc, [key, value]) => {\n\t\t\tif (value === undefined || value === null || value === '') {\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t(acc as any)[key] = value;\n\t\t\treturn acc;\n\t\t}, {} as CodexThreadOptions);\n\t\treturn Object.keys(cleaned).length ? cleaned : undefined;\n\t}\n\n\tprivate normalizeApprovalPolicy(value?: string): CodexThreadOptions['approvalPolicy'] {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'never' || normalized === 'on-request' || normalized === 'on-failure' || normalized === 'untrusted') {\n\t\t\treturn normalized as CodexThreadOptions['approvalPolicy'];\n\t\t}\n\t\treturn 'never';\n\t}\n\n\tprivate normalizeSandboxMode(value?: string, fallback: CodexThreadOptions['sandboxMode'] = 'read-only'): CodexThreadOptions['sandboxMode'] {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'read-only' || normalized === 'workspace-write' || normalized === 'danger-full-access') {\n\t\t\treturn normalized as CodexThreadOptions['sandboxMode'];\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate normalizeWebSearchMode(value?: string): CodexThreadOptions['webSearchMode'] | undefined {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'disabled' || normalized === 'cached' || normalized === 'live') {\n\t\t\treturn normalized as CodexThreadOptions['webSearchMode'];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate normalizeModelReasoningEffort(value?: string): CodexThreadOptions['modelReasoningEffort'] | undefined {\n\t\tconst normalized = (value || '').trim().toLowerCase();\n\t\tif (normalized === 'minimal' || normalized === 'none' || normalized === 'low' || normalized === 'medium' || normalized === 'high' || normalized === 'xhigh') {\n\t\t\treturn normalized as CodexThreadOptions['modelReasoningEffort'];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate normalizeModelReasoningEffortForModel(\n\t\tmodel: string,\n\t\teffort?: CodexThreadOptions['modelReasoningEffort']\n\t): CodexThreadOptions['modelReasoningEffort'] | undefined {\n\t\tif (!effort) {\n\t\t\treturn effort;\n\t\t}\n\t\tconst normalizedModel = this.normalizeOptionalString(model).toLowerCase();\n\t\tif (effort === 'minimal' && (!normalizedModel || normalizedModel.startsWith('gpt-5') || normalizedModel.includes('codex'))) {\n\t\t\treturn 'low';\n\t\t}\n\t\treturn effort;\n\t}\n\n\tprivate normalizeBoolean(value: string | undefined, fallback: boolean): boolean {\n\t\tif (!value) {\n\t\t\treturn fallback;\n\t\t}\n\t\tconst normalized = value.trim().toLowerCase();\n\t\tif (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (['false', '0', 'no', 'n', 'off'].includes(normalized)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate formatThreadOptions(options: CodexThreadOptions): string {\n\t\tconst summary: Record<string, string> = {};\n\t\tObject.entries(options).forEach(([key, value]) => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsummary[key] = String(value);\n\t\t});\n\t\treturn JSON.stringify(summary);\n\t}\n\n\tprivate buildThreadOptionsKey(options?: CodexThreadOptions): string {\n\t\tif (!options) {\n\t\t\treturn '';\n\t\t}\n\t\tconst ordered: Record<string, string> = {};\n\t\tObject.keys(options)\n\t\t\t.sort()\n\t\t\t.forEach((key) => {\n\t\t\t\tconst value = (options as Record<string, unknown>)[key];\n\t\t\t\tif (value === undefined || value === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tordered[key] = Array.isArray(value) ? JSON.stringify(value) : String(value);\n\t\t\t});\n\t\treturn JSON.stringify(ordered);\n\t}\n\n\tprivate buildThreadCacheKey(threadKey: string | undefined, options?: CodexThreadOptions): string | null {\n\t\tif (threadKey) {\n\t\t\treturn `thread:${threadKey}`;\n\t\t}\n\t\tconst model = options?.model || this.config.model;\n\t\tconst workingDirectory = options?.workingDirectory;\n\t\tif (!model && !workingDirectory) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `thread:auto:${model || 'default'}:${workingDirectory || 'root'}`;\n\t}\n\n\tprivate isPingPrompt(prompt: string): boolean {\n\t\treturn prompt.trim() === CodexClient.PING_PROMPT;\n\t}\n\n\tprivate async runPing(threadOptions?: CodexThreadOptions): Promise<void> {\n\t\tthis.log(`runPing start (timeoutMs=${this.pingTimeoutMs})`);\n\t\ttry {\n\t\t\tconst content = await this.runOnce(CodexClient.PING_PROMPT, {\n\t\t\t\ttimeoutMs: this.pingTimeoutMs,\n\t\t\t\tthreadOptions,\n\t\t\t\treuseThread: false\n\t\t\t});\n\t\t\tconst trimmed = content.trim();\n\t\t\tconst preview = trimmed.length > 80 ? `${trimmed.slice(0, 80)}…` : trimmed;\n\t\t\tthis.log(`runPing response: ${preview}`);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runPing failed: ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -54,7 +54,7 @@ var OpenAIClient = /** @class */ (function () {
|
|
|
54
54
|
function OpenAIClient(config) {
|
|
55
55
|
this.config = config;
|
|
56
56
|
if (!this.config.apiKey) {
|
|
57
|
-
throw new Error('
|
|
57
|
+
throw new Error('AI API key is required for AI client');
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
OpenAIClient.prototype.chat = function (messages, options) {
|
|
@@ -92,7 +92,7 @@ var OpenAIClient = /** @class */ (function () {
|
|
|
92
92
|
payload.max_completion_tokens = this.normalizeTokenCount(this.config.maxTokens);
|
|
93
93
|
}
|
|
94
94
|
runRequest = function (model) { return __awaiter(_this, void 0, void 0, function () {
|
|
95
|
-
var timeoutMs, controller, timeoutId, response, requestId, error_2, responseText, data, message, content, refusal, usage;
|
|
95
|
+
var timeoutMs, controller, timeoutId, response, requestId, error_2, responseText, requestError, data, message, content, refusal, usage;
|
|
96
96
|
var _a, _b, _c;
|
|
97
97
|
return __generator(this, function (_d) {
|
|
98
98
|
switch (_d.label) {
|
|
@@ -120,7 +120,7 @@ var OpenAIClient = /** @class */ (function () {
|
|
|
120
120
|
case 3:
|
|
121
121
|
error_2 = _d.sent();
|
|
122
122
|
if ((_a = controller === null || controller === void 0 ? void 0 : controller.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
|
|
123
|
-
throw new Error('
|
|
123
|
+
throw new Error('AI request timed out.');
|
|
124
124
|
}
|
|
125
125
|
throw error_2;
|
|
126
126
|
case 4:
|
|
@@ -132,14 +132,17 @@ var OpenAIClient = /** @class */ (function () {
|
|
|
132
132
|
case 6:
|
|
133
133
|
responseText = _d.sent();
|
|
134
134
|
if (!response.ok) {
|
|
135
|
-
|
|
135
|
+
requestError = new Error("AI request failed (".concat(response.status, ")."));
|
|
136
|
+
requestError.status = response.status;
|
|
137
|
+
requestError.raw = responseText;
|
|
138
|
+
throw requestError;
|
|
136
139
|
}
|
|
137
140
|
data = responseText ? JSON.parse(responseText) : {};
|
|
138
141
|
message = ((_c = (_b = data === null || data === void 0 ? void 0 : data.choices) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.message) || {};
|
|
139
142
|
content = this.extractContent(message);
|
|
140
143
|
if (!content) {
|
|
141
144
|
refusal = (message === null || message === void 0 ? void 0 : message.refusal) ? " Refusal: ".concat(message.refusal) : '';
|
|
142
|
-
throw new Error("
|
|
145
|
+
throw new Error("AI returned no completion content.".concat(refusal));
|
|
143
146
|
}
|
|
144
147
|
usage = this.extractUsage(data === null || data === void 0 ? void 0 : data.usage);
|
|
145
148
|
return [2 /*return*/, {
|