@resolveio/server-lib 22.2.55 → 22.2.56

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,31 +1,31 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "22.2.55",
3
+ "version": "22.2.56",
4
4
  "description": "",
5
- "scripts": {
6
- "package": "./build_package.sh",
7
- "library": "node_modules/gulp/bin/gulp.js watch:dist",
8
- "server": "./start_server.sh",
9
- "postserver": "node_modules/gulp/bin/gulp.js mongo-stop",
10
- "build-prod": "node_modules/gulp/bin/gulp.js build-prod",
11
- "dependency-test": "node --require ts-node/register tests/subscription-dependency-context.test.ts",
12
- "subscription-invalidation-test": "node --require ts-node/register tests/subscription-manager-invalidation.test.ts",
13
- "subscription-connect-race-test": "node --require ts-node/register tests/subscription-connect-race.test.ts",
14
- "error-reporter-test": "node --require ts-node/register tests/error-reporter.test.ts",
15
- "ai-assistant-utils-test": "node --require ts-node/register tests/ai-assistant-utils.test.ts",
16
- "ai-assistant-routing-eval-test": "node --require ts-node/register tests/ai-assistant-routing-eval.test.ts",
17
- "ai-assistant-preflight-matrix": "node --require ts-node/register tests/ai-assistant-preflight-matrix.ts",
18
- "ai-assistant-snf-live-eval": "node --require ts-node/register tests/ai-assistant-snf-live-eval.ts",
19
- "ai-assistant-openai-e2e": "node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
20
- "ai-assistant-openai-e2e:wo-this-week-customer": "AI_ASSISTANT_E2E_CASES=wo_this_week_customer_summary node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
21
- "ai-assistant-openai-e2e:wo-this-week-customer:soak": "AI_ASSISTANT_E2E_CASES=wo_this_week_customer_summary AI_ASSISTANT_E2E_REPEAT=50 node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
22
- "ai-assistant-openai-git-e2e": "node --require ts-node/register tests/ai-assistant-openai-git-e2e.ts",
23
- "ai-assistant-eval-triage": "node --require ts-node/register tests/ai-assistant-eval-triage.ts",
24
- "ai-assistant-data-parity-e2e": "node --require ts-node/register tests/ai-assistant-data-parity-e2e.ts",
25
- "ai-assistant-corpus-build": "node --require ts-node/register tests/ai-assistant-corpus-build.ts",
26
- "ai-assistant-corpus-replay-e2e": "node --require ts-node/register tests/ai-assistant-corpus-replay-e2e.ts",
27
- "ai-assistant-nightly-eval": "npm run ai-assistant-corpus-build && npm run ai-assistant-data-parity-e2e && npm run ai-assistant-corpus-replay-e2e && npm run ai-assistant-eval-triage"
28
- },
5
+ "scripts": {
6
+ "package": "./build_package.sh",
7
+ "library": "node_modules/gulp/bin/gulp.js watch:dist",
8
+ "server": "./start_server.sh",
9
+ "postserver": "node_modules/gulp/bin/gulp.js mongo-stop",
10
+ "build-prod": "node_modules/gulp/bin/gulp.js build-prod",
11
+ "dependency-test": "node --require ts-node/register tests/subscription-dependency-context.test.ts",
12
+ "subscription-invalidation-test": "node --require ts-node/register tests/subscription-manager-invalidation.test.ts",
13
+ "subscription-connect-race-test": "node --require ts-node/register tests/subscription-connect-race.test.ts",
14
+ "error-reporter-test": "node --require ts-node/register tests/error-reporter.test.ts",
15
+ "ai-assistant-utils-test": "node --require ts-node/register tests/ai-assistant-utils.test.ts",
16
+ "ai-assistant-routing-eval-test": "node --require ts-node/register tests/ai-assistant-routing-eval.test.ts",
17
+ "ai-assistant-preflight-matrix": "node --require ts-node/register tests/ai-assistant-preflight-matrix.ts",
18
+ "ai-assistant-snf-live-eval": "node --require ts-node/register tests/ai-assistant-snf-live-eval.ts",
19
+ "ai-assistant-openai-e2e": "node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
20
+ "ai-assistant-openai-e2e:wo-this-week-customer": "AI_ASSISTANT_E2E_CASES=wo_this_week_customer_summary node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
21
+ "ai-assistant-openai-e2e:wo-this-week-customer:soak": "AI_ASSISTANT_E2E_CASES=wo_this_week_customer_summary AI_ASSISTANT_E2E_REPEAT=50 node --require ts-node/register tests/ai-assistant-openai-e2e.ts",
22
+ "ai-assistant-openai-git-e2e": "node --require ts-node/register tests/ai-assistant-openai-git-e2e.ts",
23
+ "ai-assistant-eval-triage": "node --require ts-node/register tests/ai-assistant-eval-triage.ts",
24
+ "ai-assistant-data-parity-e2e": "node --require ts-node/register tests/ai-assistant-data-parity-e2e.ts",
25
+ "ai-assistant-corpus-build": "node --require ts-node/register tests/ai-assistant-corpus-build.ts",
26
+ "ai-assistant-corpus-replay-e2e": "node --require ts-node/register tests/ai-assistant-corpus-replay-e2e.ts",
27
+ "ai-assistant-nightly-eval": "npm run ai-assistant-corpus-build && npm run ai-assistant-data-parity-e2e && npm run ai-assistant-corpus-replay-e2e && npm run ai-assistant-eval-triage"
28
+ },
29
29
  "author": "",
30
30
  "license": "ISC",
31
31
  "engines": {
@@ -822,7 +822,7 @@ var CodexClient = /** @class */ (function () {
822
822
  push('gpt-5-codex');
823
823
  }
824
824
  if (/^gpt-5(?:-codex|\.\d+-codex)$/i.test(primaryModel)) {
825
- push('gpt-5.3-codex');
825
+ push('gpt-5.5');
826
826
  }
827
827
  return models;
828
828
  };
@@ -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\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 controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n\t\tconst timeoutId = controller\n\t\t\t? setTimeout(() => controller.abort(), timeoutMs)\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\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\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\tthis.log(`runStreamed timed out (durationMs=${Date.now() - startedAt})`);\n\t\t\t\tthrow new Error('AI request timed out.');\n\t\t\t}\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runStreamed failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t\tfinally {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t\tif (!finalResponse) {\n\t\t\tthrow new Error('AI returned no completion content.');\n\t\t}\n\t\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 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.3-codex');\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\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 controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n\t\tconst timeoutId = controller\n\t\t\t? setTimeout(() => controller.abort(), timeoutMs)\n\t\t\t: null;\n\t\tlet finalResponse = '';\n\t\tlet lastText = '';\n\t\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\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\tthis.log(`runStreamed timed out (durationMs=${Date.now() - startedAt})`);\n\t\t\t\tthrow new Error('AI request timed out.');\n\t\t\t}\n\t\t\tconst message = error instanceof Error ? error.message : String(error || 'Unknown error');\n\t\t\tthis.log(`runStreamed failed (durationMs=${Date.now() - startedAt}): ${message}`);\n\t\t\tthrow error;\n\t\t}\n\t\tfinally {\n\t\t\tif (timeoutId) {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t}\n\t\t}\n\t\tif (!finalResponse) {\n\t\t\tthrow new Error('AI returned no completion content.');\n\t\t}\n\t\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 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"]}