@resolveio/server-lib 22.2.38 → 22.2.40

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/managers/ai-assistant-codex-manager.manager.ts"],"names":[],"mappings":"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","file":"ai-assistant-codex-manager.manager.js","sourcesContent":["import { AiTerminalConversations } from '../collections/ai-terminal-conversation.collection';\nimport { AiTerminalIssueReports } from '../collections/ai-terminal-issue-report.collection';\nimport { AiTerminalMessages } from '../collections/ai-terminal-message.collection';\nimport { AiTerminalMessageModel } from '../models/ai-terminal-message.model';\nimport { AiTerminalConversationModel } from '../models/ai-terminal-conversation.model';\nimport { promises as fs } from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { execFile } from 'child_process';\nimport { promisify } from 'util';\n\ntype AiAssistantCodexManagerRuntime = {\n\tisWorkersEnabled: boolean;\n\tisWorkerInstance: boolean;\n\tworkerIndex?: string | null;\n\tworkerInstance?: string | null;\n};\n\ntype AiAssistantCodexManagerConfig = {\n\tenabled: boolean;\n\trunOnAnyWorker: boolean;\n\ttargetWorkerIndex: string;\n\ttargetWorkerInstance: string | null;\n\tpollIntervalMs: number;\n\tlookbackMinutes: number;\n\tmaxMessagesPerPoll: number;\n\tmaxRemediationsPerPoll: number;\n\tautoReportEnabled: boolean;\n\tautoRemediationEnabled: boolean;\n\tremediationHookPath: string;\n\tremediationTimeoutMs: number;\n\tremediationMaxBufferBytes: number;\n\tremediationMaxAttemptsPerIssue: number;\n\tremediationCooldownMinutes: number;\n\tautoReplayEnabled: boolean;\n\treplayCommand: string;\n\treplayTimeoutMs: number;\n\treplayMaxBufferBytes: number;\n\treplayMaxAttemptsPerIssue: number;\n\treplayCooldownMinutes: number;\n\tdebug: boolean;\n};\n\ntype AiAssistantQualityDecision = {\n\tstatus: 'pass' | 'needs_review';\n\treason: string;\n\tcode: string;\n};\n\nconst DEFAULT_POLL_INTERVAL_MS = 15000;\nconst DEFAULT_LOOKBACK_MINUTES = 120;\nconst DEFAULT_MAX_MESSAGES_PER_POLL = 100;\nconst DEFAULT_MAX_REMEDIATIONS_PER_POLL = 3;\nconst DEFAULT_REMEDIATION_TIMEOUT_MS = 20 * 60 * 1000;\nconst DEFAULT_REMEDIATION_MAX_BUFFER_BYTES = 1024 * 1024;\nconst DEFAULT_REMEDIATION_MAX_ATTEMPTS_PER_ISSUE = 2;\nconst DEFAULT_REMEDIATION_COOLDOWN_MINUTES = 15;\nconst DEFAULT_REPLAY_TIMEOUT_MS = 5 * 60 * 1000;\nconst DEFAULT_REPLAY_MAX_BUFFER_BYTES = 1024 * 1024;\nconst DEFAULT_REPLAY_MAX_ATTEMPTS_PER_ISSUE = 2;\nconst DEFAULT_REPLAY_COOLDOWN_MINUTES = 10;\nconst MAX_STORED_OUTPUT_CHARS = 4000;\nconst execFileAsync = promisify(execFile);\n\nfunction normalizeOptionalString(value: any): string {\n\treturn typeof value === 'string' ? value.trim() : '';\n}\n\nfunction parseBooleanEnv(value: any, fallback: boolean): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn fallback;\n\t}\n\tif (['1', 'true', 'yes', 'on', 'enabled'].includes(normalized)) {\n\t\treturn true;\n\t}\n\tif (['0', 'false', 'no', 'off', 'disabled'].includes(normalized)) {\n\t\treturn false;\n\t}\n\treturn fallback;\n}\n\nfunction parsePositiveInt(value: any, fallback: number, min = 1): number {\n\tconst parsed = parseInt(String(value ?? '').trim(), 10);\n\tif (!Number.isFinite(parsed) || Number.isNaN(parsed) || parsed < min) {\n\t\treturn fallback;\n\t}\n\treturn parsed;\n}\n\nfunction parsePositiveIntWithMax(value: any, fallback: number, min: number, max: number): number {\n\tconst parsed = parsePositiveInt(value, fallback, min);\n\treturn Math.min(parsed, max);\n}\n\nfunction resolveEnabledFlag(): boolean {\n\tconst explicitValue = process.env.AI_ASSISTANT_CODEX_MANAGER_ENABLED\n\t\t?? process.env.AI_ASSISTANT_QUALITY_MANAGER_ENABLED;\n\tif (explicitValue !== undefined && explicitValue !== null && String(explicitValue).trim() !== '') {\n\t\treturn parseBooleanEnv(explicitValue, false);\n\t}\n\treturn false;\n}\n\nexport class AiAssistantCodexManager {\n\tprivate readonly config: AiAssistantCodexManagerConfig;\n\tprivate readonly runtime: AiAssistantCodexManagerRuntime;\n\tprivate _interval: NodeJS.Timeout | null = null;\n\tprivate _inFlight = false;\n\tprivate _cursorCreatedAt: Date;\n\tprivate _cursorMessageId = '';\n\n\tconstructor(config: AiAssistantCodexManagerConfig, runtime: AiAssistantCodexManagerRuntime) {\n\t\tthis.config = config;\n\t\tthis.runtime = runtime;\n\t\tthis._cursorCreatedAt = new Date(Date.now() - (config.lookbackMinutes * 60 * 1000));\n\t}\n\n\tstatic createIfEnabled(runtime: AiAssistantCodexManagerRuntime): AiAssistantCodexManager | null {\n\t\tconst config = this.resolveConfig();\n\t\tif (!config.enabled) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!this.shouldRunOnCurrentProcess(config, runtime)) {\n\t\t\treturn null;\n\t\t}\n\t\tconst manager = new AiAssistantCodexManager(config, runtime);\n\t\tmanager.initialize();\n\t\treturn manager;\n\t}\n\n\tprivate static resolveConfig(): AiAssistantCodexManagerConfig {\n\t\tconst targetWorkerIndex = normalizeOptionalString(\n\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_WORKER_INDEX\n\t\t\t|| process.env.AI_ASSISTANT_CODEX_WORKER_INDEX\n\t\t\t|| process.env.CODEX_WORKER_INDEX\n\t\t\t|| 'ai-assistant-manager'\n\t\t) || 'ai-assistant-manager';\n\t\tconst targetWorkerInstance = normalizeOptionalString(\n\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_WORKER_INSTANCE\n\t\t) || null;\n\t\treturn {\n\t\t\tenabled: resolveEnabledFlag(),\n\t\t\trunOnAnyWorker: parseBooleanEnv(process.env.AI_ASSISTANT_CODEX_MANAGER_RUN_ANY_WORKER, false),\n\t\t\ttargetWorkerIndex,\n\t\t\ttargetWorkerInstance,\n\t\t\tpollIntervalMs: parsePositiveInt(process.env.AI_ASSISTANT_CODEX_MANAGER_INTERVAL_MS, DEFAULT_POLL_INTERVAL_MS, 1000),\n\t\t\tlookbackMinutes: parsePositiveInt(process.env.AI_ASSISTANT_CODEX_MANAGER_LOOKBACK_MINUTES, DEFAULT_LOOKBACK_MINUTES, 1),\n\t\t\tmaxMessagesPerPoll: parsePositiveIntWithMax(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_MAX_MESSAGES_PER_POLL,\n\t\t\t\tDEFAULT_MAX_MESSAGES_PER_POLL,\n\t\t\t\t1,\n\t\t\t\t1000\n\t\t\t),\n\t\t\tmaxRemediationsPerPoll: parsePositiveIntWithMax(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_MAX_REMEDIATIONS_PER_POLL,\n\t\t\t\tDEFAULT_MAX_REMEDIATIONS_PER_POLL,\n\t\t\t\t1,\n\t\t\t\t100\n\t\t\t),\n\t\t\tautoReportEnabled: parseBooleanEnv(process.env.AI_ASSISTANT_CODEX_MANAGER_AUTO_REPORT, true),\n\t\t\tautoRemediationEnabled: parseBooleanEnv(process.env.AI_ASSISTANT_CODEX_MANAGER_AUTO_REMEDIATE, false),\n\t\t\tremediationHookPath: normalizeOptionalString(process.env.AI_ASSISTANT_CODEX_MANAGER_REMEDIATE_HOOK),\n\t\t\tremediationTimeoutMs: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REMEDIATE_TIMEOUT_MS,\n\t\t\t\tDEFAULT_REMEDIATION_TIMEOUT_MS,\n\t\t\t\t1000\n\t\t\t),\n\t\t\tremediationMaxBufferBytes: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REMEDIATE_MAX_BUFFER_BYTES,\n\t\t\t\tDEFAULT_REMEDIATION_MAX_BUFFER_BYTES,\n\t\t\t\t1024\n\t\t\t),\n\t\t\tremediationMaxAttemptsPerIssue: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REMEDIATE_MAX_ATTEMPTS_PER_ISSUE,\n\t\t\t\tDEFAULT_REMEDIATION_MAX_ATTEMPTS_PER_ISSUE,\n\t\t\t\t1\n\t\t\t),\n\t\t\tremediationCooldownMinutes: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REMEDIATE_COOLDOWN_MINUTES,\n\t\t\t\tDEFAULT_REMEDIATION_COOLDOWN_MINUTES,\n\t\t\t\t1\n\t\t\t),\n\t\t\tautoReplayEnabled: parseBooleanEnv(process.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_ENABLED, false),\n\t\t\treplayCommand: normalizeOptionalString(process.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_COMMAND),\n\t\t\treplayTimeoutMs: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_TIMEOUT_MS,\n\t\t\t\tDEFAULT_REPLAY_TIMEOUT_MS,\n\t\t\t\t1000\n\t\t\t),\n\t\t\treplayMaxBufferBytes: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_MAX_BUFFER_BYTES,\n\t\t\t\tDEFAULT_REPLAY_MAX_BUFFER_BYTES,\n\t\t\t\t1024\n\t\t\t),\n\t\t\treplayMaxAttemptsPerIssue: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_MAX_ATTEMPTS_PER_ISSUE,\n\t\t\t\tDEFAULT_REPLAY_MAX_ATTEMPTS_PER_ISSUE,\n\t\t\t\t1\n\t\t\t),\n\t\t\treplayCooldownMinutes: parsePositiveInt(\n\t\t\t\tprocess.env.AI_ASSISTANT_CODEX_MANAGER_REPLAY_COOLDOWN_MINUTES,\n\t\t\t\tDEFAULT_REPLAY_COOLDOWN_MINUTES,\n\t\t\t\t1\n\t\t\t),\n\t\t\tdebug: parseBooleanEnv(process.env.AI_ASSISTANT_CODEX_MANAGER_DEBUG, false)\n\t\t};\n\t}\n\n\tprivate static shouldRunOnCurrentProcess(config: AiAssistantCodexManagerConfig, runtime: AiAssistantCodexManagerRuntime): boolean {\n\t\tconst workerIndex = normalizeOptionalString(runtime.workerIndex);\n\t\tconst workerInstance = normalizeOptionalString(runtime.workerInstance);\n\t\tif (!runtime.isWorkersEnabled) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!runtime.isWorkerInstance) {\n\t\t\treturn false;\n\t\t}\n\t\tif (config.runOnAnyWorker) {\n\t\t\tif (config.targetWorkerInstance) {\n\t\t\t\treturn workerInstance === config.targetWorkerInstance;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif (workerIndex !== config.targetWorkerIndex) {\n\t\t\treturn false;\n\t\t}\n\t\tif (config.targetWorkerInstance && workerInstance !== config.targetWorkerInstance) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate initialize(): void {\n\t\tconsole.log(new Date(), '[AI Assistant Codex Manager] started', {\n\t\t\tworkerIndex: process.env.WORKER_INDEX || null,\n\t\t\tworkerInstance: process.env.NODE_APP_INSTANCE || null,\n\t\t\tpollIntervalMs: this.config.pollIntervalMs,\n\t\t\tmaxMessagesPerPoll: this.config.maxMessagesPerPoll,\n\t\t\tlookbackMinutes: this.config.lookbackMinutes,\n\t\t\tautoRemediationEnabled: this.config.autoRemediationEnabled,\n\t\t\tremediationHookPath: this.config.remediationHookPath || null,\n\t\t\tautoReplayEnabled: this.config.autoReplayEnabled\n\t\t});\n\n\t\tsetTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.pollOnce();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), '[AI Assistant Codex Manager] initial poll failed', error);\n\t\t\t}\n\t\t}, 2500);\n\n\t\tthis._interval = setInterval(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.pollOnce();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), '[AI Assistant Codex Manager] poll failed', error);\n\t\t\t}\n\t\t}, this.config.pollIntervalMs);\n\t}\n\n\tprivate async pollOnce(): Promise<void> {\n\t\tif (this._inFlight) {\n\t\t\treturn;\n\t\t}\n\t\tthis._inFlight = true;\n\t\ttry {\n\t\t\tconst query: Record<string, any> = {\n\t\t\t\trole: 'assistant',\n\t\t\t\t$or: [\n\t\t\t\t\t{ createdAt: { $gt: this._cursorCreatedAt } },\n\t\t\t\t\t{ createdAt: this._cursorCreatedAt, _id: { $gt: this._cursorMessageId || '' } }\n\t\t\t\t]\n\t\t\t};\n\t\t\tconst messages = await AiTerminalMessages.find(\n\t\t\t\tquery,\n\t\t\t\t{\n\t\t\t\t\tsort: { createdAt: 1, _id: 1 },\n\t\t\t\t\tlimit: this.config.maxMessagesPerPoll\n\t\t\t\t}\n\t\t\t) as AiTerminalMessageModel[];\n\t\t\tif (Array.isArray(messages) && messages.length) {\n\t\t\t\tfor (const message of messages) {\n\t\t\t\t\tconst createdAt = message?.createdAt ? new Date(message.createdAt) : null;\n\t\t\t\t\tif (createdAt && Number.isFinite(createdAt.getTime())) {\n\t\t\t\t\t\tthis._cursorCreatedAt = createdAt;\n\t\t\t\t\t}\n\t\t\t\t\tthis._cursorMessageId = normalizeOptionalString(message?._id);\n\t\t\t\t\tawait this.processMessage(message);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.config.autoRemediationEnabled) {\n\t\t\t\tawait this.pollRemediationQueue();\n\t\t\t}\n\t\t}\n\t\tfinally {\n\t\t\tthis._inFlight = false;\n\t\t}\n\t}\n\n\tprivate async processMessage(message: AiTerminalMessageModel): Promise<void> {\n\t\tconst messageId = normalizeOptionalString(message?._id);\n\t\tconst conversationId = normalizeOptionalString(message?.id_conversation);\n\t\tif (!messageId || !conversationId) {\n\t\t\treturn;\n\t\t}\n\t\tconst metadata = this.normalizeMetadata(message?.metadata);\n\t\tif (metadata.pending === true) {\n\t\t\treturn;\n\t\t}\n\t\tif (metadata.quality_manager?.checked_at) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst decision = this.evaluateMessageQuality(message, metadata);\n\t\tlet issueReportId = '';\n\t\tif (decision.status === 'needs_review' && this.config.autoReportEnabled) {\n\t\t\tissueReportId = await this.ensureAutomatedIssueReport(message, decision);\n\t\t}\n\t\tawait this.markMessageQualityReviewed(messageId, decision, issueReportId);\n\t\tif (issueReportId && this.config.autoRemediationEnabled) {\n\t\t\tawait this.runIssueRemediation(issueReportId, { source: 'auto', trigger: 'message_quality' });\n\t\t}\n\t}\n\n\tprivate evaluateMessageQuality(message: AiTerminalMessageModel, metadata: Record<string, any>): AiAssistantQualityDecision {\n\t\tconst content = normalizeOptionalString(message?.content);\n\t\tconst toolError = normalizeOptionalString(metadata?.tool_execution?.outcome?.error);\n\t\tif (metadata.failed === true) {\n\t\t\treturn {\n\t\t\t\tstatus: 'needs_review',\n\t\t\t\treason: 'Assistant response finalized in failed state.',\n\t\t\t\tcode: 'metadata_failed'\n\t\t\t};\n\t\t}\n\t\tif (/I ran into an internal error while preparing that response/i.test(content)) {\n\t\t\treturn {\n\t\t\t\tstatus: 'needs_review',\n\t\t\t\treason: 'Assistant returned internal error text.',\n\t\t\t\tcode: 'internal_error_copy'\n\t\t\t};\n\t\t}\n\t\tif (/That took longer than expected\\./i.test(content)) {\n\t\t\treturn {\n\t\t\t\tstatus: 'needs_review',\n\t\t\t\treason: 'Assistant response timed out.',\n\t\t\t\tcode: 'timeout_copy'\n\t\t\t};\n\t\t}\n\t\tif (/I could not finish this request within the assistant time budget/i.test(content)) {\n\t\t\treturn {\n\t\t\t\tstatus: 'needs_review',\n\t\t\t\treason: 'Assistant run exceeded configured time budget.',\n\t\t\t\tcode: 'run_budget_exceeded_copy'\n\t\t\t};\n\t\t}\n\t\tif (toolError) {\n\t\t\treturn {\n\t\t\t\tstatus: 'needs_review',\n\t\t\t\treason: `Assistant tool execution error: ${toolError}`.slice(0, 500),\n\t\t\t\tcode: 'tool_execution_error'\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstatus: 'pass',\n\t\t\treason: 'Quality check passed.',\n\t\t\tcode: 'ok'\n\t\t};\n\t}\n\n\tprivate async ensureAutomatedIssueReport(message: AiTerminalMessageModel, decision: AiAssistantQualityDecision): Promise<string> {\n\t\tconst messageId = normalizeOptionalString(message?._id);\n\t\tconst conversationId = normalizeOptionalString(message?.id_conversation);\n\t\tif (!messageId || !conversationId) {\n\t\t\treturn '';\n\t\t}\n\t\tconst existing = await AiTerminalIssueReports.findOne({\n\t\t\tid_message: messageId,\n\t\t\tsource: 'automated'\n\t\t});\n\t\tif (existing?._id) {\n\t\t\treturn normalizeOptionalString(existing._id);\n\t\t}\n\n\t\tconst conversation = await AiTerminalConversations.findById(conversationId) as AiTerminalConversationModel | null;\n\t\tif (!conversation) {\n\t\t\treturn '';\n\t\t}\n\t\tconst assistantContent = normalizeOptionalString(message?.content);\n\t\tconst requestId = normalizeOptionalString((message as any)?.metadata?.request_id);\n\t\tconst userPrompt = await this.resolveClosestUserPrompt(conversationId, message?.createdAt);\n\t\tconst now = new Date();\n\t\tconst doc: Record<string, any> = {\n\t\t\tid_conversation: conversationId,\n\t\t\tstatus: 'open',\n\t\t\tsource: 'automated',\n\t\t\treason: decision.reason,\n\t\t\t...(userPrompt ? { user_prompt: userPrompt } : {}),\n\t\t\t...(assistantContent ? { assistant_content: assistantContent } : {}),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\tid_message: messageId,\n\t\t\t...(normalizeOptionalString(conversation?.id_client) ? { id_client: normalizeOptionalString(conversation?.id_client) } : {}),\n\t\t\t...(normalizeOptionalString(conversation?.id_app) ? { id_app: normalizeOptionalString(conversation?.id_app) } : {}),\n\t\t\t...(normalizeOptionalString(conversation?.id_user) ? { id_user: normalizeOptionalString(conversation?.id_user) } : {}),\n\t\t\tmetadata: {\n\t\t\t\tquality_manager: {\n\t\t\t\t\tcode: decision.code,\n\t\t\t\t\tchecked_at: now,\n\t\t\t\t\tworker_index: normalizeOptionalString(process.env.WORKER_INDEX),\n\t\t\t\t\tworker_instance: normalizeOptionalString(process.env.NODE_APP_INSTANCE)\n\t\t\t\t}\n\t\t\t},\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now\n\t\t};\n\t\tconst insertResult = await AiTerminalIssueReports.insertOne(doc as any);\n\t\tconst issueId = normalizeOptionalString(insertResult?._id);\n\t\tconsole.log(new Date(), '[AI Assistant Codex Manager] created automated issue report', {\n\t\t\tid_issue_report: issueId || null,\n\t\t\tid_conversation: conversationId,\n\t\t\tid_message: messageId,\n\t\t\tcode: decision.code\n\t\t});\n\t\treturn issueId;\n\t}\n\n\tprivate async pollRemediationQueue(): Promise<void> {\n\t\tconst issues = await AiTerminalIssueReports.find(\n\t\t\t{\n\t\t\t\tsource: 'automated',\n\t\t\t\tstatus: { $in: ['open', 'triaged'] },\n\t\t\t\t$or: [\n\t\t\t\t\t{ 'metadata.quality_manager.remediation.status': { $exists: false } },\n\t\t\t\t\t{ 'metadata.quality_manager.remediation.status': { $in: ['queued', 'failed', 'skipped'] } }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tsort: { updatedAt: 1, createdAt: 1 },\n\t\t\t\tlimit: this.config.maxRemediationsPerPoll\n\t\t\t}\n\t\t) as Array<Record<string, any>>;\n\t\tif (!Array.isArray(issues) || !issues.length) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const issue of issues) {\n\t\t\tconst issueId = normalizeOptionalString(issue?._id);\n\t\t\tif (!issueId) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst remediationResult = await this.runIssueRemediation(issueId, { source: 'auto', trigger: 'poll' });\n\t\t\tif (remediationResult?.status === 'success' || remediationResult?.status === 'running') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async runIssueRemediation(\n\t\tissueReportId: string,\n\t\toptions: { force?: boolean; source?: 'auto' | 'manual'; trigger?: string } = {}\n\t): Promise<Record<string, any>> {\n\t\tconst issueId = normalizeOptionalString(issueReportId);\n\t\tif (!issueId) {\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason: 'Issue report id is required.'\n\t\t\t};\n\t\t}\n\t\tif (!this.config.autoRemediationEnabled) {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: 'Auto remediation is disabled.'\n\t\t\t};\n\t\t}\n\t\tif (!this.config.remediationHookPath) {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: 'Remediation hook path is not configured.'\n\t\t\t};\n\t\t}\n\n\t\tconst issue = await AiTerminalIssueReports.findById(issueId) as Record<string, any> | null;\n\t\tif (!issue) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Issue report not found.'\n\t\t\t};\n\t\t}\n\n\t\tconst force = options.force === true;\n\t\tconst source = options.source === 'manual' ? 'manual' : 'auto';\n\t\tconst now = new Date();\n\t\tconst metadata = this.normalizeMetadata(issue.metadata);\n\t\tconst qualityManager = this.normalizeMetadata(metadata.quality_manager);\n\t\tconst remediation = this.normalizeMetadata(qualityManager.remediation);\n\t\tconst existingStatus = normalizeOptionalString(remediation.status).toLowerCase();\n\t\tconst attemptsUsed = Number.isFinite(Number(remediation.attempt_count)) ? Number(remediation.attempt_count) : 0;\n\t\tconst maxAttempts = this.config.remediationMaxAttemptsPerIssue;\n\t\tconst cooldownMinutes = this.config.remediationCooldownMinutes;\n\t\tconst cooldownMs = cooldownMinutes * 60 * 1000;\n\t\tconst lastAttemptAt = this.parseDate(remediation.last_attempt_at);\n\t\tif (!force && existingStatus === 'running') {\n\t\t\treturn {\n\t\t\t\tstatus: 'running',\n\t\t\t\treason: 'Remediation already running.',\n\t\t\t\tissueId\n\t\t\t};\n\t\t}\n\t\tif (!force && maxAttempts > 0 && attemptsUsed >= maxAttempts) {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: `Remediation attempt budget reached (${attemptsUsed}/${maxAttempts}).`,\n\t\t\t\tissueId\n\t\t\t};\n\t\t}\n\t\tif (!force && existingStatus === 'failed' && lastAttemptAt) {\n\t\t\tconst ageMs = now.getTime() - lastAttemptAt.getTime();\n\t\t\tif (ageMs >= 0 && ageMs < cooldownMs) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'skipped',\n\t\t\t\t\treason: 'Remediation cooldown active.',\n\t\t\t\t\tissueId,\n\t\t\t\t\tnextAttemptAt: new Date(lastAttemptAt.getTime() + cooldownMs)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst attemptCount = attemptsUsed + 1;\n\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t{ _id: issueId },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.quality_manager.remediation': {\n\t\t\t\t\t\t...remediation,\n\t\t\t\t\t\tstatus: 'running',\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\thook: this.config.remediationHookPath,\n\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\tupdated_at: now,\n\t\t\t\t\t\tlast_error: '',\n\t\t\t\t\t\tlast_exit_code: null\n\t\t\t\t\t},\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tconst startedAtMs = Date.now();\n\t\tconst contextPath = await this.writeRemediationContextFile(issue, {\n\t\t\tissueId,\n\t\t\tattemptCount,\n\t\t\tsource,\n\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified'\n\t\t});\n\t\tlet parsedOutput: Record<string, any> | null = null;\n\t\ttry {\n\t\t\tconst execResult = await execFileAsync(\n\t\t\t\tthis.config.remediationHookPath,\n\t\t\t\t[contextPath],\n\t\t\t\t{\n\t\t\t\t\ttimeout: this.config.remediationTimeoutMs,\n\t\t\t\t\tmaxBuffer: this.config.remediationMaxBufferBytes,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...process.env,\n\t\t\t\t\t\tRIO_AI_ASSISTANT_REMEDIATION_CONTEXT: contextPath,\n\t\t\t\t\t\tRIO_AI_ASSISTANT_REMEDIATION_ISSUE_ID: issueId\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst finishedAt = new Date();\n\t\t\tconst durationMs = Date.now() - startedAtMs;\n\t\t\tconst stdout = this.toSafeOutput(execResult?.stdout);\n\t\t\tconst stderr = this.toSafeOutput(execResult?.stderr);\n\t\t\tparsedOutput = this.parseOutputJson(stdout);\n\t\t\tconst outputStatus = normalizeOptionalString(parsedOutput?.status).toLowerCase();\n\t\t\tconst success = outputStatus ? ['success', 'ok', 'completed', 'pass'].includes(outputStatus) : true;\n\t\t\tconst remediationStatus = success ? 'success' : 'failed';\n\t\t\tconst remediationReason = normalizeOptionalString(parsedOutput?.reason)\n\t\t\t\t|| (success ? 'Remediation hook completed successfully.' : 'Remediation hook reported a non-success status.');\n\n\t\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t\t{ _id: issueId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\t'metadata.quality_manager.remediation': {\n\t\t\t\t\t\t\t...remediation,\n\t\t\t\t\t\t\tstatus: remediationStatus,\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\t\thook: this.config.remediationHookPath,\n\t\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\t\tlast_success_at: success ? finishedAt : remediation.last_success_at,\n\t\t\t\t\t\t\tlast_error: success ? '' : remediationReason,\n\t\t\t\t\t\t\tlast_exit_code: success ? 0 : null,\n\t\t\t\t\t\t\tlast_duration_ms: durationMs,\n\t\t\t\t\t\t\tlast_stdout: stdout,\n\t\t\t\t\t\t\tlast_stderr: stderr,\n\t\t\t\t\t\t\tlast_output: parsedOutput || undefined,\n\t\t\t\t\t\t\tupdated_at: finishedAt\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...(success ? { status: 'triaged' } : {}),\n\t\t\t\t\t\tupdatedAt: finishedAt\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t\tlet replayResult: Record<string, any> | null = null;\n\t\t\t\tif (success && this.config.autoReplayEnabled) {\n\t\t\t\t\treplayResult = await this.runIssueReplay(issueId, {\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'post_remediation'\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconsole.log(new Date(), '[AI Assistant Codex Manager] remediation completed', {\n\t\t\t\t\tid_issue_report: issueId,\n\t\t\t\t\tstatus: remediationStatus,\n\t\t\t\t\tattempt: attemptCount,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\treplayStatus: replayResult?.status || null\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tstatus: remediationStatus,\n\t\t\t\t\treason: remediationReason,\n\t\t\t\t\tissueId,\n\t\t\t\t\tattemptCount,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\treplayStatus: replayResult?.status || '',\n\t\t\t\t\treplayReason: replayResult?.reason || ''\n\t\t\t\t};\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst finishedAt = new Date();\n\t\t\tconst durationMs = Date.now() - startedAtMs;\n\t\t\tconst err: any = error || {};\n\t\t\tconst stdout = this.toSafeOutput(err.stdout);\n\t\t\tconst stderr = this.toSafeOutput(err.stderr);\n\t\t\tconst exitCode = Number.isFinite(Number(err.code)) ? Number(err.code) : null;\n\t\t\tconst timeoutHit = err?.killed === true || normalizeOptionalString(err?.signal).toUpperCase() === 'SIGTERM';\n\t\t\tconst reason = timeoutHit\n\t\t\t\t? `Remediation hook timed out after ${this.config.remediationTimeoutMs}ms.`\n\t\t\t\t: (normalizeOptionalString(err?.message) || 'Remediation hook failed.');\n\t\t\tconst nextAttemptAt = new Date(finishedAt.getTime() + cooldownMs);\n\n\t\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t\t{ _id: issueId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\t'metadata.quality_manager.remediation': {\n\t\t\t\t\t\t\t...remediation,\n\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\t\thook: this.config.remediationHookPath,\n\t\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\t\tlast_error: reason,\n\t\t\t\t\t\t\tlast_exit_code: exitCode,\n\t\t\t\t\t\t\tlast_duration_ms: durationMs,\n\t\t\t\t\t\t\tlast_stdout: stdout,\n\t\t\t\t\t\t\tlast_stderr: stderr,\n\t\t\t\t\t\t\tlast_output: parsedOutput || undefined,\n\t\t\t\t\t\t\tnext_attempt_at: nextAttemptAt,\n\t\t\t\t\t\t\tupdated_at: finishedAt\n\t\t\t\t\t\t},\n\t\t\t\t\t\tupdatedAt: finishedAt\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconsole.error(new Date(), '[AI Assistant Codex Manager] remediation failed', {\n\t\t\t\tid_issue_report: issueId,\n\t\t\t\tattempt: attemptCount,\n\t\t\t\treason,\n\t\t\t\texitCode,\n\t\t\t\tdurationMs\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason,\n\t\t\t\tissueId,\n\t\t\t\tattemptCount,\n\t\t\t\tdurationMs,\n\t\t\t\texitCode\n\t\t\t};\n\t\t}\n\t\tfinally {\n\t\t\tif (contextPath) {\n\t\t\t\ttry {\n\t\t\t\t\tawait fs.unlink(contextPath);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\t// Ignore cleanup failures.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async runIssueReplay(\n\t\tissueReportId: string,\n\t\toptions: { force?: boolean; source?: 'auto' | 'manual'; trigger?: string } = {}\n\t): Promise<Record<string, any>> {\n\t\tconst issueId = normalizeOptionalString(issueReportId);\n\t\tif (!issueId) {\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason: 'Issue report id is required.'\n\t\t\t};\n\t\t}\n\n\t\tconst source = options.source === 'manual' ? 'manual' : 'auto';\n\t\tif (!this.config.autoReplayEnabled && source !== 'manual') {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: 'Auto replay is disabled.'\n\t\t\t};\n\t\t}\n\t\tif (!this.config.replayCommand) {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: 'Replay command is not configured.'\n\t\t\t};\n\t\t}\n\n\t\tconst issue = await AiTerminalIssueReports.findById(issueId) as Record<string, any> | null;\n\t\tif (!issue) {\n\t\t\treturn {\n\t\t\t\tstatus: 'not_found',\n\t\t\t\treason: 'Issue report not found.'\n\t\t\t};\n\t\t}\n\n\t\tconst force = options.force === true;\n\t\tconst now = new Date();\n\t\tconst metadata = this.normalizeMetadata(issue.metadata);\n\t\tconst qualityManager = this.normalizeMetadata(metadata.quality_manager);\n\t\tconst replay = this.normalizeMetadata(qualityManager.replay);\n\t\tconst existingStatus = normalizeOptionalString(replay.status).toLowerCase();\n\t\tconst attemptsUsed = Number.isFinite(Number(replay.attempt_count)) ? Number(replay.attempt_count) : 0;\n\t\tconst maxAttempts = this.config.replayMaxAttemptsPerIssue;\n\t\tconst cooldownMinutes = this.config.replayCooldownMinutes;\n\t\tconst cooldownMs = cooldownMinutes * 60 * 1000;\n\t\tconst lastAttemptAt = this.parseDate(replay.last_attempt_at);\n\t\tif (!force && existingStatus === 'running') {\n\t\t\treturn {\n\t\t\t\tstatus: 'running',\n\t\t\t\treason: 'Replay already running.',\n\t\t\t\tissueId\n\t\t\t};\n\t\t}\n\t\tif (!force && existingStatus === 'success') {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: 'Replay already succeeded.',\n\t\t\t\tissueId\n\t\t\t};\n\t\t}\n\t\tif (!force && maxAttempts > 0 && attemptsUsed >= maxAttempts) {\n\t\t\treturn {\n\t\t\t\tstatus: 'skipped',\n\t\t\t\treason: `Replay attempt budget reached (${attemptsUsed}/${maxAttempts}).`,\n\t\t\t\tissueId\n\t\t\t};\n\t\t}\n\t\tif (!force && existingStatus === 'failed' && lastAttemptAt) {\n\t\t\tconst ageMs = now.getTime() - lastAttemptAt.getTime();\n\t\t\tif (ageMs >= 0 && ageMs < cooldownMs) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'skipped',\n\t\t\t\t\treason: 'Replay cooldown active.',\n\t\t\t\t\tissueId,\n\t\t\t\t\tnextAttemptAt: new Date(lastAttemptAt.getTime() + cooldownMs)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst attemptCount = attemptsUsed + 1;\n\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t{ _id: issueId },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.quality_manager.replay': {\n\t\t\t\t\t\t...replay,\n\t\t\t\t\t\tstatus: 'running',\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\tcommand: this.config.replayCommand,\n\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\tupdated_at: now,\n\t\t\t\t\t\tlast_error: '',\n\t\t\t\t\t\tlast_exit_code: null\n\t\t\t\t\t},\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tconst startedAtMs = Date.now();\n\t\tconst contextPath = await this.writeReplayContextFile(issue, {\n\t\t\tissueId,\n\t\t\tattemptCount,\n\t\t\tsource,\n\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified'\n\t\t});\n\t\tlet parsedOutput: Record<string, any> | null = null;\n\t\ttry {\n\t\t\tconst execResult = await execFileAsync(\n\t\t\t\t'/bin/bash',\n\t\t\t\t['-lc', this.config.replayCommand],\n\t\t\t\t{\n\t\t\t\t\ttimeout: this.config.replayTimeoutMs,\n\t\t\t\t\tmaxBuffer: this.config.replayMaxBufferBytes,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...process.env,\n\t\t\t\t\t\tRIO_AI_ASSISTANT_REPLAY_CONTEXT: contextPath,\n\t\t\t\t\t\tRIO_AI_ASSISTANT_REPLAY_ISSUE_ID: issueId\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst finishedAt = new Date();\n\t\t\tconst durationMs = Date.now() - startedAtMs;\n\t\t\tconst stdout = this.toSafeOutput(execResult?.stdout);\n\t\t\tconst stderr = this.toSafeOutput(execResult?.stderr);\n\t\t\tparsedOutput = this.parseOutputJson(stdout);\n\t\t\tconst outputStatus = normalizeOptionalString(parsedOutput?.status).toLowerCase();\n\t\t\tconst success = outputStatus ? ['success', 'ok', 'completed', 'pass'].includes(outputStatus) : true;\n\t\t\tconst replayStatus = success ? 'success' : 'failed';\n\t\t\tconst replayReason = normalizeOptionalString(parsedOutput?.reason)\n\t\t\t\t|| (success ? 'Replay command completed successfully.' : 'Replay command reported a non-success status.');\n\n\t\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t\t{ _id: issueId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\t'metadata.quality_manager.replay': {\n\t\t\t\t\t\t\t...replay,\n\t\t\t\t\t\t\tstatus: replayStatus,\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\t\tcommand: this.config.replayCommand,\n\t\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\t\tlast_success_at: success ? finishedAt : replay.last_success_at,\n\t\t\t\t\t\t\tlast_error: success ? '' : replayReason,\n\t\t\t\t\t\t\tlast_exit_code: success ? 0 : null,\n\t\t\t\t\t\t\tlast_duration_ms: durationMs,\n\t\t\t\t\t\t\tlast_stdout: stdout,\n\t\t\t\t\t\t\tlast_stderr: stderr,\n\t\t\t\t\t\t\tlast_output: parsedOutput || undefined,\n\t\t\t\t\t\t\tupdated_at: finishedAt\n\t\t\t\t\t\t},\n\t\t\t\t\t\tupdatedAt: finishedAt\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconsole.log(new Date(), '[AI Assistant Codex Manager] replay completed', {\n\t\t\t\tid_issue_report: issueId,\n\t\t\t\tstatus: replayStatus,\n\t\t\t\tattempt: attemptCount,\n\t\t\t\tdurationMs\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tstatus: replayStatus,\n\t\t\t\treason: replayReason,\n\t\t\t\tissueId,\n\t\t\t\tattemptCount,\n\t\t\t\tdurationMs\n\t\t\t};\n\t\t}\n\t\tcatch (error) {\n\t\t\tconst finishedAt = new Date();\n\t\t\tconst durationMs = Date.now() - startedAtMs;\n\t\t\tconst err: any = error || {};\n\t\t\tconst stdout = this.toSafeOutput(err.stdout);\n\t\t\tconst stderr = this.toSafeOutput(err.stderr);\n\t\t\tconst exitCode = Number.isFinite(Number(err.code)) ? Number(err.code) : null;\n\t\t\tconst timeoutHit = err?.killed === true || normalizeOptionalString(err?.signal).toUpperCase() === 'SIGTERM';\n\t\t\tconst reason = timeoutHit\n\t\t\t\t? `Replay command timed out after ${this.config.replayTimeoutMs}ms.`\n\t\t\t\t: (normalizeOptionalString(err?.message) || 'Replay command failed.');\n\t\t\tconst nextAttemptAt = new Date(finishedAt.getTime() + cooldownMs);\n\n\t\t\tawait AiTerminalIssueReports.updateOne(\n\t\t\t\t{ _id: issueId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\t'metadata.quality_manager.replay': {\n\t\t\t\t\t\t\t...replay,\n\t\t\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\ttrigger: normalizeOptionalString(options.trigger) || 'unspecified',\n\t\t\t\t\t\t\tattempt_count: attemptCount,\n\t\t\t\t\t\t\tmax_attempts: maxAttempts,\n\t\t\t\t\t\t\tcooldown_minutes: cooldownMinutes,\n\t\t\t\t\t\t\tcommand: this.config.replayCommand,\n\t\t\t\t\t\t\tlast_attempt_at: now,\n\t\t\t\t\t\t\tlast_error: reason,\n\t\t\t\t\t\t\tlast_exit_code: exitCode,\n\t\t\t\t\t\t\tlast_duration_ms: durationMs,\n\t\t\t\t\t\t\tlast_stdout: stdout,\n\t\t\t\t\t\t\tlast_stderr: stderr,\n\t\t\t\t\t\t\tlast_output: parsedOutput || undefined,\n\t\t\t\t\t\t\tnext_attempt_at: nextAttemptAt,\n\t\t\t\t\t\t\tupdated_at: finishedAt\n\t\t\t\t\t\t},\n\t\t\t\t\t\tupdatedAt: finishedAt\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconsole.error(new Date(), '[AI Assistant Codex Manager] replay failed', {\n\t\t\t\tid_issue_report: issueId,\n\t\t\t\tattempt: attemptCount,\n\t\t\t\treason,\n\t\t\t\texitCode,\n\t\t\t\tdurationMs\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tstatus: 'failed',\n\t\t\t\treason,\n\t\t\t\tissueId,\n\t\t\t\tattemptCount,\n\t\t\t\tdurationMs,\n\t\t\t\texitCode\n\t\t\t};\n\t\t}\n\t\tfinally {\n\t\t\tif (contextPath) {\n\t\t\t\ttry {\n\t\t\t\t\tawait fs.unlink(contextPath);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\t// Ignore cleanup failures.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async markMessageQualityReviewed(messageId: string, decision: AiAssistantQualityDecision, issueReportId = ''): Promise<void> {\n\t\tconst now = new Date();\n\t\tconst qualityPayload: Record<string, any> = {\n\t\t\tstatus: decision.status,\n\t\t\treason: decision.reason,\n\t\t\tcode: decision.code,\n\t\t\tchecked_at: now,\n\t\t\tworker_index: normalizeOptionalString(process.env.WORKER_INDEX),\n\t\t\tworker_instance: normalizeOptionalString(process.env.NODE_APP_INSTANCE)\n\t\t};\n\t\tif (issueReportId) {\n\t\t\tqualityPayload.id_issue_report = issueReportId;\n\t\t}\n\t\tawait AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.quality_manager': qualityPayload,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tif (this.config.debug) {\n\t\t\tconsole.log(new Date(), '[AI Assistant Codex Manager] checked message', {\n\t\t\t\tid_message: messageId,\n\t\t\t\tstatus: decision.status,\n\t\t\t\tcode: decision.code,\n\t\t\t\tid_issue_report: issueReportId || null\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async resolveClosestUserPrompt(conversationId: string, assistantCreatedAt?: Date): Promise<string> {\n\t\tconst query: Record<string, any> = {\n\t\t\tid_conversation: conversationId,\n\t\t\trole: 'user'\n\t\t};\n\t\tconst createdAt = assistantCreatedAt ? new Date(assistantCreatedAt) : null;\n\t\tif (createdAt && Number.isFinite(createdAt.getTime())) {\n\t\t\tquery.createdAt = { $lte: createdAt };\n\t\t}\n\t\tconst userMessage = await AiTerminalMessages.findOne(query, { sort: { createdAt: -1 } }) as AiTerminalMessageModel | null;\n\t\treturn normalizeOptionalString(userMessage?.content);\n\t}\n\n\tprivate async writeRemediationContextFile(issue: Record<string, any>, options: Record<string, any>): Promise<string> {\n\t\tconst issueId = normalizeOptionalString(issue?._id);\n\t\tconst filePath = path.join(os.tmpdir(), `resolveio-ai-assistant-remediation-${issueId}-${Date.now()}.json`);\n\t\tconst payload = {\n\t\t\tcreated_at: new Date().toISOString(),\n\t\t\tissue_report: {\n\t\t\t\t_id: issueId,\n\t\t\t\tstatus: normalizeOptionalString(issue?.status),\n\t\t\t\tsource: normalizeOptionalString(issue?.source),\n\t\t\t\treason: normalizeOptionalString(issue?.reason),\n\t\t\t\tid_conversation: normalizeOptionalString(issue?.id_conversation),\n\t\t\t\tid_message: normalizeOptionalString(issue?.id_message),\n\t\t\t\tid_client: normalizeOptionalString(issue?.id_client),\n\t\t\t\tid_app: normalizeOptionalString(issue?.id_app),\n\t\t\t\tid_user: normalizeOptionalString(issue?.id_user),\n\t\t\t\trequest_id: normalizeOptionalString(issue?.request_id),\n\t\t\t\tuser_prompt: normalizeOptionalString(issue?.user_prompt),\n\t\t\t\tassistant_content: normalizeOptionalString(issue?.assistant_content)\n\t\t\t},\n\t\t\tremediation: {\n\t\t\t\tsource: normalizeOptionalString(options?.source),\n\t\t\t\ttrigger: normalizeOptionalString(options?.trigger),\n\t\t\t\tattempt_count: Number(options?.attemptCount) || 0,\n\t\t\t\tmax_attempts: this.config.remediationMaxAttemptsPerIssue,\n\t\t\t\tcooldown_minutes: this.config.remediationCooldownMinutes\n\t\t\t}\n\t\t};\n\t\tawait fs.writeFile(filePath, JSON.stringify(payload, null, 2), 'utf8');\n\t\treturn filePath;\n\t}\n\n\tprivate async writeReplayContextFile(issue: Record<string, any>, options: Record<string, any>): Promise<string> {\n\t\tconst issueId = normalizeOptionalString(issue?._id);\n\t\tconst metadata = this.normalizeMetadata(issue?.metadata);\n\t\tconst qualityManager = this.normalizeMetadata(metadata.quality_manager);\n\t\tconst remediation = this.normalizeMetadata(qualityManager.remediation);\n\t\tconst filePath = path.join(os.tmpdir(), `resolveio-ai-assistant-replay-${issueId}-${Date.now()}.json`);\n\t\tconst payload = {\n\t\t\tcreated_at: new Date().toISOString(),\n\t\t\tissue_report: {\n\t\t\t\t_id: issueId,\n\t\t\t\tstatus: normalizeOptionalString(issue?.status),\n\t\t\t\tsource: normalizeOptionalString(issue?.source),\n\t\t\t\treason: normalizeOptionalString(issue?.reason),\n\t\t\t\tid_conversation: normalizeOptionalString(issue?.id_conversation),\n\t\t\t\tid_message: normalizeOptionalString(issue?.id_message),\n\t\t\t\tid_client: normalizeOptionalString(issue?.id_client),\n\t\t\t\tid_app: normalizeOptionalString(issue?.id_app),\n\t\t\t\tid_user: normalizeOptionalString(issue?.id_user),\n\t\t\t\trequest_id: normalizeOptionalString(issue?.request_id),\n\t\t\t\tuser_prompt: normalizeOptionalString(issue?.user_prompt),\n\t\t\t\tassistant_content: normalizeOptionalString(issue?.assistant_content)\n\t\t\t},\n\t\t\tremediation: {\n\t\t\t\tstatus: normalizeOptionalString(remediation.status),\n\t\t\t\tlast_attempt_at: remediation.last_attempt_at || null,\n\t\t\t\tlast_success_at: remediation.last_success_at || null,\n\t\t\t\tlast_error: normalizeOptionalString(remediation.last_error),\n\t\t\t\tattempt_count: Number(remediation.attempt_count) || 0\n\t\t\t},\n\t\t\treplay: {\n\t\t\t\tsource: normalizeOptionalString(options?.source),\n\t\t\t\ttrigger: normalizeOptionalString(options?.trigger),\n\t\t\t\tattempt_count: Number(options?.attemptCount) || 0,\n\t\t\t\tmax_attempts: this.config.replayMaxAttemptsPerIssue,\n\t\t\t\tcooldown_minutes: this.config.replayCooldownMinutes,\n\t\t\t\tcommand: this.config.replayCommand\n\t\t\t}\n\t\t};\n\t\tawait fs.writeFile(filePath, JSON.stringify(payload, null, 2), 'utf8');\n\t\treturn filePath;\n\t}\n\n\tprivate parseOutputJson(stdout: string): Record<string, any> | null {\n\t\tconst text = normalizeOptionalString(stdout);\n\t\tif (!text) {\n\t\t\treturn null;\n\t\t}\n\t\tconst firstChar = text.charAt(0);\n\t\tif (firstChar !== '{' && firstChar !== '[') {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(text);\n\t\t\tif (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn parsed;\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate toSafeOutput(value: any): string {\n\t\tconst asString = typeof value === 'string'\n\t\t\t? value\n\t\t\t: (Buffer.isBuffer(value) ? value.toString('utf8') : String(value || ''));\n\t\tconst normalized = asString.trim();\n\t\tif (!normalized) {\n\t\t\treturn '';\n\t\t}\n\t\tif (normalized.length <= MAX_STORED_OUTPUT_CHARS) {\n\t\t\treturn normalized;\n\t\t}\n\t\treturn normalized.slice(0, MAX_STORED_OUTPUT_CHARS);\n\t}\n\n\tprivate parseDate(value: any): Date | null {\n\t\tif (!value) {\n\t\t\treturn null;\n\t\t}\n\t\tconst date = value instanceof Date ? value : new Date(value);\n\t\tif (!Number.isFinite(date.getTime())) {\n\t\t\treturn null;\n\t\t}\n\t\treturn date;\n\t}\n\n\tprivate normalizeMetadata(value: any): Record<string, any> {\n\t\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\t\treturn {};\n\t\t}\n\t\treturn value;\n\t}\n}\n"]}
@@ -102,6 +102,8 @@ export declare class WorkerDispatcherManager {
102
102
  private findWorkerForTask;
103
103
  private logCodexSelection;
104
104
  private normalizeWorkerIndex;
105
+ private isGeneralPurposeWorker;
106
+ private filterGeneralPurposeWorkers;
105
107
  private getWorkerLoad;
106
108
  private isWorkerZero;
107
109
  private assignTaskToWorker;
@@ -303,7 +303,7 @@ var WorkerDispatcherManager = /** @class */ (function () {
303
303
  var targetWorkerIndex = this.normalizeWorkerIndex(method === null || method === void 0 ? void 0 : method.targetWorkerIndex);
304
304
  var targetWorkerInstance = this.normalizeWorkerIndex(method === null || method === void 0 ? void 0 : method.targetWorkerInstance);
305
305
  var hasExplicitTarget = !!targetWorkerIndex || !!targetWorkerInstance;
306
- var candidates = __spreadArray([], __read(this._workers), false);
306
+ var candidates = this.filterGeneralPurposeWorkers(__spreadArray([], __read(this._workers), false), hasExplicitTarget);
307
307
  var hasPublicationSelector = this.hasWorkerSelector(this._publicationWorkerIndexes, this._publicationWorkerInstances);
308
308
  if (hasPublicationSelector && !hasExplicitTarget) {
309
309
  if (taskQueue === 'publication') {
@@ -647,6 +647,7 @@ var WorkerDispatcherManager = /** @class */ (function () {
647
647
  nonCodexReserve: this._nonCodexReserve
648
648
  } : null;
649
649
  var candidates = this._workers.filter(function (x) { return x.activeTasks.length < _this.MAX_CONCURRENCY; });
650
+ candidates = this.filterGeneralPurposeWorkers(candidates, hasExplicitTarget);
650
651
  if (debugState) {
651
652
  debugState.candidatesInitial = candidates.length;
652
653
  }
@@ -792,6 +793,20 @@ var WorkerDispatcherManager = /** @class */ (function () {
792
793
  var normalized = String(value).trim();
793
794
  return normalized.length ? normalized : null;
794
795
  };
796
+ WorkerDispatcherManager.prototype.isGeneralPurposeWorker = function (worker) {
797
+ var normalizedIndex = this.normalizeWorkerIndex(worker === null || worker === void 0 ? void 0 : worker.workerIndex);
798
+ if (!normalizedIndex) {
799
+ return false;
800
+ }
801
+ return /^[0-9]+$/.test(normalizedIndex);
802
+ };
803
+ WorkerDispatcherManager.prototype.filterGeneralPurposeWorkers = function (candidates, hasExplicitTarget) {
804
+ var _this = this;
805
+ if (hasExplicitTarget) {
806
+ return candidates;
807
+ }
808
+ return candidates.filter(function (worker) { return _this.isGeneralPurposeWorker(worker); });
809
+ };
795
810
  WorkerDispatcherManager.prototype.getWorkerLoad = function (worker) {
796
811
  return worker.activeTasks.reduce(function (sum, task) { return sum + task.weight; }, 0);
797
812
  };