@resolveio/server-lib 22.3.12 → 22.3.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "22.3.12",
3
+ "version": "22.3.13",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "./build_package.sh",
@@ -13,6 +13,7 @@ type UsageHandler = (usage: CodexUsageSummary | null) => void | Promise<void>;
13
13
  export interface CodexRunOptions {
14
14
  timeoutMs?: number;
15
15
  streamIdleTimeoutMs?: number;
16
+ processWorkingDirectory?: string;
16
17
  threadOptions?: CodexThreadOptions;
17
18
  threadKey?: string;
18
19
  reuseThread?: boolean;
@@ -46,6 +47,7 @@ export declare class CodexClient {
46
47
  private static readonly modelFallbackPreferences;
47
48
  private static modelFallbackPreferencesLoaded;
48
49
  private static modelFallbackPreferencesLoadPromise;
50
+ private static cwdFallbackRunning;
49
51
  private codex;
50
52
  private codexInit;
51
53
  private readonly threadCache;
@@ -84,6 +86,10 @@ export declare class CodexClient {
84
86
  private isRetryableError;
85
87
  private isCodexEnvironmentError;
86
88
  private recoverCodexEnvironment;
89
+ private shouldApplyProcessCwdFallback;
90
+ private resolveProcessWorkingDirectory;
91
+ private applyProcessCwdFallback;
92
+ private withProcessWorkingDirectoryFallback;
87
93
  private normalizeOptionalString;
88
94
  private resolveModelUnavailableTtlMs;
89
95
  private ensureModelFallbackPreferencesLoaded;
@@ -116,7 +116,8 @@ var CodexClient = /** @class */ (function () {
116
116
  }
117
117
  CodexClient.prototype.run = function (prompt, options) {
118
118
  return __awaiter(this, void 0, void 0, function () {
119
- var maxRetries, retryDelayMs, lastError, modelSequence, modelIndex, model, nextModel, modelOptions, attempt, result_1, result, error_1, message, delay;
119
+ var maxRetries, retryDelayMs, lastError, modelSequence, _loop_1, this_1, modelIndex, state_1;
120
+ var _this = this;
120
121
  return __generator(this, function (_a) {
121
122
  switch (_a.label) {
122
123
  case 0: return [4 /*yield*/, this.ensureModelFallbackPreferencesLoaded()];
@@ -126,71 +127,133 @@ var CodexClient = /** @class */ (function () {
126
127
  retryDelayMs = this.normalizeRetryDelay(this.config.retryDelayMs);
127
128
  lastError = null;
128
129
  modelSequence = this.resolveModelSequence(options);
130
+ _loop_1 = function (modelIndex) {
131
+ var model, nextModel, modelOptions, processCwdFallbackApplied, attempt, _loop_2, state_2;
132
+ return __generator(this, function (_b) {
133
+ switch (_b.label) {
134
+ case 0:
135
+ model = modelSequence[modelIndex];
136
+ nextModel = modelSequence[modelIndex + 1];
137
+ modelOptions = this_1.applyModelOverride(options, model);
138
+ processCwdFallbackApplied = false;
139
+ attempt = 0;
140
+ _loop_2 = function () {
141
+ var result_1, result, error_1, message, workingDirectory, fallbackOptions_1, _c, delay;
142
+ return __generator(this, function (_d) {
143
+ switch (_d.label) {
144
+ case 0:
145
+ _d.trys.push([0, 8, , 14]);
146
+ this_1.log("run model=".concat(model || this_1.config.model || 'default', " attempt ").concat(attempt + 1, "/").concat(maxRetries + 1));
147
+ if (!(this_1.pingEnabled && !this_1.isPingPrompt(prompt))) return [3 /*break*/, 2];
148
+ return [4 /*yield*/, this_1.runPing(modelOptions === null || modelOptions === void 0 ? void 0 : modelOptions.threadOptions)];
149
+ case 1:
150
+ _d.sent();
151
+ _d.label = 2;
152
+ case 2:
153
+ if (!(this_1.streamEnabled && !this_1.isPingPrompt(prompt))) return [3 /*break*/, 5];
154
+ return [4 /*yield*/, this_1.runStreamedOnce(prompt, modelOptions)];
155
+ case 3:
156
+ result_1 = _d.sent();
157
+ return [4 /*yield*/, this_1.clearModelFallbackPreference(model)];
158
+ case 4:
159
+ _d.sent();
160
+ return [2 /*return*/, { value: result_1 }];
161
+ case 5: return [4 /*yield*/, this_1.runOnce(prompt, modelOptions)];
162
+ case 6:
163
+ result = _d.sent();
164
+ return [4 /*yield*/, this_1.clearModelFallbackPreference(model)];
165
+ case 7:
166
+ _d.sent();
167
+ return [2 /*return*/, { value: result }];
168
+ case 8:
169
+ error_1 = _d.sent();
170
+ lastError = error_1;
171
+ message = error_1 instanceof Error ? error_1.message : String(error_1 || 'Unknown error');
172
+ this_1.log("run model=".concat(model || this_1.config.model || 'default', " attempt ").concat(attempt + 1, " failed: ").concat(message));
173
+ if (!(!processCwdFallbackApplied && this_1.shouldApplyProcessCwdFallback(error_1, modelOptions))) return [3 /*break*/, 10];
174
+ processCwdFallbackApplied = true;
175
+ workingDirectory = this_1.resolveProcessWorkingDirectory(modelOptions);
176
+ fallbackOptions_1 = this_1.applyProcessCwdFallback(modelOptions);
177
+ this_1.log('codex workingDirectory launch failed with os error 2; retrying from process cwd without CLI workingDirectory.');
178
+ _c = {};
179
+ return [4 /*yield*/, this_1.withProcessWorkingDirectoryFallback(workingDirectory, function () { return __awaiter(_this, void 0, void 0, function () {
180
+ var fallbackResult_1, fallbackResult;
181
+ return __generator(this, function (_a) {
182
+ switch (_a.label) {
183
+ case 0:
184
+ if (!(this.streamEnabled && !this.isPingPrompt(prompt))) return [3 /*break*/, 3];
185
+ return [4 /*yield*/, this.runStreamedOnce(prompt, fallbackOptions_1)];
186
+ case 1:
187
+ fallbackResult_1 = _a.sent();
188
+ return [4 /*yield*/, this.clearModelFallbackPreference(model)];
189
+ case 2:
190
+ _a.sent();
191
+ return [2 /*return*/, fallbackResult_1];
192
+ case 3: return [4 /*yield*/, this.runOnce(prompt, fallbackOptions_1)];
193
+ case 4:
194
+ fallbackResult = _a.sent();
195
+ return [4 /*yield*/, this.clearModelFallbackPreference(model)];
196
+ case 5:
197
+ _a.sent();
198
+ return [2 /*return*/, fallbackResult];
199
+ }
200
+ });
201
+ }); })];
202
+ case 9: return [2 /*return*/, (_c.value = _d.sent(), _c)];
203
+ case 10:
204
+ if (!(nextModel && this_1.isModelAvailabilityError(error_1))) return [3 /*break*/, 12];
205
+ return [4 /*yield*/, this_1.rememberModelFallbackPreference(model, nextModel)];
206
+ case 11:
207
+ _d.sent();
208
+ this_1.log("model unavailable; retrying with fallback model ".concat(nextModel));
209
+ return [2 /*return*/, "break"];
210
+ case 12:
211
+ if (this_1.isCodexEnvironmentError(error_1)) {
212
+ this_1.recoverCodexEnvironment(error_1);
213
+ }
214
+ if (attempt >= maxRetries || !this_1.isRetryableError(error_1)) {
215
+ throw lastError;
216
+ }
217
+ delay = retryDelayMs * Math.pow(2, attempt);
218
+ return [4 /*yield*/, this_1.sleep(delay)];
219
+ case 13:
220
+ _d.sent();
221
+ attempt += 1;
222
+ return [3 /*break*/, 14];
223
+ case 14: return [2 /*return*/];
224
+ }
225
+ });
226
+ };
227
+ _b.label = 1;
228
+ case 1:
229
+ if (!(attempt <= maxRetries)) return [3 /*break*/, 3];
230
+ return [5 /*yield**/, _loop_2()];
231
+ case 2:
232
+ state_2 = _b.sent();
233
+ if (typeof state_2 === "object")
234
+ return [2 /*return*/, state_2];
235
+ if (state_2 === "break")
236
+ return [3 /*break*/, 3];
237
+ return [3 /*break*/, 1];
238
+ case 3: return [2 /*return*/];
239
+ }
240
+ });
241
+ };
242
+ this_1 = this;
129
243
  modelIndex = 0;
130
244
  _a.label = 2;
131
245
  case 2:
132
- if (!(modelIndex < modelSequence.length)) return [3 /*break*/, 18];
133
- model = modelSequence[modelIndex];
134
- nextModel = modelSequence[modelIndex + 1];
135
- modelOptions = this.applyModelOverride(options, model);
136
- attempt = 0;
137
- _a.label = 3;
246
+ if (!(modelIndex < modelSequence.length)) return [3 /*break*/, 5];
247
+ return [5 /*yield**/, _loop_1(modelIndex)];
138
248
  case 3:
139
- if (!(attempt <= maxRetries)) return [3 /*break*/, 17];
249
+ state_1 = _a.sent();
250
+ if (typeof state_1 === "object")
251
+ return [2 /*return*/, state_1.value];
140
252
  _a.label = 4;
141
253
  case 4:
142
- _a.trys.push([4, 12, , 16]);
143
- this.log("run model=".concat(model || this.config.model || 'default', " attempt ").concat(attempt + 1, "/").concat(maxRetries + 1));
144
- if (!(this.pingEnabled && !this.isPingPrompt(prompt))) return [3 /*break*/, 6];
145
- return [4 /*yield*/, this.runPing(modelOptions === null || modelOptions === void 0 ? void 0 : modelOptions.threadOptions)];
146
- case 5:
147
- _a.sent();
148
- _a.label = 6;
149
- case 6:
150
- if (!(this.streamEnabled && !this.isPingPrompt(prompt))) return [3 /*break*/, 9];
151
- return [4 /*yield*/, this.runStreamedOnce(prompt, modelOptions)];
152
- case 7:
153
- result_1 = _a.sent();
154
- return [4 /*yield*/, this.clearModelFallbackPreference(model)];
155
- case 8:
156
- _a.sent();
157
- return [2 /*return*/, result_1];
158
- case 9: return [4 /*yield*/, this.runOnce(prompt, modelOptions)];
159
- case 10:
160
- result = _a.sent();
161
- return [4 /*yield*/, this.clearModelFallbackPreference(model)];
162
- case 11:
163
- _a.sent();
164
- return [2 /*return*/, result];
165
- case 12:
166
- error_1 = _a.sent();
167
- lastError = error_1;
168
- message = error_1 instanceof Error ? error_1.message : String(error_1 || 'Unknown error');
169
- this.log("run model=".concat(model || this.config.model || 'default', " attempt ").concat(attempt + 1, " failed: ").concat(message));
170
- if (!(nextModel && this.isModelAvailabilityError(error_1))) return [3 /*break*/, 14];
171
- return [4 /*yield*/, this.rememberModelFallbackPreference(model, nextModel)];
172
- case 13:
173
- _a.sent();
174
- this.log("model unavailable; retrying with fallback model ".concat(nextModel));
175
- return [3 /*break*/, 17];
176
- case 14:
177
- if (this.isCodexEnvironmentError(error_1)) {
178
- this.recoverCodexEnvironment(error_1);
179
- }
180
- if (attempt >= maxRetries || !this.isRetryableError(error_1)) {
181
- throw lastError;
182
- }
183
- delay = retryDelayMs * Math.pow(2, attempt);
184
- return [4 /*yield*/, this.sleep(delay)];
185
- case 15:
186
- _a.sent();
187
- attempt += 1;
188
- return [3 /*break*/, 16];
189
- case 16: return [3 /*break*/, 3];
190
- case 17:
191
254
  modelIndex += 1;
192
255
  return [3 /*break*/, 2];
193
- case 18: throw lastError;
256
+ case 5: throw lastError;
194
257
  }
195
258
  });
196
259
  });
@@ -917,6 +980,64 @@ var CodexClient = /** @class */ (function () {
917
980
  this.codexInit = null;
918
981
  this.zDotDir = null;
919
982
  };
983
+ CodexClient.prototype.shouldApplyProcessCwdFallback = function (error, options) {
984
+ var workingDirectory = this.resolveProcessWorkingDirectory(options);
985
+ if (!workingDirectory) {
986
+ return false;
987
+ }
988
+ var message = error instanceof Error ? error.message : String(error || '');
989
+ return /no such file or directory \(os error 2\)/i.test(message);
990
+ };
991
+ CodexClient.prototype.resolveProcessWorkingDirectory = function (options) {
992
+ var _a;
993
+ return this.normalizeOptionalString((options === null || options === void 0 ? void 0 : options.processWorkingDirectory) || ((_a = options === null || options === void 0 ? void 0 : options.threadOptions) === null || _a === void 0 ? void 0 : _a.workingDirectory));
994
+ };
995
+ CodexClient.prototype.applyProcessCwdFallback = function (options) {
996
+ var nextThreadOptions = __assign({}, ((options === null || options === void 0 ? void 0 : options.threadOptions) || {}));
997
+ delete nextThreadOptions.workingDirectory;
998
+ return __assign(__assign({}, (options || {})), { threadOptions: nextThreadOptions });
999
+ };
1000
+ CodexClient.prototype.withProcessWorkingDirectoryFallback = function (workingDirectory, runner) {
1001
+ return __awaiter(this, void 0, void 0, function () {
1002
+ var normalizedWorkingDirectory, originalCwd, message;
1003
+ return __generator(this, function (_a) {
1004
+ switch (_a.label) {
1005
+ case 0:
1006
+ normalizedWorkingDirectory = this.normalizeOptionalString(workingDirectory);
1007
+ if (!!normalizedWorkingDirectory) return [3 /*break*/, 2];
1008
+ return [4 /*yield*/, runner()];
1009
+ case 1: return [2 /*return*/, _a.sent()];
1010
+ case 2:
1011
+ if (!CodexClient.cwdFallbackRunning) return [3 /*break*/, 4];
1012
+ return [4 /*yield*/, this.sleep(50)];
1013
+ case 3:
1014
+ _a.sent();
1015
+ return [3 /*break*/, 2];
1016
+ case 4:
1017
+ CodexClient.cwdFallbackRunning = true;
1018
+ originalCwd = process.cwd();
1019
+ _a.label = 5;
1020
+ case 5:
1021
+ _a.trys.push([5, , 7, 8]);
1022
+ process.chdir(normalizedWorkingDirectory);
1023
+ this.log("running Codex fallback from process cwd ".concat(normalizedWorkingDirectory));
1024
+ return [4 /*yield*/, runner()];
1025
+ case 6: return [2 /*return*/, _a.sent()];
1026
+ case 7:
1027
+ try {
1028
+ process.chdir(originalCwd);
1029
+ }
1030
+ catch (error) {
1031
+ message = error instanceof Error ? error.message : String(error || 'Unknown error');
1032
+ this.log("failed to restore process cwd to ".concat(originalCwd, ": ").concat(message));
1033
+ }
1034
+ CodexClient.cwdFallbackRunning = false;
1035
+ return [7 /*endfinally*/];
1036
+ case 8: return [2 /*return*/];
1037
+ }
1038
+ });
1039
+ });
1040
+ };
920
1041
  CodexClient.prototype.normalizeOptionalString = function (value) {
921
1042
  return typeof value === 'string' ? value.trim() : '';
922
1043
  };
@@ -1493,6 +1614,7 @@ var CodexClient = /** @class */ (function () {
1493
1614
  CodexClient.modelFallbackPreferences = new Map();
1494
1615
  CodexClient.modelFallbackPreferencesLoaded = false;
1495
1616
  CodexClient.modelFallbackPreferencesLoadPromise = null;
1617
+ CodexClient.cwdFallbackRunning = false;
1496
1618
  return CodexClient;
1497
1619
  }());
1498
1620
  exports.CodexClient = CodexClient;
@@ -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 UsageHandler = (usage: CodexUsageSummary | null) => 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\tstreamIdleTimeoutMs?: number;\n\tthreadOptions?: CodexThreadOptions;\n\tthreadKey?: string;\n\treuseThread?: boolean;\n\tfallbackModels?: string[];\n\tonStreamEvent?: StreamEventHandler;\n\tonStreamText?: StreamTextHandler;\n\tonUsage?: UsageHandler;\n}\n\nexport interface CodexUsageSummary {\n\tinputTokens: number;\n\tcachedInputTokens: number;\n\toutputTokens: number;\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 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 streamIdleTimeoutMs = this.normalizeStreamIdleTimeoutMs(options?.streamIdleTimeoutMs);\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 lastStreamActivityAt = Date.now();\n\t\tconst idleTimeoutId = controller && streamIdleTimeoutMs > 0\n\t\t\t? setInterval(() => {\n\t\t\t\tif (Date.now() - lastStreamActivityAt >= streamIdleTimeoutMs) {\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t}\n\t\t\t}, Math.max(15_000, Math.min(60_000, Math.floor(streamIdleTimeoutMs / 4))))\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\tlet usageSummary: CodexUsageSummary | null = null;\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\tlastStreamActivityAt = Date.now();\n\t\t\t\tif (event?.type === 'turn.completed') {\n\t\t\t\t\tusageSummary = this.normalizeUsageSummary(event?.usage);\n\t\t\t\t}\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\tconst idleForMs = Date.now() - lastStreamActivityAt;\n\t\t\t\tif (streamIdleTimeoutMs > 0 && idleForMs >= streamIdleTimeoutMs) {\n\t\t\t\t\tthis.log(`runStreamed idle timed out (durationMs=${Date.now() - startedAt}, idleForMs=${idleForMs})`);\n\t\t\t\t\tthrow new Error(`AI stream stalled with no activity for ${idleForMs}ms.`);\n\t\t\t\t}\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\tif (idleTimeoutId) {\n\t\t\t\tclearInterval(idleTimeoutId);\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\tawait this.emitUsageSummary(options, usageSummary);\n\t\tthis.log(`runStreamed complete (contentLength=${finalResponse.length}, durationMs=${Date.now() - startedAt})`);\n\t\treturn finalResponse.trim();\n\t}\n\n\tprivate normalizeStreamIdleTimeoutMs(value: any): number {\n\t\tconst parsed = Number(value || 0);\n\t\tif (!Number.isFinite(parsed) || parsed < 60_000) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.floor(parsed);\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: any = 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\tawait this.emitUsageSummary(options, this.normalizeUsageSummary(result?.usage));\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 normalizeUsageSummary(raw: any): CodexUsageSummary | null {\n\t\tif (!raw || typeof raw !== 'object') {\n\t\t\treturn null;\n\t\t}\n\t\tconst inputTokens = this.normalizeUsageToken(raw.input_tokens ?? raw.inputTokens);\n\t\tconst cachedInputTokens = this.normalizeUsageToken(raw.cached_input_tokens ?? raw.cachedInputTokens);\n\t\tconst outputTokens = this.normalizeUsageToken(raw.output_tokens ?? raw.outputTokens);\n\t\tif (inputTokens <= 0 && cachedInputTokens <= 0 && outputTokens <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tinputTokens,\n\t\t\tcachedInputTokens,\n\t\t\toutputTokens\n\t\t};\n\t}\n\n\tprivate normalizeUsageToken(value: any): number {\n\t\tconst parsed = Number(value);\n\t\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.floor(parsed);\n\t}\n\n\tprivate async emitUsageSummary(options: CodexRunOptions | undefined, usage: CodexUsageSummary | null): Promise<void> {\n\t\tif (!options?.onUsage) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait options.onUsage(usage);\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(`onUsage failed: ${message}`);\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 (!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\tconst primaryModel = this.normalizeOptionalString(\n\t\t\tthis.config.model\n\t\t\t|| runFallbackModels?.[0]\n\t\t\t|| ''\n\t\t);\n\t\tif (/^gpt-5(?:\\.\\d+)?-codex$/i.test(primaryModel)) {\n\t\t\tpush('gpt-5-codex');\n\t\t}\n\t\tif (/^gpt-5(?:-codex|\\.\\d+-codex)$/i.test(primaryModel)) {\n\t\t\tpush('gpt-5.5');\n\t\t}\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"]}
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 UsageHandler = (usage: CodexUsageSummary | null) => 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\tstreamIdleTimeoutMs?: number;\n\tprocessWorkingDirectory?: string;\n\tthreadOptions?: CodexThreadOptions;\n\tthreadKey?: string;\n\treuseThread?: boolean;\n\tfallbackModels?: string[];\n\tonStreamEvent?: StreamEventHandler;\n\tonStreamText?: StreamTextHandler;\n\tonUsage?: UsageHandler;\n}\n\nexport interface CodexUsageSummary {\n\tinputTokens: number;\n\tcachedInputTokens: number;\n\toutputTokens: number;\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 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 static cwdFallbackRunning = false;\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 processCwdFallbackApplied = false;\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 (!processCwdFallbackApplied && this.shouldApplyProcessCwdFallback(error, modelOptions)) {\n\t\t\t\t\t\t\tprocessCwdFallbackApplied = true;\n\t\t\t\t\t\t\tconst workingDirectory = this.resolveProcessWorkingDirectory(modelOptions);\n\t\t\t\t\t\t\tconst fallbackOptions = this.applyProcessCwdFallback(modelOptions);\n\t\t\t\t\t\t\tthis.log('codex workingDirectory launch failed with os error 2; retrying from process cwd without CLI workingDirectory.');\n\t\t\t\t\t\t\treturn await this.withProcessWorkingDirectoryFallback(workingDirectory, async () => {\n\t\t\t\t\t\t\t\tif (this.streamEnabled && !this.isPingPrompt(prompt)) {\n\t\t\t\t\t\t\t\t\tconst fallbackResult = await this.runStreamedOnce(prompt, fallbackOptions);\n\t\t\t\t\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\t\t\t\t\treturn fallbackResult;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst fallbackResult = await this.runOnce(prompt, fallbackOptions);\n\t\t\t\t\t\t\t\tawait this.clearModelFallbackPreference(model);\n\t\t\t\t\t\t\t\treturn fallbackResult;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\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 streamIdleTimeoutMs = this.normalizeStreamIdleTimeoutMs(options?.streamIdleTimeoutMs);\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 lastStreamActivityAt = Date.now();\n\t\tconst idleTimeoutId = controller && streamIdleTimeoutMs > 0\n\t\t\t? setInterval(() => {\n\t\t\t\tif (Date.now() - lastStreamActivityAt >= streamIdleTimeoutMs) {\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t}\n\t\t\t}, Math.max(15_000, Math.min(60_000, Math.floor(streamIdleTimeoutMs / 4))))\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\tlet usageSummary: CodexUsageSummary | null = null;\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\tlastStreamActivityAt = Date.now();\n\t\t\t\tif (event?.type === 'turn.completed') {\n\t\t\t\t\tusageSummary = this.normalizeUsageSummary(event?.usage);\n\t\t\t\t}\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\tconst idleForMs = Date.now() - lastStreamActivityAt;\n\t\t\t\tif (streamIdleTimeoutMs > 0 && idleForMs >= streamIdleTimeoutMs) {\n\t\t\t\t\tthis.log(`runStreamed idle timed out (durationMs=${Date.now() - startedAt}, idleForMs=${idleForMs})`);\n\t\t\t\t\tthrow new Error(`AI stream stalled with no activity for ${idleForMs}ms.`);\n\t\t\t\t}\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\tif (idleTimeoutId) {\n\t\t\t\tclearInterval(idleTimeoutId);\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\tawait this.emitUsageSummary(options, usageSummary);\n\t\tthis.log(`runStreamed complete (contentLength=${finalResponse.length}, durationMs=${Date.now() - startedAt})`);\n\t\treturn finalResponse.trim();\n\t}\n\n\tprivate normalizeStreamIdleTimeoutMs(value: any): number {\n\t\tconst parsed = Number(value || 0);\n\t\tif (!Number.isFinite(parsed) || parsed < 60_000) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.floor(parsed);\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: any = 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\tawait this.emitUsageSummary(options, this.normalizeUsageSummary(result?.usage));\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 normalizeUsageSummary(raw: any): CodexUsageSummary | null {\n\t\tif (!raw || typeof raw !== 'object') {\n\t\t\treturn null;\n\t\t}\n\t\tconst inputTokens = this.normalizeUsageToken(raw.input_tokens ?? raw.inputTokens);\n\t\tconst cachedInputTokens = this.normalizeUsageToken(raw.cached_input_tokens ?? raw.cachedInputTokens);\n\t\tconst outputTokens = this.normalizeUsageToken(raw.output_tokens ?? raw.outputTokens);\n\t\tif (inputTokens <= 0 && cachedInputTokens <= 0 && outputTokens <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tinputTokens,\n\t\t\tcachedInputTokens,\n\t\t\toutputTokens\n\t\t};\n\t}\n\n\tprivate normalizeUsageToken(value: any): number {\n\t\tconst parsed = Number(value);\n\t\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.floor(parsed);\n\t}\n\n\tprivate async emitUsageSummary(options: CodexRunOptions | undefined, usage: CodexUsageSummary | null): Promise<void> {\n\t\tif (!options?.onUsage) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait options.onUsage(usage);\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(`onUsage failed: ${message}`);\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 (!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\tconst primaryModel = this.normalizeOptionalString(\n\t\t\tthis.config.model\n\t\t\t|| runFallbackModels?.[0]\n\t\t\t|| ''\n\t\t);\n\t\tif (/^gpt-5(?:\\.\\d+)?-codex$/i.test(primaryModel)) {\n\t\t\tpush('gpt-5-codex');\n\t\t}\n\t\tif (/^gpt-5(?:-codex|\\.\\d+-codex)$/i.test(primaryModel)) {\n\t\t\tpush('gpt-5.5');\n\t\t}\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 shouldApplyProcessCwdFallback(error: unknown, options?: CodexRunOptions): boolean {\n\t\tconst workingDirectory = this.resolveProcessWorkingDirectory(options);\n\t\tif (!workingDirectory) {\n\t\t\treturn false;\n\t\t}\n\t\tconst message = error instanceof Error ? error.message : String(error || '');\n\t\treturn /no such file or directory \\(os error 2\\)/i.test(message);\n\t}\n\n\tprivate resolveProcessWorkingDirectory(options?: CodexRunOptions): string {\n\t\treturn this.normalizeOptionalString(options?.processWorkingDirectory || options?.threadOptions?.workingDirectory);\n\t}\n\n\tprivate applyProcessCwdFallback(options?: CodexRunOptions): CodexRunOptions {\n\t\tconst nextThreadOptions: CodexThreadOptions = {\n\t\t\t...(options?.threadOptions || {})\n\t\t};\n\t\tdelete nextThreadOptions.workingDirectory;\n\t\treturn {\n\t\t\t...(options || {}),\n\t\t\tthreadOptions: nextThreadOptions\n\t\t};\n\t}\n\n\tprivate async withProcessWorkingDirectoryFallback<T>(workingDirectory: string, runner: () => Promise<T>): Promise<T> {\n\t\tconst normalizedWorkingDirectory = this.normalizeOptionalString(workingDirectory);\n\t\tif (!normalizedWorkingDirectory) {\n\t\t\treturn await runner();\n\t\t}\n\n\t\twhile (CodexClient.cwdFallbackRunning) {\n\t\t\tawait this.sleep(50);\n\t\t}\n\t\tCodexClient.cwdFallbackRunning = true;\n\n\t\tconst originalCwd = process.cwd();\n\t\ttry {\n\t\t\tprocess.chdir(normalizedWorkingDirectory);\n\t\t\tthis.log(`running Codex fallback from process cwd ${normalizedWorkingDirectory}`);\n\t\t\treturn await runner();\n\t\t}\n\t\tfinally {\n\t\t\ttry {\n\t\t\t\tprocess.chdir(originalCwd);\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\t\tthis.log(`failed to restore process cwd to ${originalCwd}: ${message}`);\n\t\t\t}\n\t\t\tCodexClient.cwdFallbackRunning = false;\n\t\t}\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"]}