@resolveio/server-lib 20.15.9 → 20.16.0
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/managers/worker-dispatcher.manager.d.ts +10 -0
- package/managers/worker-dispatcher.manager.js +177 -25
- package/managers/worker-dispatcher.manager.js.map +1 -1
- package/methods/ai-terminal.js +1622 -278
- package/methods/ai-terminal.js.map +1 -1
- package/methods/publications.js +36 -8
- package/methods/publications.js.map +1 -1
- package/models/method.model.d.ts +1 -0
- package/models/method.model.js.map +1 -1
- package/package.json +1 -1
- package/server-app.d.ts +4 -0
- package/server-app.js +54 -2
- package/server-app.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/ai-terminal.ts"],"names":[],"mappings":"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","file":"ai-terminal.js","sourcesContent":["import { promises as fs } from 'fs';\nimport { on, once } from 'events';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { setTimeout as sleepTimeout } from 'timers/promises';\nimport { Worker } from 'worker_threads';\nimport { ObjectId } from 'mongodb';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { Users } from '../collections/user.collection';\nimport { AiTerminalConversations } from '../collections/ai-terminal-conversation.collection';\nimport { AiTerminalMessages } from '../collections/ai-terminal-message.collection';\nimport { AiTerminalConversationModel, AiTerminalConversationStatus, AiTerminalMode } from '../models/ai-terminal-conversation.model';\nimport { AiTerminalMessageModel } from '../models/ai-terminal-message.model';\nimport { deepCopy, objectIdHexString, round } from '../util/common';\nimport { countChatTokens, countTokens } from '../util/tokenizer';\nimport { OpenAIClient } from '../services/openai-client';\nimport { CodexClient, CodexConfig, CodexRunOptions } from '../services/codex-client';\nimport { recordOpenAIUsage } from '../managers/openai-usage-ledger.manager';\n\nconst DEFAULT_MAX_FILE_MB = 50;\nconst DEFAULT_MAX_TOTAL_MB = 100;\nconst DEFAULT_MAX_ATTACHMENT_CHARS = 12000;\nconst DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS = 40000;\nconst DEFAULT_CODEX_MODEL = 'gpt-5.1-codex-mini';\nconst DEFAULT_CODEX_TIMEOUT_MS = 180000;\nconst AI_ASSISTANT_MONGO_DEFAULT_LIMIT = 20;\nconst AI_ASSISTANT_MONGO_MAX_LIMIT = 200;\nconst AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT = 5000;\nconst AI_ASSISTANT_TOOL_MAX_STEPS = 1;\nconst AI_ASSISTANT_DISPLAY_MAX_COLUMNS = 12;\nconst AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS = 20;\nconst AI_ASSISTANT_DISPLAY_STRING_LIMIT = 160;\nconst AI_ASSISTANT_PROGRESS_PLACEHOLDER = 'Planning...';\nconst AI_ASSISTANT_PROGRESS_TICK_MS = 5000;\nconst AI_ASSISTANT_READ_PREFERENCE = 'secondary' as const;\nconst AI_ASSISTANT_PROBE_LIMIT = 3;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP = 20;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE = 20;\nconst AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS = 20;\nconst AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT = 4;\nconst AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS = 12;\nconst AI_ASSISTANT_PROGRESS_TICKS = [\n\t'Grabbing Data',\n\t'Drafting response'\n];\nconst AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS = [\n\t'name',\n\t'title',\n\t'status',\n\t'type',\n\t'stage',\n\t'state',\n\t'category',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt',\n\t'date_updated',\n\t'date_completed',\n\t'date_invoice',\n\t'date_invoiced',\n\t'id_customer',\n\t'id_client',\n\t'id_user',\n\t'id_invoice'\n];\nconst AI_ASSISTANT_DATE_FALLBACKS: Record<string, string> = {\n\tdate_created: 'createdAt',\n\tcreatedAt: 'date_created',\n\tdate_invoice: 'date_invoiced',\n\tdate_invoiced: 'date_invoice'\n};\nconst AI_ASSISTANT_DATE_EXPANSION_FIELDS = [\n\t'date',\n\t'date_start',\n\t'date_end',\n\t'date_original',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt'\n];\n\n\nconst AI_ASSISTANT_BLOCKED_COLLECTIONS = new Set([\n\t'user-groups',\n\t'logged-in-users',\n\t'ai-terminal-messages',\n\t'ai-terminal-conversations',\n\t'openai-usage-ledger',\n\t'logs',\n\t'notifications',\n\t'email-history'\n]);\n\nconst AI_ASSISTANT_SENSITIVE_FIELDS = [\n\t'password',\n\t'salt',\n\t'hash',\n\t'secret',\n\t'token',\n\t'api_key',\n\t'email',\n\t'phonenumber',\n\t'phone',\n\t'ssn',\n\t'address',\n\t'services',\n\t'roles'\n];\n\nconst AI_ASSISTANT_CLIENT_SCOPE_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_FIELD_INDEX_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_COLLECTION_CACHE = new Map<string, { names: string[]; updatedAt: number }>();\nconst AI_ASSISTANT_COLLECTION_CACHE_TTL_MS = 5 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_STOPWORDS = new Set([\n\t'the',\n\t'a',\n\t'an',\n\t'of',\n\t'for',\n\t'by',\n\t'with',\n\t'and',\n\t'or',\n\t'to',\n\t'from',\n\t'in',\n\t'on',\n\t'at',\n\t'last',\n\t'recent',\n\t'today',\n\t'week',\n\t'month',\n\t'year',\n\t'this',\n\t'that',\n\t'these',\n\t'those',\n\t'show',\n\t'list',\n\t'get',\n\t'give',\n\t'how',\n\t'many',\n\t'count',\n\t'total',\n\t'breakdown',\n\t'group',\n\t'grouped',\n\t'per',\n\t'open',\n\t'closed',\n\t'completed',\n\t'missing',\n\t'overdue'\n]);\n\nconst AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS = new Set([\n\t'blend',\n\t'blends',\n\t'chemical',\n\t'chemicals',\n\t'invoice',\n\t'invoices',\n\t'work',\n\t'order',\n\t'orders',\n\t'delivery',\n\t'deliveries',\n\t'truck',\n\t'treating',\n\t'route',\n\t'routes',\n\t'well',\n\t'wells',\n\t'sample',\n\t'samples',\n\t'customer',\n\t'customers'\n]);\n\nconst AI_ASSISTANT_COLLECTION_GENERIC_TOKENS = new Set([\n\t'ticket',\n\t'tickets',\n\t'report',\n\t'reports',\n\t'summary',\n\t'summarize',\n\t'recent',\n\t'last',\n\t'new',\n\t'created',\n\t'date',\n\t'list',\n\t'show'\n]);\n\nconst AI_ASSISTANT_FIELD_TOKEN_SYNONYMS: Record<string, string[]> = {\n\tvolume: ['quantity', 'qty', 'amount', 'gallons', 'gallon', 'liters', 'liter', 'litre'],\n\tquantity: ['volume', 'qty', 'amount', 'gallons', 'gallon'],\n\tproduct: ['item', 'chemical', 'material', 'blend', 'name', 'title', 'label'],\n\tcustomer: ['client', 'account', 'company'],\n\twell: ['location', 'site', 'pad', 'api'],\n\tbatch: ['lot'],\n\tlot: ['batch'],\n\tdate: ['created', 'createdat', 'created_at', 'date_created', 'updated', 'updatedat', 'updated_at', 'date_updated'],\n\ttotal: ['sum', 'amount', 'total_amount', 'total_quantity']\n};\n\nconst AI_ASSISTANT_ID_LOOKUP_HINTS: Record<string, string[]> = {\n\tcustomer: ['customers', 'customer-versions'],\n\tchemical: ['chemicals', 'chemical-versions'],\n\twell: ['wells', 'well-groups', 'production-locations', 'locations'],\n\tlocation: ['locations', 'production-locations'],\n\tinvoice: ['invoices']\n};\n\nconst AI_ASSISTANT_TERM_SYNONYMS: Array<{ label: string; pattern: RegExp; expansions: string[] }> = [\n\t{\n\t\tlabel: 'truck treating jobs',\n\t\tpattern: /\\btruck\\s+treating\\s+jobs?\\b/i,\n\t\texpansions: ['truck treating deliveries', 'truck-treating-deliveries', 'truck treating route events']\n\t},\n\t{\n\t\tlabel: 'blend tickets',\n\t\tpattern: /\\bblend(?:ing)?\\s+tickets?\\b/i,\n\t\texpansions: ['chemical blends', 'chemical-blends', 'report-chemical-blends', 'blend batches']\n\t}\n];\n\nconst AI_ASSISTANT_SYSTEM_PROMPT = [\n\t'You are the ResolveIO in-app AI assistant running with read-only access to the codebase.',\n\t'Core rules:',\n\t'- Never share code or file contents. All code is proprietary.',\n\t'- Do not modify files, run destructive commands, or access databases directly.',\n\t'- Read-only Mongo access is allowed only via the MONGO_READ/MONGO_AGG directives (see below).',\n\t'- Do not access secrets, credentials, or user data.',\n\t'- If the user has a customer portal scope (other.id_customer), only discuss that customer\\'s data and what is visible in their customer portal. Never reference other customers or internal/admin-only data. If asked for anything outside the portal, say it isn\\'t available.',\n\t'- Do not assist with hacking, bypassing security, or abuse.',\n\t'Accuracy & tools:',\n\t'- Step 1 (always): determine the target collections/models/modules/workflows using context, routes, and collection hints. Assume the user is non-technical and will not provide internal names.',\n\t'- Planning stage: regex/keyword scan the codebase for collectionName/model definitions, methods, publications, and Angular routes/modules to map user wording to internal names.',\n\t'- Map user wording to internal collections/fields yourself. Do not ask for property names unless required to run a query.',\n\t'- Use term hints from context (synonym expansions) when mapping user language to collections.',\n\t'- Do not guess or invent collections/fields. If unsure, verify in the codebase or run a small Mongo read (limit 1-5) to learn the shape.',\n\t'- Prefer running a small Mongo read over asking multiple questions.',\n\t'- For any data request (counts, lists, breakdowns, recent/last items), you MUST run a MONGO_READ or MONGO_AGG before answering.',\n\t'- Ask at most one clarifying question only when required to run a query or resolve missing details.',\n\t'- If a field starts with id_ and refers to another collection, treat it as a foreign key and look up the related record when needed.',\n\t'- When the user provides a customer, well, or chemical name, use case-insensitive regex matching to find it. Assume the name exists and try to match it before asking questions.',\n\t'- Use the codebase context to choose correct collections/fields/workflows and use MONGO_READ/MONGO_AGG to answer with real data when needed.',\n\t'- Process (fast path): Queue -> Planning -> Grabbing Data -> Drafting response. Use regex/keyword matching to identify collections/models, draft a minimal query, run the tool, then format a table. This should be fast; avoid extra narration.',\n\t'- Assume a relevant collection exists; if verification reads return zero data, report no data found instead of interrogating the user.',\n\t'- Never claim \"no data exists\" unless you resolved a collection and executed a legitimate query (with fallback date fields when needed) that returned zero rows.',\n\t'- If a query returns zero rows, run a tiny probe read (limit 1-3) to validate fields and adjust filters/projection before concluding.',\n\t'- For direct questions, answer first. Ask a single follow-up only if required to proceed.',\n\t'Data Presentation:',\n\t'- Output plain Markdown (NO triple backticks).',\n\t'- When you reference database results, summarize first, then include a Markdown table.',\n\t'- When presenting record lists or aggregates, produce a Markdown table (pipes).',\n\t'- Never show raw JSON dumps.',\n\t'- Do not invent placeholders like \"Not available\" or \"N/A\". If a value is missing in tool results, leave the cell blank or omit the column and note it briefly.',\n\t'- Do not include `_id` & `__v` & `id_<other collection _id property>` in tables by default.',\n\t'- If `_id` & `__v` & `id_<other collection _id property>` is needed, show it as `id` and shorten (e.g., first 6-8 chars) unless asked otherwise.',\n\t'- Rename `createdAt` to `Created At` and `updatedAt` to `Updated At` in tables.',\n\t'Response style:',\n\t'- Respond in English only. Do not include non-English text or characters unless required for JSON, links, or tool directives.',\n\t'- Keep responses concise: answer first, then 3-8 bullets, then a table when data is involved.',\n\t'- Prefer high-level explanations and point to routes instead of code. Only mention file paths if explicitly requested.',\n\t'- When asked where to do something, give the exact screen name and the in-app route as a standalone path starting with \"/\" so it can be clicked.',\n\t'- When asked \"why is this happening,\" respond with: cause, trigger, data source(s), and expected vs actual outcome.',\n\t'- For troubleshooting, ask clarifying questions only when needed to proceed; otherwise answer directly, then give a short decision tree (If X, do Y; If not, do Z).',\n\t'- Provide checklists for common tasks, highlighting required fields and common pitfalls.',\n\t'- If asked \"where is this set,\" give the screen/workflow name and navigation steps to reach it.',\n\t'- If asked \"what changed,\" summarize release notes if known; if not available, say so and suggest where to check or offer a support ticket.',\n\t'- After answering, optionally suggest 0-1 related next steps only when helpful. Do not ask for \"next steps\" every time.',\n\t'- If access is blocked, name the permission/role needed and how to request it.',\n\t'- Avoid vague labels like \"Operations app\"; use the specific screen/workflow name.',\n\t'- Do not mention other client projects or ask which client; stay within the current project context.',\n\t'- Do not add labels like \"Customer-facing summary\" or \"Work ticket summary\" and do not include estimated hours.',\n\t'- Use structured responses by default: short heading, then bullet points. For \"how do I\" questions, provide a step-by-step list (numbered) with explicit page/screen names and actions.',\n\t'- When giving steps, include navigation guidance like \"Go to <screen>\" and \"Click/Select/Enter <field>\" so the user can follow it exactly.',\n\t'- If context scope is provided (ex: current page), prioritize that screen in your answer.',\n\t'- If a request is out of scope, offer to create a support ticket with a short summary.',\n\t'- If the user explicitly asks to create/open/file a support ticket, end your response with a single line exactly in this format:',\n\t'- SUPPORT_TICKET_CREATE: <one-line summary>',\n\t'- Only include that line when the user clearly wants a ticket created. Do not claim a ticket is created unless you include that line.',\n\t'- Do not end responses with tentative phrasing like \"I could\" or \"I’m going to.\" Complete the request or state what is required to proceed.',\n\t'Mongo directives:',\n\t'- If you need database data to answer, end your response with a single line exactly in this format:',\n\t'- MONGO_READ: {\"collection\":\"<name>\",\"query\":{...},\"options\":{\"projection\":{...},\"sort\":{...},\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- If you need grouped/aggregated data (totals by user, rankings, trends), end your response with a single line exactly in this format:',\n\t'- MONGO_AGG: {\"collection\":\"<name>\",\"pipeline\":[...],\"options\":{\"allowDiskUse\":true,\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- For invoice data, set permissionView to an invoice route (ex: /invoice/list or /report/invoice).',\n\t'- Keep queries minimal, read-only, and avoid user/credential data unless the user is a super admin.',\n\t'- Assume you are not a super admin unless explicitly told otherwise.',\n\t'- Only request data when the user has permission for that module; invoice data requires invoice view access.',\n\t'- If the user lacks permission, answer without data and explain how to view it in the app or request access.',\n\t'- For simple counts or time-range totals, use MONGO_READ (includeTotal). For breakdowns, rankings, or sums grouped by a field, use MONGO_AGG.',\n\t'- For performance, keep pipelines minimal: avoid $push arrays or large fields unless the user explicitly asks for them.',\n\t'- For completion metrics (ex: \"completed per day\"), filter by completed status when applicable and use completion date fields; if completion dates are missing, fall back to createdAt/date_created and note the fallback.',\n\t'- Before issuing MONGO_READ or MONGO_AGG, verify the collection name and key fields by checking collection/model definitions in the current app (look for \"collectionName:\" and date fields like date_created/date_completed/createdAt). Do not invent collection names.',\n\t'- For creation-date questions when both date_created and createdAt exist, match both with $or so results are not missed.',\n\t'- When grouping by fields that can be arrays (drivers, deliveries, routes, chemicals), $unwind first and group by both id and name when available.',\n\t'- Use MONGO_READ/MONGO_AGG only to produce summaries/snapshots/health checks (not raw dumps) when permitted.',\n\t'- If the user explicitly asks for IDs, set options.includeIds: true.',\n\t'- If a data question returns zero results, verify the collection/date field with a tiny read (limit 1-5) or a date field fallback before concluding there is no data.',\n\t'- Keep responses concise and use the configured reasoning effort level (default low).'\n].join('\\n');\n\nconst AI_FORM_PATCH_SYSTEM_PROMPT = [\n\t'You are the ResolveIO form patch assistant.',\n\t'- Your job is to map the user request to the provided form fields.',\n\t'- Only use the allowed fields and their types.',\n\t'- Return ONLY valid JSON and nothing else.',\n\t'- If you cannot map the request, return an empty patch with a short note.',\n\t'- Use ISO 8601 for dates and true/false for booleans.',\n\t'- Use medium reasoning effort.'\n].join('\\n');\n\nlet assistantCodexClient: CodexClient | null = null;\nlet assistantCodexRunQueue: Array<() => Promise<unknown>> = [];\nlet assistantCodexRunDraining = false;\n\ntype GuardrailResult = { blocked: boolean; response: string; reason: string };\ntype CodexWorkerResponse = { ok: boolean; result?: string; error?: string; type?: 'stream' | 'final'; status?: string };\n/* eslint-disable no-unused-vars -- Function type params are required for clarity. */\ntype CodexStreamStatusHandler = (status: string) => void;\ntype CodexProgressTracker = { push: (item: string) => void };\n/* eslint-enable no-unused-vars */\n\nfunction enqueueAssistantCodexRun(task: () => Promise<unknown>): void {\n\tassistantCodexRunQueue.push(task);\n\tif (assistantCodexRunDraining) {\n\t\treturn;\n\t}\n\tassistantCodexRunDraining = true;\n\tqueueMicrotask(async () => {\n\t\tawait drainAssistantCodexRunQueue();\n\t});\n}\n\nasync function drainAssistantCodexRunQueue(): Promise<void> {\n\ttry {\n\t\twhile (assistantCodexRunQueue.length) {\n\t\t\tconst next = assistantCodexRunQueue.shift();\n\t\t\tif (!next) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait next();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'AI assistant run failed:', error);\n\t\t\t}\n\t\t}\n\t}\n\tfinally {\n\t\tassistantCodexRunDraining = false;\n\t\tif (assistantCodexRunQueue.length) {\n\t\t\tassistantCodexRunDraining = true;\n\t\t\tqueueMicrotask(async () => {\n\t\t\t\tawait drainAssistantCodexRunQueue();\n\t\t\t});\n\t\t}\n\t}\n}\n\ntype AttachmentInput = {\n\tid?: string;\n\tname?: string;\n\ttype?: string;\n\tsize?: number;\n\tlocal_path?: string;\n};\n\ntype AiTerminalRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tprofile_id?: string;\n\tconfig?: {\n\t\tmode?: string;\n\t\tmodel?: string;\n\t\tsystem_prompt?: string;\n\t\tuser_prompt_template?: string;\n\t\tresponse_format?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n\tguardrails?: boolean;\n\tattachments?: AttachmentInput[];\n\tmax_history?: number;\n\tdelete_files_after_run?: boolean;\n};\n\ntype AiCodexRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tcontext?: {\n\t\tmode?: string;\n\t\troute?: string;\n\t};\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\tattachments?: AttachmentInput[];\n\tdelete_files_after_run?: boolean;\n\tmax_history?: number;\n};\n\nexport type AiAssistantMongoReadInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\toptions?: {\n\t\tprojection?: Record<string, number | boolean>;\n\t\tsort?: Record<string, any>;\n\t\tlimit?: number;\n\t\tskip?: number;\n\t\tincludeTotal?: boolean;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n};\n\nexport type AiAssistantMongoAggregateInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\tpipeline?: Array<Record<string, any>>;\n\toptions?: {\n\t\tallowDiskUse?: boolean;\n\t\tmaxTimeMS?: number;\n\t\tlimit?: number;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n};\n\ntype AiFormPatchInput = {\n\tmessage: string;\n\tallowed_fields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tfields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tpatch_format?: string;\n\troute?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tconfig?: {\n\t\tmodel?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n};\n\ntype AiFormField = {\n\tname: string;\n\ttype?: string;\n\tlabel?: string;\n\tenums?: string[];\n};\n\ntype AiAssistantDisplayTable = {\n\tcolumns: string[];\n\trows: Array<Record<string, any>>;\n\trowCount: number;\n\ttotal?: number | null;\n\ttruncated?: boolean;\n\tincludeIds?: boolean;\n};\n\ntype AiAssistantToolResult = {\n\ttype: 'mongo_read' | 'mongo_agg';\n\tinput: Record<string, any>;\n\toutput: {\n\t\tdisplay: AiAssistantDisplayTable;\n\t\ttotal?: number | null;\n\t\tcollection?: string;\n\t\trowCount: number;\n\t\tcolumns: string[];\n\t\ttruncated?: boolean;\n\t\tdebug?: Record<string, any>;\n\t};\n};\n\ntype AssistantMongoDirective = {\n\ttype: 'read' | 'aggregate';\n\tpayload: Record<string, any> | null;\n\tcleaned: string;\n\trawLine: string;\n};\n\nexport function loadAiTerminalMethods(methodManager) {\n\tmethodManager.methods({\n\t\taiTerminalConversationCreate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\t\t\t\tid_client: resolveClientIdFromConfig(payload.id_client),\n\t\t\t\t\tid_app: normalizeOptionalString(payload.id_app),\n\t\t\t\t\ttitle: normalizeOptionalString(payload.title) || 'New Conversation',\n\t\t\t\t\tmode: normalizeConversationMode(payload.mode),\n\t\t\t\t\tbranch_enabled: payload.branch_enabled === true,\n\t\t\t\t\tbranch_name: normalizeOptionalString(payload.branch_name),\n\t\t\t\t\tstatus: normalizeConversationStatus(payload.status),\n\t\t\t\t\tprofile_id: normalizeOptionalString(payload.profile_id),\n\t\t\t\t\tmetadata: payload.metadata || {},\n\t\t\t\t\tlast_message_at: undefined,\n\t\t\t\t\tlast_message_id: undefined,\n\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t};\n\t\t\t\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\t\t\t\treturn { id_conversation: result._id as string };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationUpdate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tpatch: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, patch) {\n\t\t\t\tconst update: Partial<AiTerminalConversationModel> & { updatedAt: Date } = {\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t};\n\t\t\t\tif (patch.title !== undefined) {\n\t\t\t\t\tupdate.title = normalizeOptionalString(patch.title);\n\t\t\t\t}\n\t\t\t\t\tif (patch.status !== undefined) {\n\t\t\t\t\t\tupdate.status = normalizeConversationStatus(patch.status);\n\t\t\t\t\t}\n\t\t\t\tif (patch.branch_enabled !== undefined) {\n\t\t\t\t\tupdate.branch_enabled = !!patch.branch_enabled;\n\t\t\t\t}\n\t\t\t\tif (patch.branch_name !== undefined) {\n\t\t\t\t\tupdate.branch_name = normalizeOptionalString(patch.branch_name);\n\t\t\t\t}\n\t\t\t\tif (patch.profile_id !== undefined) {\n\t\t\t\t\tupdate.profile_id = normalizeOptionalString(patch.profile_id);\n\t\t\t\t}\n\t\t\t\tif (patch.metadata !== undefined) {\n\t\t\t\t\tupdate.metadata = patch.metadata || {};\n\t\t\t\t}\n\n\t\t\t\tawait AiTerminalConversations.updateOne({ _id: id_conversation }, { $set: update });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationDelete: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string) {\n\t\t\t\tawait AiTerminalMessages.deleteMany({ id_conversation });\n\t\t\t\tawait AiTerminalConversations.deleteOne({ _id: id_conversation });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\tconst limits = resolveUploadLimits();\n\t\t\t\tif (size > limits.maxFileBytes) {\n\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t}\n\t\t\t\tconst safeName = sanitizeFilename(file_name);\n\t\t\t\tconst uploadRoot = resolveUploadRoot();\n\t\t\t\tconst targetDir = path.join(uploadRoot, id_conversation);\n\t\t\t\tawait fs.mkdir(targetDir, { recursive: true });\n\t\t\t\tconst targetPath = path.join(targetDir, safeName);\n\t\t\t\t\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\t\t\t\t\tconst data = new Uint8Array(dataBuffer);\n\t\t\t\t\tif (data.byteLength !== size) {\n\t\t\t\t\t\tif (data.byteLength > limits.maxFileBytes) {\n\t\t\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tawait fs.writeFile(targetPath, data);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid_file: objectIdHexString(),\n\t\t\t\t\t\tname: safeName,\n\t\t\t\t\tsize: data.byteLength,\n\t\t\t\t\ttype: normalizeOptionalString(content_type),\n\t\t\t\t\tlocal_path: targetPath\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\taiTerminalRun: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiTerminalRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiFormPatch: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiFormPatch(payload, this);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\treturn await handleCodexUpload(id_conversation, file_name, content_base64, size, content_type);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalRunCodex: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tforceWorker: true,\n\t\t\tmaxConcurrencyPerInstance: 1,\n\t\t\ttimeoutOverride: resolveCodexTimeoutMs() + 15000,\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantCodexRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoRead(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoAggregate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoAggregate(payload, this);\n\t\t\t}\n\t\t},\n\t\t\taiCoderTerminalDeployTest: {\n\t\t\t\tcheck: new SimpleSchema({\n\t\t\t\t\tid_conversation: {\n\t\t\t\t\t\ttype: String\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfunction: function() {\n\t\t\t\t\tthrow new Error('Test deploys are not supported for AI assistant sessions.');\n\t\t\t\t}\n\t\t\t}\n\t});\n}\n\nasync function executeAiTerminalRun(payload: AiTerminalRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiTerminalRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tconst requestId = normalizeOptionalString(input.request_id);\n\n\tconst isSuperAdmin = await resolveIsSuperAdmin(context?.id_user);\n\tconst guardrailsEnabled = input.guardrails !== false && !isSuperAdmin;\n\tif (guardrailsEnabled) {\n\t\tconst guardrail = evaluateGuardrails(message);\n\t\tif (guardrail?.blocked) {\n\t\t\tconst conversation = await ensureConversation(input, 'openai');\n\t\t\tconst now = new Date();\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: guardrail.response,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblocked: true,\n\t\t\t\t\treason: guardrail.reason,\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\t\tawait touchConversation(conversation._id, now);\n\t\t\treturn {\n\t\t\t\tconversation,\n\t\t\t\tmessage: assistantMsg,\n\t\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t\t};\n\t\t}\n\t}\n\n\tconst conversation = await ensureConversation(input, 'openai');\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst config = sanitizeConfig(input.config || {});\n\tconst systemPrompt = normalizeOptionalString(config.system_prompt) || '';\n\tconst userPromptTemplate = normalizeOptionalString(config.user_prompt_template);\n\tconst userPrompt = buildUserPrompt(userPromptTemplate, message, attachmentData.promptText);\n\n\tconst historyLimit = normalizeHistoryLimit(input.max_history);\n\tconst history = historyLimit > 0\n\t\t? await AiTerminalMessages.find(\n\t\t\t{ id_conversation: conversation._id, role: { $in: ['user', 'assistant'] } },\n\t\t\t{ sort: { createdAt: 1 }, limit: historyLimit * 2 }\n\t\t)\n\t\t: [];\n\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [];\n\tif (systemPrompt) {\n\t\tmessages.push({ role: 'system', content: systemPrompt });\n\t}\n\n\thistory.forEach((entry: AiTerminalMessageModel) => {\n\t\tconst role = entry.role === 'assistant' ? 'assistant' : 'user';\n\t\tconst content = normalizeOptionalString(entry.content);\n\t\tif (content) {\n\t\t\tmessages.push({ role, content });\n\t\t}\n\t});\n\n\tif (userPrompt) {\n\t\tmessages.push({ role: 'user', content: userPrompt });\n\t}\n\n\tconst openaiSettings = resolveOpenAISettings(config);\n\tconst client = new OpenAIClient(openaiSettings);\n\tconst response = await client.chat(messages, { timeoutMs: 60000, responseFormat: config.response_format });\n\n\tconst usage = response.usage || estimateUsage(messages, response.content, openaiSettings.model);\n\tconst idClient = resolveClientId(conversation, input.id_client);\n\tif (idClient) {\n\t\tawait recordOpenAIUsage({\n\t\t\tid_client: idClient,\n\t\t\tmodel: response.model || openaiSettings.model || 'unknown',\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens,\n\t\t\tcategory: 'ai-terminal',\n\t\t\tid_conversation: conversation._id\n\t\t});\n\t}\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: response.content,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tusage: {\n\t\t\tmodel: response.model || openaiSettings.model,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tawait AiTerminalMessages.insertOne(userDoc as any);\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tawait touchConversation(conversation._id, now, insertResult._id as string);\n\n\tif (input.delete_files_after_run !== false) {\n\t\tawait cleanupAttachments(attachmentData.attachments);\n\t}\n\n\treturn {\n\t\tconversation,\n\t\tmessage: assistantDoc,\n\t\tusage: assistantDoc.usage\n\t};\n}\n\nasync function executeAiFormPatch(payload: AiFormPatchInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiFormPatchInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst allowedFields = normalizeAiFormFields(input.allowed_fields || input.fields);\n\tif (!allowedFields.length) {\n\t\tthrow new Error('Allowed fields are required.');\n\t}\n\n\tconst guardrail = evaluateGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\treturn { error: guardrail.response, blocked: true };\n\t}\n\n\tconst systemPrompt = buildAiFormSystemPrompt();\n\tconst userPrompt = buildAiFormUserPrompt(message, allowedFields, input.patch_format, input.route);\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [\n\t\t{ role: 'system', content: systemPrompt },\n\t\t{ role: 'user', content: userPrompt }\n\t];\n\n\tconst openaiSettings = resolveOpenAISettings(input.config || {});\n\tconst client = new OpenAIClient(openaiSettings);\n\tconst response = await client.chat(messages, { timeoutMs: 60000, responseFormat: 'json_object' });\n\n\tconst usage = response.usage || estimateUsage(messages, response.content, response.model || openaiSettings.model);\n\tconst idClient = resolveClientIdFromConfig(input.id_client);\n\tif (idClient) {\n\t\tawait recordOpenAIUsage({\n\t\t\tid_client: idClient,\n\t\t\tmodel: response.model || openaiSettings.model || 'unknown',\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens,\n\t\t\tcategory: 'ai-form'\n\t\t});\n\t}\n\n\tconst parsed = parseJsonObject(response.content);\n\tif (!parsed || typeof parsed !== 'object') {\n\t\tthrow new Error('AI form patch response was not valid JSON.');\n\t}\n\n\treturn {\n\t\tpatch: parsed.patch ?? parsed,\n\t\tnotes: normalizeOptionalString(parsed.notes) || undefined,\n\t\tusage: {\n\t\t\tmodel: response.model || openaiSettings.model,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t}\n\t};\n}\n\nasync function executeAiAssistantCodexRun(payload: AiCodexRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiCodexRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst requestId = normalizeOptionalString(input.request_id);\n\n\tconst guardrail = evaluateAssistantGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\tconst conversation = await ensureConversation(input as any, 'codex');\n\t\tconst now = new Date();\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: guardrail.response,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblocked: true,\n\t\t\t\t\treason: guardrail.reason,\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tawait touchConversation(conversation._id, now);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t};\n\t}\n\n\tconst user = await Users.findById(context?.id_user);\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst hasInvoiceAccess = userHasInvoiceAccess(user);\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst conversation = await ensureConversation(input as any, 'codex');\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst historyLimit = normalizeHistoryLimit(input.max_history);\n\tconst history = historyLimit > 0\n\t\t? await AiTerminalMessages.find(\n\t\t\t{ id_conversation: conversation._id, role: { $in: ['user', 'assistant'] } },\n\t\t\t{ sort: { createdAt: 1 }, limit: historyLimit * 2 }\n\t\t)\n\t\t: [];\n\n\tconst historyLines: string[] = [];\n\thistory.forEach((entry: AiTerminalMessageModel) => {\n\t\tconst role = entry.role === 'assistant' ? 'Assistant' : 'User';\n\t\tconst content = normalizeOptionalString(entry.content);\n\t\tif (content) {\n\t\t\thistoryLines.push(`${role}: ${content}`);\n\t\t}\n\t});\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst initialProgress = ['Planning'];\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: AI_ASSISTANT_PROGRESS_PLACEHOLDER,\n\t\tmetadata: {\n\t\t\tmodel: resolveCodexModel(),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\tpending: true,\n\t\t\tprogress: initialProgress\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tawait AiTerminalMessages.insertOne(userDoc as any);\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tconst assistantMessageId = (insertResult as any)?._id || (insertResult as any)?.insertedId;\n\tenqueueAssistantCodexRun(async () => {\n\t\tconst runStart = Date.now();\n\t\tconst steps: Array<{ step: string; at: string; ms: number; details?: Record<string, any> }> = [];\n\t\tconst recordStep = (step: string, details?: Record<string, any>) => {\n\t\t\tsteps.push({\n\t\t\t\tstep,\n\t\t\t\tat: new Date().toISOString(),\n\t\t\t\tms: Date.now() - runStart,\n\t\t\t\tdetails\n\t\t\t});\n\t\t};\n\t\tconst progressTracker = createAssistantProgressTracker(assistantMessageId, initialProgress);\n\t\tconst streamProgress = createAssistantStreamProgressHandler(progressTracker);\n\n\t\tlet assistantContent = '';\n\t\tlet toolResult: AiAssistantToolResult | null = null;\n\t\tlet assistantDebug: Record<string, any> | null = null;\n\t\tlet directiveSource: 'model' | 'forced' | 'none' = 'none';\n\t\tconst dataQuestion = isAssistantDataQuestion(message);\n\t\tlet lastDirective: AssistantMongoDirective | null = null;\n\t\tlet toolResponseDebug: Record<string, any> | null = null;\n\t\tlet toolError: any = null;\n\t\tlet termHints: string[] = [];\n\t\tlet collectionHints: string[] = [];\n\t\tlet collectionTokenization: Record<string, any> | null = null;\n\t\tlet collectionRanking: Record<string, any> | null = null;\n\t\tlet collectionSelection: Record<string, any> | null = null;\n\t\tlet collectionOverride: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null = null;\n\t\tconst timingBreakdown: Record<string, number> = {\n\t\t\tdirectiveMs: 0,\n\t\t\tinitialResponseMs: 0,\n\t\t\tforcedDirectiveMs: 0,\n\t\t\ttoolMs: 0,\n\t\t\tfollowupMs: 0\n\t\t};\n\t\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\t\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\t\trecordStep('Queued', { requestId: requestId || undefined });\n\n\t\ttry {\n\t\t\tconst hintSeed = [message, contextRoute].filter(Boolean).join(' ');\n\t\t\tconst termExpansion = expandAssistantTermSynonyms(hintSeed);\n\t\t\tconst hintText = termExpansion.expanded || hintSeed;\n\t\t\ttermHints = termExpansion.matches.map((match) => `${match.term} -> ${match.expansions.join(', ')}`);\n\t\t\tconst baseTokens = tokenizeCollectionText(hintSeed);\n\t\t\tconst expandedTokens = tokenizeCollectionText(hintText);\n\t\t\tconst baseWeights = computeCollectionTokenWeights(baseTokens);\n\t\t\tconst expandedWeights = computeCollectionTokenWeights(expandedTokens);\n\t\t\tcollectionTokenization = {\n\t\t\t\tbaseText: hintSeed || undefined,\n\t\t\t\texpandedText: hintText || undefined,\n\t\t\t\tbaseTokens: baseTokens.length ? baseTokens : undefined,\n\t\t\t\texpandedTokens: expandedTokens.length ? expandedTokens : undefined,\n\t\t\t\tbaseTokenWeights: baseTokens.length ? baseWeights.weights : undefined,\n\t\t\t\texpandedTokenWeights: expandedTokens.length ? expandedWeights.weights : undefined,\n\t\t\t\thasDomainTokens: expandedTokens.length ? expandedWeights.hasDomain : undefined\n\t\t\t};\n\t\t\trecordStep('Planning: term expansion', {\n\t\t\t\ttermMatches: termExpansion.matches.length ? termExpansion.matches : undefined\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tconst dbName = resolveAssistantDatabaseName(undefined, input.mongo);\n\t\t\t\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\t\t\t\tconst collectionNames = await listAssistantCollections(db, dbName);\n\t\t\t\tcollectionHints = resolveCollectionHintsFromTokens(expandedTokens, collectionNames, 5);\n\t\t\t\tcollectionRanking = buildCollectionRankingDebugFromTokens(expandedTokens, collectionNames, 8);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tcollectionHints = [];\n\t\t\t\tcollectionRanking = collectionRanking || (collectionTokenization?.expandedTokens\n\t\t\t\t\t? buildCollectionRankingDebugFromTokens(collectionTokenization.expandedTokens || [], [], 0)\n\t\t\t\t\t: null);\n\t\t\t}\n\t\t\trecordStep('Planning: collection hints', {\n\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\ttermHints: termHints.length ? termHints : undefined\n\t\t\t});\n\n\t\t\tconst assistantContext = buildAssistantContext(input, {\n\t\t\t\tisSuperAdmin,\n\t\t\t\thasInvoiceAccess,\n\t\t\t\tcustomerId,\n\t\t\t\tcollectionHints,\n\t\t\t\ttermHints\n\t\t\t});\n\t\t\tconst prompt = buildAssistantCodexPrompt(\n\t\t\t\tmessage,\n\t\t\t\tattachmentData.promptText,\n\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\tassistantContext\n\t\t\t);\n\t\t\tconst workspaceRoot = await resolveAssistantWorkspaceRoot();\n\t\t\tconst codexConfig = resolveCodexSettings();\n\t\t\tconst runOptions: CodexRunOptions = {\n\t\t\t\ttimeoutMs: resolveCodexTimeoutMs(),\n\t\t\t\tthreadOptions: {\n\t\t\t\t\tworkingDirectory: workspaceRoot,\n\t\t\t\t\tsandboxMode: 'read-only',\n\t\t\t\t\tskipGitRepoCheck: true,\n\t\t\t\t\tmodelReasoningEffort: resolveCodexThoughtLevel(),\n\t\t\t\t\tnetworkAccessEnabled: false,\n\t\t\t\t\twebSearchMode: 'disabled',\n\t\t\t\t\twebSearchEnabled: false,\n\t\t\t\t\tapprovalPolicy: 'never'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet responseText = '';\n\t\t\tlet directiveText = '';\n\t\t\tlet directive = null as AssistantMongoDirective | null;\n\t\t\tif (dataQuestion) {\n\t\t\t\trecordStep('Directive: determine tool', { type: 'data-question' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext\n\t\t\t\t);\n\t\t\t\ttry {\n\t\t\t\t\tconst directiveStart = Date.now();\n\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(directivePrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\ttimingBreakdown.directiveMs = Date.now() - directiveStart;\n\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\tif (forcedDirective) {\n\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tif (!directive) {\n\t\t\t\trecordStep('Response: draft initial answer', { mode: 'full' });\n\t\t\t\tconst initialStart = Date.now();\n\t\t\t\tresponseText = await runCodexInWorkerThread(prompt, runOptions, codexConfig, streamProgress);\n\t\t\t\ttimingBreakdown.initialResponseMs = Date.now() - initialStart;\n\t\t\t\tdirective = extractAssistantMongoDirective(responseText);\n\t\t\t\tif (directive) {\n\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\tlastDirective = directive;\n\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t);\n\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!directive && dataQuestion) {\n\t\t\t\trecordStep('Directive: forced retry', { mode: 'directive-only' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext\n\t\t\t\t);\n\t\t\t\ttry {\n\t\t\t\t\tconst forcedStart = Date.now();\n\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(directivePrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\ttimingBreakdown.forcedDirectiveMs = Date.now() - forcedStart;\n\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\tif (forcedDirective) {\n\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tif (directive) {\n\t\t\t\tconst requestedCollection = normalizeOptionalString(directive.payload?.collection);\n\t\t\t\tcollectionOverride = resolveAssistantCollectionOverride(collectionRanking, requestedCollection);\n\t\t\t\tif (collectionOverride) {\n\t\t\t\t\trecordStep('Planning: collection override', {\n\t\t\t\t\t\tfrom: collectionOverride.from || undefined,\n\t\t\t\t\t\tto: collectionOverride.to,\n\t\t\t\t\t\treason: collectionOverride.reason,\n\t\t\t\t\t\tscoreGap: collectionOverride.toScore - collectionOverride.fromScore\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst cleanedResponseText = directive?.cleaned || responseText;\n\t\t\tif (cleanedResponseText) {\n\t\t\t\tassistantContent = sanitizeAssistantResponse(cleanedResponseText);\n\t\t\t}\n\n\t\t\tif (directive?.payload && AI_ASSISTANT_TOOL_MAX_STEPS > 0) {\n\t\t\t\tconst effectiveDirective = collectionOverride\n\t\t\t\t\t? {\n\t\t\t\t\t\t...directive,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t...(directive.payload || {}),\n\t\t\t\t\t\t\tcollection: collectionOverride.to\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t: directive;\n\t\t\t\tconst toolRequest = buildAssistantToolRequest(effectiveDirective, input);\n\t\t\t\tprogressTracker.push('Grabbing Data');\n\t\t\t\trecordStep('Grabbing Data: start', {\n\t\t\t\t\ttype: effectiveDirective.type,\n\t\t\t\t\tcollection: normalizeOptionalString(toolRequest?.collection) || undefined,\n\t\t\t\t\tpermissionView: normalizeOptionalString(toolRequest?.permissionView) || undefined\n\t\t\t\t});\n\t\t\t\ttry {\n\t\t\t\t\tconst toolStart = Date.now();\n\t\t\t\t\tconst toolResponse = effectiveDirective.type === 'aggregate'\n\t\t\t\t\t\t? await executeAiAssistantMongoAggregate(toolRequest as AiAssistantMongoAggregateInput, context)\n\t\t\t\t\t\t: await executeAiAssistantMongoRead(toolRequest as AiAssistantMongoReadInput, context);\n\t\t\t\t\ttimingBreakdown.toolMs = Date.now() - toolStart;\n\t\t\t\t\ttoolResponseDebug = toolResponse?.debug && typeof toolResponse.debug === 'object'\n\t\t\t\t\t\t? toolResponse.debug\n\t\t\t\t\t\t: null;\n\t\t\t\t\tconst toolPayload = buildAssistantToolResultPayload(effectiveDirective, toolResponse);\n\t\t\t\t\ttoolResult = toolPayload.result;\n\t\t\t\t\trecordStep('Grabbing Data: complete', {\n\t\t\t\t\t\trowCount: toolPayload.result.output.rowCount,\n\t\t\t\t\t\ttotal: toolPayload.result.output.total,\n\t\t\t\t\t\tcolumns: toolPayload.result.output.columns\n\t\t\t\t\t});\n\t\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\t\trecordStep('Drafting response');\n\t\t\t\t\tconst followupPrompt = buildAssistantCodexToolFollowupPrompt(\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\ttoolPayload.prompt\n\t\t\t\t\t);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst followupStart = Date.now();\n\t\t\t\t\t\tconst followupText = await runCodexInWorkerThread(followupPrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\t\ttimingBreakdown.followupMs = Date.now() - followupStart;\n\t\t\t\t\t\tassistantContent = sanitizeAssistantResponse(followupText);\n\t\t\t\t\t}\n\t\t\t\t\tcatch {\n\t\t\t\t\t\tassistantContent = buildAssistantToolFallbackResponse(toolPayload.result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tassistantContent = buildAssistantToolErrorMessage(error, directive, toolRequest);\n\t\t\t\t\ttoolError = error;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\trecordStep('Drafting response');\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tassistantContent = buildAssistantCodexErrorMessage(error);\n\t\t\trecordStep('Error', { message: normalizeOptionalString(error?.message) || 'Unknown error' });\n\t\t}\n\t\tfinally {\n\t\t\tprogressTracker.stop();\n\t\t}\n\n\t\tif (!assistantContent) {\n\t\t\tassistantContent = buildAssistantCodexErrorMessage(null);\n\t\t}\n\n\t\tconst finalNow = new Date();\n\t\tif (isSuperAdmin) {\n\t\t\tconst finishedAt = Date.now();\n\t\t\tconst codexMs = timingBreakdown.directiveMs\n\t\t\t\t+ timingBreakdown.initialResponseMs\n\t\t\t\t+ timingBreakdown.forcedDirectiveMs\n\t\t\t\t+ timingBreakdown.followupMs;\n\t\t\tconst draftingMs = timingBreakdown.followupMs || timingBreakdown.initialResponseMs;\n\t\t\tassistantDebug = buildAssistantDebugPayload({\n\t\t\t\tdataQuestion,\n\t\t\t\tdirective: lastDirective,\n\t\t\t\tdirectiveSource,\n\t\t\t\ttoolResult,\n\t\t\t\ttoolResponseDebug,\n\t\t\t\ttoolError,\n\t\t\t\tcollectionOverride,\n\t\t\t\ttrace: {\n\t\t\t\t\tsteps,\n\t\t\t\t\tplanning: {\n\t\t\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\t\t\ttermHints: termHints.length ? termHints : undefined,\n\t\t\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\t\t\tcollectionTokenization: collectionTokenization || undefined,\n\t\t\t\t\t\tcollectionRanking: collectionRanking || undefined,\n\t\t\t\t\t\tcollectionSelection: collectionSelection || undefined,\n\t\t\t\t\t\tcollectionOverride: collectionOverride || undefined\n\t\t\t\t\t},\n\t\t\t\t\ttimings: {\n\t\t\t\t\t\tstartedAt: new Date(runStart).toISOString(),\n\t\t\t\t\t\tfinishedAt: new Date(finishedAt).toISOString(),\n\t\t\t\t\t\ttotalMs: finishedAt - runStart,\n\t\t\t\t\t\tcodexMs,\n\t\t\t\t\t\tdraftingMs,\n\t\t\t\t\t\ttoolMs: timingBreakdown.toolMs,\n\t\t\t\t\t\tdirectiveMs: timingBreakdown.directiveMs,\n\t\t\t\t\t\tinitialResponseMs: timingBreakdown.initialResponseMs,\n\t\t\t\t\t\tforcedDirectiveMs: timingBreakdown.forcedDirectiveMs,\n\t\t\t\t\t\tfollowupMs: timingBreakdown.followupMs\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst finalMetadata = {\n\t\t\tmodel: resolveCodexModel(),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t...(toolResult ? { tool_result: toolResult } : {}),\n\t\t\t...(assistantDebug ? { debug: assistantDebug } : {})\n\t\t};\n\t\tconst finalAssistantDoc: Partial<AiTerminalMessageModel> = {\n\t\t\t...assistantDoc,\n\t\t\t_id: assistantMessageId,\n\t\t\tcontent: assistantContent,\n\t\t\tmetadata: finalMetadata,\n\t\t\tupdatedAt: finalNow\n\t\t};\n\n\t\tif (assistantMessageId) {\n\t\t\tawait AiTerminalMessages.updateOne(\n\t\t\t\t{ _id: assistantMessageId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tcontent: assistantContent,\n\t\t\t\t\t\tmetadata: finalMetadata,\n\t\t\t\t\t\tupdatedAt: finalNow\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tawait touchConversation(conversation._id, finalNow, assistantMessageId ? String(assistantMessageId) : undefined);\n\n\t\tif (input.delete_files_after_run !== false) {\n\t\t\tawait cleanupAttachments(attachmentData.attachments);\n\t\t}\n\n\t\treturn finalAssistantDoc;\n\t});\n\n\treturn {\n\t\tconversation\n\t};\n}\n\nexport async function executeAiAssistantMongoRead(payload: AiAssistantMongoReadInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiAssistantMongoReadInput);\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant mongo read: Collection is required.');\n\t}\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection);\n\tconst collection = collectionResolution.name || rawCollection;\n\tconst { user, isSuperAdmin } = await ensureAssistantReadAccess(context, input.permissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tif (!isSuperAdmin && shouldScopeByClient) {\n\t\tconst strippedClient = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_client']);\n\t\tbaseQuery = strippedClient.value;\n\t\tfallbackMeta.scopeStripClient = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_client'],\n\t\t\tused: strippedClient.changed\n\t\t};\n\t}\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\tconst normalized = normalizeAssistantFindOptions(input.options);\n\tlet findOptions = { ...normalized.findOptions, readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\tlet documents = await db.collection(collection).find(scopedQuery, findOptions).toArray();\n\tlet executedQuery = scopedQuery;\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length) {\n\t\tconst dateFallback = resolveQueryDateFieldFallback(scopedQuery);\n\t\tif (dateFallback) {\n\t\t\tconst fallbackQuery = replaceQueryField(scopedQuery, dateFallback.from, dateFallback.to);\n\t\t\tfallbackMeta.dateField = { ...dateFallback, attempted: true, used: false };\n\t\t\tconst fallbackDocs = await db.collection(collection).find(fallbackQuery, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackQuery;\n\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandQueryDateFallbacks(executedQuery);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackDocs = await db.collection(collection).find(expanded.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = expanded.query;\n\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveReadNameMatchFallback(executedQuery);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackDocs = await db.collection(collection).find(nameFallback.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = nameFallback.query;\n\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst queryFields = extractQueryFieldPaths(executedQuery).filter(field => !isAssistantIdField(field));\n\t\tif (queryFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, queryFields);\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenQuery = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedQuery);\n\t\t\t\t\tconst fallbackDocs = await db.collection(collection).find(rewrittenQuery, findOptions).toArray();\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedQuery = rewrittenQuery;\n\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient\n\t\t});\n\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\tquery: executedQuery,\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: probeDocs || undefined\n\t\t});\n\t\tif (idLookup) {\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false };\n\t\t\tconst fallbackDocs = await db.collection(collection).find(idLookup.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = idLookup.query;\n\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tlet total = null;\n\tif (normalized.includeTotal) {\n\t\ttotal = await db.collection(collection).countDocuments(executedQuery, { readPreference: AI_ASSISTANT_READ_PREFERENCE });\n\t}\n\n\tlet sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst requestedFields = resolveProjectionRequestedFields(findOptions.projection);\n\tif (sanitizedDocuments.length && requestedFields.length) {\n\t\tconst missingFields = requestedFields.filter(field => !hasNonEmptyValue(sanitizedDocuments, field, { treatObjectLikeAsEmpty: true }));\n\t\tif (missingFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst projectionAliases = resolveFieldAliases(probeDocs, missingFields);\n\t\t\t\tif (Object.keys(projectionAliases).length) {\n\t\t\t\t\tfallbackMeta.projectionAliases = {\n\t\t\t\t\t\taliases: projectionAliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst expandedProjection = expandProjectionWithAliases(findOptions.projection, projectionAliases);\n\t\t\t\t\tif (expandedProjection && expandedProjection !== findOptions.projection) {\n\t\t\t\t\t\tfindOptions = { ...findOptions, projection: expandedProjection };\n\t\t\t\t\t\tnormalized.findOptions.projection = expandedProjection;\n\t\t\t\t\t\tconst refreshedDocs = await db.collection(collection).find(executedQuery, findOptions).toArray();\n\t\t\t\t\t\tif (refreshedDocs.length) {\n\t\t\t\t\t\t\tdocuments = refreshedDocs;\n\t\t\t\t\t\t\tsanitizedDocuments = isSuperAdmin\n\t\t\t\t\t\t\t\t? refreshedDocs\n\t\t\t\t\t\t\t\t: refreshedDocs.map(doc => redactSensitiveFields(deepCopy(doc)));\n\t\t\t\t\t\t\tfallbackMeta.projectionAliases.used = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tconst includeIds = input.options?.includeIds === true;\n\tconst fieldAliases = resolveFieldAliases(sanitizedDocuments, requestedFields);\n\tconst displayDocs = Object.keys(fieldAliases).length\n\t\t? applyFieldAliasesForDisplay(sanitizedDocuments, fieldAliases)\n\t\t: sanitizedDocuments;\n\tconst priorityFields = requestedFields.length\n\t\t? [...requestedFields, ...AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS]\n\t\t: AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\tconst display = buildDisplayTable(displayDocs, {\n\t\tincludeIds,\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: normalized.findOptions.limit,\n\t\tpriorityFields,\n\t\tincludeGroupFromId: false\n\t});\n\tif (total !== null) {\n\t\tdisplay.total = total;\n\t}\n\tif (Object.keys(fieldAliases).length) {\n\t\tfallbackMeta.fieldAliases = fieldAliases;\n\t}\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\ttotal,\n\t\tdisplay,\n\t\t...(isSuperAdmin ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: collectionResolution.matched,\n\t\t\t\tcollectionCandidates: collectionResolution.candidates,\n\t\t\t\tcollectionScore: collectionResolution.score,\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: executedQuery,\n\t\t\t\toptions: normalized.findOptions,\n\t\t\t\tincludeTotal: normalized.includeTotal,\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nexport async function executeAiAssistantMongoAggregate(payload: AiAssistantMongoAggregateInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiAssistantMongoAggregateInput);\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant mongo aggregate: Collection is required.');\n\t}\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection);\n\tconst collection = collectionResolution.name || rawCollection;\n\tconst { user, isSuperAdmin } = await ensureAssistantReadAccess(context, input.permissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant mongo aggregate: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant mongo aggregate: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\n\tconst normalizedPipeline = normalizeAssistantAggregatePipeline(input.pipeline);\n\tlet sanitizedPipeline = normalizedPipeline;\n\tif (!isSuperAdmin && customerId) {\n\t\tconst strippedPipeline = stripScopedFieldsFromPipelineWithMeta(normalizedPipeline, ['id_customer', 'other.id_customer']);\n\t\tsanitizedPipeline = strippedPipeline.pipeline;\n\t\tfallbackMeta.scopeStripPipeline = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: strippedPipeline.changed\n\t\t};\n\t}\n\tconst pipelineWithScope = buildAssistantAggregatePipeline(scopedQuery, sanitizedPipeline);\n\tconst normalizedOptions = normalizeAssistantAggregateOptions(input.options);\n\tconst limitedPipeline = applyAssistantAggregateLimit(\n\t\tpipelineWithScope,\n\t\tnormalizedOptions.limit,\n\t\tnormalizedOptions.maxLimit,\n\t\tnormalizedOptions.defaultLimit\n\t);\n\tconst dateField = findAggregateDateField(limitedPipeline);\n\tif (containsForbiddenMongoOperators(limitedPipeline)) {\n\t\tthrow new Error('AI assistant mongo aggregate: Pipeline contains restricted operators.');\n\t}\n\n\tconst aggregateOptions = { ...normalizedOptions.aggregateOptions, readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\tlet documents = await db.collection(collection)\n\t\t.aggregate(limitedPipeline, aggregateOptions)\n\t\t.toArray();\n\tlet executedPipeline = limitedPipeline;\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length && dateField) {\n\t\tconst fallback = resolveAggregateDateFieldFallback(limitedPipeline);\n\t\tif (fallback) {\n\t\t\tfallbackMeta.dateField = { ...fallback, attempted: true, used: false };\n\t\t\tconst fallbackPipeline = replaceAggregateDateField(limitedPipeline, fallback.from, fallback.to);\n\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length && dateField !== 'createdAt') {\n\t\t\tconst createdFallback = { from: dateField, to: 'createdAt', attempted: true, used: false };\n\t\t\tconst createdPipeline = replaceAggregateDateField(limitedPipeline, dateField, 'createdAt');\n\t\t\tfallbackMeta.dateFieldCreatedAt = createdFallback;\n\t\t\tif (!containsForbiddenMongoOperators(createdPipeline)) {\n\t\t\t\tconst createdDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(createdPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (createdDocs.length) {\n\t\t\t\t\tdocuments = createdDocs;\n\t\t\t\t\texecutedPipeline = createdPipeline;\n\t\t\t\t\tfallbackMeta.dateFieldCreatedAt.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandAggregateDateMatchFallback(executedPipeline);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tif (!containsForbiddenMongoOperators(expanded.pipeline)) {\n\t\t\t\tconst expandedDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(expanded.pipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (expandedDocs.length) {\n\t\t\t\t\tdocuments = expandedDocs;\n\t\t\t\t\texecutedPipeline = expanded.pipeline;\n\t\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst completionFallback = resolveAggregateCompletionFallback(executedPipeline);\n\t\tif (completionFallback) {\n\t\t\tfallbackMeta.completion = {\n\t\t\t\tfield: completionFallback.field,\n\t\t\t\tsources: completionFallback.sources,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false,\n\t\t\t\tstatusFilter: !!completionFallback.statusFilter,\n\t\t\t\tstrategy: 'addFields'\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateCompletionFallbackPipeline(executedPipeline, completionFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length) {\n\t\t\tconst completionExprFallback = resolveAggregateCompletionExprFallback(executedPipeline);\n\t\t\tif (completionExprFallback) {\n\t\t\t\tfallbackMeta.completion = {\n\t\t\t\t\tfield: completionExprFallback.field,\n\t\t\t\t\tsources: completionExprFallback.sources,\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: false,\n\t\t\t\t\tstatusFilter: !!completionExprFallback.statusFilter,\n\t\t\t\t\tstrategy: 'expr'\n\t\t\t\t};\n\t\t\t\tconst fallbackPipeline = buildAggregateCompletionExprFallbackPipeline(executedPipeline, completionExprFallback);\n\t\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t\t.toArray();\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (documents.length <= 1) {\n\t\tconst unwindFallback = resolveAggregateUnwindFallback(executedPipeline);\n\t\tif (unwindFallback) {\n\t\t\tfallbackMeta.unwind = { path: unwindFallback.path, attempted: true, used: false };\n\t\t\tconst fallbackPipeline = buildAggregateUnwindFallbackPipeline(executedPipeline, unwindFallback);\n\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length > documents.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.unwind.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveAggregateNameMatchFallback(executedPipeline);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateNameMatchFallbackPipeline(executedPipeline, nameFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst matchFields = new Set<string>();\n\t\t(executedPipeline || []).forEach((stage) => {\n\t\t\tif (stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') {\n\t\t\t\textractQueryFieldPaths(stage.$match)\n\t\t\t\t\t.filter(field => !isAssistantIdField(field))\n\t\t\t\t\t.forEach(field => matchFields.add(field));\n\t\t\t}\n\t\t});\n\t\tif (matchFields.size) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, Array.from(matchFields));\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenPipeline = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedPipeline);\n\t\t\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t\t\t.aggregate(rewrittenPipeline, aggregateOptions)\n\t\t\t\t\t\t\t.toArray();\n\t\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\t\texecutedPipeline = rewrittenPipeline as Array<Record<string, any>>;\n\t\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tfor (let i = 0; i < (executedPipeline || []).length; i += 1) {\n\t\t\tconst stage = executedPipeline[i];\n\t\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\t\tquery: stage.$match,\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: probeDocs || undefined\n\t\t\t});\n\t\t\tif (!idLookup) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false, stage: i };\n\t\t\tconst rewrittenPipeline = executedPipeline.map((current, index) => (\n\t\t\t\tindex === i ? { $match: idLookup.query } : current\n\t\t\t));\n\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(rewrittenPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = rewrittenPipeline;\n\t\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst includeIds = input.options?.includeIds === true;\n\tconst display = buildDisplayTable(sanitizedDocuments, {\n\t\tincludeIds,\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: normalizedOptions.limit || sanitizedDocuments.length,\n\t\tincludeGroupFromId: true\n\t});\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\tdisplay,\n\t\t...(isSuperAdmin ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: collectionResolution.matched,\n\t\t\t\tcollectionCandidates: collectionResolution.candidates,\n\t\t\t\tcollectionScore: collectionResolution.score,\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: scopedQuery,\n\t\t\t\toptions: normalizedOptions.aggregateOptions,\n\t\t\t\toriginalPipeline: limitedPipeline,\n\t\t\t\texecutedPipeline,\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nexport function extractAssistantMongoDirective(content: string): AssistantMongoDirective | null {\n\tconst lines = String(content || '').split('\\n');\n\tlet directiveIndex = -1;\n\tlet directiveLine = '';\n\tlet directiveType: AssistantMongoDirective['type'] | null = null;\n\tconst directiveIndexes = new Set<number>();\n\tlines.forEach((line, index) => {\n\t\tconst normalized = line.trim().replace(/^[-*]+\\s*/, '');\n\t\tconst upper = normalized.toUpperCase();\n\t\tif (upper.startsWith('MONGO_READ:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'read';\n\t\t\treturn;\n\t\t}\n\t\tif (upper.startsWith('MONGO_AGG:') || upper.startsWith('MONGO_AGGREGATE:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'aggregate';\n\t\t}\n\t});\n\tif (directiveIndex === -1 || !directiveType) {\n\t\treturn null;\n\t}\n\tconst colonIndex = directiveLine.indexOf(':');\n\tconst after = colonIndex >= 0 ? directiveLine.slice(colonIndex + 1).trim() : '';\n\tconst parsed = after ? parseJsonObject(after) : null;\n\tconst payload = parsed && typeof parsed === 'object' ? parsed : null;\n\tconst cleaned = lines.filter((_, index) => !directiveIndexes.has(index)).join('\\n').trim();\n\treturn {\n\t\ttype: directiveType,\n\t\tpayload,\n\t\tcleaned,\n\t\trawLine: directiveLine\n\t};\n}\n\nfunction buildAssistantToolRequest(directive: AssistantMongoDirective, payload: AiCodexRunInput): Record<string, any> {\n\tconst base = directive.payload && typeof directive.payload === 'object' ? directive.payload : {};\n\tconst request: Record<string, any> = { ...base };\n\tconst route = normalizeOptionalString(payload?.context?.route);\n\tif (!request.permissionView && route) {\n\t\trequest.permissionView = route;\n\t}\n\tif (!request.id_client) {\n\t\tconst idClient = normalizeOptionalString(payload?.id_client);\n\t\tif (idClient) {\n\t\t\trequest.id_client = idClient;\n\t\t}\n\t}\n\tif (!request.mongo && payload?.mongo) {\n\t\trequest.mongo = payload.mongo;\n\t}\n\treturn request;\n}\n\nfunction buildAssistantToolResultPayload(\n\tdirective: AssistantMongoDirective,\n\ttoolResponse: any\n): { result: AiAssistantToolResult; prompt: string } {\n\tconst directivePayload = directive.payload || {};\n\tconst documents = Array.isArray(toolResponse?.documents) ? toolResponse.documents : [];\n\tconst includeIds = directivePayload?.options?.includeIds === true;\n\tconst display = toolResponse?.display && typeof toolResponse.display === 'object'\n\t\t? toolResponse.display\n\t\t: buildDisplayTable(documents, {\n\t\t\tincludeIds,\n\t\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS,\n\t\t\tincludeGroupFromId: directive.type === 'aggregate'\n\t\t});\n\tconst trimmedDisplay = trimDisplayTable(display, {\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS\n\t});\n\tconst total = typeof toolResponse?.total === 'number' ? toolResponse.total : null;\n\tconst rowCount = documents.length || trimmedDisplay.rowCount;\n\tconst requestedCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst resolvedCollection = normalizeOptionalString(toolResponse?.debug?.collectionResolved)\n\t\t|| normalizeOptionalString(toolResponse?.debug?.collection)\n\t\t|| requestedCollection\n\t\t|| '';\n\tconst result: AiAssistantToolResult = {\n\t\ttype: directive.type === 'aggregate' ? 'mongo_agg' : 'mongo_read',\n\t\tinput: directivePayload,\n\t\toutput: {\n\t\t\tdisplay: trimmedDisplay,\n\t\t\ttotal: total !== null ? total : undefined,\n\t\t\tcollection: resolvedCollection || undefined,\n\t\t\trowCount,\n\t\t\tcolumns: trimmedDisplay.columns,\n\t\t\ttruncated: trimmedDisplay.truncated,\n\t\t\tdebug: toolResponse?.debug && typeof toolResponse.debug === 'object' ? toolResponse.debug : undefined\n\t\t}\n\t};\n\treturn {\n\t\tresult,\n\t\tprompt: buildAssistantToolResultPrompt(result)\n\t};\n}\n\nfunction buildAssistantToolResultPrompt(result: AiAssistantToolResult): string {\n\tconst lines: string[] = ['Tool Result:'];\n\tlines.push(`Type: ${result.type}`);\n\tif (result.output.collection) {\n\t\tlines.push(`Collection: ${result.output.collection}`);\n\t}\n\tlines.push(`Row count: ${result.output.rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`Total: ${result.output.total}`);\n\t}\n\tif (Array.isArray(result.output.columns) && result.output.columns.length) {\n\t\tlines.push(`Columns: ${result.output.columns.join(', ')}`);\n\t}\n\tif (result.output.display?.rows?.length) {\n\t\tlines.push('Preview:');\n\t\tlines.push(formatDisplayTableMarkdown(result.output.display));\n\t}\n\telse {\n\t\tlines.push('Preview: (no rows)');\n\t}\n\treturn lines.join('\\n');\n}\n\nfunction buildAssistantCodexToolFollowupPrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText: string,\n\ttoolResultText: string\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst toolBlock = toolResultText ? `\\n\\nTool Result:\\n${toolResultText}` : '';\n\tconst instruction = '\\n\\nInstruction:\\nNow answer the user. Do NOT output another MONGO_* directive. Output plain Markdown. Summarize first, then include a Markdown table.';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${toolBlock}${instruction}`.trim();\n}\n\nfunction buildAssistantToolFallbackResponse(result: AiAssistantToolResult): string {\n\tconst lines: string[] = ['Here is a data snapshot based on the tool result:'];\n\tif (result.output.collection) {\n\t\tlines.push(`- Collection: ${result.output.collection}`);\n\t}\n\tlines.push(`- Rows returned: ${result.output.rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`- Total: ${result.output.total}`);\n\t}\n\tif (result.output.display?.rows?.length) {\n\t\tlines.push('');\n\t\tlines.push(formatDisplayTableMarkdown(result.output.display));\n\t}\n\treturn lines.join('\\n').trim();\n}\n\nfunction buildAssistantDebugPayload(params: {\n\tdataQuestion: boolean;\n\tdirective: AssistantMongoDirective | null;\n\tdirectiveSource: 'model' | 'forced' | 'none';\n\ttoolResult: AiAssistantToolResult | null;\n\ttoolResponseDebug: Record<string, any> | null;\n\ttoolError: any;\n\tcollectionOverride?: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null;\n\ttrace?: Record<string, any>;\n}): Record<string, any> {\n\tconst notes: string[] = [];\n\tif (params.dataQuestion) {\n\t\tnotes.push('Detected a data request; tool call required.');\n\t}\n\tif (params.directiveSource === 'forced') {\n\t\tnotes.push('Assistant response omitted a MONGO_* directive; ran a directive-only pass.');\n\t}\n\tif (params.collectionOverride?.to) {\n\t\tconst from = params.collectionOverride.from ? `\"${params.collectionOverride.from}\"` : '(none)';\n\t\tconst to = `\"${params.collectionOverride.to}\"`;\n\t\tconst reason = params.collectionOverride.reason ? ` (${params.collectionOverride.reason})` : '';\n\t\tnotes.push(`Collection override: ${from} -> ${to}${reason}.`);\n\t}\n\tconst directive = params.directive;\n\tconst directivePayload = directive?.payload || {};\n\tconst rawCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst debugCollectionRequested = normalizeOptionalString(params.toolResponseDebug?.collectionRequested);\n\tconst debugCollectionResolved = normalizeOptionalString(params.toolResponseDebug?.collectionResolved);\n\tconst debugCollection = normalizeOptionalString(params.toolResponseDebug?.collection);\n\tconst requestedCollection = debugCollectionRequested || rawCollection;\n\tconst resolvedCollection = debugCollectionResolved || debugCollection || requestedCollection;\n\tconst matchedCollection = typeof params.toolResponseDebug?.collectionMatched === 'boolean'\n\t\t? params.toolResponseDebug.collectionMatched\n\t\t: undefined;\n\tconst candidateCollections = Array.isArray(params.toolResponseDebug?.collectionCandidates)\n\t\t? params.toolResponseDebug.collectionCandidates.filter(Boolean)\n\t\t: [];\n\tif (requestedCollection && resolvedCollection && requestedCollection !== resolvedCollection) {\n\t\tnotes.push(`Resolved collection \"${requestedCollection}\" -> \"${resolvedCollection}\".`);\n\t}\n\telse if (matchedCollection === false && candidateCollections.length) {\n\t\tnotes.push(`No direct collection match; candidates: ${candidateCollections.join(', ')}.`);\n\t}\n\tif (params.toolResult?.type === 'mongo_agg') {\n\t\tnotes.push('Used aggregation for grouped/breakdown request.');\n\t}\n\telse if (params.toolResult?.type === 'mongo_read') {\n\t\tnotes.push('Used read query for list/count request.');\n\t}\n\tconst fallbackInfo = params.toolResponseDebug?.fallbacks;\n\tif (fallbackInfo?.dateField?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateField.from} -> ${fallbackInfo.dateField.to}.`);\n\t}\n\tif (fallbackInfo?.dateFieldCreatedAt?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateFieldCreatedAt.from} -> ${fallbackInfo.dateFieldCreatedAt.to}.`);\n\t}\n\tif (fallbackInfo?.completion?.used) {\n\t\tconst sources = Array.isArray(fallbackInfo.completion.sources)\n\t\t\t? fallbackInfo.completion.sources.join(', ')\n\t\t\t: fallbackInfo.completion.field;\n\t\tconst strategy = fallbackInfo.completion.strategy ? ` (${fallbackInfo.completion.strategy})` : '';\n\t\tnotes.push(`Applied completion fallback${strategy}: ${sources}.`);\n\t}\n\tif (fallbackInfo?.dateFieldsExpanded?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.dateFieldsExpanded.fields)\n\t\t\t? fallbackInfo.dateFieldsExpanded.fields.join(', ')\n\t\t\t: String(fallbackInfo.dateFieldsExpanded.fields || '');\n\t\tif (fields) {\n\t\t\tnotes.push(`Expanded date fields: ${fields}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.queryFieldAliases?.used) {\n\t\tconst entries = fallbackInfo.queryFieldAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.queryFieldAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Rewrote query fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.projectionAliases?.used) {\n\t\tconst entries = fallbackInfo.projectionAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.projectionAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Expanded projection fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.unwind?.used) {\n\t\tnotes.push(`Applied unwind fallback on ${fallbackInfo.unwind.path}.`);\n\t}\n\tif (fallbackInfo?.nameMatch?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.nameMatch.fields)\n\t\t\t? fallbackInfo.nameMatch.fields.join(', ')\n\t\t\t: fallbackInfo.nameMatch.field;\n\t\tnotes.push(`Expanded name match fields: ${fields}.`);\n\t}\n\tif (fallbackInfo?.idLookup?.used) {\n\t\tconst field = fallbackInfo.idLookup.field || 'id';\n\t\tconst strategy = fallbackInfo.idLookup.strategy || 'lookup';\n\t\tconst collection = fallbackInfo.idLookup.collection ? ` in ${fallbackInfo.idLookup.collection}` : '';\n\t\tconst detail = fallbackInfo.idLookup.nameField ? ` via ${fallbackInfo.idLookup.nameField}` : '';\n\t\tnotes.push(`Resolved ${field} by ${strategy}${collection}${detail}.`);\n\t}\n\tif (params.toolError) {\n\t\tconst errorMessage = params.toolError?.message || String(params.toolError || '');\n\t\tif (errorMessage) {\n\t\t\tnotes.push(`Tool error: ${errorMessage}`);\n\t\t}\n\t}\n\n\tconst payload: Record<string, any> = {\n\t\tdecision: {\n\t\t\tdataQuestion: params.dataQuestion,\n\t\t\tdirectiveSource: params.directiveSource\n\t\t},\n\t\tdirective: directive ? {\n\t\t\ttype: directive.type,\n\t\t\tpayload: directivePayload,\n\t\t\trawLine: directive.rawLine\n\t\t} : null,\n\t\tcollectionOverride: params.collectionOverride || undefined,\n\t\tcollection: resolvedCollection || requestedCollection || undefined,\n\t\tcollectionRequested: requestedCollection || undefined,\n\t\tcollectionResolved: resolvedCollection || undefined,\n\t\tcollectionMatched: matchedCollection,\n\t\tcollectionCandidates: candidateCollections.length ? candidateCollections : undefined,\n\t\tcollectionScore: typeof params.toolResponseDebug?.collectionScore === 'number'\n\t\t\t? params.toolResponseDebug.collectionScore\n\t\t\t: undefined,\n\t\tquery: params.toolResponseDebug?.query || undefined,\n\t\tpipeline: params.toolResponseDebug?.executedPipeline || params.toolResponseDebug?.originalPipeline || undefined,\n\t\toptions: params.toolResponseDebug?.options || undefined,\n\t\tfallbacks: params.toolResponseDebug?.fallbacks || undefined,\n\t\tnotes\n\t};\n\tif (params.trace && typeof params.trace === 'object') {\n\t\tpayload.trace = params.trace;\n\t}\n\treturn payload;\n}\n\nfunction buildAssistantToolErrorMessage(\n\terror: any,\n\tdirective: AssistantMongoDirective,\n\trequest: Record<string, any>\n): string {\n\tconst rawMessage = normalizeOptionalString(error?.message) || 'Unable to access data.';\n\tconst normalized = rawMessage.toLowerCase();\n\tconst routeHint = normalizeOptionalString(request?.permissionView)\n\t\t|| normalizeOptionalString(directive.payload?.permissionView);\n\tconst collection = normalizeOptionalString(request?.collection) || normalizeOptionalString(directive.payload?.collection);\n\tlet routeLine = routeHint\n\t\t? `Open ${routeHint} in the app to view this data or request access.`\n\t\t: 'Open the related screen in the app to view this data or request access.';\n\tif (!routeHint && collection && requiresInvoicePermission(collection)) {\n\t\trouteLine = 'Open /invoice/list or /report/invoice to view this data or request access.';\n\t}\n\tif (normalized.includes('permission scope required')) {\n\t\treturn `I need a permission scope to access that data. ${routeLine}`;\n\t}\n\tif (normalized.includes('access denied')) {\n\t\tif (collection && requiresInvoicePermission(collection)) {\n\t\t\treturn `Invoice access is required to view that data. ${routeLine}`;\n\t\t}\n\t\treturn `You don't have permission to view that data. ${routeLine}`;\n\t}\n\tif (normalized.includes('database access denied')) {\n\t\treturn `Database access is restricted for that request. ${routeLine}`;\n\t}\n\tif (normalized.includes('collection is required')) {\n\t\treturn 'I need a valid collection to read from. Please specify which screen or dataset you want.';\n\t}\n\treturn `I couldn't access the requested data. ${routeLine}`;\n}\n\nfunction deriveAssistantStreamStatus(event: any): string | null {\n\tif (!event || !event.type) {\n\t\treturn null;\n\t}\n\tif (event.type === 'thread.started' || event.type === 'turn.started') {\n\t\treturn 'Planning';\n\t}\n\tif (event.type === 'turn.completed') {\n\t\treturn 'Drafting response';\n\t}\n\tif (event.type === 'item.started' || event.type === 'item.updated' || event.type === 'item.completed') {\n\t\tconst itemType = String(event?.item?.type || '').trim().toLowerCase();\n\t\tif (!itemType) {\n\t\t\treturn null;\n\t\t}\n\t\tif (itemType === 'mcp_tool_call') {\n\t\t\treturn 'Grabbing Data';\n\t\t}\n\t\tif (itemType === 'command_execution') {\n\t\t\treturn 'Grabbing Data';\n\t\t}\n\t\tif (itemType === 'web_search') {\n\t\t\treturn 'Planning';\n\t\t}\n\t\tif (itemType === 'file_change') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'agent_message') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'reasoning') {\n\t\t\treturn 'Planning';\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction createAssistantStreamProgressHandler(progressTracker: CodexProgressTracker): CodexStreamStatusHandler {\n\tlet lastStatus = '';\n\tlet lastSentAt = 0;\n\treturn (status: string) => {\n\t\tconst trimmed = normalizeOptionalString(status);\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst now = Date.now();\n\t\tif (trimmed === lastStatus && now - lastSentAt < 3000) {\n\t\t\treturn;\n\t\t}\n\t\tlastStatus = trimmed;\n\t\tlastSentAt = now;\n\t\tprogressTracker.push(trimmed);\n\t};\n}\n\nfunction normalizeAssistantProgress(items: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst cleaned: string[] = [];\n\titems.forEach((item) => {\n\t\tconst trimmed = String(item || '').trim();\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst key = trimmed.toLowerCase();\n\t\tif (seen.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(key);\n\t\tcleaned.push(trimmed);\n\t});\n\treturn cleaned;\n}\n\nasync function updateAssistantProgress(messageId: any, progress: string[]): Promise<void> {\n\tconst normalized = normalizeAssistantProgress(progress);\n\tif (!messageId || !normalized.length) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId, 'metadata.pending': true },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.pending': true,\n\t\t\t\t\t'metadata.progress': normalized,\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\tcatch {\n\t\t// Ignore progress update failures.\n\t}\n}\n\nfunction createAssistantProgressTracker(messageId: any, initialProgress: string[]) {\n\tlet progress = normalizeAssistantProgress(initialProgress);\n\tlet stopped = false;\n\tlet tickIndex = 0;\n\tlet updateScheduled = false;\n\tlet timer: ReturnType<typeof setInterval> | null = null;\n\tconst queueProgressUpdate = () => {\n\t\tif (stopped || !messageId || updateScheduled) {\n\t\t\treturn;\n\t\t}\n\t\tupdateScheduled = true;\n\t\tsetTimeout(async () => {\n\t\t\tupdateScheduled = false;\n\t\t\tif (stopped) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait updateAssistantProgress(messageId, progress);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore progress update failures.\n\t\t\t}\n\t\t}, 0);\n\t};\n\tif (messageId) {\n\t\ttimer = setInterval(() => {\n\t\t\tif (stopped) {\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = null;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (tickIndex >= AI_ASSISTANT_PROGRESS_TICKS.length) {\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = null;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = AI_ASSISTANT_PROGRESS_TICKS[tickIndex++];\n\t\t\tprogress = normalizeAssistantProgress([...progress, next]);\n\t\t\tqueueProgressUpdate();\n\t\t}, AI_ASSISTANT_PROGRESS_TICK_MS);\n\t}\n\treturn {\n\t\tpush: (item: string) => {\n\t\t\tif (stopped || !messageId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprogress = normalizeAssistantProgress([...progress, item]);\n\t\t\tqueueProgressUpdate();\n\t\t},\n\t\tstop: () => {\n\t\t\tstopped = true;\n\t\t\tif (timer) {\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction buildAssistantCodexErrorMessage(error: any): string {\n\tconst raw = normalizeOptionalString(error?.message);\n\tif (raw && /timed out/i.test(raw)) {\n\t\treturn 'That took longer than expected. Please try again or narrow the request.';\n\t}\n\treturn 'I ran into an internal error while preparing that response. Please try again.';\n}\n\nfunction isAssistantIdField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized === '_id' || normalized === '__v') {\n\t\treturn true;\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('.');\n\tconst last = parts[parts.length - 1] || '';\n\treturn last.startsWith('id_');\n}\n\nfunction isMongoObjectId(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (typeof value.toHexString === 'function') {\n\t\treturn true;\n\t}\n\treturn value._bsontype === 'ObjectId';\n}\n\nfunction isPlainObject(value: any): boolean {\n\treturn !!value && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nfunction normalizeColumnPriorityKey(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst base = trimmed.includes('.') ? trimmed.split('.').pop() || trimmed : trimmed;\n\treturn base.toLowerCase();\n}\n\nfunction tokenizeFieldKey(value: string): string[] {\n\tconst normalized = String(value || '')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/[^a-zA-Z0-9]+/g, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized ? normalized.split(/\\s+/).filter(Boolean) : [];\n}\n\nfunction normalizeFieldMatchKey(value: string): string {\n\treturn tokenizeFieldKey(value).join('');\n}\n\nfunction expandFieldTokens(tokens: string[]): string[] {\n\tconst expanded = new Set<string>();\n\ttokens.forEach((token) => {\n\t\tif (!token) {\n\t\t\treturn;\n\t\t}\n\t\texpanded.add(token);\n\t\tconst synonyms = AI_ASSISTANT_FIELD_TOKEN_SYNONYMS[token];\n\t\tif (Array.isArray(synonyms)) {\n\t\t\tsynonyms.forEach((synonym) => {\n\t\t\t\tif (synonym) {\n\t\t\t\t\texpanded.add(synonym);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn Array.from(expanded);\n}\n\nfunction getValueAtPath(obj: any, path: string): any {\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst parts = String(path || '').split('.').filter(Boolean);\n\tconst walk = (current: any, index: number): any => {\n\t\tif (index >= parts.length) {\n\t\t\treturn current;\n\t\t}\n\t\tconst part = parts[index];\n\t\tif (Array.isArray(current)) {\n\t\t\tconst numeric = Number(part);\n\t\t\tif (!Number.isNaN(numeric) && current[numeric] !== undefined) {\n\t\t\t\treturn walk(current[numeric], index + 1);\n\t\t\t}\n\t\t\tconst values = current.map(entry => walk(entry, index)).filter(value => value !== undefined);\n\t\t\tif (!values.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn values.length === 1 ? values[0] : values;\n\t\t}\n\t\tif (!current || typeof current !== 'object') {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn walk(current[part], index + 1);\n\t};\n\treturn walk(obj, 0);\n}\n\nfunction inferIdFieldStorageTypeFromDocs(\n\tdocs: any[],\n\tfieldPath: string\n): 'objectId' | 'string' | 'unknown' {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn 'unknown';\n\t}\n\tlet sawString = false;\n\tfor (const doc of docs) {\n\t\tconst value = fieldPath.includes('.')\n\t\t\t? getValueAtPath(doc, fieldPath)\n\t\t\t: (doc as any)?.[fieldPath];\n\t\tconst queue = Array.isArray(value) ? value : [value];\n\t\tfor (const entry of queue) {\n\t\t\tif (entry === null || entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isMongoObjectId(entry)) {\n\t\t\t\treturn 'objectId';\n\t\t\t}\n\t\t\tif (typeof entry === 'string' && entry.trim()) {\n\t\t\t\tsawString = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn sawString ? 'string' : 'unknown';\n}\n\nexport function normalizeIdsForTargetField(\n\tids: any[],\n\ttargetDocs: any[],\n\ttargetFieldPath: string,\n\ttargetFieldTypeOverride?: 'objectId' | 'string' | 'unknown'\n): any[] {\n\tif (!Array.isArray(ids) || !ids.length) {\n\t\treturn [];\n\t}\n\tconst targetType = targetFieldTypeOverride\n\t\t|| inferIdFieldStorageTypeFromDocs(targetDocs || [], targetFieldPath);\n\tconst normalized: any[] = [];\n\tconst seenStrings = new Set<string>();\n\tconst seenObjectIds = new Set<string>();\n\tconst pushString = (value: any) => {\n\t\tconst text = String(value || '').trim();\n\t\tif (!text || seenStrings.has(text)) {\n\t\t\treturn;\n\t\t}\n\t\tseenStrings.add(text);\n\t\tnormalized.push(text);\n\t};\n\tconst pushObjectId = (value: any) => {\n\t\tif (!isMongoObjectId(value)) {\n\t\t\treturn;\n\t\t}\n\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\tif (!hex || seenObjectIds.has(hex)) {\n\t\t\treturn;\n\t\t}\n\t\tseenObjectIds.add(hex);\n\t\tnormalized.push(value);\n\t};\n\tids.forEach((value) => {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'string') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\t\tpushString(hex);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'objectId') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tpushObjectId(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\t\ttry {\n\t\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isMongoObjectId(value)) {\n\t\t\tpushObjectId(value);\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\tif (hex) {\n\t\t\t\tpushString(hex);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\ttry {\n\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore invalid object id conversions.\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tpushString(value);\n\t});\n\treturn normalized;\n}\n\nfunction hasNonEmptyValue(\n\tdocs: any[],\n\tfieldPath: string,\n\toptions?: { treatObjectLikeAsEmpty?: boolean }\n): boolean {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn false;\n\t}\n\tconst usePath = fieldPath.includes('.');\n\tfor (const doc of docs) {\n\t\tconst value = usePath ? getValueAtPath(doc, fieldPath) : (doc as any)?.[fieldPath];\n\t\tif (options?.treatObjectLikeAsEmpty && isDisplayObjectLike(value)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\ntype FieldCandidateStats = {\n\tnonEmpty: number;\n\tobjectLike: number;\n\tnormalized: string;\n};\n\nfunction collectFieldCandidates(docs: any[]): Map<string, FieldCandidateStats> {\n\tconst candidates = new Map<string, FieldCandidateStats>();\n\tif (!Array.isArray(docs)) {\n\t\treturn candidates;\n\t}\n\tconst addCandidate = (path: string, value: any) => {\n\t\tif (!path) {\n\t\t\treturn;\n\t\t}\n\t\tconst entry = candidates.get(path) || {\n\t\t\tnonEmpty: 0,\n\t\t\tobjectLike: 0,\n\t\t\tnormalized: normalizeFieldMatchKey(path)\n\t\t};\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\tentry.nonEmpty += 1;\n\t\t}\n\t\tif (isDisplayObjectLike(value)) {\n\t\t\tentry.objectLike += 1;\n\t\t}\n\t\tcandidates.set(path, entry);\n\t};\n\tdocs.forEach((doc) => {\n\t\tif (!doc || typeof doc !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(doc).forEach((key) => {\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = (doc as any)[key];\n\t\t\taddCandidate(key, value);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tconst nestedSamples = value.filter(entry => isPlainObject(entry)).slice(0, 3);\n\t\t\t\tnestedSamples.forEach((entry) => {\n\t\t\t\t\tObject.keys(entry).slice(0, 50).forEach((nestedKey) => {\n\t\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (entry as any)[nestedKey]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\t\tconst nestedKeys = Object.keys(value).slice(0, 50);\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (value as any)[nestedKey]);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\treturn candidates;\n}\n\nfunction resolveFieldAliases(docs: any[], requestedFields: string[]): Record<string, string> {\n\tconst aliases: Record<string, string> = {};\n\tif (!Array.isArray(docs) || !requestedFields.length) {\n\t\treturn aliases;\n\t}\n\tconst missing = requestedFields.filter(field => field && !hasNonEmptyValue(docs, field, { treatObjectLikeAsEmpty: true }));\n\tif (!missing.length) {\n\t\treturn aliases;\n\t}\n\tconst candidates = collectFieldCandidates(docs);\n\tmissing.forEach((field) => {\n\t\tconst normalizedRequested = normalizeFieldMatchKey(field);\n\t\tif (!normalizedRequested) {\n\t\t\treturn;\n\t\t}\n\t\tlet bestPath = '';\n\t\tlet bestScore = 0;\n\t\tcandidates.forEach((stats, path) => {\n\t\t\tif (!path || stats.nonEmpty === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isAssistantIdField(path)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst normalizedCandidate = stats.normalized || normalizeFieldMatchKey(path);\n\t\t\tif (!normalizedCandidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet score = 0;\n\t\t\tif (normalizedCandidate === normalizedRequested) {\n\t\t\t\tscore = 100;\n\t\t\t}\n\t\t\telse if (normalizedCandidate.includes(normalizedRequested) || normalizedRequested.includes(normalizedCandidate)) {\n\t\t\t\tscore = 70;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst candidateTokens = tokenizeFieldKey(path);\n\t\t\t\tconst requestedBaseTokens = tokenizeFieldKey(field);\n\t\t\t\tconst requestedTokens = expandFieldTokens(requestedBaseTokens);\n\t\t\t\tconst overlap = requestedTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tconst baseOverlap = requestedBaseTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tif (overlap > 0) {\n\t\t\t\t\tscore = 40 + overlap * 10;\n\t\t\t\t\tif (baseOverlap === 0) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t\tif (requestedBaseTokens.length <= 2) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst objectRatio = stats.objectLike / Math.max(stats.nonEmpty, 1);\n\t\t\tif (objectRatio > 0.5) {\n\t\t\t\tscore -= 50;\n\t\t\t}\n\t\t\tif (score > bestScore) {\n\t\t\t\tbestScore = score;\n\t\t\t\tbestPath = path;\n\t\t\t}\n\t\t});\n\t\tif (bestPath && bestScore >= 60) {\n\t\t\taliases[field] = bestPath;\n\t\t}\n\t});\n\treturn aliases;\n}\n\nfunction applyFieldAliasesForDisplay(docs: any[], aliases: Record<string, string>): any[] {\n\tif (!Array.isArray(docs) || !aliases || !Object.keys(aliases).length) {\n\t\treturn docs;\n\t}\n\treturn docs.map((doc) => {\n\t\tconst next = { ...doc } as Record<string, any>;\n\t\tObject.keys(aliases).forEach((targetField) => {\n\t\t\tconst sourcePath = aliases[targetField];\n\t\t\tif (!sourcePath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst existing = targetField.includes('.') ? getValueAtPath(doc, targetField) : (doc as any)?.[targetField];\n\t\t\tif (!isEmptyDisplayValue(existing)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = getValueAtPath(doc, sourcePath);\n\t\t\tif (value !== undefined) {\n\t\t\t\tnext[targetField] = value;\n\t\t\t}\n\t\t});\n\t\treturn next;\n\t});\n}\n\nfunction resolveProjectionRequestedFields(projection?: Record<string, number | boolean>): string[] {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn [];\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn [];\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (!hasInclude || hasExclude) {\n\t\treturn [];\n\t}\n\treturn keys.filter(key => !isAssistantIdField(key));\n}\n\nfunction isInclusiveProjection(projection?: Record<string, number | boolean>): boolean {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn false;\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn false;\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\treturn hasInclude && !hasExclude;\n}\n\nfunction expandProjectionWithAliases(\n\tprojection: Record<string, number | boolean> | undefined,\n\taliases: Record<string, string>\n): Record<string, number | boolean> | undefined {\n\tif (!projection || !isInclusiveProjection(projection) || !aliases || !Object.keys(aliases).length) {\n\t\treturn projection;\n\t}\n\tconst next = { ...projection } as Record<string, number | boolean>;\n\tObject.keys(aliases).forEach((target) => {\n\t\tconst source = aliases[target];\n\t\tif (!source) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(next, source)) {\n\t\t\tnext[source] = 1;\n\t\t}\n\t});\n\treturn next;\n}\n\nfunction collectQueryFieldPaths(value: any, fields: Set<string>): void {\n\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectQueryFieldPaths(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectQueryFieldPaths(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tfields.add(key);\n\t\tif (entry && typeof entry === 'object' && !Array.isArray(entry) && !isMongoObjectId(entry) && !(entry instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(entry).filter(nested => !nested.startsWith('$'));\n\t\t\tnestedKeys.forEach((nested) => {\n\t\t\t\tfields.add(`${key}.${nested}`);\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction extractQueryFieldPaths(query: any): string[] {\n\tconst fields = new Set<string>();\n\tcollectQueryFieldPaths(query, fields);\n\treturn Array.from(fields).filter(Boolean);\n}\n\nfunction replaceFieldPathDeep(value: any, fromField: string, toField: string): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => replaceFieldPathDeep(entry, fromField, toField));\n\t}\n\tif (value instanceof Date || isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (value && typeof value === 'object') {\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\tnext[nextKey] = replaceFieldPathDeep(value[key], fromField, toField);\n\t\t});\n\t\treturn next;\n\t}\n\tif (typeof value === 'string') {\n\t\tif (value.startsWith(`$${fromField}`)) {\n\t\t\treturn `$${toField}${value.slice(fromField.length + 1)}`;\n\t\t}\n\t\treturn value;\n\t}\n\treturn value;\n}\n\nfunction replaceQueryFieldCondition(query: any, field: string, condition: any): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => replaceQueryFieldCondition(entry, field, condition));\n\t}\n\tif (!query || typeof query !== 'object') {\n\t\treturn query;\n\t}\n\tconst next: Record<string, any> = { ...query };\n\tObject.keys(next).forEach((key) => {\n\t\tif (key === field) {\n\t\t\tnext[key] = condition;\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tnext[key] = replaceQueryFieldCondition(next[key], field, condition);\n\t\t\treturn;\n\t\t}\n\t\tif (next[key] && typeof next[key] === 'object') {\n\t\t\tnext[key] = replaceQueryFieldCondition(next[key], field, condition);\n\t\t}\n\t});\n\treturn next;\n}\n\nfunction formatDisplayColumnName(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tif (trimmed === '_id') {\n\t\treturn 'id';\n\t}\n\tif (trimmed === '_group') {\n\t\treturn 'Group';\n\t}\n\tconst normalized = trimmed.replace(/[\\s_]+/g, '').toLowerCase();\n\tif (normalized === 'createdat') {\n\t\treturn 'Created At';\n\t}\n\tif (normalized === 'updatedat') {\n\t\treturn 'Updated At';\n\t}\n\tconst parts = trimmed.split('.');\n\tconst base = parts[parts.length - 1] || trimmed;\n\tif ((base === 'name' || base === 'title' || base === 'label') && parts.length > 1) {\n\t\treturn parts[parts.length - 2]\n\t\t\t.replace(/[_-]+/g, ' ')\n\t\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t.trim()\n\t\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n\t}\n\treturn base\n\t\t.replace(/[_-]+/g, ' ')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim()\n\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n\nfunction truncateDisplayText(value: string, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string {\n\tif (!value) {\n\t\treturn value;\n\t}\n\tif (value.length <= maxLength) {\n\t\treturn value;\n\t}\n\tconst sliceLength = Math.max(0, maxLength - 3);\n\treturn `${value.slice(0, sliceLength)}...`;\n}\n\nexport function serializeMongoValue(value: any, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string | number | boolean | null {\n\tif (value === null || value === undefined) {\n\t\treturn null;\n\t}\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn truncateDisplayText(value, maxLength);\n\t}\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tif (isMongoObjectId(value)) {\n\t\ttry {\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value);\n\t\t\tconst shortened = hex.length > 8 ? hex.slice(0, 8) : hex;\n\t\t\treturn truncateDisplayText(shortened, maxLength);\n\t\t}\n\t\tcatch {\n\t\t\treturn truncateDisplayText(String(value), maxLength);\n\t\t}\n\t}\n\tif (Array.isArray(value)) {\n\t\tconst preview = value.slice(0, 3).map(entry => serializeMongoValue(entry, maxLength));\n\t\tconst compact = preview.map(entry => (entry === null || entry === undefined) ? '' : String(entry)).join(', ');\n\t\tconst suffix = value.length > 3 ? ', ...' : '';\n\t\treturn truncateDisplayText(`[${compact}${suffix}]`, maxLength);\n\t}\n\tif (typeof value === 'object') {\n\t\tlet text = '';\n\t\ttry {\n\t\t\ttext = JSON.stringify(value);\n\t\t}\n\t\tcatch {\n\t\t\ttext = String(value);\n\t\t}\n\t\tif (!text || text === '[object Object]') {\n\t\t\ttry {\n\t\t\t\ttext = JSON.stringify(value, null, 2);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\ttext = String(value);\n\t\t\t}\n\t\t}\n\t\treturn truncateDisplayText(text, maxLength);\n\t}\n\treturn truncateDisplayText(String(value), maxLength);\n}\n\nexport function flattenForTable(\n\tdoc: any,\n\toptions?: { includeGroupFromId?: boolean; includeIds?: boolean }\n): Record<string, any> {\n\tconst result: Record<string, any> = {};\n\tif (!doc || typeof doc !== 'object') {\n\t\treturn result;\n\t}\n\tif (Object.prototype.hasOwnProperty.call(doc, '_id')) {\n\t\tconst idValue = (doc as any)._id;\n\t\tif (options?.includeIds) {\n\t\t\tresult._id = idValue;\n\t\t}\n\t\tif (options?.includeGroupFromId && idValue !== null && idValue !== undefined) {\n\t\t\tif (isPlainObject(idValue) && !isMongoObjectId(idValue) && !(idValue instanceof Date)) {\n\t\t\t\tObject.keys(idValue).forEach((key) => {\n\t\t\t\t\tif (!key || Object.prototype.hasOwnProperty.call(result, key)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = (idValue as any)[key];\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (!Object.prototype.hasOwnProperty.call(result, '_group')) {\n\t\t\t\tresult._group = idValue;\n\t\t\t}\n\t\t}\n\t}\n\tObject.keys(doc).forEach((key) => {\n\t\tif (key === '_id') {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (doc as any)[key];\n\t\tif (value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(value);\n\t\t\tif (nestedKeys.length && nestedKeys.length <= 6) {\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst nestedValue = (value as any)[nestedKey];\n\t\t\t\t\tif (nestedValue === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[`${key}.${nestedKey}`] = nestedValue;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nexport function buildDisplayTable(\n\tdocs: any[],\n\toptions?: {\n\t\tmaxColumns?: number;\n\t\tmaxRows?: number;\n\t\tincludeIds?: boolean;\n\t\tpriorityFields?: string[];\n\t\tincludeGroupFromId?: boolean;\n\t}\n): AiAssistantDisplayTable {\n\tconst rowsRaw = Array.isArray(docs)\n\t\t? docs.map(doc => flattenForTable(doc, {\n\t\t\tincludeIds: options?.includeIds === true,\n\t\t\tincludeGroupFromId: options?.includeGroupFromId === true\n\t\t}))\n\t\t: [];\n\tconst stats = new Map<string, { nonEmpty: number; objectLike: number }>();\n\trowsRaw.forEach((row) => {\n\t\tObject.keys(row).forEach((key) => {\n\t\t\tconst value = (row as any)[key];\n\t\t\tconst entry = stats.get(key) || { nonEmpty: 0, objectLike: 0 };\n\t\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\t\tentry.nonEmpty += 1;\n\t\t\t}\n\t\t\tif (isDisplayObjectLike(value)) {\n\t\t\t\tentry.objectLike += 1;\n\t\t\t}\n\t\t\tstats.set(key, entry);\n\t\t});\n\t});\n\n\tlet columns = Array.from(stats.keys()).filter((key) => {\n\t\tconst entry = stats.get(key);\n\t\tif (!entry || entry.nonEmpty === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!options?.includeIds && isAssistantIdField(key)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (entry.objectLike / Math.max(entry.nonEmpty, 1) > 0.5) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tif (!columns.length && rowsRaw.length) {\n\t\tcolumns = Object.keys(rowsRaw[0] || {}).filter(key => options?.includeIds || !isAssistantIdField(key));\n\t}\n\n\tconst priorityFields = options?.priorityFields || AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\tconst priorityMap = new Map(priorityFields.map((field, index) => [field.toLowerCase(), index]));\n\tcolumns.sort((a, b) => {\n\t\tconst aPriority = priorityMap.get(normalizeColumnPriorityKey(a)) ?? 999;\n\t\tconst bPriority = priorityMap.get(normalizeColumnPriorityKey(b)) ?? 999;\n\t\tif (aPriority !== bPriority) {\n\t\t\treturn aPriority - bPriority;\n\t\t}\n\t\tconst aCount = stats.get(a)?.nonEmpty || 0;\n\t\tconst bCount = stats.get(b)?.nonEmpty || 0;\n\t\tif (aCount !== bCount) {\n\t\t\treturn bCount - aCount;\n\t\t}\n\t\treturn a.localeCompare(b);\n\t});\n\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: AI_ASSISTANT_DISPLAY_MAX_COLUMNS;\n\tif (maxColumns && columns.length > maxColumns) {\n\t\tcolumns = columns.slice(0, maxColumns);\n\t}\n\tconst columnLabels = columns.map(column => formatDisplayColumnName(column) || column);\n\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsRaw.length;\n\tconst limitedRows = maxRows ? rowsRaw.slice(0, maxRows) : [];\n\tconst rows = limitedRows.map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column, index) => {\n\t\t\tconst label = columnLabels[index] || column;\n\t\t\tnext[label] = serializeMongoValue((row as any)[column]);\n\t\t});\n\t\treturn next;\n\t});\n\n\treturn {\n\t\tcolumns: columnLabels,\n\t\trows,\n\t\trowCount: rowsRaw.length,\n\t\ttruncated: rowsRaw.length > maxRows || columns.length > maxColumns,\n\t\tincludeIds: options?.includeIds === true\n\t};\n}\n\nfunction trimDisplayTable(\n\tdisplay: AiAssistantDisplayTable,\n\toptions?: { maxColumns?: number; maxRows?: number }\n): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns)) {\n\t\treturn display;\n\t}\n\tconst rowsSource = Array.isArray(display.rows) ? display.rows : [];\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: display.columns.length;\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsSource.length;\n\tconst columns = maxColumns ? display.columns.slice(0, maxColumns) : [];\n\tconst rows = maxRows ? rowsSource.slice(0, maxRows).map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column) => {\n\t\t\tnext[column] = (row as any)?.[column];\n\t\t});\n\t\treturn next;\n\t}) : [];\n\treturn {\n\t\t...display,\n\t\tcolumns,\n\t\trows,\n\t\ttruncated: display.truncated || display.columns.length > maxColumns || rowsSource.length > maxRows\n\t};\n}\n\nexport function formatDisplayTableMarkdown(display: AiAssistantDisplayTable): string {\n\tif (!display || !Array.isArray(display.columns) || !display.columns.length) {\n\t\treturn '';\n\t}\n\tconst header = `| ${display.columns.join(' | ')} |`;\n\tconst separator = `| ${display.columns.map(() => '---').join(' | ')} |`;\n\tconst rows = (display.rows || []).map((row) => {\n\t\tconst cells = display.columns.map((column) => escapeMarkdownCell((row as any)?.[column]));\n\t\treturn `| ${cells.join(' | ')} |`;\n\t});\n\treturn [header, separator, ...rows].join('\\n').trim();\n}\n\nfunction escapeMarkdownCell(value: any): string {\n\tconst raw = value === null || value === undefined ? '' : String(value);\n\treturn raw.replace(/\\|/g, '\\\\|').replace(/\\r?\\n/g, ' ').trim();\n}\n\nfunction isEmptyDisplayValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !value.trim();\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\treturn false;\n}\n\nfunction isDisplayObjectLike(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn false;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn false;\n\t}\n\treturn typeof value === 'object';\n}\n\nasync function ensureAssistantReadAccess(context: any, permissionView?: string, collection?: string): Promise<{ user: any; isSuperAdmin: boolean }> {\n\tconst idUser = context?.id_user;\n\tif (!idUser) {\n\t\tthrow new Error('AI assistant mongo read: Unauthorized.');\n\t}\n\tconst user = await Users.findById(idUser);\n\tif (!user) {\n\t\tthrow new Error('AI assistant mongo read: Unauthorized.');\n\t}\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst normalizedPermission = normalizeOptionalString(permissionView);\n\tif (!isSuperAdmin) {\n\t\tif (!normalizedPermission) {\n\t\t\tthrow new Error('AI assistant mongo read: Permission scope required.');\n\t\t}\n\t\tif (!userHasViewPermission(user, normalizedPermission)) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t\tconst normalizedCollection = normalizeOptionalString(collection);\n\t\tif (normalizedCollection && requiresInvoicePermission(normalizedCollection) && !userHasInvoiceAccess(user)) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t}\n\telse if (normalizedPermission && !userHasViewPermission(user, normalizedPermission)) {\n\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t}\n\treturn { user, isSuperAdmin };\n}\n\nfunction resolveAssistantDatabaseName(database?: string, mongoConfig?: AiAssistantMongoReadInput['mongo']): string {\n\tconst defaultDb = normalizeOptionalString(mongoConfig?.database) || ResolveIOServer.getServerConfig()?.DATABASE || '';\n\tconst dbName = normalizeOptionalString(database) || defaultDb;\n\tif (!dbName) {\n\t\tthrow new Error('AI assistant mongo read: Database is required.');\n\t}\n\tconst allowedFromConfig = Array.isArray(mongoConfig?.databases)\n\t\t? mongoConfig?.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tif (allowedFromConfig.length && !allowedFromConfig.includes(dbName)) {\n\t\tthrow new Error('AI assistant mongo read: Database access denied.');\n\t}\n\tconst allowedDatabases = ResolveIOServer.getMongoManager()?.getWatchedDatabases() || [];\n\tif (allowedDatabases.length && !allowedDatabases.includes(dbName)) {\n\t\tthrow new Error('AI assistant mongo read: Database access denied.');\n\t}\n\treturn dbName;\n}\n\nfunction normalizeAssistantFindOptions(options?: AiAssistantMongoReadInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst projection = sanitizeAssistantProjection(normalized.projection);\n\tconst sort = normalized.sort && Object.keys(normalized.sort).length ? normalized.sort : undefined;\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(normalized.limit, 0), maxLimit)\n\t\t: defaultLimit;\n\tconst skip = typeof normalized.skip === 'number' ? Math.max(normalized.skip, 0) : 0;\n\treturn {\n\t\tfindOptions: {\n\t\t\tprojection,\n\t\t\tsort,\n\t\t\tlimit,\n\t\t\tskip\n\t\t},\n\t\tincludeTotal: normalized.includeTotal === true\n\t};\n}\n\nfunction sanitizeAssistantProjection(projection?: Record<string, number | boolean>): Record<string, number | boolean> | undefined {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn undefined;\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (hasInclude && !hasExclude) {\n\t\tconst onlyIds = keys.every(key => isAssistantIdField(key));\n\t\tif (onlyIds) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn projection;\n}\n\nfunction normalizeAssistantAggregatePipeline(pipeline?: Array<Record<string, any>>): Array<Record<string, any>> {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn [];\n\t}\n\treturn pipeline\n\t\t.filter(stage => stage && typeof stage === 'object' && !Array.isArray(stage))\n\t\t.map((stage) => {\n\t\t\tconst next = { ...stage } as Record<string, any>;\n\t\t\tif (next.$match && typeof next.$match === 'object') {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$match);\n\t\t\t\tnext.$match = applyAssistantNameRegexToQuery(rewritten);\n\t\t\t}\n\t\t\tif (next.$geoNear && typeof next.$geoNear === 'object' && next.$geoNear.query) {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$geoNear.query);\n\t\t\t\tnext.$geoNear = {\n\t\t\t\t\t...next.$geoNear,\n\t\t\t\t\tquery: applyAssistantNameRegexToQuery(rewritten)\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn next;\n\t\t});\n}\n\nfunction buildAssistantAggregatePipeline(query: Record<string, any>, pipeline: Array<Record<string, any>>): Array<Record<string, any>> {\n\tconst scopedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tif (!query || !Object.keys(query).length) {\n\t\treturn scopedPipeline;\n\t}\n\tif (scopedPipeline.length && scopedPipeline[0]?.$geoNear && typeof scopedPipeline[0].$geoNear === 'object') {\n\t\tconst geoNearStage = { ...scopedPipeline[0].$geoNear };\n\t\tconst existingQuery = geoNearStage.query && typeof geoNearStage.query === 'object' ? geoNearStage.query : {};\n\t\tgeoNearStage.query = { $and: [existingQuery, query] };\n\t\treturn [{ $geoNear: geoNearStage }, ...scopedPipeline.slice(1)];\n\t}\n\treturn [{ $match: query }, ...scopedPipeline];\n}\n\nfunction normalizeAssistantAggregateOptions(options?: AiAssistantMongoAggregateInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst allowDiskUse = normalized.allowDiskUse === true ? true : undefined;\n\tconst maxTimeMS = typeof normalized.maxTimeMS === 'number' && normalized.maxTimeMS > 0\n\t\t? round(normalized.maxTimeMS)\n\t\t: undefined;\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(round(normalized.limit), 0), maxLimit)\n\t\t: defaultLimit;\n\tconst aggregateOptions: Record<string, any> = {};\n\tif (allowDiskUse !== undefined) {\n\t\taggregateOptions.allowDiskUse = allowDiskUse;\n\t}\n\tif (maxTimeMS !== undefined) {\n\t\taggregateOptions.maxTimeMS = maxTimeMS;\n\t}\n\treturn {\n\t\taggregateOptions,\n\t\tlimit,\n\t\tmaxLimit,\n\t\tdefaultLimit\n\t};\n}\n\nfunction findAggregateLimit(pipeline: Array<Record<string, any>>): number | null {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst limit = (stage as any).$limit;\n\t\tif (typeof limit === 'number' && Number.isFinite(limit)) {\n\t\t\treturn limit;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction applyAssistantAggregateLimit(\n\tpipeline: Array<Record<string, any>>,\n\tlimit?: number,\n\tmaxLimit = AI_ASSISTANT_MONGO_MAX_LIMIT,\n\tdefaultLimit = AI_ASSISTANT_MONGO_DEFAULT_LIMIT\n): Array<Record<string, any>> {\n\tconst normalizedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tconst requestedLimit = typeof limit === 'number' && limit > 0\n\t\t? Math.min(limit, maxLimit)\n\t\t: defaultLimit;\n\tconst existingLimit = findAggregateLimit(normalizedPipeline);\n\tif (existingLimit === null) {\n\t\tnormalizedPipeline.push({ $limit: requestedLimit });\n\t\treturn normalizedPipeline;\n\t}\n\tif (existingLimit > maxLimit) {\n\t\tnormalizedPipeline.push({ $limit: maxLimit });\n\t}\n\treturn normalizedPipeline;\n}\n\nfunction resolveAggregateDateFieldFallback(pipeline: Array<Record<string, any>>): { from: string; to: string } | null {\n\tconst dateField = findAggregateDateField(pipeline);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction normalizeAggregateFieldList(values: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst result: string[] = [];\n\tvalues.forEach((value) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tresult.push(normalized);\n\t});\n\treturn result;\n}\n\nfunction isCompletionFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('complete') || normalized.includes('close');\n}\n\nfunction isDateLikeFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('date') || normalized.endsWith('_at') || normalized.endsWith('at');\n}\n\nfunction matchContainsField(value: any, field: string): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => matchContainsField(entry, field));\n\t}\n\treturn Object.keys(value).some((key) => {\n\t\tif (key === field) {\n\t\t\treturn true;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\tif (value[key] && typeof value[key] === 'object') {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction resolveAggregateCompletionFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tmatchCondition: any;\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tlet candidateField = '';\n\tlet candidateSources: string[] = [];\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$addFields || typeof stage.$addFields !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst addFields = stage.$addFields as Record<string, any>;\n\t\tfor (const key of Object.keys(addFields)) {\n\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sources = extractExpressionFieldPaths(addFields[key])\n\t\t\t\t.filter(field => isDateLikeFieldName(field));\n\t\t\tif (sources.length) {\n\t\t\t\tcandidateField = key;\n\t\t\t\tcandidateSources = sources;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (candidateField) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!candidateField || !candidateSources.length) {\n\t\treturn null;\n\t}\n\tlet matchIndex = -1;\n\tlet matchCondition: any = null;\n\tlet matchStage: Record<string, any> | null = null;\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(stage.$match, candidateField)) {\n\t\t\tmatchIndex = i;\n\t\t\tmatchCondition = (stage.$match as any)[candidateField];\n\t\t\tmatchStage = stage.$match as Record<string, any>;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (matchIndex === -1 || !matchStage) {\n\t\treturn null;\n\t}\n\tconst normalizedSources = normalizeAggregateFieldList([\n\t\t...candidateSources,\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n\tif (!normalizedSources.length) {\n\t\treturn null;\n\t}\n\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\tconst statusFilter = !hasStatus && isCompletionFieldName(candidateField)\n\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t: null;\n\treturn {\n\t\tmatchIndex,\n\t\tfield: candidateField,\n\t\tsources: normalizedSources,\n\t\tmatchCondition,\n\t\tstatusFilter\n\t};\n}\n\nfunction buildIfNullChain(fields: string[]): any {\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet expr: any = `$${fields[fields.length - 1]}`;\n\tfor (let i = fields.length - 2; i >= 0; i -= 1) {\n\t\texpr = { $ifNull: [`$${fields[i]}`, expr] };\n\t}\n\treturn expr;\n}\n\nfunction buildAggregateCompletionFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tmatchCondition: any;\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst orConditions = fallback.sources.map(field => ({ [field]: fallback.matchCondition }));\n\tconst nextMatch = { ...(matchStage as Record<string, any>) };\n\tdelete (nextMatch as any)[fallback.field];\n\tconst andParts: Array<Record<string, any>> = [];\n\tif (Object.keys(nextMatch).length) {\n\t\tandParts.push(nextMatch);\n\t}\n\tandParts.push({ $or: orConditions });\n\tif (fallback.statusFilter) {\n\t\tandParts.push(fallback.statusFilter);\n\t}\n\tconst mergedMatch = andParts.length === 1 ? andParts[0] : { $and: andParts };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: mergedMatch };\n\t\t}\n\t\tif (stage && typeof stage === 'object' && stage.$addFields && typeof stage.$addFields === 'object') {\n\t\t\tif (Object.prototype.hasOwnProperty.call(stage.$addFields, fallback.field)) {\n\t\t\t\treturn {\n\t\t\t\t\t...stage,\n\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t...(stage.$addFields as Record<string, any>),\n\t\t\t\t\t\t[fallback.field]: buildIfNullChain(fallback.sources)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction normalizeCompletionStatusValue(value: string): string | null {\n\tconst normalized = String(value || '').toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (normalized.includes('complete')) {\n\t\treturn 'complete';\n\t}\n\tif (normalized.includes('close')) {\n\t\treturn 'close';\n\t}\n\treturn null;\n}\n\nfunction applyCompletionStatusRegexFallback(match: any): any {\n\tif (Array.isArray(match)) {\n\t\treturn match.map(entry => applyCompletionStatusRegexFallback(entry));\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn match;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(match).forEach((key) => {\n\t\tconst value = match[key];\n\t\tif (key === 'status' || key === 'state') {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tconst token = normalizeCompletionStatusValue(value);\n\t\t\t\tif (token) {\n\t\t\t\t\tresult[key] = { $regex: token, $options: 'i' };\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult[key] = value;\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction buildCompletionFallbackSources(field: string): string[] {\n\treturn normalizeAggregateFieldList([\n\t\tfield,\n\t\t'date_completed',\n\t\t'date_closed',\n\t\t'completedAt',\n\t\t'closedAt',\n\t\t'completed_at',\n\t\t'closed_at',\n\t\t'date_completed_at',\n\t\t'date_closed_at',\n\t\t'completion_date',\n\t\t'completed_date',\n\t\t'date_finished',\n\t\t'finished_at',\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n}\n\nfunction resolveAggregateCompletionExprFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchStage = stage.$match as Record<string, any>;\n\t\tlet candidateField = '';\n\t\tif (matchStage.$expr) {\n\t\t\tconst exprFields = extractExpressionFieldPaths(matchStage.$expr)\n\t\t\t\t.filter(field => isCompletionFieldName(field));\n\t\t\tif (exprFields.length) {\n\t\t\t\tcandidateField = exprFields[0];\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tfor (const key of Object.keys(matchStage)) {\n\t\t\t\tif (key.startsWith('$')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst entry = matchStage[key];\n\t\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\t\tcandidateField = key;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst sources = buildCompletionFallbackSources(candidateField);\n\t\tif (!sources.length) {\n\t\t\treturn null;\n\t\t}\n\t\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\t\tconst statusFilter = !hasStatus\n\t\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t\t: null;\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: candidateField,\n\t\t\tsources,\n\t\t\tstatusFilter\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction buildAggregateCompletionExprFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst targetField = 'completed_at_effective';\n\tconst replacedPipeline = replaceAggregateDateField(pipeline, fallback.field, targetField);\n\tconst matchStage = replacedPipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn replacedPipeline;\n\t}\n\tconst baseMatch = applyCompletionStatusRegexFallback(matchStage);\n\tconst nextMatch = fallback.statusFilter ? { $and: [baseMatch, fallback.statusFilter] } : baseMatch;\n\tconst addFieldsStage = { $addFields: { [targetField]: buildIfNullChain(fallback.sources) } };\n\tconst alreadyHasField = replacedPipeline\n\t\t.slice(0, fallback.matchIndex)\n\t\t.some(stage => stage && typeof stage === 'object' && stage.$addFields && Object.prototype.hasOwnProperty.call(stage.$addFields, targetField));\n\tconst output: Array<Record<string, any>> = [];\n\treplacedPipeline.forEach((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\tif (!alreadyHasField) {\n\t\t\t\toutput.push(addFieldsStage);\n\t\t\t}\n\t\t\toutput.push({ $match: nextMatch });\n\t\t\treturn;\n\t\t}\n\t\toutput.push(stage);\n\t});\n\treturn output;\n}\n\nfunction resolveAggregateUnwindFallback(pipeline: Array<Record<string, any>>): { path: string; groupIndex: number } | null {\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex === -1) {\n\t\treturn null;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tconst groupPaths = extractGroupFieldPaths(groupStage?.$group);\n\tif (!groupPaths.length) {\n\t\treturn null;\n\t}\n\tconst prefix = findCommonPathPrefix(groupPaths);\n\tif (!prefix) {\n\t\treturn null;\n\t}\n\tif (pipelineHasUnwindPath(pipeline, prefix)) {\n\t\treturn null;\n\t}\n\treturn { path: prefix, groupIndex };\n}\n\nfunction findAggregateGroupIndex(pipeline: Array<Record<string, any>>): number {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (stage && typeof stage === 'object' && stage.$group && typeof stage.$group === 'object') {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction extractGroupFieldPaths(groupStage: any): string[] {\n\tif (!groupStage || typeof groupStage !== 'object') {\n\t\treturn [];\n\t}\n\tconst id = groupStage._id;\n\treturn extractExpressionFieldPaths(id);\n}\n\nfunction extractExpressionFieldPaths(value: any): string[] {\n\tconst results: string[] = [];\n\tconst visit = (entry: any) => {\n\t\tif (Array.isArray(entry)) {\n\t\t\tentry.forEach(item => visit(item));\n\t\t\treturn;\n\t\t}\n\t\tif (!entry) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry === 'string') {\n\t\t\tif (entry.startsWith('$') && entry.length > 1 && !entry.startsWith('$$')) {\n\t\t\t\tresults.push(entry.slice(1));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(entry).forEach((key) => {\n\t\t\tvisit(entry[key]);\n\t\t});\n\t};\n\tvisit(value);\n\treturn results.filter(Boolean);\n}\n\nfunction findCommonPathPrefix(paths: string[]): string | null {\n\tif (!paths.length) {\n\t\treturn null;\n\t}\n\tconst splitPaths = paths.map(path => path.split('.').filter(Boolean));\n\tlet prefix = splitPaths[0] || [];\n\tfor (let i = 1; i < splitPaths.length; i += 1) {\n\t\tconst current = splitPaths[i];\n\t\tlet j = 0;\n\t\twhile (j < prefix.length && j < current.length && prefix[j] === current[j]) {\n\t\t\tj += 1;\n\t\t}\n\t\tprefix = prefix.slice(0, j);\n\t\tif (!prefix.length) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn prefix.length ? prefix.join('.') : splitPaths[0]?.[0] || null;\n}\n\nfunction pipelineHasUnwindPath(pipeline: Array<Record<string, any>>, path: string): boolean {\n\treturn (pipeline || []).some((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$unwind) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof stage.$unwind === 'string') {\n\t\t\treturn stage.$unwind === `$${path}`;\n\t\t}\n\t\tif (stage.$unwind && typeof stage.$unwind === 'object') {\n\t\t\treturn stage.$unwind.path === `$${path}`;\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction buildAggregateUnwindFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: { path: string; groupIndex: number }\n): Array<Record<string, any>> {\n\tconst before = pipeline.slice(0, fallback.groupIndex);\n\tconst after = pipeline.slice(fallback.groupIndex);\n\tconst unwindStage = {\n\t\t$unwind: {\n\t\t\tpath: `$${fallback.path}`,\n\t\t\tpreserveNullAndEmptyArrays: false\n\t\t}\n\t};\n\treturn [...before, unwindStage, ...after];\n}\n\nfunction isRegexMatchCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'object' && !Array.isArray(value)) {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction findRegexMatchInMatchObject(\n\tmatch: any,\n\tprefix = ''\n): { field: string; condition: any } | null {\n\tif (Array.isArray(match)) {\n\t\tfor (const entry of match) {\n\t\t\tconst found = findRegexMatchInMatchObject(entry, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn null;\n\t}\n\tconst keys = Object.keys(match);\n\tfor (const key of keys) {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findRegexMatchInMatchObject(value, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (isRegexMatchCondition(value)) {\n\t\t\treturn { field: currentPath, condition: value };\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst found = findRegexMatchInMatchObject(value, currentPath);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction expandNameFieldCandidates(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst leaf = parts[parts.length - 1] || normalized;\n\tconst prefix = parts.length > 1 ? parts.slice(0, -1).join('.') : '';\n\tconst withPrefix = (value: string) => (prefix ? `${prefix}.${value}` : value);\n\tconst candidates: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (value: string) => {\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(value)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(value);\n\t\tcandidates.push(value);\n\t};\n\tpush(normalized);\n\n\tconst leafLower = leaf.toLowerCase();\n\tconst genericVariants = ['name', 'title', 'label', 'display_name', 'displayName', 'description'];\n\tgenericVariants.forEach((variant) => push(withPrefix(variant)));\n\tif (!leafLower.endsWith('name')) {\n\t\tpush(withPrefix(`${leaf}_name`));\n\t\tpush(withPrefix(`${leaf}Name`));\n\t}\n\tif (leafLower.includes('chemical')) {\n\t\t[\n\t\t\t'chemical',\n\t\t\t'chemical_name',\n\t\t\t'chemicalName',\n\t\t\t'chem_name',\n\t\t\t'chemName',\n\t\t\t'product',\n\t\t\t'product_name',\n\t\t\t'productName',\n\t\t\t'material',\n\t\t\t'blend_name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t\tpush(withPrefix(`${leaf}.label`));\n\t\tpush(withPrefix(`${leaf}.product`));\n\t\tif (normalized.includes('blend_chemicals')) {\n\t\t\t['chemical', 'chemical_name', 'chemicalName', 'product', 'product_name', 'productName'].forEach(push);\n\t\t}\n\t}\n\tif (leafLower.includes('customer')) {\n\t\t[\n\t\t\t'customer',\n\t\t\t'customer_name',\n\t\t\t'customerName',\n\t\t\t'company',\n\t\t\t'company_name',\n\t\t\t'companyName',\n\t\t\t'account',\n\t\t\t'account_name',\n\t\t\t'accountName',\n\t\t\t'name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\tif (leafLower.includes('well')) {\n\t\t[\n\t\t\t'well',\n\t\t\t'well_name',\n\t\t\t'wellName',\n\t\t\t'name',\n\t\t\t'site',\n\t\t\t'site_name',\n\t\t\t'siteName',\n\t\t\t'pad',\n\t\t\t'pad_name',\n\t\t\t'padName',\n\t\t\t'api',\n\t\t\t'api_number',\n\t\t\t'apiNumber',\n\t\t\t'well_number',\n\t\t\t'wellNumber'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\treturn candidates.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n}\n\nfunction resolveAggregateNameMatchFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tcondition: any;\n\tfields: string[];\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst found = findRegexMatchInMatchObject(stage.$match);\n\t\tif (!found || !shouldApplyAssistantNameRegex(found.field)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst fields = expandNameFieldCandidates(found.field);\n\t\tif (fields.length <= 1) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: found.field,\n\t\t\tcondition: found.condition,\n\t\t\tfields\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction resolveReadNameMatchFallback(query: Record<string, any>): { query: any; field: string; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst found = findRegexMatchInMatchObject(query);\n\tif (!found || !shouldApplyAssistantNameRegex(found.field) || isAssistantIdField(found.field)) {\n\t\treturn null;\n\t}\n\tconst fields = expandNameFieldCandidates(found.field);\n\tif (fields.length <= 1) {\n\t\treturn null;\n\t}\n\tconst baseMatch = stripMatchField(query, found.field);\n\tconst orConditions = fields.map(field => ({ [field]: found.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn {\n\t\tquery: nextMatch,\n\t\tfield: found.field,\n\t\tfields\n\t};\n}\n\nfunction isEmptyMatchValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripMatchField(match: any, field: string): any {\n\tif (Array.isArray(match)) {\n\t\tconst strippedArray = match\n\t\t\t.map(entry => stripMatchField(entry, field))\n\t\t\t.filter(entry => !isEmptyMatchValue(entry));\n\t\treturn strippedArray;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn match;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(match).forEach((key) => {\n\t\tif (key === field) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst stripped = stripMatchField(value, field);\n\t\t\tif (isEmptyMatchValue(stripped) && (key === '$and' || key === '$or')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = stripped;\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst stripped = stripMatchField(value, field);\n\t\t\tif (!isEmptyMatchValue(stripped)) {\n\t\t\t\tresult[key] = stripped;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction isEmptyQueryValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripQueryFieldPathsDeepWithMeta(\n\tquery: any,\n\tfieldsToStrip: string[]\n): { value: any; changed: boolean } {\n\tconst fieldSet = new Set((fieldsToStrip || []).filter(Boolean));\n\tconst stripValue = (value: any, prefix: string): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value\n\t\t\t\t.map(entry => {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\treturn stripped.value;\n\t\t\t\t})\n\t\t\t\t.filter(entry => !isEmptyQueryValue(entry));\n\t\t\tif (nextArray.length !== value.length) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\treturn { value: nextArray, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tlet changed = false;\n\t\tconst keys = Object.keys(value);\n\t\tkeys.forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tif (Array.isArray(entry) && (key === '$and' || key === '$or' || key === '$nor')) {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tconst arrayValue = Array.isArray(stripped.value) ? stripped.value : [];\n\t\t\t\t\tif (arrayValue.length === 0) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (arrayValue.length !== entry.length || stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult[key] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tif (fieldSet.has(currentPath)) {\n\t\t\t\tchanged = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tconst stripped = stripValue(entry, currentPath);\n\t\t\t\tif (stripped.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (!isEmptyQueryValue(stripped.value)) {\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\tconst resultKeys = Object.keys(result);\n\t\tif (resultKeys.length === 1 && (resultKeys[0] === '$and' || resultKeys[0] === '$or')) {\n\t\t\tconst only = result[resultKeys[0]];\n\t\t\tif (Array.isArray(only) && only.length === 1) {\n\t\t\t\treturn { value: only[0], changed: true };\n\t\t\t}\n\t\t}\n\t\treturn { value: result, changed };\n\t};\n\treturn stripValue(query, '');\n}\n\nexport function stripQueryFieldPathsDeep(query: any, fieldsToStrip: string[]): any {\n\treturn stripQueryFieldPathsDeepWithMeta(query, fieldsToStrip).value;\n}\n\nfunction stripScopedFieldsFromPipelineWithMeta(\n\tpipeline: any[],\n\tfieldsToStrip: string[]\n): { pipeline: any[]; changed: boolean } {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn { pipeline: [], changed: false };\n\t}\n\tlet changed = false;\n\tconst nextPipeline = pipeline.map((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn stage;\n\t\t}\n\t\tlet nextStage = stage;\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$match, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = { ...nextStage, $match: stripped.value };\n\t\t}\n\t\tif (stage.$geoNear && typeof stage.$geoNear === 'object' && stage.$geoNear.query) {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$geoNear.query, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = {\n\t\t\t\t...nextStage,\n\t\t\t\t$geoNear: {\n\t\t\t\t\t...stage.$geoNear,\n\t\t\t\t\tquery: stripped.value\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn nextStage;\n\t});\n\treturn { pipeline: nextPipeline, changed };\n}\n\nexport function stripScopedFieldsFromPipeline(pipeline: any[], fieldsToStrip: string[]): any[] {\n\treturn stripScopedFieldsFromPipelineWithMeta(pipeline, fieldsToStrip).pipeline;\n}\n\nfunction isIdLookupCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !isObjectIdString(value.trim());\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction collectIdFieldConditions(match: any): Array<{ field: string; condition: any }> {\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tconst visit = (value: any) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(entry => visit(entry));\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tvisit(entry);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isAssistantIdField(key) && isIdLookupCondition(entry)) {\n\t\t\t\tresults.push({ field: key, condition: entry });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tvisit(entry);\n\t\t\t}\n\t\t});\n\t};\n\tvisit(match);\n\treturn results;\n}\n\nfunction resolveLocalNameFieldFromDocs(docs: any[], baseToken: string): string | null {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tif (!normalizedBase || !Array.isArray(docs) || !docs.length) {\n\t\treturn null;\n\t}\n\tif (hasNonEmptyValue(docs, normalizedBase, { treatObjectLikeAsEmpty: true })) {\n\t\treturn normalizedBase;\n\t}\n\tconst aliases = resolveFieldAliases(docs, [normalizedBase]);\n\treturn aliases[normalizedBase] || null;\n}\n\nfunction buildIdFieldNameFallbackQuery(\n\tquery: Record<string, any>,\n\tidField: string,\n\tnameField: string,\n\tcondition: any\n): Record<string, any> {\n\tconst baseMatch = stripMatchField(query, idField);\n\tconst orConditions = [\n\t\t{ [idField]: condition },\n\t\t{ [nameField]: condition }\n\t];\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn nextMatch;\n}\n\nfunction resolveIdLookupCandidates(baseToken: string, collectionNames: string[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken).toLowerCase();\n\tif (!normalizedBase || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst candidates = new Set<string>();\n\tconst hints = AI_ASSISTANT_ID_LOOKUP_HINTS[normalizedBase] || [];\n\thints.forEach((hint) => {\n\t\tif (collectionNames.includes(hint)) {\n\t\t\tcandidates.add(hint);\n\t\t}\n\t});\n\tconst tokens = tokenizeCollectionText(normalizedBase);\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT);\n\tranked.forEach(entry => candidates.add(entry.name));\n\treturn Array.from(candidates);\n}\n\nfunction buildNameLookupFields(baseToken: string, docs?: any[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tconst candidates = expandNameFieldCandidates(normalizedBase);\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn candidates;\n\t}\n\tconst available = collectFieldCandidates(docs);\n\tconst filtered = candidates.filter(field => {\n\t\tconst stats = available.get(field);\n\t\treturn !!stats && stats.nonEmpty > 0;\n\t});\n\treturn filtered.length ? filtered : candidates;\n}\n\nasync function lookupIdsForNameMatch(params: {\n\tdb: any;\n\tdbName: string;\n\tcollection: string;\n\tbaseToken: string;\n\tregex: RegExp;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tprobeDocs?: any[];\n}): Promise<{ ids: any[]; fields: string[] } | null> {\n\tconst { db, dbName, collection, baseToken, regex, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst fields = buildNameLookupFields(baseToken, probeDocs);\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet query: Record<string, any> = { $or: fields.map(field => ({ [field]: regex })) };\n\tif (!isSuperAdmin) {\n\t\tconst hasClient = await collectionHasClientIndex(db, dbName, collection);\n\t\tif (hasClient) {\n\t\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t\t}\n\t\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\t\tif (normalizedCustomer && collection !== 'customers') {\n\t\t\tconst hasCustomer = await collectionHasFieldIndex(db, dbName, collection, 'id_customer');\n\t\t\tif (hasCustomer) {\n\t\t\t\tquery = applyCustomerScopeFilter(query, collection, normalizedCustomer, isSuperAdmin);\n\t\t\t}\n\t\t}\n\t}\n\tconst projection: Record<string, number> = { _id: 1 };\n\tfields.forEach((field) => {\n\t\tprojection[field] = 1;\n\t});\n\tconst docs = await db.collection(collection)\n\t\t.find(query, {\n\t\t\tprojection,\n\t\t\tlimit: AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t})\n\t\t.toArray();\n\tconst ids = docs.map((doc: any) => doc?._id).filter(Boolean);\n\treturn ids.length ? { ids, fields } : null;\n}\n\nasync function applyIdLookupFallbackToQuery(params: {\n\tquery: Record<string, any>;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tcollectionNames?: string[];\n\tprobeDocs?: any[];\n}): Promise<{ query: Record<string, any>; meta: Record<string, any> } | null> {\n\tconst { query, db, dbName, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst conditions = collectIdFieldConditions(query);\n\tif (!conditions.length) {\n\t\treturn null;\n\t}\n\tconst collectionNames = params.collectionNames || await listAssistantCollections(db, dbName);\n\tfor (const condition of conditions) {\n\t\tconst regex = buildRegexFromCondition(condition.condition);\n\t\tif (!regex) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseToken = normalizeIdFieldBase(condition.field);\n\t\tif (!baseToken) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (baseToken === 'customer' && idCustomer) {\n\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\tlet nextValue: any = idCustomer;\n\t\t\tif (targetFieldType === 'objectId' && isObjectIdString(idCustomer)) {\n\t\t\t\ttry {\n\t\t\t\t\tnextValue = new ObjectId(idCustomer);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tnextValue = idCustomer;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, nextValue),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'customer_scope',\n\t\t\t\t\tvalue: idCustomer,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst localNameField = resolveLocalNameFieldFromDocs(probeDocs || [], baseToken);\n\t\tif (localNameField) {\n\t\t\treturn {\n\t\t\t\tquery: buildIdFieldNameFallbackQuery(query, condition.field, localNameField, regex),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'local_name',\n\t\t\t\t\tnameField: localNameField\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst candidates = resolveIdLookupCandidates(baseToken, collectionNames);\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!candidate) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t: false;\n\t\t\tconst candidateProbe = await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection: candidate,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: candidateHasClientScope\n\t\t\t});\n\t\t\tconst lookup = await lookupIdsForNameMatch({\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tcollection: candidate,\n\t\t\t\tbaseToken,\n\t\t\t\tregex,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: candidateProbe\n\t\t\t});\n\t\t\tif (lookup?.ids?.length) {\n\t\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\t\tconst normalizedIds = normalizeIdsForTargetField(\n\t\t\t\t\tlookup.ids,\n\t\t\t\t\tprobeDocs || [],\n\t\t\t\t\tcondition.field,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t);\n\t\t\t\tconst idsForQuery = normalizedIds.length ? normalizedIds : lookup.ids;\n\t\t\t\treturn {\n\t\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, { $in: idsForQuery }),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tfield: condition.field,\n\t\t\t\t\t\tstrategy: 'lookup',\n\t\t\t\t\t\tcollection: candidate,\n\t\t\t\t\t\tids: lookup.ids.length,\n\t\t\t\t\t\tidsNormalized: normalizedIds.length,\n\t\t\t\t\t\ttargetFieldType,\n\t\t\t\t\t\tfields: lookup.fields\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction buildAggregateNameMatchFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tcondition: any;\n\t\tfields: string[];\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst baseMatch = stripMatchField(matchStage, fallback.field);\n\tconst orConditions = fallback.fields.map(field => ({ [field]: fallback.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: nextMatch };\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction findAggregateDateField(pipeline: Array<Record<string, any>>): string | null {\n\tconst fields = new Set<string>();\n\t(pipeline || []).forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tcollectDateFieldsFromMatch(stage.$match, fields);\n\t\t}\n\t});\n\tif (fields.size !== 1) {\n\t\treturn null;\n\t}\n\treturn Array.from(fields)[0];\n}\n\nfunction collectDateFieldsFromMatch(value: any, fields: Set<string>) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectDateFieldsFromMatch(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (Object.prototype.hasOwnProperty.call(AI_ASSISTANT_DATE_FALLBACKS, key)) {\n\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\tfields.add(key);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tif (entry && typeof entry === 'object') {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t}\n\t});\n}\n\nfunction hasDateRangeOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.prototype.hasOwnProperty.call(value, '$gte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$gt')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lt');\n}\n\nfunction replaceAggregateDateField(\n\tpipeline: Array<Record<string, any>>,\n\tfromField: string,\n\ttoField: string\n): Array<Record<string, any>> {\n\tconst replacer = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => replacer(entry));\n\t\t}\n\t\tif (value instanceof Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst next: Record<string, any> = {};\n\t\t\tObject.keys(value).forEach((key) => {\n\t\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\t\tnext[nextKey] = replacer(value[key]);\n\t\t\t});\n\t\t\treturn next;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tif (value.startsWith(`$${fromField}`)) {\n\t\t\t\treturn `$${toField}${value.slice(fromField.length + 1)}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\treturn value;\n\t};\n\treturn replacer(pipeline);\n}\n\nfunction normalizeMongoQuery(query?: Record<string, any>) {\n\tconst normalized = query && typeof query === 'object' ? query : {};\n\tif (containsForbiddenMongoOperators(normalized)) {\n\t\tthrow new Error('AI assistant mongo read: Query contains restricted operators.');\n\t}\n\tconst rewritten = rewriteEmbeddedMatchObjects(normalized);\n\treturn applyAssistantNameRegexToQuery(rewritten);\n}\n\nfunction shouldApplyAssistantNameRegex(field: string): boolean {\n\tconst normalized = String(field || '').toLowerCase().trim();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized.startsWith('$')) {\n\t\treturn false;\n\t}\n\tif (isAssistantIdField(normalized)) {\n\t\treturn false;\n\t}\n\tif (normalized === 'id' || normalized.endsWith('_id')) {\n\t\treturn false;\n\t}\n\tconst tokens = normalized.split(/[^a-z0-9]+/g).filter(Boolean);\n\tconst targetTokens = new Set(['customer', 'well', 'chemical']);\n\tconst hasTargetToken = tokens.some(token => targetTokens.has(token));\n\tif (hasTargetToken) {\n\t\treturn true;\n\t}\n\tif (tokens.includes('name')) {\n\t\treturn true;\n\t}\n\treturn /(^|[._-])name$/i.test(normalized);\n}\n\nfunction escapeRegexValue(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction applyAssistantNameRegexToQuery(query: any): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => applyAssistantNameRegexToQuery(entry));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date || query instanceof RegExp || isMongoObjectId(query)) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst value = query[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && shouldApplyAssistantNameRegex(key)) {\n\t\t\tconst trimmed = value.trim();\n\t\t\tresult[key] = trimmed ? new RegExp(escapeRegexValue(trimmed), 'i') : value;\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction isObjectIdString(value: string): boolean {\n\treturn /^[a-f0-9]{24}$/i.test(value);\n}\n\nfunction isPlainMatchObject(value: any): boolean {\n\treturn isPlainObject(value)\n\t\t&& !isMongoObjectId(value)\n\t\t&& !(value instanceof Date)\n\t\t&& !(value instanceof RegExp);\n}\n\nfunction hasOperatorKeys(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn Object.keys(value).some(key => key.startsWith('$'));\n}\n\nexport function rewriteEmbeddedMatchObjects(query: any): any {\n\tconst rewriteValue = (value: any, allowArrayRewrite: boolean): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\tif (!allowArrayRewrite) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\treturn value.map(entry => rewriteValue(entry, true));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tresult[key] = rewriteValue(entry, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, key);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[key] = rewriteValue(entry, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[key] = allowArrayRewrite ? entry.map(item => rewriteValue(item, true)) : entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst flattenMatchObject = (value: any, prefix: string): Record<string, any> => {\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value || {}).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tconst currentPath = `${prefix}.${key}`;\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, currentPath);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = rewriteValue(entry, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[currentPath] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\treturn rewriteValue(query, true);\n}\n\nfunction buildRegexFromCondition(condition: any): RegExp | null {\n\tif (!condition) {\n\t\treturn null;\n\t}\n\tif (condition instanceof RegExp) {\n\t\treturn condition;\n\t}\n\tif (typeof condition === 'string') {\n\t\tconst trimmed = condition.trim();\n\t\tif (!trimmed || isObjectIdString(trimmed)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new RegExp(escapeRegexValue(trimmed), 'i');\n\t}\n\tif (typeof condition === 'object') {\n\t\tconst raw = (condition as any).$regex;\n\t\tif (raw !== undefined) {\n\t\t\tconst source = String(raw);\n\t\t\tconst options = typeof (condition as any).$options === 'string'\n\t\t\t\t? (condition as any).$options\n\t\t\t\t: 'i';\n\t\t\ttry {\n\t\t\t\treturn new RegExp(source, options);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\treturn new RegExp(escapeRegexValue(source), 'i');\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction normalizeIdFieldBase(field: string): string {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst last = parts[parts.length - 1] || normalized;\n\tif (last.startsWith('id_')) {\n\t\treturn last.slice(3);\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn normalized.slice(3);\n\t}\n\treturn last;\n}\n\nfunction normalizeCollectionKey(value: string): string {\n\treturn String(value || '').toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n\nfunction normalizeCollectionToken(token: string): string[] {\n\tconst trimmed = token.trim();\n\tif (!trimmed) {\n\t\treturn [];\n\t}\n\tconst tokens = new Set<string>([trimmed]);\n\tif (\n\t\ttrimmed.length > 4\n\t\t&& trimmed.endsWith('s')\n\t\t&& !trimmed.endsWith('ss')\n\t\t&& !trimmed.endsWith('us')\n\t\t&& !trimmed.endsWith('is')\n\t) {\n\t\ttokens.add(trimmed.slice(0, -1));\n\t}\n\treturn Array.from(tokens);\n}\n\nfunction tokenizeCollectionText(value: string): string[] {\n\tconst rawTokens = String(value || '')\n\t\t.toLowerCase()\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst tokens: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!AI_ASSISTANT_COLLECTION_STOPWORDS.has(normalized)) {\n\t\t\t\ttokens.push(normalized);\n\t\t\t}\n\t\t});\n\t});\n\treturn Array.from(new Set(tokens));\n}\n\nfunction computeCollectionTokenWeights(tokens: string[]): { weights: Record<string, number>; hasDomain: boolean } {\n\tconst unique = Array.from(new Set(tokens));\n\tconst hasDomain = unique.some(token => AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS.has(token));\n\tconst weights: Record<string, number> = {};\n\tunique.forEach((token) => {\n\t\tif (hasDomain && AI_ASSISTANT_COLLECTION_GENERIC_TOKENS.has(token)) {\n\t\t\tweights[token] = 0.4;\n\t\t\treturn;\n\t\t}\n\t\tweights[token] = 1;\n\t});\n\treturn { weights, hasDomain };\n}\n\nfunction expandAssistantTermSynonyms(text: string): { expanded: string; matches: Array<{ term: string; expansions: string[] }> } {\n\tconst base = normalizeOptionalString(text);\n\tif (!base) {\n\t\treturn { expanded: '', matches: [] };\n\t}\n\tlet expanded = base;\n\tconst matches: Array<{ term: string; expansions: string[] }> = [];\n\tAI_ASSISTANT_TERM_SYNONYMS.forEach((entry) => {\n\t\tif (!entry.pattern.test(base)) {\n\t\t\treturn;\n\t\t}\n\t\tconst existing = expanded.toLowerCase();\n\t\tentry.expansions.forEach((expansion) => {\n\t\t\tif (expansion && !existing.includes(expansion.toLowerCase())) {\n\t\t\t\texpanded = `${expanded} ${expansion}`;\n\t\t\t}\n\t\t});\n\t\tmatches.push({ term: entry.label, expansions: entry.expansions });\n\t});\n\treturn { expanded, matches };\n}\n\nasync function listAssistantCollections(db: any, dbName: string): Promise<string[]> {\n\tconst cacheKey = normalizeOptionalString(dbName) || 'default';\n\tconst cached = AI_ASSISTANT_COLLECTION_CACHE.get(cacheKey);\n\tconst now = Date.now();\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_COLLECTION_CACHE_TTL_MS) {\n\t\treturn cached.names;\n\t}\n\ttry {\n\t\tconst collections = await db.listCollections({}, { nameOnly: true }).toArray();\n\t\tconst names = Array.isArray(collections)\n\t\t\t? collections.map(entry => normalizeOptionalString(entry?.name)).filter(Boolean)\n\t\t\t: [];\n\t\tAI_ASSISTANT_COLLECTION_CACHE.set(cacheKey, { names, updatedAt: now });\n\t\treturn names;\n\t}\n\tcatch {\n\t\treturn cached?.names || [];\n\t}\n}\n\nfunction scoreCollectionMatch(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): number {\n\tif (!requestedTokens.length) {\n\t\treturn 0;\n\t}\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tif (!candidateTokens.length) {\n\t\treturn 0;\n\t}\n\tlet score = 0;\n\trequestedTokens.forEach((token) => {\n\t\tif (candidateTokens.includes(token)) {\n\t\t\tconst weight = tokenWeights?.[token] ?? 1;\n\t\t\tscore += 10 * weight;\n\t\t}\n\t});\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t}\n\treturn score;\n}\n\nfunction scoreCollectionMatchDetailed(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): {\n\tscore: number;\n\ttokenMatches: string[];\n\tkeyMatch: 'exact' | 'partial' | null;\n\tcandidateTokens: string[];\n\ttokenScore: number;\n\ttokenWeights: Record<string, number>;\n} {\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tconst tokenMatches = requestedTokens.filter(token => candidateTokens.includes(token));\n\tconst weights = tokenWeights || {};\n\tconst tokenScore = tokenMatches.reduce((sum, token) => sum + 10 * (weights[token] ?? 1), 0);\n\tlet score = tokenScore;\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tlet keyMatch: 'exact' | 'partial' | null = null;\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t\tkeyMatch = 'exact';\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t\tkeyMatch = 'partial';\n\t}\n\treturn {\n\t\tscore,\n\t\ttokenMatches,\n\t\tkeyMatch,\n\t\tcandidateTokens,\n\t\ttokenScore,\n\t\ttokenWeights: tokenMatches.reduce((acc, token) => {\n\t\t\tacc[token] = weights[token] ?? 1;\n\t\t\treturn acc;\n\t\t}, {} as Record<string, number>)\n\t};\n}\n\nfunction resolveCollectionHintsFromTokens(tokens: string[], collectionNames: string[], max = 5): string[] {\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\treturn collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0))\n\t\t.map(entry => entry.name);\n}\n\nfunction buildCollectionRankingDebugFromTokens(tokens: string[], collectionNames: string[], max = 8): Record<string, any> {\n\tconst requestedKey = normalizeCollectionKey(tokens.join('-'));\n\tconst { weights, hasDomain } = computeCollectionTokenWeights(tokens);\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn {\n\t\t\ttokens,\n\t\t\trequestedKey,\n\t\t\thasDomain,\n\t\t\ttokenWeights: weights,\n\t\t\tranked: []\n\t\t};\n\t}\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, ...scoreCollectionMatchDetailed(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0));\n\treturn {\n\t\ttokens,\n\t\trequestedKey,\n\t\thasDomain,\n\t\ttokenWeights: weights,\n\t\tranked\n\t};\n}\n\nfunction buildCollectionSelectionDetail(tokens: string[], collection: string): Record<string, any> | null {\n\tconst trimmed = normalizeOptionalString(collection);\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\tconst detail = scoreCollectionMatchDetailed(tokens, trimmed, weights);\n\treturn {\n\t\tcollection: trimmed,\n\t\tscore: detail.score,\n\t\ttokenMatches: detail.tokenMatches,\n\t\tkeyMatch: detail.keyMatch,\n\t\tcandidateTokens: detail.candidateTokens,\n\t\ttokenScore: detail.tokenScore,\n\t\ttokenWeights: detail.tokenWeights\n\t};\n}\n\nfunction isVersionCollectionName(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized.endsWith('.versions') || normalized.endsWith('-versions') || normalized.includes('.versions.');\n}\n\nfunction pickPreferredCollectionCandidate(\n\tranked: Array<{ name: string; score: number }>\n): { name: string; score: number } | null {\n\tif (!Array.isArray(ranked) || !ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = ranked[0];\n\tif (!top) {\n\t\treturn null;\n\t}\n\tif (!isVersionCollectionName(top.name)) {\n\t\treturn top;\n\t}\n\tconst nonVersion = ranked.find(entry => entry && !isVersionCollectionName(entry.name));\n\tif (nonVersion && nonVersion.score >= top.score - 5) {\n\t\treturn nonVersion;\n\t}\n\treturn top;\n}\n\nfunction resolveAssistantCollectionOverride(\n\tcollectionRanking: Record<string, any> | null,\n\tcurrentCollection: string\n): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\tconst ranked = Array.isArray(collectionRanking?.ranked) ? collectionRanking?.ranked : [];\n\tif (!ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = pickPreferredCollectionCandidate(ranked);\n\tif (!top || top.score < AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE) {\n\t\treturn null;\n\t}\n\tconst current = normalizeOptionalString(currentCollection);\n\tif (!current) {\n\t\treturn {\n\t\t\tfrom: '',\n\t\t\tto: top.name,\n\t\t\tfromScore: 0,\n\t\t\ttoScore: top.score,\n\t\t\treason: 'no collection specified'\n\t\t};\n\t}\n\tif (current === top.name) {\n\t\treturn null;\n\t}\n\tconst currentScore = ranked.find(entry => entry.name === current)?.score ?? 0;\n\tconst scoreGap = top.score - currentScore;\n\tconst currentIsVersion = isVersionCollectionName(current);\n\tconst topIsVersion = isVersionCollectionName(top.name);\n\tif (scoreGap < AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP && !(currentIsVersion && !topIsVersion)) {\n\t\treturn null;\n\t}\n\tconst reason = currentIsVersion && !topIsVersion\n\t\t? 'preferred non-version collection'\n\t\t: `higher score (${top.score} vs ${currentScore})`;\n\treturn {\n\t\tfrom: current,\n\t\tto: top.name,\n\t\tfromScore: currentScore,\n\t\ttoScore: top.score,\n\t\treason\n\t};\n}\n\nfunction findBestCollectionMatch(requested: string, collectionNames: string[]): { name: string; score: number } | null {\n\tconst requestedTokens = tokenizeCollectionText(requested);\n\tif (!requestedTokens.length || !collectionNames.length) {\n\t\treturn null;\n\t}\n\tlet best: { name: string; score: number } | null = null;\n\tcollectionNames.forEach((name) => {\n\t\tconst score = scoreCollectionMatch(requestedTokens, name);\n\t\tif (!best || score > best.score) {\n\t\t\tbest = { name, score };\n\t\t}\n\t});\n\treturn best;\n}\n\nasync function resolveAssistantCollectionName(\n\tdb: any,\n\tdbName: string,\n\trequested: string\n): Promise<{ name: string; matched: boolean; candidates: string[]; score: number }> {\n\tconst trimmed = normalizeOptionalString(requested);\n\tif (!trimmed) {\n\t\treturn { name: '', matched: false, candidates: [], score: 0 };\n\t}\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\tif (collectionNames.includes(trimmed)) {\n\t\treturn { name: trimmed, matched: true, candidates: [], score: 100 };\n\t}\n\tconst best = findBestCollectionMatch(trimmed, collectionNames);\n\tif (best && best.score >= 20) {\n\t\treturn { name: best.name, matched: true, candidates: [], score: best.score };\n\t}\n\tconst candidates = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokenizeCollectionText(trimmed), name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, 5)\n\t\t.map(entry => entry.name);\n\treturn { name: trimmed, matched: false, candidates, score: best?.score || 0 };\n}\n\nfunction findQueryDateField(query: any): string | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tif (Array.isArray(query)) {\n\t\tfor (const entry of query) {\n\t\t\tconst found = findQueryDateField(entry);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tfor (const key of Object.keys(query)) {\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findQueryDateField(query[key]);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (AI_ASSISTANT_DATE_FALLBACKS[key]) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction replaceQueryField(query: any, fromField: string, toField: string): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => replaceQueryField(entry, fromField, toField));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst nextKey = key === fromField ? toField : key;\n\t\tresult[nextKey] = replaceQueryField((query as any)[key], fromField, toField);\n\t});\n\treturn result;\n}\n\nfunction extractDateRangeConditions(query: any): Array<{ field: string; condition: any }> {\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn [];\n\t}\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tObject.keys(query).forEach((key) => {\n\t\tif (key.startsWith('$')) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (query as any)[key];\n\t\tif (value instanceof Date) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object' && hasDateRangeOperators(value)) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction expandQueryDateFallbacks(query: any): { query: any; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst addedFields: string[] = [];\n\tconst pushField = (field: string) => {\n\t\tif (!field) {\n\t\t\treturn;\n\t\t}\n\t\tif (addedFields.includes(field)) {\n\t\t\treturn;\n\t\t}\n\t\taddedFields.push(field);\n\t};\n\n\tconst expandOrArray = (orArray: any[]): any[] => {\n\t\tconst existingFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet extended = [...orArray];\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst dateConditions = extractDateRangeConditions(entry);\n\t\t\tdateConditions.forEach((condition) => {\n\t\t\t\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[condition.field];\n\t\t\t\tif (fallback && !existingFields.has(fallback)) {\n\t\t\t\t\textended = [...extended, replaceQueryField(entry, condition.field, fallback)];\n\t\t\t\t\texistingFields.add(fallback);\n\t\t\t\t\tpushField(fallback);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!existingFields.has('date_original')) {\n\t\t\t\tconst candidate = dateConditions.find(condition => condition.field.startsWith('date_') && condition.field !== 'date_original');\n\t\t\t\tif (candidate) {\n\t\t\t\t\textended = [...extended, replaceQueryField(entry, candidate.field, 'date_original')];\n\t\t\t\t\texistingFields.add('date_original');\n\t\t\t\t\tpushField('date_original');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn extended;\n\t};\n\n\tconst visit = (value: any): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value.map((entry) => {\n\t\t\t\tconst visited = visit(entry);\n\t\t\t\tif (visited.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn visited.value;\n\t\t\t});\n\t\t\treturn { value: changed ? nextArray : value, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tlet changed = false;\n\t\tconst next: Record<string, any> = { ...value };\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tif (key === '$or' && Array.isArray(value.$or)) {\n\t\t\t\tconst expanded = expandOrArray(value.$or);\n\t\t\t\tif (expanded.length !== value.$or.length) {\n\t\t\t\t\tnext.$or = expanded;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst visited = visit(value[key]);\n\t\t\tif (visited.changed) {\n\t\t\t\tnext[key] = visited.value;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn { value: changed ? next : value, changed };\n\t};\n\n\tconst result = visit(query);\n\tif (!result.changed || !addedFields.length) {\n\t\treturn null;\n\t}\n\treturn { query: result.value, fields: addedFields };\n}\n\nfunction buildDateFieldExpansionList(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst expansions = new Set<string>();\n\tconst add = (value: string) => {\n\t\tif (value && value !== normalized) {\n\t\t\texpansions.add(value);\n\t\t}\n\t};\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[normalized];\n\tif (fallback) {\n\t\tadd(fallback);\n\t}\n\tif (normalized.startsWith('date_') || normalized === 'date' || normalized.endsWith('_date')) {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\tif (normalized === 'createdAt' || normalized === 'updatedAt') {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\treturn Array.from(expansions);\n}\n\nfunction expandAggregateDateMatchFallback(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; fields: string[] } | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchStage = stage.$match as Record<string, any>;\n\t\tconst orArray = Array.isArray(matchStage.$or) ? matchStage.$or : null;\n\t\tif (!orArray || !orArray.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst existingFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet expandedOr = [...orArray];\n\t\tconst addedFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst conditions = extractDateRangeConditions(entry);\n\t\t\tconditions.forEach((condition) => {\n\t\t\t\tconst expansions = buildDateFieldExpansionList(condition.field);\n\t\t\t\texpansions.forEach((field) => {\n\t\t\t\t\tif (existingFields.has(field)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\texpandedOr = [...expandedOr, replaceQueryField(entry, condition.field, field)];\n\t\t\t\t\texistingFields.add(field);\n\t\t\t\t\taddedFields.add(field);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tif (!addedFields.size) {\n\t\t\treturn null;\n\t\t}\n\t\tconst nextMatch = {\n\t\t\t...matchStage,\n\t\t\t$or: expandedOr\n\t\t};\n\t\tconst updated = pipeline.map((current, index) => (index === i ? { $match: nextMatch } : current));\n\t\treturn { pipeline: updated, fields: Array.from(addedFields) };\n\t}\n\treturn null;\n}\n\nfunction resolveQueryDateFieldFallback(query: any): { from: string; to: string } | null {\n\tconst dateField = findQueryDateField(query);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction containsForbiddenMongoOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => containsForbiddenMongoOperators(entry));\n\t}\n\tfor (const key of Object.keys(value)) {\n\t\tconst normalized = key.toLowerCase();\n\t\tif (normalized === '$where' || normalized === '$function' || normalized === '$accumulator') {\n\t\t\treturn true;\n\t\t}\n\t\tif (containsForbiddenMongoOperators(value[key])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction buildClientScopeCacheKey(dbName: string, collection: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}`;\n}\n\nfunction buildFieldIndexCacheKey(dbName: string, collection: string, field: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst normalizedField = normalizeOptionalString(field).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}:${normalizedField}`;\n}\n\nasync function collectionHasFieldIndex(db: any, dbName: string, collection: string, field: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tconst normalizedField = normalizeOptionalString(field);\n\tif (!normalizedCollection || !normalizedField) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildFieldIndexCacheKey(dbName, normalizedCollection, normalizedField);\n\tconst cached = AI_ASSISTANT_FIELD_INDEX_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst indexes = await db.collection(normalizedCollection).indexes();\n\t\tconst hasIndex = Array.isArray(indexes)\n\t\t\t&& indexes.some((entry: any) => entry?.key && Object.prototype.hasOwnProperty.call(entry.key, normalizedField));\n\t\tAI_ASSISTANT_FIELD_INDEX_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function collectionHasClientIndex(db: any, dbName: string, collection: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tif (!normalizedCollection) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildClientScopeCacheKey(dbName, normalizedCollection);\n\tconst cached = AI_ASSISTANT_CLIENT_SCOPE_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst hasIndex = await collectionHasFieldIndex(db, dbName, normalizedCollection, 'id_client');\n\t\tAI_ASSISTANT_CLIENT_SCOPE_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction applyClientScopeFilter(query: Record<string, any>, idClient?: string, isSuperAdmin = false): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedClient = normalizeOptionalString(idClient);\n\tif (!normalizedClient) {\n\t\treturn query;\n\t}\n\treturn {\n\t\t$and: [query, { id_client: normalizedClient }]\n\t};\n}\n\nfunction applyCustomerScopeFilter(\n\tquery: Record<string, any>,\n\tcollection: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false\n): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\tif (!normalizedCustomer) {\n\t\treturn query;\n\t}\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst customerField = normalizedCollection === 'users' || normalizedCollection === 'user-versions'\n\t\t? 'other.id_customer'\n\t\t: 'id_customer';\n\treturn {\n\t\t$and: [query, { [customerField]: normalizedCustomer }]\n\t};\n}\n\nfunction buildAssistantProbeQuery(\n\tcollection: string,\n\tidClient?: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false,\n\tincludeClientScope = false\n): Record<string, any> {\n\tlet query: Record<string, any> = {};\n\tif (includeClientScope) {\n\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t}\n\treturn applyCustomerScopeFilter(query, collection, idCustomer, isSuperAdmin);\n}\n\nfunction fetchAssistantProbeDocs(params: {\n\tdb: any;\n\tcollection: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tincludeClientScope: boolean;\n}): Promise<any[]> {\n\tconst { db, collection, idClient, idCustomer, isSuperAdmin, includeClientScope } = params;\n\tconst probeQuery = buildAssistantProbeQuery(collection, idClient, idCustomer, isSuperAdmin, includeClientScope);\n\treturn db.collection(collection)\n\t\t.find(probeQuery, {\n\t\t\tlimit: AI_ASSISTANT_PROBE_LIMIT,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t})\n\t\t.toArray();\n}\n\nfunction userHasViewPermission(user: any, view: string): boolean {\n\tif (!user || !view) {\n\t\treturn false;\n\t}\n\tif (user.roles?.super_admin) {\n\t\treturn true;\n\t}\n\tconst groups = Array.isArray(user.roles?.groups) ? user.roles.groups : [];\n\tconst miscs = Array.isArray(user.roles?.miscs) ? user.roles.miscs : [];\n\tif (groups.some(group => Array.isArray(group.views) && group.views.some(v => v.startsWith(view)))) {\n\t\treturn true;\n\t}\n\tif (miscs.some(v => v.startsWith(view))) {\n\t\treturn true;\n\t}\n\tif (groups.some(group => group.name === view)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction userHasAnyViewPermission(user: any, views: string[]): boolean {\n\tif (!user || !Array.isArray(views)) {\n\t\treturn false;\n\t}\n\treturn views.some(view => view && userHasViewPermission(user, view));\n}\n\nfunction userHasInvoiceAccess(user: any): boolean {\n\treturn userHasAnyViewPermission(user, ['/invoice', '/report/invoice']);\n}\n\nfunction requiresInvoicePermission(collection: string): boolean {\n\tconst normalized = normalizeOptionalString(collection).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn normalized.includes('invoice');\n}\n\nfunction redactSensitiveFields(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => redactSensitiveFields(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(value).forEach((key) => {\n\t\tif (shouldRedactField(key)) {\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = redactSensitiveFields(value[key]);\n\t});\n\treturn result;\n}\n\nfunction shouldRedactField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_SENSITIVE_FIELDS.some((field) => normalized === field || normalized.includes(field));\n}\n\nfunction resolveCodexTimeoutMs(): number {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(config['AI_ASSISTANT_CODEX_TIMEOUT_MS'] || process.env.AI_ASSISTANT_CODEX_TIMEOUT_MS);\n\tif (raw && raw > 0) {\n\t\treturn round(raw);\n\t}\n\treturn DEFAULT_CODEX_TIMEOUT_MS;\n}\n\nfunction resolveCodexWorkerThreadEnabled(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_USE_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_USE_WORKER_THREAD\n\t\t|| config['AI_ASSISTANT_CODEX_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_WORKER_THREAD\n\t);\n\tconst normalized = normalizeOptionalBoolean(raw);\n\tif (typeof normalized === 'boolean') {\n\t\treturn normalized;\n\t}\n\treturn process.env.IS_WORKER_INSTANCE !== 'true';\n}\n\nfunction resolveCodexModel(): string {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_MODEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_MODEL\n\t\t|| config['AI_TERMINAL_CODEX_MODEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_MODEL\n\t\t|| config['AI_DASHBOARD_CODEX_MODEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_MODEL\n\t);\n\treturn raw || DEFAULT_CODEX_MODEL;\n}\n\nfunction resolveCodexThoughtLevel(): 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_TERMINAL_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_DASHBOARD_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_THOUGHT_LEVEL\n\t);\n\tconst normalized = (raw || '').trim().toLowerCase();\n\tif (normalized === 'minimal' || normalized === 'low' || normalized === 'medium' || normalized === 'high' || normalized === 'xhigh') {\n\t\treturn normalized as 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';\n\t}\n\treturn 'low';\n}\n\nfunction resolveCodexSettings(): CodexConfig {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst apiKey = (serverConfig['OPENAI_API_KEY'] || process.env.OPENAI_API_KEY || '').trim();\n\tif (!apiKey) {\n\t\tthrow new Error('OpenAI API key missing. Add OPENAI_API_KEY to server config.');\n\t}\n\treturn {\n\t\tapiKey,\n\t\tbaseUrl: (serverConfig['OPENAI_BASE_URL'] || process.env.OPENAI_BASE_URL || '').trim() || undefined,\n\t\tmodel: resolveCodexModel(),\n\t\tmaxRetries: normalizeOptionalNumber(serverConfig['OPENAI_MAX_RETRIES'] || process.env.OPENAI_MAX_RETRIES),\n\t\tretryDelayMs: normalizeOptionalNumber(serverConfig['OPENAI_RETRY_DELAY_MS'] || process.env.OPENAI_RETRY_DELAY_MS)\n\t};\n}\n\nfunction getAssistantCodexClient(): CodexClient {\n\tif (!assistantCodexClient) {\n\t\tassistantCodexClient = new CodexClient(resolveCodexSettings());\n\t}\n\treturn assistantCodexClient;\n}\n\nclass CodexWorkerBootstrapError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'CodexWorkerBootstrapError';\n\t}\n}\n\nfunction applyCodexStreamStatusHandler(\n\trunOptions: CodexRunOptions,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): CodexRunOptions {\n\tif (!streamStatusHandler) {\n\t\treturn runOptions;\n\t}\n\tconst existing = runOptions?.onStreamEvent;\n\treturn {\n\t\t...runOptions,\n\t\tonStreamEvent: async (event: any) => {\n\t\t\tif (existing) {\n\t\t\t\tawait existing(event);\n\t\t\t}\n\t\t\tconst status = deriveAssistantStreamStatus(event);\n\t\t\tif (status) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t}\n\t};\n}\n\nasync function waitForCodexWorkerMessage(\n\tworker: Worker,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<CodexWorkerResponse> {\n\tfor await (const [message] of on(worker, 'message')) {\n\t\tconst payload = message as CodexWorkerResponse;\n\t\tif (payload?.type === 'stream') {\n\t\t\tconst status = normalizeOptionalString(payload.status);\n\t\t\tif (status && streamStatusHandler) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn payload;\n\t}\n\tthrow new CodexWorkerBootstrapError('Codex worker exited before completing.');\n}\n\nasync function runCodexInWorkerThread(\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst streamedOptions = applyCodexStreamStatusHandler(runOptions, streamStatusHandler);\n\tif (!resolveCodexWorkerThreadEnabled()) {\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\tconst workerPath = await resolveCodexWorkerPath();\n\tif (!workerPath) {\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\ttry {\n\t\treturn await runCodexInWorkerThreadInternal(workerPath, prompt, runOptions, config, streamStatusHandler);\n\t}\n\tcatch (error) {\n\t\tif (!(error instanceof CodexWorkerBootstrapError)) {\n\t\t\tthrow error;\n\t\t}\n\t\tconsole.error('Codex worker bootstrap failed, falling back to in-process run.', error);\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n}\n\nasync function runCodexInWorkerThreadInternal(\n\tworkerPath: string,\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst sanitizedOptions = sanitizeCodexRunOptions(runOptions);\n\tlet worker: Worker;\n\n\ttry {\n\t\tworker = new Worker(workerPath, {\n\t\t\tworkerData: {\n\t\t\t\tprompt,\n\t\t\t\trunOptions: sanitizedOptions,\n\t\t\t\tconfig,\n\t\t\t\tstreamStatus: !!streamStatusHandler\n\t\t\t}\n\t\t});\n\t}\n\tcatch (error) {\n\t\tconst wrapped = new CodexWorkerBootstrapError('Failed to start codex worker.');\n\t\tif (error instanceof Error && error.stack) {\n\t\t\twrapped.stack = error.stack;\n\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tconst timeoutMs = (sanitizedOptions?.timeoutMs || resolveCodexTimeoutMs()) + 15000;\n\tconst timeoutController = new AbortController();\n\tconst timeoutPromise = (async () => {\n\t\ttry {\n\t\t\tawait sleepTimeout(timeoutMs, null, { signal: timeoutController.signal });\n\t\t\treturn { type: 'timeout' as const };\n\t\t}\n\t\tcatch (error: any) {\n\t\t\tif (error?.name === 'AbortError') {\n\t\t\t\treturn { type: 'aborted' as const };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t})();\n\n\tconst messagePromise = (async () => {\n\t\tconst message = await waitForCodexWorkerMessage(worker, streamStatusHandler);\n\t\treturn { type: 'message' as const, message };\n\t})();\n\tconst errorPromise = (async () => {\n\t\tconst [error] = await once(worker, 'error');\n\t\treturn { type: 'error' as const, error: error as Error };\n\t})();\n\tconst exitPromise = (async () => {\n\t\tconst [code] = await once(worker, 'exit');\n\t\treturn { type: 'exit' as const, code: code as number };\n\t})();\n\n\tlet outcome: { type: 'message'; message: CodexWorkerResponse }\n\t\t| { type: 'error'; error: Error }\n\t\t| { type: 'exit'; code: number }\n\t\t| { type: 'timeout' }\n\t\t| { type: 'aborted' };\n\n\ttry {\n\t\toutcome = await Promise.race([messagePromise, errorPromise, exitPromise, timeoutPromise]);\n\t}\n\tfinally {\n\t\ttimeoutController.abort();\n\t\tworker.removeAllListeners('error');\n\t\tworker.removeAllListeners('exit');\n\t}\n\n\tif (outcome.type === 'message') {\n\t\tawait terminateWorker(worker);\n\t\tif (outcome.message && outcome.message.ok) {\n\t\t\treturn outcome.message.result || '';\n\t\t}\n\t\tthrow new Error(outcome.message?.error || 'Codex worker failed.');\n\t}\n\n\tif (outcome.type === 'timeout') {\n\t\tawait terminateWorker(worker);\n\t\tthrow new CodexWorkerBootstrapError('Codex worker timed out.');\n\t}\n\n\tif (outcome.type === 'error') {\n\t\tawait terminateWorker(worker);\n\t\tconst wrapped = new CodexWorkerBootstrapError('Codex worker errored before completing.');\n\t\tif (outcome.error?.stack) {\n\t\t\twrapped.stack = outcome.error.stack;\n\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tif (outcome.type === 'exit') {\n\t\tthrow new CodexWorkerBootstrapError(`Codex worker exited before completing (code ${outcome.code}).`);\n\t}\n\n\tthrow new CodexWorkerBootstrapError('Codex worker aborted before completing.');\n}\n\nasync function terminateWorker(worker: Worker): Promise<void> {\n\ttry {\n\t\tawait worker.terminate();\n\t}\n\tcatch {\n\t\t// Ignore termination errors.\n\t}\n}\n\nfunction sanitizeCodexRunOptions(options: CodexRunOptions): CodexRunOptions {\n\tif (!options) {\n\t\treturn {};\n\t}\n\treturn {\n\t\ttimeoutMs: options.timeoutMs,\n\t\tthreadOptions: options.threadOptions,\n\t\tthreadKey: options.threadKey,\n\t\treuseThread: options.reuseThread\n\t};\n}\n\nasync function resolveCodexWorkerPath(): Promise<string | null> {\n\tconst jsPath = path.join(__dirname, '../workers/codex-runner.worker.js');\n\tif (await pathExists(jsPath)) {\n\t\treturn jsPath;\n\t}\n\tconst tsPath = path.join(__dirname, '../workers/codex-runner.worker.ts');\n\tif (await pathExists(tsPath)) {\n\t\treturn tsPath;\n\t}\n\treturn null;\n}\n\nasync function pathExists(target: string): Promise<boolean> {\n\ttry {\n\t\tconst stat = await fs.stat(target);\n\t\treturn stat.isFile();\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function resolveAssistantWorkspaceRoot(): Promise<string> {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_WORKSPACE_ROOT']\n\t\t|| process.env.AI_ASSISTANT_WORKSPACE_ROOT\n\t\t|| config['CODEX_WORKSPACE_ROOT']\n\t\t|| process.env.CODEX_WORKSPACE_ROOT\n\t);\n\tconst candidate = configured || ResolveIOServer.getClientDir() || process.cwd();\n\tlet stat = null;\n\ttry {\n\t\tstat = await fs.stat(candidate);\n\t}\n\tcatch {\n\t\tstat = null;\n\t}\n\tif (!stat || !stat.isDirectory()) {\n\t\tthrow new Error('AI assistant workspace root not found.');\n\t}\n\treturn candidate;\n}\n\nfunction isAssistantDataQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tconst patterns = [\n\t\t/\\bshow\\b/,\n\t\t/\\blist\\b/,\n\t\t/\\bhow many\\b/,\n\t\t/\\bcount\\b/,\n\t\t/\\btotal\\b/,\n\t\t/\\bnumber of\\b/,\n\t\t/\\blast\\b/,\n\t\t/\\brecent\\b/,\n\t\t/\\bthis week\\b/,\n\t\t/\\blast month\\b/,\n\t\t/\\boverdue\\b/,\n\t\t/\\bopen\\b/,\n\t\t/\\bclosed\\b/,\n\t\t/\\bcompleted\\b/,\n\t\t/\\bmissing\\b/,\n\t\t/\\bgroup(ed)? by\\b/,\n\t\t/\\bbreakdown\\b/,\n\t\t/\\bper day\\b/,\n\t\t/\\bper week\\b/,\n\t\t/\\bper month\\b/\n\t];\n\treturn patterns.some(pattern => pattern.test(text));\n}\n\nfunction buildAssistantCodexDirectivePrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText?: string\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst instruction = '\\n\\nInstruction:\\nReturn ONLY a single MONGO_READ or MONGO_AGG directive line. Do not include any other text.';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${instruction}`.trim();\n}\n\nfunction buildAssistantCodexPrompt(message: string, attachmentText: string, historyText: string, contextText?: string): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}`.trim();\n}\n\nfunction buildAssistantContext(\n\tinput: AiCodexRunInput,\n\tuserContext?: {\n\t\tisSuperAdmin?: boolean;\n\t\thasInvoiceAccess?: boolean;\n\t\tcustomerId?: string;\n\t\tcollectionHints?: string[];\n\t\ttermHints?: string[];\n\t}\n): string {\n\tconst lines: string[] = [];\n\tconst idApp = normalizeOptionalString(input?.id_app);\n\tif (idApp) {\n\t\tlines.push(`Current app id: ${idApp}`);\n\t}\n\tif (typeof userContext?.isSuperAdmin === 'boolean') {\n\t\tlines.push(`User is super admin: ${userContext.isSuperAdmin ? 'yes' : 'no'}`);\n\t}\n\tif (typeof userContext?.hasInvoiceAccess === 'boolean') {\n\t\tlines.push(`User has invoice access: ${userContext.hasInvoiceAccess ? 'yes' : 'no'}`);\n\t}\n\tconst customerId = normalizeOptionalString(userContext?.customerId);\n\tif (customerId) {\n\t\tlines.push('Customer portal scope: yes');\n\t\tlines.push(`Customer id: ${customerId}`);\n\t}\n\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\tif (contextMode) {\n\t\tlines.push(`Context scope: ${contextMode === 'current' ? 'current page' : contextMode}`);\n\t}\n\tif (contextRoute) {\n\t\tlines.push(`Current page route: ${contextRoute}`);\n\t}\n\tconst collectionHints = Array.isArray(userContext?.collectionHints)\n\t\t? userContext?.collectionHints.filter(Boolean)\n\t\t: [];\n\tif (collectionHints.length) {\n\t\tlines.push(`Collection hints: ${collectionHints.join(', ')}`);\n\t}\n\tconst termHints = Array.isArray(userContext?.termHints)\n\t\t? userContext?.termHints.filter(Boolean)\n\t\t: [];\n\tif (termHints.length) {\n\t\tlines.push(`Term hints: ${termHints.join('; ')}`);\n\t}\n\tconst mongoDb = normalizeOptionalString(input?.mongo?.database);\n\tconst mongoDbs = Array.isArray(input?.mongo?.databases)\n\t\t? input.mongo.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tconst mongoAccess = normalizeOptionalString(input?.mongo?.access)\n\t\t|| (input?.mongo?.readonly === true ? 'read' : '');\n\tif (mongoDb) {\n\t\tlines.push(`Mongo database: ${mongoDb}`);\n\t}\n\tif (mongoDbs.length) {\n\t\tlines.push(`Mongo databases allowed: ${mongoDbs.join(', ')}`);\n\t}\n\tif (mongoAccess) {\n\t\tlines.push(`Mongo access: ${mongoAccess}`);\n\t}\n\treturn lines.join('\\n');\n}\n\ntype ClientRouteIndex = {\n\tset: Set<string>;\n\tmap: Map<string, string>;\n\tsize: number;\n};\n\nlet cachedClientRouteIndex: ClientRouteIndex | null = null;\n\nfunction normalizeRouteKey(value: string): string {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;\n\treturn withSlash.replace(/\\/+$/, '');\n}\n\nfunction normalizeRouteMatchKey(value: string): string {\n\treturn normalizeRouteKey(value).toLowerCase();\n}\n\nfunction buildClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tconst set = new Set<string>();\n\tconst map = new Map<string, string>();\n\tfor (const route of routes) {\n\t\tconst normalized = normalizeRouteKey(route);\n\t\tif (!normalized) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchKey = normalized.toLowerCase();\n\t\tset.add(matchKey);\n\t\tif (!map.has(matchKey)) {\n\t\t\tmap.set(matchKey, normalized);\n\t\t}\n\t}\n\treturn { set, map, size: routes.length };\n}\n\nfunction getClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tif (cachedClientRouteIndex && cachedClientRouteIndex.size === routes.length) {\n\t\treturn cachedClientRouteIndex;\n\t}\n\tcachedClientRouteIndex = buildClientRouteIndex();\n\treturn cachedClientRouteIndex;\n}\n\nfunction splitRouteSuffix(value: string): { base: string; suffix: string } {\n\tconst matchIndex = value.search(/[?#]/);\n\tif (matchIndex === -1) {\n\t\treturn { base: value, suffix: '' };\n\t}\n\treturn { base: value.slice(0, matchIndex), suffix: value.slice(matchIndex) };\n}\n\nfunction isClientRoute(value: string, index: ClientRouteIndex): boolean {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (index.set.has(normalized)) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\twhile (parts.length > 1) {\n\t\tparts.pop();\n\t\tconst prefix = `/${parts.join('/')}`;\n\t\tif (index.set.has(prefix)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getCanonicalRoute(value: string, index: ClientRouteIndex): string | null {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\treturn index.map.get(normalized) || null;\n}\n\nfunction swapTwoSegmentRoute(value: string): string | null {\n\tconst normalized = normalizeRouteKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\tif (parts.length !== 2) {\n\t\treturn null;\n\t}\n\treturn `/${parts[1]}/${parts[0]}`;\n}\n\nfunction normalizeAssistantRoutes(value: string): string {\n\tconst index = getClientRouteIndex();\n\tif (!index.set.size) {\n\t\treturn value;\n\t}\n\tconst routePattern = /\\/[a-z0-9][a-z0-9/_-]*(?:\\?[a-z0-9=&%._-]+)?(?:#[a-z0-9._-]+)?/gi;\n\treturn value.replace(routePattern, (match) => {\n\t\tconst { base, suffix } = splitRouteSuffix(match);\n\t\tif (isClientRoute(base, index)) {\n\t\t\tconst canonical = getCanonicalRoute(base, index);\n\t\t\treturn canonical ? `${canonical}${suffix}` : match;\n\t\t}\n\t\tconst swapped = swapTwoSegmentRoute(base);\n\t\tif (!swapped || !isClientRoute(swapped, index)) {\n\t\t\treturn match;\n\t\t}\n\t\tconst canonical = getCanonicalRoute(swapped, index) || swapped;\n\t\treturn `${canonical}${suffix}`;\n\t});\n}\n\nfunction sanitizeAssistantResponse(value: string): string {\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn 'I could not generate a response. Please try again.';\n\t}\n\tconst withoutBlocks = raw.replace(/```[\\s\\S]*?```/g, '').replace(/`([^`]+)`/g, '$1').trim();\n\tconst stripEstimated = (line: string) => line.replace(/\\bEstimated (human )?hours:\\s*.*$/i, '').trimEnd();\n\tconst isTentativeQueryLine = (line: string) => {\n\t\tconst normalized = line.trim().replace(/^[-*•]+\\s*/, '');\n\t\tif (/^(pulling|running|fetching|querying|retrieving|gathering)\\b/i.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /^i\\s+(can|will|['’]ll|am going to|['’]m going to)\\s+(pull|run|query|get|fetch|look up|retrieve|grab)\\b/i.test(normalized);\n\t};\n\tconst isInternalPlanLine = (line: string) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed || trimmed.length > 120) {\n\t\t\treturn false;\n\t\t}\n\t\tconst normalized = trimmed.toLowerCase();\n\t\tconst hasPhrase = /schema[-\\s]?probe|query rewrite|id[-\\s]?lookup|collection override|probe read|tiny probe|fallback plan/i.test(normalized);\n\t\tif (!hasPhrase) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isBulletish = /^[-*•]+\\s+/.test(trimmed);\n\t\tconst isPlanish = /^(plan|planning|approach|strategy|steps?|todo|checklist)\\b/i.test(trimmed);\n\t\treturn isBulletish || isPlanish;\n\t};\n\tconst cleanedLines: string[] = [];\n\twithoutBlocks.split('\\n').forEach((line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) {\n\t\t\tcleanedLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tif (isTentativeQueryLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (isInternalPlanLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^work ticket summary:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^estimated (human )?hours:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^customer-facing summary:/i.test(trimmed)) {\n\t\t\tconst stripped = line.replace(/^(\\s*)customer-facing summary:\\s*/i, '$1');\n\t\t\tconst cleaned = stripEstimated(stripped);\n\t\t\tif (cleaned.trim()) {\n\t\t\t\tcleanedLines.push(cleaned);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcleanedLines.push(stripEstimated(line));\n\t});\n\tconst cleaned = cleanedLines.join('\\n').trim();\n\tif (!cleaned) {\n\t\treturn 'I can’t share code, but I can point you to files or explain behavior at a high level.';\n\t}\n\tconst normalizedCurrency = cleaned.replace(/\\bUSD\\s*([0-9][0-9,]*(?:\\.[0-9]+)?)/g, (_match, amount) => {\n\t\treturn `$${amount}`;\n\t});\n\treturn normalizeAssistantRoutes(normalizedCurrency);\n}\n\nfunction evaluateAssistantGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst patterns: Array<{ pattern: RegExp; reason: string; response: string }> = [\n\t\t{\n\t\t\tpattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|snippet|file|function|class|script|sql)\\b/i,\n\t\t\treason: 'Code sharing is restricted.',\n\t\t\tresponse: 'I can’t share code or file contents. All code is proprietary. I can explain behavior and point you to screens or routes.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(write|generate|create|implement|fix)\\b.*\\b(code|script|function|class|endpoint|sql)\\b/i,\n\t\t\treason: 'Code generation is restricted.',\n\t\t\tresponse: 'I can’t generate code. All code is proprietary. I can explain how the feature works and where to look in the product.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i,\n\t\t\treason: 'Credentials and secrets are restricted.',\n\t\t\tresponse: 'I can’t help with credentials or secrets. If you need access, please contact support.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(delete|drop|truncate)\\s+(database|db|schema)\\b/i,\n\t\t\treason: 'Database operations are restricted.',\n\t\t\tresponse: 'I can’t help with database operations. I can explain system behavior or file locations.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(shell|terminal|ssh|sudo|rm\\\\s+-rf|chmod|chown)\\b/i,\n\t\t\treason: 'System operations are restricted.',\n\t\t\tresponse: 'I can’t help with system operations. I can explain workflows and where to find related code.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos|hack)\\b/i,\n\t\t\treason: 'Security abuse is restricted.',\n\t\t\tresponse: 'I can’t assist with that request.'\n\t\t}\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: entry.response\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveOpenAISettings(config: any) {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst apiKey = (serverConfig['OPENAI_API_KEY'] || process.env.OPENAI_API_KEY || '').trim();\n\tif (!apiKey) {\n\t\tthrow new Error('OpenAI API key missing. Add OPENAI_API_KEY to server config.');\n\t}\n\treturn {\n\t\tapiKey,\n\t\tbaseUrl: (serverConfig['OPENAI_BASE_URL'] || process.env.OPENAI_BASE_URL || '').trim() || undefined,\n\t\tmodel: normalizeOptionalString(config?.model) || (serverConfig['OPENAI_MODEL'] || process.env.OPENAI_MODEL || 'gpt-5.1').trim(),\n\t\ttemperature: normalizeOptionalNumber(config?.temperature),\n\t\tmaxTokens: normalizeOptionalNumber(config?.max_tokens),\n\t\tmaxRetries: normalizeOptionalNumber(serverConfig['OPENAI_MAX_RETRIES'] || process.env.OPENAI_MAX_RETRIES),\n\t\tretryDelayMs: normalizeOptionalNumber(serverConfig['OPENAI_RETRY_DELAY_MS'] || process.env.OPENAI_RETRY_DELAY_MS)\n\t};\n}\n\nfunction buildAiFormSystemPrompt(): string {\n\treturn AI_FORM_PATCH_SYSTEM_PROMPT;\n}\n\nfunction buildAiFormUserPrompt(\n\tmessage: string,\n\tfields: Array<AiFormField>,\n\tpatchFormat?: string,\n\troute?: string\n): string {\n\tconst lines: string[] = [];\n\tlines.push(`User request: ${message}`);\n\tconst normalizedRoute = normalizeOptionalString(route);\n\tif (normalizedRoute) {\n\t\tlines.push(`Current route: ${normalizedRoute}`);\n\t}\n\tif (patchFormat) {\n\t\tlines.push('Patch format:');\n\t\tlines.push(patchFormat);\n\t}\n\tlines.push('Allowed fields:');\n\tfields.forEach((field) => {\n\t\tconst name = field.name || '';\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\t\tconst parts = [name];\n\t\tif (field.type) {\n\t\t\tparts.push(`type=${field.type}`);\n\t\t}\n\t\tif (field.label) {\n\t\t\tparts.push(`label=\"${field.label}\"`);\n\t\t}\n\t\tif (Array.isArray(field.enums) && field.enums.length) {\n\t\t\tparts.push(`enums=${field.enums.join('|')}`);\n\t\t}\n\t\tlines.push(`- ${parts.join(' ')}`);\n\t});\n\tlines.push('Return JSON only.');\n\treturn lines.join('\\n');\n}\n\nfunction normalizeAiFormFields(fields: any): Array<AiFormField> {\n\tif (!Array.isArray(fields)) {\n\t\treturn [];\n\t}\n\treturn fields\n\t\t.map((field) => {\n\t\t\tif (!field || typeof field !== 'object') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst name = normalizeOptionalString(field.name) || normalizeOptionalString(field.path);\n\t\t\tif (!name) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst type = normalizeOptionalString(field.type);\n\t\t\tconst label = normalizeOptionalString(field.label);\n\t\t\tconst enums = Array.isArray(field.enums)\n\t\t\t\t? field.enums.map((value: any) => normalizeOptionalString(value)).filter(Boolean)\n\t\t\t\t: undefined;\n\t\t\tconst normalizedField: AiFormField = { name };\n\t\t\tif (type) {\n\t\t\t\tnormalizedField.type = type;\n\t\t\t}\n\t\t\tif (label) {\n\t\t\t\tnormalizedField.label = label;\n\t\t\t}\n\t\t\tif (enums && enums.length) {\n\t\t\t\tnormalizedField.enums = enums;\n\t\t\t}\n\t\t\treturn normalizedField;\n\t\t})\n\t\t.filter((field): field is AiFormField => !!field);\n}\n\nfunction tokenizeArithmeticExpression(expression: string): string[] | null {\n\tconst tokens: string[] = [];\n\tlet i = 0;\n\twhile (i < expression.length) {\n\t\tconst char = expression[i];\n\t\tif (/\\s/.test(char)) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/[()+\\-*/]/.test(char)) {\n\t\t\ttokens.push(char);\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\d|\\./.test(char)) {\n\t\t\tlet j = i + 1;\n\t\t\twhile (j < expression.length && /[\\d.]/.test(expression[j])) {\n\t\t\t\tj += 1;\n\t\t\t}\n\t\t\ttokens.push(expression.slice(i, j));\n\t\t\ti = j;\n\t\t\tcontinue;\n\t\t}\n\t\treturn null;\n\t}\n\treturn tokens;\n}\n\nfunction evaluateArithmeticExpression(expression: string): number | null {\n\tconst tokens = tokenizeArithmeticExpression(expression);\n\tif (!tokens || !tokens.length) {\n\t\treturn null;\n\t}\n\tconst output: string[] = [];\n\tconst ops: string[] = [];\n\tconst precedence: Record<string, number> = { '+': 1, '-': 1, '*': 2, '/': 2 };\n\tlet prevToken = '';\n\tconst pushOperator = (op: string) => {\n\t\twhile (ops.length) {\n\t\t\tconst top = ops[ops.length - 1];\n\t\t\tif (top === '(') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ((precedence[top] || 0) >= (precedence[op] || 0)) {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tops.push(op);\n\t};\n\tfor (const token of tokens) {\n\t\tif (token === '(') {\n\t\t\tops.push(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === ')') {\n\t\t\twhile (ops.length && ops[ops.length - 1] !== '(') {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t}\n\t\t\tif (!ops.length) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tops.pop();\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (precedence[token]) {\n\t\t\tif (!prevToken || prevToken === '(' || precedence[prevToken]) {\n\t\t\t\toutput.push('0');\n\t\t\t}\n\t\t\tpushOperator(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!/^\\d+(\\.\\d+)?$/.test(token)) {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(token);\n\t\tprevToken = token;\n\t}\n\twhile (ops.length) {\n\t\tconst op = ops.pop() as string;\n\t\tif (op === '(' || op === ')') {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(op);\n\t}\n\tconst stack: number[] = [];\n\tfor (const token of output) {\n\t\tif (precedence[token]) {\n\t\t\tif (stack.length < 2) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst b = stack.pop() as number;\n\t\t\tconst a = stack.pop() as number;\n\t\t\tswitch (token) {\n\t\t\t\tcase '+':\n\t\t\t\t\tstack.push(a + b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\tstack.push(a - b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '*':\n\t\t\t\t\tstack.push(a * b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/':\n\t\t\t\t\tstack.push(a / b);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tstack.push(Number(token));\n\t}\n\tif (stack.length !== 1 || Number.isNaN(stack[0])) {\n\t\treturn null;\n\t}\n\treturn stack[0];\n}\n\nfunction resolveDateExpression(expression: string): string | null {\n\tconst trimmed = String(expression || '').trim();\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst quotedMatch = trimmed.match(/^['\"](.+?)['\"]$/);\n\tif (quotedMatch) {\n\t\tconst date = new Date(quotedMatch[1]);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\tif (trimmed === 'Date.now()') {\n\t\treturn new Date(Date.now()).toISOString();\n\t}\n\tconst nowMatch = trimmed.match(/^Date\\.now\\(\\)\\s*([+-])\\s*(.+)$/);\n\tif (nowMatch) {\n\t\tconst delta = evaluateArithmeticExpression(nowMatch[2]);\n\t\tif (delta === null) {\n\t\t\treturn null;\n\t\t}\n\t\tconst base = Date.now();\n\t\tconst computed = nowMatch[1] === '-' ? base - delta : base + delta;\n\t\treturn new Date(computed).toISOString();\n\t}\n\tconst numeric = evaluateArithmeticExpression(trimmed);\n\tif (numeric !== null) {\n\t\tconst date = new Date(numeric);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\treturn null;\n}\n\nfunction replaceNewDateExpressions(input: string): string {\n\tlet output = '';\n\tlet index = 0;\n\twhile (index < input.length) {\n\t\tconst start = input.indexOf('new Date(', index);\n\t\tif (start === -1) {\n\t\t\toutput += input.slice(index);\n\t\t\tbreak;\n\t\t}\n\t\toutput += input.slice(index, start);\n\t\tlet cursor = start + 'new Date('.length;\n\t\tlet depth = 1;\n\t\twhile (cursor < input.length && depth > 0) {\n\t\t\tconst char = input[cursor];\n\t\t\tif (char === '(') {\n\t\t\t\tdepth += 1;\n\t\t\t}\n\t\t\telse if (char === ')') {\n\t\t\t\tdepth -= 1;\n\t\t\t}\n\t\t\tcursor += 1;\n\t\t}\n\t\tif (depth !== 0) {\n\t\t\toutput += input.slice(start);\n\t\t\tbreak;\n\t\t}\n\t\tconst inner = input.slice(start + 'new Date('.length, cursor - 1);\n\t\tconst iso = resolveDateExpression(inner);\n\t\tif (iso) {\n\t\t\toutput += `{\\\"$date\\\":\\\"${iso}\\\"}`;\n\t\t}\n\t\telse {\n\t\t\toutput += input.slice(start, cursor);\n\t\t}\n\t\tindex = cursor;\n\t}\n\treturn output;\n}\n\nfunction replaceIsoDateExpressions(input: string): string {\n\treturn input.replace(/ISODate\\(([^)]+)\\)/g, (_match, inner) => {\n\t\tconst iso = resolveDateExpression(inner);\n\t\treturn iso ? `{\\\"$date\\\":\\\"${iso}\\\"}` : _match;\n\t});\n}\n\nfunction preprocessJsonLike(content: string): string {\n\tlet normalized = content;\n\tnormalized = replaceNewDateExpressions(normalized);\n\tnormalized = replaceIsoDateExpressions(normalized);\n\treturn normalized;\n}\n\nfunction convertExtendedDates(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => convertExtendedDates(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst keys = Object.keys(value);\n\tif (keys.length === 1 && keys[0] === '$date') {\n\t\tconst raw = (value as any).$date;\n\t\tconst date = new Date(raw);\n\t\treturn Number.isNaN(date.getTime()) ? value : date;\n\t}\n\tconst output: Record<string, any> = {};\n\tkeys.forEach((key) => {\n\t\toutput[key] = convertExtendedDates(value[key]);\n\t});\n\treturn output;\n}\n\nfunction parseJsonObject(content: string): any | null {\n\tif (!content || typeof content !== 'string') {\n\t\treturn null;\n\t}\n\tconst normalized = preprocessJsonLike(content);\n\ttry {\n\t\treturn convertExtendedDates(JSON.parse(normalized));\n\t}\n\tcatch {\n\t\tconst match = normalized.match(/\\{[\\s\\S]*\\}/);\n\t\tif (!match) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn convertExtendedDates(JSON.parse(match[0]));\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nfunction resolveUploadLimits(): { maxFileBytes: number; maxFileMb: number; maxTotalBytes: number; maxTotalMb: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxFileMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_FILE_MB'] || process.env.AI_TERMINAL_MAX_FILE_MB) || DEFAULT_MAX_FILE_MB;\n\tconst maxTotalMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_MB'] || process.env.AI_TERMINAL_MAX_TOTAL_MB) || DEFAULT_MAX_TOTAL_MB;\n\treturn {\n\t\tmaxFileBytes: round(maxFileMb * 1024 * 1024),\n\t\tmaxFileMb,\n\t\tmaxTotalBytes: round(maxTotalMb * 1024 * 1024),\n\t\tmaxTotalMb\n\t};\n}\n\nfunction resolveUploadRoot(): string {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(config['AI_TERMINAL_UPLOAD_ROOT'] || process.env.AI_TERMINAL_UPLOAD_ROOT);\n\tif (configured) {\n\t\treturn configured;\n\t}\n\treturn path.join(os.tmpdir(), 'resolveio-ai-terminal-uploads');\n}\n\nasync function handleCodexUpload(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\tconst limits = resolveUploadLimits();\n\tif (size > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tconst safeName = sanitizeFilename(file_name);\n\tconst uploadRoot = resolveUploadRoot();\n\tconst targetDir = path.join(uploadRoot, id_conversation);\n\tawait fs.mkdir(targetDir, { recursive: true });\n\tconst targetPath = path.join(targetDir, safeName);\n\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\tconst data = new Uint8Array(dataBuffer);\n\tif (data.byteLength > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tawait fs.writeFile(targetPath, data);\n\treturn {\n\t\tid_file: objectIdHexString(),\n\t\tname: safeName,\n\t\tsize: data.byteLength,\n\t\ttype: normalizeOptionalString(content_type),\n\t\tlocal_path: targetPath\n\t};\n}\n\nasync function readAttachmentContents(attachments: AttachmentInput[]): Promise<{ promptText: string; attachments: AttachmentInput[] }> {\n\tif (!attachments || !attachments.length) {\n\t\treturn { promptText: '', attachments: [] };\n\t}\n\tconst limits = resolveAttachmentLimits();\n\tlet totalBytes = 0;\n\tlet totalChars = 0;\n\tconst chunks: string[] = [];\n\tconst cleaned: AttachmentInput[] = [];\n\n\tfor (const attachment of attachments) {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, resolveUploadRoot());\n\t\tif (!safe) {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst stat = await fs.stat(localPath);\n\t\t\tif (!stat.isFile()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttotalBytes += stat.size;\n\t\t\tif (totalBytes > limits.maxTotalBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst ext = path.extname(localPath).toLowerCase();\n\t\t\tconst name = normalizeOptionalString(attachment.name) || path.basename(localPath);\n\t\t\tconst type = normalizeOptionalString(attachment.type);\n\t\t\tconst readable = isReadableAttachment(type, ext);\n\t\t\tlet content = '';\n\t\t\tif (readable) {\n\t\t\t\tcontent = await fs.readFile(localPath, 'utf8');\n\t\t\t\tif (content.length > limits.maxAttachmentChars) {\n\t\t\t\t\tcontent = content.slice(0, limits.maxAttachmentChars) + '\\n[...truncated]';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontent = `[${name} attached; binary content omitted]`;\n\t\t\t}\n\t\t\ttotalChars += content.length;\n\t\t\tif (totalChars > limits.maxTotalAttachmentChars) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tchunks.push(`File: ${name}\\n${content}`);\n\t\t\tcleaned.push({\n\t\t\t\tid: attachment.id,\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\tsize: stat.size,\n\t\t\t\tlocal_path: localPath\n\t\t\t});\n\t\t}\n\t\tcatch {}\n\t}\n\n\treturn {\n\t\tpromptText: chunks.length ? `\\n\\nAttachments:\\n${chunks.join('\\n\\n')}` : '',\n\t\tattachments: cleaned\n\t};\n}\n\nfunction resolveAttachmentLimits(): { maxAttachmentChars: number; maxTotalAttachmentChars: number; maxTotalBytes: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_ATTACHMENT_CHARS;\n\tconst maxTotalAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS;\n\tconst limits = resolveUploadLimits();\n\treturn {\n\t\tmaxAttachmentChars,\n\t\tmaxTotalAttachmentChars,\n\t\tmaxTotalBytes: limits.maxTotalBytes\n\t};\n}\n\nfunction buildUserPrompt(template: string | undefined, inputText: string, attachmentText: string): string {\n\tconst data = {\n\t\tinput: inputText || '',\n\t\ttoday: new Date().toISOString().slice(0, 10)\n\t};\n\tif (template) {\n\t\treturn applyTemplate(template, data).trim() + attachmentText;\n\t}\n\treturn `${inputText || ''}${attachmentText}`.trim();\n}\n\nfunction applyTemplate(template: string, data: Record<string, string>): string {\n\tlet output = template;\n\tObject.keys(data).forEach(key => {\n\t\tconst value = data[key] || '';\n\t\tconst pattern = new RegExp(`{{\\\\s*${key}\\\\s*}}`, 'gi');\n\t\toutput = output.replace(pattern, value);\n\t});\n\treturn output;\n}\n\nfunction sanitizeConfig(source: any): any {\n\treturn {\n\t\tmode: normalizeOptionalString(source?.mode),\n\t\tmodel: normalizeOptionalString(source?.model),\n\t\tsystem_prompt: normalizeOptionalString(source?.system_prompt),\n\t\tuser_prompt_template: normalizeOptionalString(source?.user_prompt_template),\n\t\tresponse_format: normalizeOptionalString(source?.response_format),\n\t\ttemperature: normalizeOptionalNumber(source?.temperature),\n\t\tmax_tokens: normalizeOptionalNumber(source?.max_tokens)\n\t};\n}\n\nfunction resolveClientIdFromConfig(explicit?: string): string {\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\treturn normalizeOptionalString(explicit)\n\t\t|| normalizeOptionalString(config['CLIENT_ID'] || config['client_id'] || process.env.CLIENT_ID || '');\n}\n\nasync function ensureConversation(input: AiTerminalRunInput, mode: 'openai' | 'codex'): Promise<AiTerminalConversationModel> {\n\tconst idConversation = normalizeOptionalString(input.id_conversation);\n\tif (idConversation) {\n\t\tconst existing = await AiTerminalConversations.findById(idConversation);\n\t\tif (existing) {\n\t\t\treturn existing as AiTerminalConversationModel;\n\t\t}\n\t}\n\tconst now = new Date();\n\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\tid_client: resolveClientIdFromConfig(input.id_client),\n\t\tid_app: normalizeOptionalString(input.id_app),\n\t\ttitle: 'New Conversation',\n\t\tmode,\n\t\tbranch_enabled: mode === 'codex',\n\t\tstatus: normalizeConversationStatus('active'),\n\t\tprofile_id: normalizeOptionalString(input.profile_id),\n\t\tmetadata: {},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\treturn result as AiTerminalConversationModel;\n}\n\nasync function touchConversation(idConversation: string, timestamp: Date, lastMessageId?: string): Promise<void> {\n\tconst update: any = {\n\t\tupdatedAt: timestamp,\n\t\tlast_message_at: timestamp\n\t};\n\tif (lastMessageId) {\n\t\tupdate.last_message_id = lastMessageId;\n\t}\n\tawait AiTerminalConversations.updateOne({ _id: idConversation }, { $set: update });\n}\n\nfunction normalizeOptionalString(value: any): string {\n\tconst raw = typeof value === 'string' ? value.trim() : '';\n\treturn raw || '';\n}\n\nfunction normalizeConversationMode(value: any): AiTerminalMode {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'codex') {\n\t\treturn 'codex';\n\t}\n\treturn 'openai';\n}\n\nfunction normalizeConversationStatus(value: any): AiTerminalConversationStatus {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'archived') {\n\t\treturn 'archived';\n\t}\n\treturn 'active';\n}\n\nfunction normalizeOptionalNumber(value: any): number | undefined {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction normalizeOptionalBoolean(value: any): boolean | undefined {\n\tif (typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {\n\t\treturn true;\n\t}\n\tif (['false', '0', 'no', 'n', 'off'].includes(normalized)) {\n\t\treturn false;\n\t}\n\treturn undefined;\n}\n\nfunction normalizeHistoryLimit(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed)) {\n\t\treturn 12;\n\t}\n\treturn Math.min(Math.max(round(parsed), 0), 30);\n}\n\nfunction resolveClientId(conversation: AiTerminalConversationModel, inputClientId?: string): string {\n\treturn normalizeOptionalString(inputClientId)\n\t\t|| normalizeOptionalString(conversation?.id_client)\n\t\t|| resolveClientIdFromConfig();\n}\n\nfunction estimateUsage(messages: Array<{ role: string; content: string }>, responseText: string, model?: string) {\n\tconst inputTokens = countChatTokens(messages, model);\n\tconst outputTokens = countTokens(responseText || '', model);\n\treturn {\n\t\tinputTokens,\n\t\toutputTokens,\n\t\ttotalTokens: inputTokens + outputTokens\n\t};\n}\n\nfunction evaluateGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst patterns: Array<{ pattern: RegExp; reason: string }> = [\n\t\t{ pattern: /\\b(source\\s*code|full\\s*code|entire\\s*code|repo\\s*dump|repository|git\\s*clone)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|file|contents|snippet)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i, reason: 'Credentials and secrets are restricted.' },\n\t\t{ pattern: /\\b(delete|drop)\\s+(database|db|schema)\\b/i, reason: 'Database operations are restricted.' },\n\t\t{ pattern: /\\b(shell|terminal|ssh|sudo|rm\\s+-rf|chmod|chown)\\b/i, reason: 'Server operations are restricted.' },\n\t\t{ pattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos)\\b/i, reason: 'Security abuse is restricted.' }\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: 'I can’t help with that request because it could expose proprietary code or protected information. If you need a change, describe the outcome and I can help within approved workflows.'\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nasync function resolveIsSuperAdmin(id_user?: string): Promise<boolean> {\n\tif (!id_user) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst user = await Users.findById(id_user);\n\t\treturn !!user?.roles?.super_admin;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction sanitizeFilename(value: string): string {\n\tconst trimmed = (value || '').trim();\n\tconst base = path.basename(trimmed);\n\treturn base.replace(/[^\\w.\\-]/g, '_') || `upload_${Date.now()}`;\n}\n\nfunction isReadableAttachment(type: string, ext: string): boolean {\n\tconst normalizedType = (type || '').toLowerCase();\n\tif (normalizedType.startsWith('text/')) {\n\t\treturn true;\n\t}\n\tif (['application/json', 'application/xml', 'application/csv'].includes(normalizedType)) {\n\t\treturn true;\n\t}\n\treturn ['.txt', '.md', '.json', '.csv', '.xml', '.log', '.yml', '.yaml', '.ts', '.tsx', '.js', '.jsx', '.css', '.scss', '.html', '.htm', '.sql'].includes(ext);\n}\n\nfunction ensurePathUnderRoot(targetPath: string, root: string): boolean {\n\tconst resolvedRoot = path.resolve(root);\n\tconst resolvedTarget = path.resolve(targetPath);\n\treturn resolvedTarget.startsWith(resolvedRoot);\n}\n\nasync function cleanupAttachments(attachments: AttachmentInput[]): Promise<void> {\n\tif (!attachments || !attachments.length) {\n\t\treturn;\n\t}\n\tconst uploadRoot = resolveUploadRoot();\n\tconst removals = attachments.map(async (attachment) => {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, uploadRoot);\n\t\tif (!safe) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait fs.rm(localPath, { force: true });\n\t\t}\n\t\tcatch {}\n\t});\n\tawait Promise.all(removals);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/ai-terminal.ts"],"names":[],"mappings":"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","file":"ai-terminal.js","sourcesContent":["import { promises as fs } from 'fs';\nimport { on, once } from 'events';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { setTimeout as sleepTimeout } from 'timers/promises';\nimport { Worker } from 'worker_threads';\nimport { ObjectId } from 'mongodb';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { Users } from '../collections/user.collection';\nimport { AiTerminalConversations } from '../collections/ai-terminal-conversation.collection';\nimport { AiTerminalMessages } from '../collections/ai-terminal-message.collection';\nimport { AiTerminalConversationModel, AiTerminalConversationStatus, AiTerminalMode } from '../models/ai-terminal-conversation.model';\nimport { AiTerminalMessageModel } from '../models/ai-terminal-message.model';\nimport { deepCopy, objectIdHexString, round } from '../util/common';\nimport { countChatTokens, countTokens } from '../util/tokenizer';\nimport { OpenAIClient } from '../services/openai-client';\nimport { CodexClient, CodexConfig, CodexRunOptions } from '../services/codex-client';\nimport { recordOpenAIUsage } from '../managers/openai-usage-ledger.manager';\n\nconst DEFAULT_MAX_FILE_MB = 50;\nconst DEFAULT_MAX_TOTAL_MB = 100;\nconst DEFAULT_MAX_ATTACHMENT_CHARS = 12000;\nconst DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS = 40000;\nconst DEFAULT_CODEX_MODEL = 'gpt-5.1-codex-mini';\nconst DEFAULT_CODEX_TIMEOUT_MS = 180000;\nconst AI_ASSISTANT_MONGO_DEFAULT_LIMIT = 20;\nconst AI_ASSISTANT_MONGO_MAX_LIMIT = 200;\nconst AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT = 5000;\nconst AI_ASSISTANT_TOOL_MAX_STEPS = 1;\nconst AI_ASSISTANT_DISPLAY_MAX_COLUMNS = 12;\nconst AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS = 20;\nconst AI_ASSISTANT_DISPLAY_STRING_LIMIT = 160;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS = 4;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS = 60;\nconst AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_COLLECTIONS = 3;\nconst AI_ASSISTANT_PROGRESS_PLACEHOLDER = 'Planning...';\nconst AI_ASSISTANT_PROGRESS_TICK_MS = 5000;\nconst AI_ASSISTANT_READ_PREFERENCE = 'secondary' as const;\nconst AI_ASSISTANT_PROBE_LIMIT = 3;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP = 20;\nconst AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE = 20;\nconst AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS = 20;\nconst AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT = 4;\nconst AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS = 12;\nconst AI_ASSISTANT_PROGRESS_TICKS = [\n\t'Grabbing Data',\n\t'Drafting response'\n];\nconst AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS = [\n\t'name',\n\t'title',\n\t'status',\n\t'type',\n\t'stage',\n\t'state',\n\t'category',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt',\n\t'date_updated',\n\t'date_completed',\n\t'date_invoice',\n\t'date_invoiced',\n\t'id_customer',\n\t'id_client',\n\t'id_user',\n\t'id_invoice'\n];\nconst AI_ASSISTANT_DATE_FALLBACKS: Record<string, string> = {\n\tdate_created: 'createdAt',\n\tcreatedAt: 'date_created',\n\tdate_invoice: 'date_invoiced',\n\tdate_invoiced: 'date_invoice'\n};\nconst AI_ASSISTANT_DATE_EXPANSION_FIELDS = [\n\t'date',\n\t'date_start',\n\t'date_end',\n\t'date_original',\n\t'date_created',\n\t'createdAt',\n\t'updatedAt'\n];\n\n\nconst AI_ASSISTANT_BLOCKED_COLLECTIONS = new Set([\n\t'user-groups',\n\t'logged-in-users',\n\t'ai-terminal-messages',\n\t'ai-terminal-conversations',\n\t'openai-usage-ledger',\n\t'logs',\n\t'notifications',\n\t'email-history'\n]);\n\nconst AI_ASSISTANT_SENSITIVE_FIELDS = [\n\t'password',\n\t'salt',\n\t'hash',\n\t'secret',\n\t'token',\n\t'api_key',\n\t'email',\n\t'phonenumber',\n\t'phone',\n\t'ssn',\n\t'address',\n\t'services',\n\t'roles'\n];\n\nconst AI_ASSISTANT_CLIENT_SCOPE_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_FIELD_INDEX_CACHE = new Map<string, boolean>();\nconst AI_ASSISTANT_COLLECTION_CACHE = new Map<string, { names: string[]; updatedAt: number }>();\nconst AI_ASSISTANT_COLLECTION_CACHE_TTL_MS = 5 * 60 * 1000;\nconst AI_ASSISTANT_COLLECTION_STOPWORDS = new Set([\n\t'the',\n\t'a',\n\t'an',\n\t'of',\n\t'for',\n\t'by',\n\t'with',\n\t'and',\n\t'or',\n\t'to',\n\t'from',\n\t'in',\n\t'on',\n\t'at',\n\t'last',\n\t'recent',\n\t'today',\n\t'week',\n\t'month',\n\t'year',\n\t'this',\n\t'that',\n\t'these',\n\t'those',\n\t'show',\n\t'list',\n\t'get',\n\t'give',\n\t'how',\n\t'many',\n\t'count',\n\t'total',\n\t'breakdown',\n\t'group',\n\t'grouped',\n\t'per',\n\t'open',\n\t'closed',\n\t'completed',\n\t'missing',\n\t'overdue'\n]);\n\nconst AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS = new Set([\n\t'blend',\n\t'blends',\n\t'chemical',\n\t'chemicals',\n\t'invoice',\n\t'invoices',\n\t'work',\n\t'order',\n\t'orders',\n\t'delivery',\n\t'deliveries',\n\t'truck',\n\t'treating',\n\t'route',\n\t'routes',\n\t'well',\n\t'wells',\n\t'sample',\n\t'samples',\n\t'customer',\n\t'customers'\n]);\n\nconst AI_ASSISTANT_COLLECTION_GENERIC_TOKENS = new Set([\n\t'ticket',\n\t'tickets',\n\t'report',\n\t'reports',\n\t'summary',\n\t'summarize',\n\t'recent',\n\t'last',\n\t'new',\n\t'created',\n\t'date',\n\t'list',\n\t'show'\n]);\n\nconst AI_ASSISTANT_FIELD_TOKEN_SYNONYMS: Record<string, string[]> = {\n\tvolume: ['quantity', 'qty', 'amount', 'gallons', 'gallon', 'liters', 'liter', 'litre'],\n\tquantity: ['volume', 'qty', 'amount', 'gallons', 'gallon'],\n\tproduct: ['item', 'chemical', 'material', 'blend', 'name', 'title', 'label'],\n\tcustomer: ['client', 'account', 'company'],\n\twell: ['location', 'site', 'pad', 'api'],\n\tbatch: ['lot'],\n\tlot: ['batch'],\n\tdate: ['created', 'createdat', 'created_at', 'date_created', 'updated', 'updatedat', 'updated_at', 'date_updated'],\n\ttotal: ['sum', 'amount', 'total_amount', 'total_quantity']\n};\n\nconst AI_ASSISTANT_ID_LOOKUP_HINTS: Record<string, string[]> = {\n\tcustomer: ['customers', 'customer-versions'],\n\tchemical: ['chemicals', 'chemical-versions'],\n\twell: ['wells', 'well-groups', 'production-locations', 'locations'],\n\tlocation: ['locations', 'production-locations'],\n\tinvoice: ['invoices']\n};\n\nconst AI_ASSISTANT_TERM_SYNONYMS: Array<{ label: string; pattern: RegExp; expansions: string[] }> = [\n\t{\n\t\tlabel: 'truck treating jobs',\n\t\tpattern: /\\btruck\\s+treating\\s+jobs?\\b/i,\n\t\texpansions: ['truck treating deliveries', 'truck-treating-deliveries', 'truck treating route events']\n\t},\n\t{\n\t\tlabel: 'blend tickets',\n\t\tpattern: /\\bblend(?:ing)?\\s+tickets?\\b/i,\n\t\texpansions: ['chemical blends', 'chemical-blends', 'report-chemical-blends', 'blend batches']\n\t}\n];\n\nconst AI_ASSISTANT_SYSTEM_PROMPT = [\n\t'You are the ResolveIO in-app AI assistant running with read-only access to the codebase.',\n\t'Core rules:',\n\t'- Never share code or file contents. All code is proprietary.',\n\t'- Do not modify files, run destructive commands, or access databases directly.',\n\t'- Read-only Mongo access is allowed only via the MONGO_READ/MONGO_AGG directives (see below).',\n\t'- Do not access secrets, credentials, or user data.',\n\t'- If the user has a customer portal scope (other.id_customer), only discuss that customer\\'s data and what is visible in their customer portal. Never reference other customers or internal/admin-only data. If asked for anything outside the portal, say it isn\\'t available.',\n\t'- Do not assist with hacking, bypassing security, or abuse.',\n\t'Accuracy & tools:',\n\t'- Step 1 (always): determine the target collections/models/modules/workflows using context, routes, and collection hints. Assume the user is non-technical and will not provide internal names.',\n\t'- Never use *.versions collections for normal requests. Only use a .versions collection when explicitly investigating a bug by checking the last ~5 updates.',\n\t'- Planning stage: regex/keyword scan the codebase for collectionName/model definitions, methods, publications, and Angular routes/modules to map user wording to internal names.',\n\t'- If permissionView starts with /report/, prefer the report-* collection when both report and base collections exist.',\n\t'- Map user wording to internal collections/fields yourself. Do not ask for property names unless required to run a query.',\n\t'- Use term hints from context (synonym expansions) when mapping user language to collections.',\n\t'- Do not guess or invent collections/fields. If unsure, verify in the codebase or run a small Mongo read (limit 1-5) to learn the shape.',\n\t'- Prefer running a small Mongo read over asking multiple questions.',\n\t'- For any data request (counts, lists, breakdowns, recent/last items), you MUST run a MONGO_READ or MONGO_AGG before answering.',\n\t'- Ask at most one clarifying question only when required to run a query or resolve missing details.',\n\t'- If a field starts with id_ and refers to another collection, treat it as a foreign key and look up the related record when needed.',\n\t'- When resolving id_* fields, prefer lookup definitions from collection schemas/report-builder lookup tables to choose the target collection and name fields.',\n\t'- When the user provides a customer, well, or chemical name, use case-insensitive regex matching to find it. Assume the name exists and try to match it before asking questions.',\n\t'- Use the codebase context to choose correct collections/fields/workflows and use MONGO_READ/MONGO_AGG to answer with real data when needed.',\n\t'- Process (fast path): Queue -> Planning -> Grabbing Data -> Drafting response. Use regex/keyword matching to identify collections/models, draft a minimal query, run the tool, then format a table. This should be fast; avoid extra narration.',\n\t'- Assume a relevant collection exists; if verification reads return zero data, report no data found instead of interrogating the user.',\n\t'- Never claim \"no data exists\" unless you resolved a collection and executed a legitimate query (with fallback date fields when needed) that returned zero rows.',\n\t'- If a query returns zero rows, run a tiny probe read (limit 1-3) to validate fields and adjust filters/projection before concluding.',\n\t'- For name-based filters, run a quick existence check with only the date filter first; if records exist, adjust name matching (tokenized regex or ID lookup) instead of concluding no data.',\n\t'- For direct questions, answer first. Ask a single follow-up only if required to proceed.',\n\t'Data Presentation:',\n\t'- Output plain Markdown (NO triple backticks).',\n\t'- When you reference database results, summarize first, then include a Markdown table.',\n\t'- When presenting record lists or aggregates, produce a Markdown table (pipes).',\n\t'- Never show raw JSON dumps.',\n\t'- Do not invent placeholders like \"Not available\" or \"N/A\". If a value is missing in tool results, leave the cell blank or omit the column and note it briefly.',\n\t'- Do not include `_id` & `__v` & `id_<other collection _id property>` in tables by default.',\n\t'- If `_id` & `__v` & `id_<other collection _id property>` is needed, show it as `id` and shorten (e.g., first 6-8 chars) unless asked otherwise.',\n\t'- Rename `createdAt` to `Created At` and `updatedAt` to `Updated At` in tables.',\n\t'Response style:',\n\t'- Respond in English only. Do not include non-English text or characters unless required for JSON, links, or tool directives.',\n\t'- Keep responses concise: answer first, then 3-8 bullets, then a table when data is involved.',\n\t'- Prefer high-level explanations and point to routes instead of code. Only mention file paths if explicitly requested.',\n\t'- When asked where to do something, give the exact screen name and the in-app route as a standalone path starting with \"/\" so it can be clicked.',\n\t'- When asked \"why is this happening,\" respond with: cause, trigger, data source(s), and expected vs actual outcome.',\n\t'- For troubleshooting, ask clarifying questions only when needed to proceed; otherwise answer directly, then give a short decision tree (If X, do Y; If not, do Z).',\n\t'- Provide checklists for common tasks, highlighting required fields and common pitfalls.',\n\t'- If asked \"where is this set,\" give the screen/workflow name and navigation steps to reach it.',\n\t'- If asked \"what changed,\" summarize release notes if known; if not available, say so and suggest where to check or offer a support ticket.',\n\t'- After answering, optionally suggest 0-1 related next steps only when helpful. Do not ask for \"next steps\" every time.',\n\t'- If access is blocked, name the permission/role needed and how to request it.',\n\t'- Avoid vague labels like \"Operations app\"; use the specific screen/workflow name.',\n\t'- Do not mention other client projects or ask which client; stay within the current project context.',\n\t'- Do not add labels like \"Customer-facing summary\" or \"Work ticket summary\" and do not include estimated hours.',\n\t'- Use structured responses by default: short heading, then bullet points. For \"how do I\" questions, provide a step-by-step list (numbered) with explicit page/screen names and actions.',\n\t'- When giving steps, include navigation guidance like \"Go to <screen>\" and \"Click/Select/Enter <field>\" so the user can follow it exactly.',\n\t'- If context scope is provided (ex: current page), prioritize that screen in your answer.',\n\t'- If a request is out of scope, offer to create a support ticket with a short summary.',\n\t'- If the user explicitly asks to create/open/file a support ticket, end your response with a single line exactly in this format:',\n\t'- SUPPORT_TICKET_CREATE: <one-line summary>',\n\t'- Only include that line when the user clearly wants a ticket created. Do not claim a ticket is created unless you include that line.',\n\t'- Do not end responses with tentative phrasing like \"I could\" or \"I’m going to.\" Complete the request or state what is required to proceed.',\n\t'Mongo directives:',\n\t'- If you need database data to answer, end your response with a single line exactly in this format:',\n\t'- MONGO_READ: {\"collection\":\"<name>\",\"query\":{...},\"options\":{\"projection\":{...},\"sort\":{...},\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- If you need grouped/aggregated data (totals by user, rankings, trends), end your response with a single line exactly in this format:',\n\t'- MONGO_AGG: {\"collection\":\"<name>\",\"pipeline\":[...],\"options\":{\"allowDiskUse\":true,\"limit\":20},\"permissionView\":\"</route>\"}',\n\t'- For invoice data, set permissionView to an invoice route (ex: /invoice/list or /report/invoice).',\n\t'- Keep queries minimal, read-only, and avoid user/credential data unless the user is a super admin.',\n\t'- Assume you are not a super admin unless explicitly told otherwise.',\n\t'- Only request data when the user has permission for that module; invoice data requires invoice view access.',\n\t'- If the user lacks permission, answer without data and explain how to view it in the app or request access.',\n\t'- For simple counts or time-range totals, use MONGO_READ (includeTotal). For breakdowns, rankings, or sums grouped by a field, use MONGO_AGG.',\n\t'- For performance, keep pipelines minimal: avoid $push arrays or large fields unless the user explicitly asks for them.',\n\t'- For completion metrics (ex: \"completed per day\"), filter by completed status when applicable and use completion date fields; if completion dates are missing, fall back to createdAt/date_created and note the fallback.',\n\t'- Before issuing MONGO_READ or MONGO_AGG, verify the collection name and key fields by checking collection/model definitions in the current app (look for \"collectionName:\" and date fields like date_created/date_completed/createdAt). Do not invent collection names.',\n\t'- For creation-date questions when both date_created and createdAt exist, match both with $or so results are not missed.',\n\t'- When grouping by fields that can be arrays (drivers, deliveries, routes, chemicals), $unwind first and group by both id and name when available.',\n\t'- Use MONGO_READ/MONGO_AGG only to produce summaries/snapshots/health checks (not raw dumps) when permitted.',\n\t'- If the user explicitly asks for IDs, set options.includeIds: true.',\n\t'- If a data question returns zero results, verify the collection/date field with a tiny read (limit 1-5) or a date field fallback before concluding there is no data.',\n\t'- Keep responses concise and use the configured reasoning effort level (default low).'\n].join('\\n');\n\nconst AI_FORM_PATCH_SYSTEM_PROMPT = [\n\t'You are the ResolveIO form patch assistant.',\n\t'- Your job is to map the user request to the provided form fields.',\n\t'- Only use the allowed fields and their types.',\n\t'- Return ONLY valid JSON and nothing else.',\n\t'- If you cannot map the request, return an empty patch with a short note.',\n\t'- Use ISO 8601 for dates and true/false for booleans.',\n\t'- Use medium reasoning effort.'\n].join('\\n');\n\nlet assistantCodexClient: CodexClient | null = null;\nlet assistantCodexRunQueue: Array<() => Promise<unknown>> = [];\nlet assistantCodexRunDraining = false;\n\ntype GuardrailResult = { blocked: boolean; response: string; reason: string };\ntype CodexWorkerResponse = { ok: boolean; result?: string; error?: string; type?: 'stream' | 'final'; status?: string };\n/* eslint-disable no-unused-vars -- Function type params are required for clarity. */\ntype CodexStreamStatusHandler = (status: string) => void;\ntype CodexProgressTracker = { push: (item: string) => void };\n/* eslint-enable no-unused-vars */\n\nfunction enqueueAssistantCodexRun(task: () => Promise<unknown>): void {\n\tassistantCodexRunQueue.push(task);\n\tif (assistantCodexRunDraining) {\n\t\treturn;\n\t}\n\tassistantCodexRunDraining = true;\n\tqueueMicrotask(async () => {\n\t\tawait drainAssistantCodexRunQueue();\n\t});\n}\n\nasync function drainAssistantCodexRunQueue(): Promise<void> {\n\ttry {\n\t\twhile (assistantCodexRunQueue.length) {\n\t\t\tconst next = assistantCodexRunQueue.shift();\n\t\t\tif (!next) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait next();\n\t\t\t}\n\t\t\tcatch (error) {\n\t\t\t\tconsole.error(new Date(), 'AI assistant run failed:', error);\n\t\t\t}\n\t\t}\n\t}\n\tfinally {\n\t\tassistantCodexRunDraining = false;\n\t\tif (assistantCodexRunQueue.length) {\n\t\t\tassistantCodexRunDraining = true;\n\t\t\tqueueMicrotask(async () => {\n\t\t\t\tawait drainAssistantCodexRunQueue();\n\t\t\t});\n\t\t}\n\t}\n}\n\ntype AttachmentInput = {\n\tid?: string;\n\tname?: string;\n\ttype?: string;\n\tsize?: number;\n\tlocal_path?: string;\n};\n\ntype AiTerminalRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tprofile_id?: string;\n\tconfig?: {\n\t\tmode?: string;\n\t\tmodel?: string;\n\t\tsystem_prompt?: string;\n\t\tuser_prompt_template?: string;\n\t\tresponse_format?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n\tguardrails?: boolean;\n\tattachments?: AttachmentInput[];\n\tmax_history?: number;\n\tdelete_files_after_run?: boolean;\n};\n\ntype AiCodexRunInput = {\n\tid_conversation?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tmessage: string;\n\trequest_id?: string;\n\tcontext?: {\n\t\tmode?: string;\n\t\troute?: string;\n\t};\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n\tattachments?: AttachmentInput[];\n\tdelete_files_after_run?: boolean;\n\tmax_history?: number;\n};\n\nexport type AiAssistantMongoReadInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\toptions?: {\n\t\tprojection?: Record<string, number | boolean>;\n\t\tsort?: Record<string, any>;\n\t\tlimit?: number;\n\t\tskip?: number;\n\t\tincludeTotal?: boolean;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n};\n\nexport type AiAssistantMongoAggregateInput = {\n\tdatabase?: string;\n\tcollection?: string;\n\tquery?: Record<string, any>;\n\tpipeline?: Array<Record<string, any>>;\n\toptions?: {\n\t\tallowDiskUse?: boolean;\n\t\tmaxTimeMS?: number;\n\t\tlimit?: number;\n\t\tincludeIds?: boolean;\n\t\texport?: boolean;\n\t};\n\tpermissionView?: string;\n\tid_client?: string;\n\tmongo?: {\n\t\tdatabase?: string;\n\t\tdatabases?: string[];\n\t\taccess?: string;\n\t\treadonly?: boolean;\n\t};\n};\n\ntype AiFormPatchInput = {\n\tmessage: string;\n\tallowed_fields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tfields?: Array<{ name?: string; path?: string; type?: string; label?: string; enums?: string[] }>;\n\tpatch_format?: string;\n\troute?: string;\n\tid_client?: string;\n\tid_app?: string;\n\tconfig?: {\n\t\tmodel?: string;\n\t\ttemperature?: number;\n\t\tmax_tokens?: number;\n\t};\n};\n\ntype AiFormField = {\n\tname: string;\n\ttype?: string;\n\tlabel?: string;\n\tenums?: string[];\n};\n\ntype AiAssistantDisplayTable = {\n\tcolumns: string[];\n\trows: Array<Record<string, any>>;\n\trowCount: number;\n\ttotal?: number | null;\n\ttruncated?: boolean;\n\tincludeIds?: boolean;\n};\n\ntype AiAssistantToolResult = {\n\ttype: 'mongo_read' | 'mongo_agg';\n\tinput: Record<string, any>;\n\toutput: {\n\t\tdisplay: AiAssistantDisplayTable;\n\t\ttotal?: number | null;\n\t\tcollection?: string;\n\t\trowCount: number;\n\t\tcolumns: string[];\n\t\ttruncated?: boolean;\n\t\tdebug?: Record<string, any>;\n\t};\n};\n\ntype AssistantMongoDirective = {\n\ttype: 'read' | 'aggregate';\n\tpayload: Record<string, any> | null;\n\tcleaned: string;\n\trawLine: string;\n};\n\nexport function loadAiTerminalMethods(methodManager) {\n\tconst codexWorkerIndex = resolveSingleWorkerTarget(\n\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INDEX\n\t\t|| process.env.CODEX_WORKER_INDEX\n\t\t|| process.env.WORKER_CODEX_INDEX\n\t);\n\tconst codexWorkerInstance = resolveSingleWorkerTarget(\n\t\tprocess.env.AI_ASSISTANT_CODEX_WORKER_INSTANCE\n\t\t|| process.env.CODEX_WORKER_INSTANCE\n\t\t|| process.env.WORKER_CODEX_INSTANCE\n\t);\n\tmethodManager.methods({\n\t\taiTerminalConversationCreate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\t\t\t\tid_client: resolveClientIdFromConfig(payload.id_client),\n\t\t\t\t\tid_app: normalizeOptionalString(payload.id_app),\n\t\t\t\t\ttitle: normalizeOptionalString(payload.title) || 'New Conversation',\n\t\t\t\t\tmode: normalizeConversationMode(payload.mode),\n\t\t\t\t\tbranch_enabled: payload.branch_enabled === true,\n\t\t\t\t\tbranch_name: normalizeOptionalString(payload.branch_name),\n\t\t\t\t\tstatus: normalizeConversationStatus(payload.status),\n\t\t\t\t\tprofile_id: normalizeOptionalString(payload.profile_id),\n\t\t\t\t\tmetadata: payload.metadata || {},\n\t\t\t\t\tlast_message_at: undefined,\n\t\t\t\t\tlast_message_id: undefined,\n\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\tupdatedAt: now\n\t\t\t\t};\n\t\t\t\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\t\t\t\treturn { id_conversation: result._id as string };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationUpdate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tpatch: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, patch) {\n\t\t\t\tconst update: Partial<AiTerminalConversationModel> & { updatedAt: Date } = {\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t};\n\t\t\t\tif (patch.title !== undefined) {\n\t\t\t\t\tupdate.title = normalizeOptionalString(patch.title);\n\t\t\t\t}\n\t\t\t\t\tif (patch.status !== undefined) {\n\t\t\t\t\t\tupdate.status = normalizeConversationStatus(patch.status);\n\t\t\t\t\t}\n\t\t\t\tif (patch.branch_enabled !== undefined) {\n\t\t\t\t\tupdate.branch_enabled = !!patch.branch_enabled;\n\t\t\t\t}\n\t\t\t\tif (patch.branch_name !== undefined) {\n\t\t\t\t\tupdate.branch_name = normalizeOptionalString(patch.branch_name);\n\t\t\t\t}\n\t\t\t\tif (patch.profile_id !== undefined) {\n\t\t\t\t\tupdate.profile_id = normalizeOptionalString(patch.profile_id);\n\t\t\t\t}\n\t\t\t\tif (patch.metadata !== undefined) {\n\t\t\t\t\tupdate.metadata = patch.metadata || {};\n\t\t\t\t}\n\n\t\t\t\tawait AiTerminalConversations.updateOne({ _id: id_conversation }, { $set: update });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalConversationDelete: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string) {\n\t\t\t\tawait AiTerminalMessages.deleteMany({ id_conversation });\n\t\t\t\tawait AiTerminalConversations.deleteOne({ _id: id_conversation });\n\t\t\t\treturn { id_conversation };\n\t\t\t}\n\t\t},\n\t\taiTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\tconst limits = resolveUploadLimits();\n\t\t\t\tif (size > limits.maxFileBytes) {\n\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t}\n\t\t\t\tconst safeName = sanitizeFilename(file_name);\n\t\t\t\tconst uploadRoot = resolveUploadRoot();\n\t\t\t\tconst targetDir = path.join(uploadRoot, id_conversation);\n\t\t\t\tawait fs.mkdir(targetDir, { recursive: true });\n\t\t\t\tconst targetPath = path.join(targetDir, safeName);\n\t\t\t\t\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\t\t\t\t\tconst data = new Uint8Array(dataBuffer);\n\t\t\t\t\tif (data.byteLength !== size) {\n\t\t\t\t\t\tif (data.byteLength > limits.maxFileBytes) {\n\t\t\t\t\t\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tawait fs.writeFile(targetPath, data);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid_file: objectIdHexString(),\n\t\t\t\t\t\tname: safeName,\n\t\t\t\t\tsize: data.byteLength,\n\t\t\t\t\ttype: normalizeOptionalString(content_type),\n\t\t\t\t\tlocal_path: targetPath\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\taiTerminalRun: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiTerminalRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiFormPatch: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiFormPatch(payload, this);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalUploadFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_conversation: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfile_name: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcontent_base64: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tcontent_type: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\t\t\t\treturn await handleCodexUpload(id_conversation, file_name, content_base64, size, content_type);\n\t\t\t}\n\t\t},\n\t\taiCoderTerminalRunCodex: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tforceWorker: true,\n\t\t\tworkerQueue: 'codex',\n\t\t\t...(codexWorkerIndex ? { targetWorkerIndex: codexWorkerIndex } : {}),\n\t\t\t...(codexWorkerInstance ? { targetWorkerInstance: codexWorkerInstance } : {}),\n\t\t\tmaxConcurrencyPerInstance: 1,\n\t\t\ttimeoutOverride: resolveCodexTimeoutMs() + 15000,\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantCodexRun(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoRead(payload, this);\n\t\t\t}\n\t\t},\n\t\taiAssistantMongoAggregate: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\treturn await executeAiAssistantMongoAggregate(payload, this);\n\t\t\t}\n\t\t},\n\t\t\taiCoderTerminalDeployTest: {\n\t\t\t\tcheck: new SimpleSchema({\n\t\t\t\t\tid_conversation: {\n\t\t\t\t\t\ttype: String\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfunction: function() {\n\t\t\t\t\tthrow new Error('Test deploys are not supported for AI assistant sessions.');\n\t\t\t\t}\n\t\t\t}\n\t});\n}\n\nasync function executeAiTerminalRun(payload: AiTerminalRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiTerminalRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tconst requestId = normalizeOptionalString(input.request_id);\n\n\tconst isSuperAdmin = await resolveIsSuperAdmin(context?.id_user);\n\tconst guardrailsEnabled = input.guardrails !== false && !isSuperAdmin;\n\tif (guardrailsEnabled) {\n\t\tconst guardrail = evaluateGuardrails(message);\n\t\tif (guardrail?.blocked) {\n\t\t\tconst conversation = await ensureConversation(input, 'openai');\n\t\t\tconst now = new Date();\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: guardrail.response,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblocked: true,\n\t\t\t\t\treason: guardrail.reason,\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\t\tawait touchConversation(conversation._id, now);\n\t\t\treturn {\n\t\t\t\tconversation,\n\t\t\t\tmessage: assistantMsg,\n\t\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t\t};\n\t\t}\n\t}\n\n\tconst conversation = await ensureConversation(input, 'openai');\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst config = sanitizeConfig(input.config || {});\n\tconst systemPrompt = normalizeOptionalString(config.system_prompt) || '';\n\tconst userPromptTemplate = normalizeOptionalString(config.user_prompt_template);\n\tconst userPrompt = buildUserPrompt(userPromptTemplate, message, attachmentData.promptText);\n\n\tconst historyLimit = normalizeHistoryLimit(input.max_history);\n\tconst history = historyLimit > 0\n\t\t? await AiTerminalMessages.find(\n\t\t\t{ id_conversation: conversation._id, role: { $in: ['user', 'assistant'] } },\n\t\t\t{ sort: { createdAt: 1 }, limit: historyLimit * 2 }\n\t\t)\n\t\t: [];\n\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [];\n\tif (systemPrompt) {\n\t\tmessages.push({ role: 'system', content: systemPrompt });\n\t}\n\n\thistory.forEach((entry: AiTerminalMessageModel) => {\n\t\tconst role = entry.role === 'assistant' ? 'assistant' : 'user';\n\t\tconst content = normalizeOptionalString(entry.content);\n\t\tif (content) {\n\t\t\tmessages.push({ role, content });\n\t\t}\n\t});\n\n\tif (userPrompt) {\n\t\tmessages.push({ role: 'user', content: userPrompt });\n\t}\n\n\tconst openaiSettings = resolveOpenAISettings(config);\n\tconst client = new OpenAIClient(openaiSettings);\n\tconst response = await client.chat(messages, { timeoutMs: 60000, responseFormat: config.response_format });\n\n\tconst usage = response.usage || estimateUsage(messages, response.content, openaiSettings.model);\n\tconst idClient = resolveClientId(conversation, input.id_client);\n\tif (idClient) {\n\t\tawait recordOpenAIUsage({\n\t\t\tid_client: idClient,\n\t\t\tmodel: response.model || openaiSettings.model || 'unknown',\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens,\n\t\t\tcategory: 'ai-terminal',\n\t\t\tid_conversation: conversation._id\n\t\t});\n\t}\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: response.content,\n\t\tmetadata: input.request_id ? { request_id: input.request_id } : undefined,\n\t\tusage: {\n\t\t\tmodel: response.model || openaiSettings.model,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tawait AiTerminalMessages.insertOne(userDoc as any);\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tawait touchConversation(conversation._id, now, insertResult._id as string);\n\n\tif (input.delete_files_after_run !== false) {\n\t\tawait cleanupAttachments(attachmentData.attachments);\n\t}\n\n\treturn {\n\t\tconversation,\n\t\tmessage: assistantDoc,\n\t\tusage: assistantDoc.usage\n\t};\n}\n\nasync function executeAiFormPatch(payload: AiFormPatchInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiFormPatchInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst allowedFields = normalizeAiFormFields(input.allowed_fields || input.fields);\n\tif (!allowedFields.length) {\n\t\tthrow new Error('Allowed fields are required.');\n\t}\n\n\tconst guardrail = evaluateGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\treturn { error: guardrail.response, blocked: true };\n\t}\n\n\tconst systemPrompt = buildAiFormSystemPrompt();\n\tconst userPrompt = buildAiFormUserPrompt(message, allowedFields, input.patch_format, input.route);\n\tconst messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [\n\t\t{ role: 'system', content: systemPrompt },\n\t\t{ role: 'user', content: userPrompt }\n\t];\n\n\tconst openaiSettings = resolveOpenAISettings(input.config || {});\n\tconst client = new OpenAIClient(openaiSettings);\n\tconst response = await client.chat(messages, { timeoutMs: 60000, responseFormat: 'json_object' });\n\n\tconst usage = response.usage || estimateUsage(messages, response.content, response.model || openaiSettings.model);\n\tconst idClient = resolveClientIdFromConfig(input.id_client);\n\tif (idClient) {\n\t\tawait recordOpenAIUsage({\n\t\t\tid_client: idClient,\n\t\t\tmodel: response.model || openaiSettings.model || 'unknown',\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens,\n\t\t\tcategory: 'ai-form'\n\t\t});\n\t}\n\n\tconst parsed = parseJsonObject(response.content);\n\tif (!parsed || typeof parsed !== 'object') {\n\t\tthrow new Error('AI form patch response was not valid JSON.');\n\t}\n\n\treturn {\n\t\tpatch: parsed.patch ?? parsed,\n\t\tnotes: normalizeOptionalString(parsed.notes) || undefined,\n\t\tusage: {\n\t\t\tmodel: response.model || openaiSettings.model,\n\t\t\tinput_tokens: usage.inputTokens,\n\t\t\toutput_tokens: usage.outputTokens,\n\t\t\ttotal_tokens: usage.totalTokens\n\t\t}\n\t};\n}\n\nasync function executeAiAssistantCodexRun(payload: AiCodexRunInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiCodexRunInput);\n\tconst message = normalizeOptionalString(input.message);\n\tif (!message) {\n\t\tthrow new Error('Message is required.');\n\t}\n\tif (!context?.id_user) {\n\t\tthrow new Error('Unauthorized.');\n\t}\n\n\tconst requestId = normalizeOptionalString(input.request_id);\n\n\tconst guardrail = evaluateAssistantGuardrails(message);\n\tif (guardrail?.blocked) {\n\t\tconst conversation = await ensureConversation(input as any, 'codex');\n\t\tconst now = new Date();\n\t\t\tconst userMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'user',\n\t\t\t\tcontent: message,\n\t\t\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\t\tconst assistantMsg: Partial<AiTerminalMessageModel> = {\n\t\t\t\tid_conversation: conversation._id,\n\t\t\t\trole: 'assistant',\n\t\t\t\tcontent: guardrail.response,\n\t\t\t\tmetadata: {\n\t\t\t\t\tblocked: true,\n\t\t\t\t\treason: guardrail.reason,\n\t\t\t\t\t...(requestId ? { request_id: requestId } : {})\n\t\t\t\t},\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now\n\t\t\t};\n\t\tawait AiTerminalMessages.insertOne(userMsg as any);\n\t\tawait AiTerminalMessages.insertOne(assistantMsg as any);\n\t\tawait touchConversation(conversation._id, now);\n\t\treturn {\n\t\t\tconversation,\n\t\t\tmessage: assistantMsg,\n\t\t\tguardrails: { blocked: true, reason: guardrail.reason }\n\t\t};\n\t}\n\n\tconst user = await Users.findById(context?.id_user);\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst hasInvoiceAccess = userHasInvoiceAccess(user);\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst conversation = await ensureConversation(input as any, 'codex');\n\tconst now = new Date();\n\tconst attachments = Array.isArray(input.attachments) ? input.attachments : [];\n\tconst attachmentData = await readAttachmentContents(attachments);\n\tconst historyLimit = normalizeHistoryLimit(input.max_history);\n\tconst history = historyLimit > 0\n\t\t? await AiTerminalMessages.find(\n\t\t\t{ id_conversation: conversation._id, role: { $in: ['user', 'assistant'] } },\n\t\t\t{ sort: { createdAt: 1 }, limit: historyLimit * 2 }\n\t\t)\n\t\t: [];\n\n\tconst historyLines: string[] = [];\n\thistory.forEach((entry: AiTerminalMessageModel) => {\n\t\tconst role = entry.role === 'assistant' ? 'Assistant' : 'User';\n\t\tconst content = normalizeOptionalString(entry.content);\n\t\tif (content) {\n\t\t\thistoryLines.push(`${role}: ${content}`);\n\t\t}\n\t});\n\n\tconst userDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'user',\n\t\tcontent: message,\n\t\tmetadata: requestId ? { request_id: requestId } : undefined,\n\t\tattachments: attachmentData.attachments,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tconst initialProgress = ['Planning'];\n\tconst assistantDoc: Partial<AiTerminalMessageModel> = {\n\t\tid_conversation: conversation._id,\n\t\trole: 'assistant',\n\t\tcontent: AI_ASSISTANT_PROGRESS_PLACEHOLDER,\n\t\tmetadata: {\n\t\t\tmodel: resolveCodexModel(),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\tpending: true,\n\t\t\tprogress: initialProgress\n\t\t},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\n\tawait AiTerminalMessages.insertOne(userDoc as any);\n\tconst insertResult = await AiTerminalMessages.insertOne(assistantDoc as any);\n\tconst assistantMessageId = (insertResult as any)?._id || (insertResult as any)?.insertedId;\n\tenqueueAssistantCodexRun(async () => {\n\t\tconst runStart = Date.now();\n\t\tconst steps: Array<{ step: string; at: string; ms: number; details?: Record<string, any> }> = [];\n\t\tconst recordStep = (step: string, details?: Record<string, any>) => {\n\t\t\tsteps.push({\n\t\t\t\tstep,\n\t\t\t\tat: new Date().toISOString(),\n\t\t\t\tms: Date.now() - runStart,\n\t\t\t\tdetails\n\t\t\t});\n\t\t};\n\t\tconst progressTracker = createAssistantProgressTracker(assistantMessageId, initialProgress);\n\t\tconst streamProgress = createAssistantStreamProgressHandler(progressTracker);\n\n\t\tlet assistantContent = '';\n\t\tlet toolResult: AiAssistantToolResult | null = null;\n\t\tlet assistantDebug: Record<string, any> | null = null;\n\t\tlet directiveSource: 'model' | 'forced' | 'none' = 'none';\n\t\tconst dataQuestion = isAssistantDataQuestion(message);\n\t\tlet lastDirective: AssistantMongoDirective | null = null;\n\t\tlet toolResponseDebug: Record<string, any> | null = null;\n\t\tlet toolError: any = null;\n\t\tlet termHints: string[] = [];\n\t\tlet collectionHints: string[] = [];\n\t\tlet collectionTokenization: Record<string, any> | null = null;\n\t\tlet collectionRanking: Record<string, any> | null = null;\n\t\tlet collectionSelection: Record<string, any> | null = null;\n\t\tlet collectionOverride: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null = null;\n\t\tlet collectionNames: string[] = [];\n\t\tconst timingBreakdown: Record<string, number> = {\n\t\t\tdirectiveMs: 0,\n\t\t\tinitialResponseMs: 0,\n\t\t\tforcedDirectiveMs: 0,\n\t\t\ttoolMs: 0,\n\t\t\tfollowupMs: 0\n\t\t};\n\t\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\t\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\t\trecordStep('Queued', { requestId: requestId || undefined });\n\n\t\ttry {\n\t\t\tconst hintSeed = [message, contextRoute].filter(Boolean).join(' ');\n\t\t\tconst termExpansion = expandAssistantTermSynonyms(hintSeed);\n\t\t\tconst hintText = termExpansion.expanded || hintSeed;\n\t\t\ttermHints = termExpansion.matches.map((match) => `${match.term} -> ${match.expansions.join(', ')}`);\n\t\t\tconst baseTokens = tokenizeCollectionText(hintSeed);\n\t\t\tconst expandedTokens = tokenizeCollectionText(hintText);\n\t\t\tconst baseWeights = computeCollectionTokenWeights(baseTokens);\n\t\t\tconst expandedWeights = computeCollectionTokenWeights(expandedTokens);\n\t\t\tcollectionTokenization = {\n\t\t\t\tbaseText: hintSeed || undefined,\n\t\t\t\texpandedText: hintText || undefined,\n\t\t\t\tbaseTokens: baseTokens.length ? baseTokens : undefined,\n\t\t\t\texpandedTokens: expandedTokens.length ? expandedTokens : undefined,\n\t\t\t\tbaseTokenWeights: baseTokens.length ? baseWeights.weights : undefined,\n\t\t\t\texpandedTokenWeights: expandedTokens.length ? expandedWeights.weights : undefined,\n\t\t\t\thasDomainTokens: expandedTokens.length ? expandedWeights.hasDomain : undefined\n\t\t\t};\n\t\t\trecordStep('Planning: term expansion', {\n\t\t\t\ttermMatches: termExpansion.matches.length ? termExpansion.matches : undefined\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tconst dbName = resolveAssistantDatabaseName(undefined, input.mongo);\n\t\t\t\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\t\t\t\tcollectionNames = await listAssistantCollections(db, dbName);\n\t\t\t\tcollectionHints = resolveCollectionHintsFromTokens(expandedTokens, collectionNames, 5);\n\t\t\t\tcollectionRanking = buildCollectionRankingDebugFromTokens(expandedTokens, collectionNames, 8);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tcollectionHints = [];\n\t\t\t\tcollectionRanking = collectionRanking || (collectionTokenization?.expandedTokens\n\t\t\t\t\t? buildCollectionRankingDebugFromTokens(collectionTokenization.expandedTokens || [], [], 0)\n\t\t\t\t\t: null);\n\t\t\t}\n\t\t\trecordStep('Planning: collection hints', {\n\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\ttermHints: termHints.length ? termHints : undefined\n\t\t\t});\n\n\t\t\tconst assistantContext = buildAssistantContext(input, {\n\t\t\t\tisSuperAdmin,\n\t\t\t\thasInvoiceAccess,\n\t\t\t\tcustomerId,\n\t\t\t\tcollectionHints,\n\t\t\t\ttermHints\n\t\t\t});\n\t\t\tconst prompt = buildAssistantCodexPrompt(\n\t\t\t\tmessage,\n\t\t\t\tattachmentData.promptText,\n\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\tassistantContext\n\t\t\t);\n\t\t\tconst workspaceRoot = await resolveAssistantWorkspaceRoot();\n\t\t\tconst codexConfig = resolveCodexSettings();\n\t\t\tconst runOptions: CodexRunOptions = {\n\t\t\t\ttimeoutMs: resolveCodexTimeoutMs(),\n\t\t\t\tthreadOptions: {\n\t\t\t\t\tworkingDirectory: workspaceRoot,\n\t\t\t\t\tsandboxMode: 'read-only',\n\t\t\t\t\tskipGitRepoCheck: true,\n\t\t\t\t\tmodelReasoningEffort: resolveCodexThoughtLevel(),\n\t\t\t\t\tnetworkAccessEnabled: false,\n\t\t\t\t\twebSearchMode: 'disabled',\n\t\t\t\t\twebSearchEnabled: false,\n\t\t\t\t\tapprovalPolicy: 'never'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tlet responseText = '';\n\t\t\tlet directiveText = '';\n\t\t\tlet directive = null as AssistantMongoDirective | null;\n\t\t\tif (dataQuestion) {\n\t\t\t\trecordStep('Directive: determine tool', { type: 'data-question' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext\n\t\t\t\t);\n\t\t\t\ttry {\n\t\t\t\t\tconst directiveStart = Date.now();\n\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(directivePrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\ttimingBreakdown.directiveMs = Date.now() - directiveStart;\n\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\tif (forcedDirective) {\n\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tif (!directive) {\n\t\t\t\trecordStep('Response: draft initial answer', { mode: 'full' });\n\t\t\t\tconst initialStart = Date.now();\n\t\t\t\tresponseText = await runCodexInWorkerThread(prompt, runOptions, codexConfig, streamProgress);\n\t\t\t\ttimingBreakdown.initialResponseMs = Date.now() - initialStart;\n\t\t\t\tdirective = extractAssistantMongoDirective(responseText);\n\t\t\t\tif (directive) {\n\t\t\t\t\tdirectiveSource = 'model';\n\t\t\t\t\tlastDirective = directive;\n\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t);\n\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!directive && dataQuestion) {\n\t\t\t\trecordStep('Directive: forced retry', { mode: 'directive-only' });\n\t\t\t\tconst directivePrompt = buildAssistantCodexDirectivePrompt(\n\t\t\t\t\tmessage,\n\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\tassistantContext\n\t\t\t\t);\n\t\t\t\ttry {\n\t\t\t\t\tconst forcedStart = Date.now();\n\t\t\t\t\tdirectiveText = await runCodexInWorkerThread(directivePrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\ttimingBreakdown.forcedDirectiveMs = Date.now() - forcedStart;\n\t\t\t\t\tconst forcedDirective = extractAssistantMongoDirective(directiveText);\n\t\t\t\t\tif (forcedDirective) {\n\t\t\t\t\t\tdirective = forcedDirective;\n\t\t\t\t\t\tdirectiveSource = 'forced';\n\t\t\t\t\t\tlastDirective = forcedDirective;\n\t\t\t\t\t\tcollectionSelection = buildCollectionSelectionDetail(\n\t\t\t\t\t\t\tcollectionTokenization?.expandedTokens || [],\n\t\t\t\t\t\t\tnormalizeOptionalString(directive.payload?.collection) || ''\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecordStep('Directive resolved', {\n\t\t\t\t\t\t\tsource: directiveSource,\n\t\t\t\t\t\t\ttype: directive.type,\n\t\t\t\t\t\t\tcollection: normalizeOptionalString(directive.payload?.collection) || undefined,\n\t\t\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || undefined\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {}\n\t\t\t}\n\t\t\tif (directive) {\n\t\t\t\tconst requestedCollection = normalizeOptionalString(directive.payload?.collection);\n\t\t\t\tcollectionOverride = resolveCollectionOverrideWithContext({\n\t\t\t\t\tmessage,\n\t\t\t\t\tcollectionRanking,\n\t\t\t\t\trequestedCollection,\n\t\t\t\t\tpermissionView: normalizeOptionalString(directive.payload?.permissionView) || contextRoute,\n\t\t\t\t\tcollectionNames\n\t\t\t\t});\n\t\t\t\tif (collectionOverride) {\n\t\t\t\t\trecordStep('Planning: collection override', {\n\t\t\t\t\t\tfrom: collectionOverride.from || undefined,\n\t\t\t\t\t\tto: collectionOverride.to,\n\t\t\t\t\t\treason: collectionOverride.reason,\n\t\t\t\t\t\tscoreGap: collectionOverride.toScore - collectionOverride.fromScore\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst cleanedResponseText = directive?.cleaned || responseText;\n\t\t\tif (cleanedResponseText) {\n\t\t\t\tassistantContent = sanitizeAssistantResponse(cleanedResponseText);\n\t\t\t}\n\n\t\t\tif (directive?.payload && AI_ASSISTANT_TOOL_MAX_STEPS > 0) {\n\t\t\t\tconst effectiveDirective = collectionOverride\n\t\t\t\t\t? {\n\t\t\t\t\t\t...directive,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t...(directive.payload || {}),\n\t\t\t\t\t\t\tcollection: collectionOverride.to\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t: directive;\n\t\t\t\tconst toolRequest = buildAssistantToolRequest(effectiveDirective, input);\n\t\t\t\tprogressTracker.push('Grabbing Data');\n\t\t\t\trecordStep('Grabbing Data: start', {\n\t\t\t\t\ttype: effectiveDirective.type,\n\t\t\t\t\tcollection: normalizeOptionalString(toolRequest?.collection) || undefined,\n\t\t\t\t\tpermissionView: normalizeOptionalString(toolRequest?.permissionView) || undefined\n\t\t\t\t});\n\t\t\t\ttry {\n\t\t\t\t\tconst toolStart = Date.now();\n\t\t\t\t\tconst toolResponse = effectiveDirective.type === 'aggregate'\n\t\t\t\t\t\t? await executeAiAssistantMongoAggregate(toolRequest as AiAssistantMongoAggregateInput, context)\n\t\t\t\t\t\t: await executeAiAssistantMongoRead(toolRequest as AiAssistantMongoReadInput, context);\n\t\t\t\t\ttimingBreakdown.toolMs = Date.now() - toolStart;\n\t\t\t\t\ttoolResponseDebug = toolResponse?.debug && typeof toolResponse.debug === 'object'\n\t\t\t\t\t\t? toolResponse.debug\n\t\t\t\t\t\t: null;\n\t\t\t\t\tconst toolPayload = buildAssistantToolResultPayload(effectiveDirective, toolResponse);\n\t\t\t\t\ttoolResult = toolPayload.result;\n\t\t\t\t\trecordStep('Grabbing Data: complete', {\n\t\t\t\t\t\trowCount: toolPayload.result.output.rowCount,\n\t\t\t\t\t\ttotal: toolPayload.result.output.total,\n\t\t\t\t\t\tcolumns: toolPayload.result.output.columns\n\t\t\t\t\t});\n\t\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\t\trecordStep('Drafting response');\n\t\t\t\t\tconst followupPrompt = buildAssistantCodexToolFollowupPrompt(\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tattachmentData.promptText,\n\t\t\t\t\t\thistoryLines.join('\\n'),\n\t\t\t\t\t\tassistantContext,\n\t\t\t\t\t\ttoolPayload.prompt\n\t\t\t\t\t);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst followupStart = Date.now();\n\t\t\t\t\t\tconst followupText = await runCodexInWorkerThread(followupPrompt, runOptions, codexConfig, streamProgress);\n\t\t\t\t\t\ttimingBreakdown.followupMs = Date.now() - followupStart;\n\t\t\t\t\t\tassistantContent = sanitizeAssistantResponse(followupText);\n\t\t\t\t\t}\n\t\t\t\t\tcatch {\n\t\t\t\t\t\tassistantContent = buildAssistantToolFallbackResponse(toolPayload.result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (error) {\n\t\t\t\t\tassistantContent = buildAssistantToolErrorMessage(error, directive, toolRequest);\n\t\t\t\t\ttoolError = error;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprogressTracker.push('Drafting response');\n\t\t\t\trecordStep('Drafting response');\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tassistantContent = buildAssistantCodexErrorMessage(error);\n\t\t\trecordStep('Error', { message: normalizeOptionalString(error?.message) || 'Unknown error' });\n\t\t}\n\t\tfinally {\n\t\t\tprogressTracker.stop();\n\t\t}\n\n\t\tif (!assistantContent) {\n\t\t\tassistantContent = buildAssistantCodexErrorMessage(null);\n\t\t}\n\n\t\tconst finalNow = new Date();\n\t\tif (isSuperAdmin) {\n\t\t\tconst finishedAt = Date.now();\n\t\t\tconst codexMs = timingBreakdown.directiveMs\n\t\t\t\t+ timingBreakdown.initialResponseMs\n\t\t\t\t+ timingBreakdown.forcedDirectiveMs\n\t\t\t\t+ timingBreakdown.followupMs;\n\t\t\tconst draftingMs = timingBreakdown.followupMs || timingBreakdown.initialResponseMs;\n\t\t\tassistantDebug = buildAssistantDebugPayload({\n\t\t\t\tdataQuestion,\n\t\t\t\tdirective: lastDirective,\n\t\t\t\tdirectiveSource,\n\t\t\t\ttoolResult,\n\t\t\t\ttoolResponseDebug,\n\t\t\t\ttoolError,\n\t\t\t\tcollectionOverride,\n\t\t\t\ttrace: {\n\t\t\t\t\tsteps,\n\t\t\t\t\tplanning: {\n\t\t\t\t\t\tcontextMode: contextMode || undefined,\n\t\t\t\t\t\tcontextRoute: contextRoute || undefined,\n\t\t\t\t\t\ttermHints: termHints.length ? termHints : undefined,\n\t\t\t\t\t\tcollectionHints: collectionHints.length ? collectionHints : undefined,\n\t\t\t\t\t\tcollectionTokenization: collectionTokenization || undefined,\n\t\t\t\t\t\tcollectionRanking: collectionRanking || undefined,\n\t\t\t\t\t\tcollectionSelection: collectionSelection || undefined,\n\t\t\t\t\t\tcollectionOverride: collectionOverride || undefined\n\t\t\t\t\t},\n\t\t\t\t\ttimings: {\n\t\t\t\t\t\tstartedAt: new Date(runStart).toISOString(),\n\t\t\t\t\t\tfinishedAt: new Date(finishedAt).toISOString(),\n\t\t\t\t\t\ttotalMs: finishedAt - runStart,\n\t\t\t\t\t\tcodexMs,\n\t\t\t\t\t\tdraftingMs,\n\t\t\t\t\t\ttoolMs: timingBreakdown.toolMs,\n\t\t\t\t\t\tdirectiveMs: timingBreakdown.directiveMs,\n\t\t\t\t\t\tinitialResponseMs: timingBreakdown.initialResponseMs,\n\t\t\t\t\t\tforcedDirectiveMs: timingBreakdown.forcedDirectiveMs,\n\t\t\t\t\t\tfollowupMs: timingBreakdown.followupMs\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst finalMetadata = {\n\t\t\tmodel: resolveCodexModel(),\n\t\t\t...(requestId ? { request_id: requestId } : {}),\n\t\t\t...(toolResult ? { tool_result: toolResult } : {}),\n\t\t\t...(assistantDebug ? { debug: assistantDebug } : {})\n\t\t};\n\t\tconst finalAssistantDoc: Partial<AiTerminalMessageModel> = {\n\t\t\t...assistantDoc,\n\t\t\t_id: assistantMessageId,\n\t\t\tcontent: assistantContent,\n\t\t\tmetadata: finalMetadata,\n\t\t\tupdatedAt: finalNow\n\t\t};\n\n\t\tif (assistantMessageId) {\n\t\t\tawait AiTerminalMessages.updateOne(\n\t\t\t\t{ _id: assistantMessageId },\n\t\t\t\t{\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tcontent: assistantContent,\n\t\t\t\t\t\tmetadata: finalMetadata,\n\t\t\t\t\t\tupdatedAt: finalNow\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tawait touchConversation(conversation._id, finalNow, assistantMessageId ? String(assistantMessageId) : undefined);\n\n\t\tif (input.delete_files_after_run !== false) {\n\t\t\tawait cleanupAttachments(attachmentData.attachments);\n\t\t}\n\n\t\treturn finalAssistantDoc;\n\t});\n\n\treturn {\n\t\tconversation\n\t};\n}\n\nexport async function executeAiAssistantMongoRead(payload: AiAssistantMongoReadInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiAssistantMongoReadInput);\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant mongo read: Collection is required.');\n\t}\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection);\n\tconst collection = collectionResolution.name || rawCollection;\n\tconst schemaFields = getCollectionSchemaFieldNames(collection);\n\tconst { user, isSuperAdmin } = await ensureAssistantReadAccess(context, input.permissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tif (!isSuperAdmin && shouldScopeByClient) {\n\t\tconst strippedClient = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_client']);\n\t\tbaseQuery = strippedClient.value;\n\t\tfallbackMeta.scopeStripClient = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_client'],\n\t\t\tused: strippedClient.changed\n\t\t};\n\t}\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\tconst normalized = normalizeAssistantFindOptions(input.options);\n\tlet findOptions = { ...normalized.findOptions, readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\tlet documents = await db.collection(collection).find(scopedQuery, findOptions).toArray();\n\tlet executedQuery = scopedQuery;\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length) {\n\t\tconst dateFallback = resolveQueryDateFieldFallback(scopedQuery);\n\t\tif (dateFallback) {\n\t\t\tconst fallbackQuery = replaceQueryField(scopedQuery, dateFallback.from, dateFallback.to);\n\t\t\tfallbackMeta.dateField = { ...dateFallback, attempted: true, used: false };\n\t\t\tconst fallbackDocs = await db.collection(collection).find(fallbackQuery, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = fallbackQuery;\n\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandQueryDateFallbacks(executedQuery);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackDocs = await db.collection(collection).find(expanded.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = expanded.query;\n\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveReadNameMatchFallback(executedQuery);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackDocs = await db.collection(collection).find(nameFallback.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = nameFallback.query;\n\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient\n\t\t});\n\t\tconst chemicalLookup = await applyChemicalNameLookupFallbackToQuery({\n\t\t\tquery: executedQuery,\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: probeDocs || undefined\n\t\t});\n\t\tif (chemicalLookup) {\n\t\t\tfallbackMeta.chemicalLookup = { ...chemicalLookup.meta, attempted: true, used: false };\n\t\t\tconst fallbackDocs = await db.collection(collection).find(chemicalLookup.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = chemicalLookup.query;\n\t\t\t\tfallbackMeta.chemicalLookup.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst queryFields = extractQueryFieldPaths(executedQuery).filter(field => !isAssistantIdField(field));\n\t\tif (queryFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, queryFields, schemaFields);\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenQuery = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedQuery);\n\t\t\t\t\tconst fallbackDocs = await db.collection(collection).find(rewrittenQuery, findOptions).toArray();\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedQuery = rewrittenQuery;\n\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient\n\t\t});\n\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\tquery: executedQuery,\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: probeDocs || undefined\n\t\t});\n\t\tif (idLookup) {\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false };\n\t\t\tconst fallbackDocs = await db.collection(collection).find(idLookup.query, findOptions).toArray();\n\t\t\tif (fallbackDocs.length) {\n\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\texecutedQuery = idLookup.query;\n\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst baseCollection = await resolveBaseCollectionFromReport(db, dbName, collection);\n\t\tif (baseCollection && baseCollection !== collection) {\n\t\t\tconst fallbackPayload: AiAssistantMongoReadInput = {\n\t\t\t\t...input,\n\t\t\t\tcollection: baseCollection\n\t\t\t};\n\t\t\tconst fallbackResult = await executeAiAssistantMongoRead(fallbackPayload, context);\n\t\t\tif (Array.isArray(fallbackResult?.documents) && fallbackResult.documents.length) {\n\t\t\t\tif (isSuperAdmin && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t: {};\n\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\treportFallback: {\n\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\tto: baseCollection,\n\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn fallbackResult;\n\t\t\t}\n\t\t\tif (isSuperAdmin) {\n\t\t\t\tfallbackMeta.reportFallback = { from: collection, to: baseCollection, attempted: true, used: false };\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length && isSuperAdmin) {\n\t\tconst nameFields = collectMatchFieldsByCondition(\n\t\t\texecutedQuery,\n\t\t\t(field, condition) => isRegexMatchCondition(condition)\n\t\t\t\t|| (typeof condition === 'string' && shouldApplyAssistantNameRegex(field))\n\t\t);\n\t\tconst dateFields = collectMatchFieldsByCondition(executedQuery, (_field, condition) => isDateCondition(condition));\n\t\tconst diagnostics: Record<string, any> = {\n\t\t\tnameFields: nameFields.length ? nameFields : undefined,\n\t\t\tdateFields: dateFields.length ? dateFields : undefined\n\t\t};\n\t\ttry {\n\t\t\tif (nameFields.length) {\n\t\t\t\tconst queryNoName = stripMatchFields(executedQuery, nameFields);\n\t\t\t\tdiagnostics.recentCount = await db.collection(collection).countDocuments(queryNoName, {\n\t\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (dateFields.length) {\n\t\t\t\tconst queryNoDate = stripMatchFields(executedQuery, dateFields);\n\t\t\t\tdiagnostics.nameMatchCount = await db.collection(collection).countDocuments(queryNoDate, {\n\t\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore diagnostic count errors.\n\t\t}\n\t\ttry {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length && nameFields.length) {\n\t\t\t\tdiagnostics.chemicalIdDetected = detectChemicalIdFromProbe(probeDocs, nameFields);\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore probe errors.\n\t\t}\n\t\ttry {\n\t\t\tconst allCollections = await listAssistantCollections(db, dbName);\n\t\t\tconst base = stripVersionSuffix(collection.startsWith('report-') ? collection.slice('report-'.length) : collection);\n\t\t\tconst alt = collection.startsWith('report-') ? base : `report-${base}`;\n\t\t\tif (alt && alt !== collection && allCollections.includes(alt)) {\n\t\t\t\tconst altCount = await db.collection(alt).countDocuments({}, { readPreference: AI_ASSISTANT_READ_PREFERENCE });\n\t\t\t\tdiagnostics.alternateCollection = alt;\n\t\t\t\tdiagnostics.alternateCollectionCount = altCount;\n\t\t\t}\n\t\t}\n\t\tcatch {\n\t\t\t// Ignore alternate collection count errors.\n\t\t}\n\t\tfallbackMeta.zeroDiagnostics = diagnostics;\n\t}\n\tlet total = null;\n\tif (normalized.includeTotal) {\n\t\ttotal = await db.collection(collection).countDocuments(executedQuery, { readPreference: AI_ASSISTANT_READ_PREFERENCE });\n\t}\n\n\tlet sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst requestedFields = resolveProjectionRequestedFields(findOptions.projection);\n\tif (sanitizedDocuments.length && requestedFields.length) {\n\t\tconst missingFields = requestedFields.filter(field => !hasNonEmptyValue(sanitizedDocuments, field, { treatObjectLikeAsEmpty: true }));\n\t\tif (missingFields.length) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst projectionAliases = resolveFieldAliases(probeDocs, missingFields, schemaFields);\n\t\t\t\tif (Object.keys(projectionAliases).length) {\n\t\t\t\t\tfallbackMeta.projectionAliases = {\n\t\t\t\t\t\taliases: projectionAliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst expandedProjection = expandProjectionWithAliases(findOptions.projection, projectionAliases);\n\t\t\t\t\tif (expandedProjection && expandedProjection !== findOptions.projection) {\n\t\t\t\t\t\tfindOptions = { ...findOptions, projection: expandedProjection };\n\t\t\t\t\t\tnormalized.findOptions.projection = expandedProjection;\n\t\t\t\t\t\tconst refreshedDocs = await db.collection(collection).find(executedQuery, findOptions).toArray();\n\t\t\t\t\t\tif (refreshedDocs.length) {\n\t\t\t\t\t\t\tdocuments = refreshedDocs;\n\t\t\t\t\t\t\tsanitizedDocuments = isSuperAdmin\n\t\t\t\t\t\t\t\t? refreshedDocs\n\t\t\t\t\t\t\t\t: refreshedDocs.map(doc => redactSensitiveFields(deepCopy(doc)));\n\t\t\t\t\t\t\tfallbackMeta.projectionAliases.used = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tconst includeIds = input.options?.includeIds === true;\n\tconst fieldAliases = resolveFieldAliases(sanitizedDocuments, requestedFields, schemaFields);\n\tlet displayDocs = Object.keys(fieldAliases).length\n\t\t? applyFieldAliasesForDisplay(sanitizedDocuments, fieldAliases)\n\t\t: sanitizedDocuments;\n\tconst idLookupDisplay = await applyIdLookupDisplayEnrichment({\n\t\tdocs: displayDocs,\n\t\tcollection,\n\t\tdb,\n\t\tdbName,\n\t\tidClient: normalizedClient,\n\t\tidCustomer: customerId,\n\t\tisSuperAdmin\n\t});\n\tif (idLookupDisplay?.docs) {\n\t\tdisplayDocs = idLookupDisplay.docs;\n\t}\n\tif (idLookupDisplay?.meta) {\n\t\tfallbackMeta.idDisplayLookup = idLookupDisplay.meta;\n\t}\n\tconst priorityFields = requestedFields.length\n\t\t? [...requestedFields, ...AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS]\n\t\t: AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\tconst display = buildDisplayTable(displayDocs, {\n\t\tincludeIds,\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: normalized.findOptions.limit,\n\t\tpriorityFields,\n\t\tincludeGroupFromId: false\n\t});\n\tif (total !== null) {\n\t\tdisplay.total = total;\n\t}\n\tif (Object.keys(fieldAliases).length) {\n\t\tfallbackMeta.fieldAliases = fieldAliases;\n\t}\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\ttotal,\n\t\tdisplay,\n\t\t...(isSuperAdmin ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: collectionResolution.matched,\n\t\t\t\tcollectionCandidates: collectionResolution.candidates,\n\t\t\t\tcollectionScore: collectionResolution.score,\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: executedQuery,\n\t\t\t\toptions: normalized.findOptions,\n\t\t\t\tincludeTotal: normalized.includeTotal,\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nexport async function executeAiAssistantMongoAggregate(payload: AiAssistantMongoAggregateInput, context: any): Promise<any> {\n\tconst input = payload || ({} as AiAssistantMongoAggregateInput);\n\tconst rawCollection = normalizeOptionalString(input.collection);\n\tif (!rawCollection) {\n\t\tthrow new Error('AI assistant mongo aggregate: Collection is required.');\n\t}\n\tconst dbName = resolveAssistantDatabaseName(input.database, input.mongo);\n\tconst db = ResolveIOServer.getMongoConnection().db(dbName);\n\tconst collectionResolution = await resolveAssistantCollectionName(db, dbName, rawCollection);\n\tconst collection = collectionResolution.name || rawCollection;\n\tconst schemaFields = getCollectionSchemaFieldNames(collection);\n\tconst { user, isSuperAdmin } = await ensureAssistantReadAccess(context, input.permissionView, collection);\n\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {\n\t\tthrow new Error('AI assistant mongo aggregate: Access denied.');\n\t}\n\tconst customerId = normalizeOptionalString(user?.other?.id_customer);\n\tconst fallbackMeta: Record<string, any> = {};\n\n\tlet baseQuery = normalizeMongoQuery(input.query);\n\tif (!isSuperAdmin && customerId) {\n\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(baseQuery, ['id_customer', 'other.id_customer']);\n\t\tbaseQuery = stripped.value;\n\t\tfallbackMeta.scopeStrip = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: stripped.changed\n\t\t};\n\t}\n\tif (!isSuperAdmin && (collection === 'users' || collection === 'user-versions')) {\n\t\tconst userId = normalizeOptionalString(user?._id);\n\t\tif (!userId) {\n\t\t\tthrow new Error('AI assistant mongo aggregate: Access denied.');\n\t\t}\n\t\tbaseQuery = {\n\t\t\t$and: [baseQuery, { _id: userId }]\n\t\t};\n\t}\n\tconst normalizedClient = normalizeOptionalString(input.id_client);\n\tconst shouldScopeByClient = !isSuperAdmin && normalizedClient\n\t\t? await collectionHasClientIndex(db, dbName, collection)\n\t\t: false;\n\tconst clientScopedQuery = shouldScopeByClient\n\t\t? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)\n\t\t: baseQuery;\n\tconst scopedQuery = applyCustomerScopeFilter(clientScopedQuery, collection, customerId, isSuperAdmin);\n\n\tconst normalizedPipeline = normalizeAssistantAggregatePipeline(input.pipeline);\n\tlet sanitizedPipeline = normalizedPipeline;\n\tif (!isSuperAdmin && customerId) {\n\t\tconst strippedPipeline = stripScopedFieldsFromPipelineWithMeta(normalizedPipeline, ['id_customer', 'other.id_customer']);\n\t\tsanitizedPipeline = strippedPipeline.pipeline;\n\t\tfallbackMeta.scopeStripPipeline = {\n\t\t\tattempted: true,\n\t\t\tfields: ['id_customer', 'other.id_customer'],\n\t\t\tused: strippedPipeline.changed\n\t\t};\n\t}\n\tconst pipelineWithScope = buildAssistantAggregatePipeline(scopedQuery, sanitizedPipeline);\n\tconst normalizedOptions = normalizeAssistantAggregateOptions(input.options);\n\tconst limitedPipeline = applyAssistantAggregateLimit(\n\t\tpipelineWithScope,\n\t\tnormalizedOptions.limit,\n\t\tnormalizedOptions.maxLimit,\n\t\tnormalizedOptions.defaultLimit\n\t);\n\tconst dateField = findAggregateDateField(limitedPipeline);\n\tif (containsForbiddenMongoOperators(limitedPipeline)) {\n\t\tthrow new Error('AI assistant mongo aggregate: Pipeline contains restricted operators.');\n\t}\n\n\tconst aggregateOptions = { ...normalizedOptions.aggregateOptions, readPreference: AI_ASSISTANT_READ_PREFERENCE };\n\tlet documents = await db.collection(collection)\n\t\t.aggregate(limitedPipeline, aggregateOptions)\n\t\t.toArray();\n\tlet executedPipeline = limitedPipeline;\n\tlet probeDocs: any[] | null = null;\n\tif (!documents.length && dateField) {\n\t\tconst fallback = resolveAggregateDateFieldFallback(limitedPipeline);\n\t\tif (fallback) {\n\t\t\tfallbackMeta.dateField = { ...fallback, attempted: true, used: false };\n\t\t\tconst fallbackPipeline = replaceAggregateDateField(limitedPipeline, fallback.from, fallback.to);\n\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.dateField.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length && dateField !== 'createdAt') {\n\t\t\tconst createdFallback = { from: dateField, to: 'createdAt', attempted: true, used: false };\n\t\t\tconst createdPipeline = replaceAggregateDateField(limitedPipeline, dateField, 'createdAt');\n\t\t\tfallbackMeta.dateFieldCreatedAt = createdFallback;\n\t\t\tif (!containsForbiddenMongoOperators(createdPipeline)) {\n\t\t\t\tconst createdDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(createdPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (createdDocs.length) {\n\t\t\t\t\tdocuments = createdDocs;\n\t\t\t\t\texecutedPipeline = createdPipeline;\n\t\t\t\t\tfallbackMeta.dateFieldCreatedAt.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst expanded = expandAggregateDateMatchFallback(executedPipeline);\n\t\tif (expanded) {\n\t\t\tfallbackMeta.dateFieldsExpanded = {\n\t\t\t\tfields: expanded.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tif (!containsForbiddenMongoOperators(expanded.pipeline)) {\n\t\t\t\tconst expandedDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(expanded.pipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (expandedDocs.length) {\n\t\t\t\t\tdocuments = expandedDocs;\n\t\t\t\t\texecutedPipeline = expanded.pipeline;\n\t\t\t\t\tfallbackMeta.dateFieldsExpanded.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst completionFallback = resolveAggregateCompletionFallback(executedPipeline);\n\t\tif (completionFallback) {\n\t\t\tfallbackMeta.completion = {\n\t\t\t\tfield: completionFallback.field,\n\t\t\t\tsources: completionFallback.sources,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false,\n\t\t\t\tstatusFilter: !!completionFallback.statusFilter,\n\t\t\t\tstrategy: 'addFields'\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateCompletionFallbackPipeline(executedPipeline, completionFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!documents.length) {\n\t\t\tconst completionExprFallback = resolveAggregateCompletionExprFallback(executedPipeline);\n\t\t\tif (completionExprFallback) {\n\t\t\t\tfallbackMeta.completion = {\n\t\t\t\t\tfield: completionExprFallback.field,\n\t\t\t\t\tsources: completionExprFallback.sources,\n\t\t\t\t\tattempted: true,\n\t\t\t\t\tused: false,\n\t\t\t\t\tstatusFilter: !!completionExprFallback.statusFilter,\n\t\t\t\t\tstrategy: 'expr'\n\t\t\t\t};\n\t\t\t\tconst fallbackPipeline = buildAggregateCompletionExprFallbackPipeline(executedPipeline, completionExprFallback);\n\t\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t\t.toArray();\n\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\t\tfallbackMeta.completion.used = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (documents.length <= 1) {\n\t\tconst unwindFallback = resolveAggregateUnwindFallback(executedPipeline);\n\t\tif (unwindFallback) {\n\t\t\tfallbackMeta.unwind = { path: unwindFallback.path, attempted: true, used: false };\n\t\t\tconst fallbackPipeline = buildAggregateUnwindFallbackPipeline(executedPipeline, unwindFallback);\n\t\t\tif (!containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length > documents.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.unwind.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst nameFallback = resolveAggregateNameMatchFallback(executedPipeline);\n\t\tif (nameFallback) {\n\t\t\tfallbackMeta.nameMatch = {\n\t\t\t\tfield: nameFallback.field,\n\t\t\t\tfields: nameFallback.fields,\n\t\t\t\tattempted: true,\n\t\t\t\tused: false\n\t\t\t};\n\t\t\tconst fallbackPipeline = buildAggregateNameMatchFallbackPipeline(executedPipeline, nameFallback);\n\t\t\tif (fallbackPipeline.length && !containsForbiddenMongoOperators(fallbackPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(fallbackPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = fallbackPipeline;\n\t\t\t\t\tfallbackMeta.nameMatch.used = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection,\n\t\t\tidClient: normalizedClient,\n\t\t\tidCustomer: customerId,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: shouldScopeByClient\n\t\t});\n\t\tfor (let i = 0; i < (executedPipeline || []).length; i += 1) {\n\t\t\tconst stage = executedPipeline[i];\n\t\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst chemicalLookup = await applyChemicalNameLookupFallbackToQuery({\n\t\t\t\tquery: stage.$match,\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: probeDocs || undefined\n\t\t\t});\n\t\t\tif (!chemicalLookup) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfallbackMeta.chemicalLookup = { ...chemicalLookup.meta, attempted: true, used: false, stage: i };\n\t\t\tconst rewrittenPipeline = executedPipeline.map((current, index) => (\n\t\t\t\tindex === i ? { $match: chemicalLookup.query } : current\n\t\t\t));\n\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(rewrittenPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = rewrittenPipeline;\n\t\t\t\t\tfallbackMeta.chemicalLookup.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst matchFields = new Set<string>();\n\t\t(executedPipeline || []).forEach((stage) => {\n\t\t\tif (stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') {\n\t\t\t\textractQueryFieldPaths(stage.$match)\n\t\t\t\t\t.filter(field => !isAssistantIdField(field))\n\t\t\t\t\t.forEach(field => matchFields.add(field));\n\t\t\t}\n\t\t});\n\t\tif (matchFields.size) {\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tif (probeDocs.length) {\n\t\t\t\tconst aliases = resolveFieldAliases(probeDocs, Array.from(matchFields), schemaFields);\n\t\t\t\tif (Object.keys(aliases).length) {\n\t\t\t\t\tfallbackMeta.queryFieldAliases = {\n\t\t\t\t\t\taliases,\n\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\tused: false\n\t\t\t\t\t};\n\t\t\t\t\tconst rewrittenPipeline = Object.entries(aliases)\n\t\t\t\t\t\t.reduce((acc, [from, to]) => replaceFieldPathDeep(acc, from, to), executedPipeline);\n\t\t\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t\t\t.aggregate(rewrittenPipeline, aggregateOptions)\n\t\t\t\t\t\t\t.toArray();\n\t\t\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\t\t\texecutedPipeline = rewrittenPipeline as Array<Record<string, any>>;\n\t\t\t\t\t\t\tfallbackMeta.queryFieldAliases.used = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tfor (let i = 0; i < (executedPipeline || []).length; i += 1) {\n\t\t\tconst stage = executedPipeline[i];\n\t\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t});\n\t\t\tconst idLookup = await applyIdLookupFallbackToQuery({\n\t\t\t\tquery: stage.$match,\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tidClient: normalizedClient,\n\t\t\t\tidCustomer: customerId,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: probeDocs || undefined\n\t\t\t});\n\t\t\tif (!idLookup) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfallbackMeta.idLookup = { ...idLookup.meta, attempted: true, used: false, stage: i };\n\t\t\tconst rewrittenPipeline = executedPipeline.map((current, index) => (\n\t\t\t\tindex === i ? { $match: idLookup.query } : current\n\t\t\t));\n\t\t\tif (!containsForbiddenMongoOperators(rewrittenPipeline)) {\n\t\t\t\tconst fallbackDocs = await db.collection(collection)\n\t\t\t\t\t.aggregate(rewrittenPipeline, aggregateOptions)\n\t\t\t\t\t.toArray();\n\t\t\t\tif (fallbackDocs.length) {\n\t\t\t\t\tdocuments = fallbackDocs;\n\t\t\t\t\texecutedPipeline = rewrittenPipeline;\n\t\t\t\t\tfallbackMeta.idLookup.used = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length) {\n\t\tconst baseCollection = await resolveBaseCollectionFromReport(db, dbName, collection);\n\t\tif (baseCollection && baseCollection !== collection) {\n\t\t\tconst fallbackPayload: AiAssistantMongoAggregateInput = {\n\t\t\t\t...input,\n\t\t\t\tcollection: baseCollection\n\t\t\t};\n\t\t\tconst fallbackResult = await executeAiAssistantMongoAggregate(fallbackPayload, context);\n\t\t\tif (Array.isArray(fallbackResult?.documents) && fallbackResult.documents.length) {\n\t\t\t\tif (isSuperAdmin && fallbackResult?.debug && typeof fallbackResult.debug === 'object') {\n\t\t\t\t\tconst existingFallbacks = fallbackResult.debug.fallbacks && typeof fallbackResult.debug.fallbacks === 'object'\n\t\t\t\t\t\t? fallbackResult.debug.fallbacks\n\t\t\t\t\t\t: {};\n\t\t\t\t\tfallbackResult.debug.fallbacks = {\n\t\t\t\t\t\t...existingFallbacks,\n\t\t\t\t\t\treportFallback: {\n\t\t\t\t\t\t\tfrom: collection,\n\t\t\t\t\t\t\tto: baseCollection,\n\t\t\t\t\t\t\tused: true\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn fallbackResult;\n\t\t\t}\n\t\t\tif (isSuperAdmin) {\n\t\t\t\tfallbackMeta.reportFallback = { from: collection, to: baseCollection, attempted: true, used: false };\n\t\t\t}\n\t\t}\n\t}\n\tif (!documents.length && isSuperAdmin) {\n\t\tconst matchStages = (executedPipeline || []).filter(stage => stage && typeof stage === 'object' && stage.$match && typeof stage.$match === 'object') as Array<{ $match: Record<string, any> }>;\n\t\tconst diagnostics: Record<string, any> = {};\n\t\tif (matchStages.length) {\n\t\t\tconst combinedMatch = matchStages.reduce((acc, stage) => ({ $and: [...(acc.$and || []), stage.$match] }), { $and: [] as any[] });\n\t\t\tconst nameFields = collectMatchFieldsByCondition(\n\t\t\t\tcombinedMatch,\n\t\t\t\t(field, condition) => isRegexMatchCondition(condition)\n\t\t\t\t\t|| (typeof condition === 'string' && shouldApplyAssistantNameRegex(field))\n\t\t\t);\n\t\t\tconst dateFields = collectMatchFieldsByCondition(combinedMatch, (_field, condition) => isDateCondition(condition));\n\t\t\tdiagnostics.nameFields = nameFields.length ? nameFields : undefined;\n\t\t\tdiagnostics.dateFields = dateFields.length ? dateFields : undefined;\n\t\t\ttry {\n\t\t\t\tif (nameFields.length) {\n\t\t\t\t\tconst queryNoName = stripMatchFields(combinedMatch, nameFields);\n\t\t\t\t\tdiagnostics.recentCount = await db.collection(collection).countDocuments(queryNoName, {\n\t\t\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (dateFields.length) {\n\t\t\t\t\tconst queryNoDate = stripMatchFields(combinedMatch, dateFields);\n\t\t\t\t\tdiagnostics.nameMatchCount = await db.collection(collection).countDocuments(queryNoDate, {\n\t\t\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\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 diagnostic count errors.\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tprobeDocs = probeDocs || await fetchAssistantProbeDocs({\n\t\t\t\t\tdb,\n\t\t\t\t\tcollection,\n\t\t\t\t\tidClient: normalizedClient,\n\t\t\t\t\tidCustomer: customerId,\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\tincludeClientScope: shouldScopeByClient\n\t\t\t\t});\n\t\t\t\tif (probeDocs.length && nameFields.length) {\n\t\t\t\t\tdiagnostics.chemicalIdDetected = detectChemicalIdFromProbe(probeDocs, nameFields);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore probe errors.\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst allCollections = await listAssistantCollections(db, dbName);\n\t\t\t\tconst base = stripVersionSuffix(collection.startsWith('report-') ? collection.slice('report-'.length) : collection);\n\t\t\t\tconst alt = collection.startsWith('report-') ? base : `report-${base}`;\n\t\t\t\tif (alt && alt !== collection && allCollections.includes(alt)) {\n\t\t\t\t\tconst altCount = await db.collection(alt).countDocuments({}, { readPreference: AI_ASSISTANT_READ_PREFERENCE });\n\t\t\t\t\tdiagnostics.alternateCollection = alt;\n\t\t\t\t\tdiagnostics.alternateCollectionCount = altCount;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore alternate collection count errors.\n\t\t\t}\n\t\t\tfallbackMeta.zeroDiagnostics = diagnostics;\n\t\t}\n\t}\n\n\tconst sanitizedDocuments = isSuperAdmin\n\t\t? documents\n\t\t: documents.map(doc => redactSensitiveFields(deepCopy(doc)));\n\tconst includeIds = input.options?.includeIds === true;\n\tlet displayDocs = sanitizedDocuments;\n\tconst idLookupDisplay = await applyIdLookupDisplayEnrichment({\n\t\tdocs: displayDocs,\n\t\tcollection,\n\t\tdb,\n\t\tdbName,\n\t\tidClient: normalizedClient,\n\t\tidCustomer: customerId,\n\t\tisSuperAdmin\n\t});\n\tif (idLookupDisplay?.docs) {\n\t\tdisplayDocs = idLookupDisplay.docs;\n\t}\n\tif (idLookupDisplay?.meta) {\n\t\tfallbackMeta.idDisplayLookup = idLookupDisplay.meta;\n\t}\n\tconst display = buildDisplayTable(displayDocs, {\n\t\tincludeIds,\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: normalizedOptions.limit || sanitizedDocuments.length,\n\t\tincludeGroupFromId: true\n\t});\n\n\treturn {\n\t\tdocuments: sanitizedDocuments,\n\t\tdisplay,\n\t\t...(isSuperAdmin ? {\n\t\t\tdebug: {\n\t\t\t\tcollection,\n\t\t\t\tcollectionRequested: rawCollection,\n\t\t\t\tcollectionResolved: collection,\n\t\t\t\tcollectionMatched: collectionResolution.matched,\n\t\t\t\tcollectionCandidates: collectionResolution.candidates,\n\t\t\t\tcollectionScore: collectionResolution.score,\n\t\t\t\tdatabase: dbName,\n\t\t\t\tquery: scopedQuery,\n\t\t\t\toptions: normalizedOptions.aggregateOptions,\n\t\t\t\toriginalPipeline: limitedPipeline,\n\t\t\t\texecutedPipeline,\n\t\t\t\tfallbacks: fallbackMeta\n\t\t\t}\n\t\t} : {})\n\t};\n}\n\nexport function extractAssistantMongoDirective(content: string): AssistantMongoDirective | null {\n\tconst lines = String(content || '').split('\\n');\n\tlet directiveIndex = -1;\n\tlet directiveLine = '';\n\tlet directiveType: AssistantMongoDirective['type'] | null = null;\n\tconst directiveIndexes = new Set<number>();\n\tlines.forEach((line, index) => {\n\t\tconst normalized = line.trim().replace(/^[-*]+\\s*/, '');\n\t\tconst upper = normalized.toUpperCase();\n\t\tif (upper.startsWith('MONGO_READ:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'read';\n\t\t\treturn;\n\t\t}\n\t\tif (upper.startsWith('MONGO_AGG:') || upper.startsWith('MONGO_AGGREGATE:')) {\n\t\t\tdirectiveIndexes.add(index);\n\t\t\tdirectiveIndex = index;\n\t\t\tdirectiveLine = normalized;\n\t\t\tdirectiveType = 'aggregate';\n\t\t}\n\t});\n\tif (directiveIndex === -1 || !directiveType) {\n\t\treturn null;\n\t}\n\tconst colonIndex = directiveLine.indexOf(':');\n\tconst after = colonIndex >= 0 ? directiveLine.slice(colonIndex + 1).trim() : '';\n\tconst parsed = after ? parseJsonObject(after) : null;\n\tconst payload = parsed && typeof parsed === 'object' ? parsed : null;\n\tconst cleaned = lines.filter((_, index) => !directiveIndexes.has(index)).join('\\n').trim();\n\treturn {\n\t\ttype: directiveType,\n\t\tpayload,\n\t\tcleaned,\n\t\trawLine: directiveLine\n\t};\n}\n\nfunction buildAssistantToolRequest(directive: AssistantMongoDirective, payload: AiCodexRunInput): Record<string, any> {\n\tconst base = directive.payload && typeof directive.payload === 'object' ? directive.payload : {};\n\tconst request: Record<string, any> = { ...base };\n\tconst route = normalizeOptionalString(payload?.context?.route);\n\tif (!request.permissionView && route) {\n\t\trequest.permissionView = route;\n\t}\n\tif (!request.id_client) {\n\t\tconst idClient = normalizeOptionalString(payload?.id_client);\n\t\tif (idClient) {\n\t\t\trequest.id_client = idClient;\n\t\t}\n\t}\n\tif (!request.mongo && payload?.mongo) {\n\t\trequest.mongo = payload.mongo;\n\t}\n\treturn request;\n}\n\nfunction buildAssistantToolResultPayload(\n\tdirective: AssistantMongoDirective,\n\ttoolResponse: any\n): { result: AiAssistantToolResult; prompt: string } {\n\tconst directivePayload = directive.payload || {};\n\tconst documents = Array.isArray(toolResponse?.documents) ? toolResponse.documents : [];\n\tconst includeIds = directivePayload?.options?.includeIds === true;\n\tconst display = toolResponse?.display && typeof toolResponse.display === 'object'\n\t\t? toolResponse.display\n\t\t: buildDisplayTable(documents, {\n\t\t\tincludeIds,\n\t\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS,\n\t\t\tincludeGroupFromId: directive.type === 'aggregate'\n\t\t});\n\tconst trimmedDisplay = trimDisplayTable(display, {\n\t\tmaxColumns: AI_ASSISTANT_DISPLAY_MAX_COLUMNS,\n\t\tmaxRows: AI_ASSISTANT_DISPLAY_PREVIEW_MAX_ROWS\n\t});\n\tconst total = typeof toolResponse?.total === 'number' ? toolResponse.total : null;\n\tconst rowCount = documents.length || trimmedDisplay.rowCount;\n\tconst requestedCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst resolvedCollection = normalizeOptionalString(toolResponse?.debug?.collectionResolved)\n\t\t|| normalizeOptionalString(toolResponse?.debug?.collection)\n\t\t|| requestedCollection\n\t\t|| '';\n\tconst result: AiAssistantToolResult = {\n\t\ttype: directive.type === 'aggregate' ? 'mongo_agg' : 'mongo_read',\n\t\tinput: directivePayload,\n\t\toutput: {\n\t\t\tdisplay: trimmedDisplay,\n\t\t\ttotal: total !== null ? total : undefined,\n\t\t\tcollection: resolvedCollection || undefined,\n\t\t\trowCount,\n\t\t\tcolumns: trimmedDisplay.columns,\n\t\t\ttruncated: trimmedDisplay.truncated,\n\t\t\tdebug: toolResponse?.debug && typeof toolResponse.debug === 'object' ? toolResponse.debug : undefined\n\t\t}\n\t};\n\treturn {\n\t\tresult,\n\t\tprompt: buildAssistantToolResultPrompt(result)\n\t};\n}\n\nfunction buildAssistantToolResultPrompt(result: AiAssistantToolResult): string {\n\tconst lines: string[] = ['Tool Result:'];\n\tlines.push(`Type: ${result.type}`);\n\tif (result.output.collection) {\n\t\tlines.push(`Collection: ${result.output.collection}`);\n\t}\n\tlines.push(`Row count: ${result.output.rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`Total: ${result.output.total}`);\n\t}\n\tif (Array.isArray(result.output.columns) && result.output.columns.length) {\n\t\tlines.push(`Columns: ${result.output.columns.join(', ')}`);\n\t}\n\tif (result.output.display?.rows?.length) {\n\t\tlines.push('Preview:');\n\t\tlines.push(formatDisplayTableMarkdown(result.output.display));\n\t}\n\telse {\n\t\tlines.push('Preview: (no rows)');\n\t}\n\treturn lines.join('\\n');\n}\n\nfunction buildAssistantCodexToolFollowupPrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText: string,\n\ttoolResultText: string\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst toolBlock = toolResultText ? `\\n\\nTool Result:\\n${toolResultText}` : '';\n\tconst instruction = '\\n\\nInstruction:\\nNow answer the user. Do NOT output another MONGO_* directive. Output plain Markdown. Summarize first, then include a Markdown table.';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${toolBlock}${instruction}`.trim();\n}\n\nfunction buildAssistantToolFallbackResponse(result: AiAssistantToolResult): string {\n\tconst lines: string[] = ['Here is a data snapshot based on the tool result:'];\n\tif (result.output.collection) {\n\t\tlines.push(`- Collection: ${result.output.collection}`);\n\t}\n\tlines.push(`- Rows returned: ${result.output.rowCount}`);\n\tif (typeof result.output.total === 'number') {\n\t\tlines.push(`- Total: ${result.output.total}`);\n\t}\n\tif (result.output.display?.rows?.length) {\n\t\tlines.push('');\n\t\tlines.push(formatDisplayTableMarkdown(result.output.display));\n\t}\n\treturn lines.join('\\n').trim();\n}\n\nfunction buildAssistantDebugPayload(params: {\n\tdataQuestion: boolean;\n\tdirective: AssistantMongoDirective | null;\n\tdirectiveSource: 'model' | 'forced' | 'none';\n\ttoolResult: AiAssistantToolResult | null;\n\ttoolResponseDebug: Record<string, any> | null;\n\ttoolError: any;\n\tcollectionOverride?: { from: string; to: string; fromScore: number; toScore: number; reason: string } | null;\n\ttrace?: Record<string, any>;\n}): Record<string, any> {\n\tconst notes: string[] = [];\n\tif (params.dataQuestion) {\n\t\tnotes.push('Detected a data request; tool call required.');\n\t}\n\tif (params.directiveSource === 'forced') {\n\t\tnotes.push('Assistant response omitted a MONGO_* directive; ran a directive-only pass.');\n\t}\n\tif (params.collectionOverride?.to) {\n\t\tconst from = params.collectionOverride.from ? `\"${params.collectionOverride.from}\"` : '(none)';\n\t\tconst to = `\"${params.collectionOverride.to}\"`;\n\t\tconst reason = params.collectionOverride.reason ? ` (${params.collectionOverride.reason})` : '';\n\t\tnotes.push(`Collection override: ${from} -> ${to}${reason}.`);\n\t}\n\tconst directive = params.directive;\n\tconst directivePayload = directive?.payload || {};\n\tconst rawCollection = normalizeOptionalString(directivePayload?.collection);\n\tconst debugCollectionRequested = normalizeOptionalString(params.toolResponseDebug?.collectionRequested);\n\tconst debugCollectionResolved = normalizeOptionalString(params.toolResponseDebug?.collectionResolved);\n\tconst debugCollection = normalizeOptionalString(params.toolResponseDebug?.collection);\n\tconst requestedCollection = debugCollectionRequested || rawCollection;\n\tconst resolvedCollection = debugCollectionResolved || debugCollection || requestedCollection;\n\tconst matchedCollection = typeof params.toolResponseDebug?.collectionMatched === 'boolean'\n\t\t? params.toolResponseDebug.collectionMatched\n\t\t: undefined;\n\tconst candidateCollections = Array.isArray(params.toolResponseDebug?.collectionCandidates)\n\t\t? params.toolResponseDebug.collectionCandidates.filter(Boolean)\n\t\t: [];\n\tif (requestedCollection && resolvedCollection && requestedCollection !== resolvedCollection) {\n\t\tnotes.push(`Resolved collection \"${requestedCollection}\" -> \"${resolvedCollection}\".`);\n\t}\n\telse if (matchedCollection === false && candidateCollections.length) {\n\t\tnotes.push(`No direct collection match; candidates: ${candidateCollections.join(', ')}.`);\n\t}\n\tif (params.toolResult?.type === 'mongo_agg') {\n\t\tnotes.push('Used aggregation for grouped/breakdown request.');\n\t}\n\telse if (params.toolResult?.type === 'mongo_read') {\n\t\tnotes.push('Used read query for list/count request.');\n\t}\n\tconst fallbackInfo = params.toolResponseDebug?.fallbacks;\n\tif (fallbackInfo?.dateField?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateField.from} -> ${fallbackInfo.dateField.to}.`);\n\t}\n\tif (fallbackInfo?.dateFieldCreatedAt?.used) {\n\t\tnotes.push(`Retried with date field fallback ${fallbackInfo.dateFieldCreatedAt.from} -> ${fallbackInfo.dateFieldCreatedAt.to}.`);\n\t}\n\tif (fallbackInfo?.completion?.used) {\n\t\tconst sources = Array.isArray(fallbackInfo.completion.sources)\n\t\t\t? fallbackInfo.completion.sources.join(', ')\n\t\t\t: fallbackInfo.completion.field;\n\t\tconst strategy = fallbackInfo.completion.strategy ? ` (${fallbackInfo.completion.strategy})` : '';\n\t\tnotes.push(`Applied completion fallback${strategy}: ${sources}.`);\n\t}\n\tif (fallbackInfo?.dateFieldsExpanded?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.dateFieldsExpanded.fields)\n\t\t\t? fallbackInfo.dateFieldsExpanded.fields.join(', ')\n\t\t\t: String(fallbackInfo.dateFieldsExpanded.fields || '');\n\t\tif (fields) {\n\t\t\tnotes.push(`Expanded date fields: ${fields}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.queryFieldAliases?.used) {\n\t\tconst entries = fallbackInfo.queryFieldAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.queryFieldAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Rewrote query fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.projectionAliases?.used) {\n\t\tconst entries = fallbackInfo.projectionAliases.aliases\n\t\t\t? Object.entries(fallbackInfo.projectionAliases.aliases)\n\t\t\t\t.map(([from, to]) => `${from} -> ${to}`)\n\t\t\t\t.join(', ')\n\t\t\t: '';\n\t\tif (entries) {\n\t\t\tnotes.push(`Expanded projection fields: ${entries}.`);\n\t\t}\n\t}\n\tif (fallbackInfo?.unwind?.used) {\n\t\tnotes.push(`Applied unwind fallback on ${fallbackInfo.unwind.path}.`);\n\t}\n\tif (fallbackInfo?.nameMatch?.used) {\n\t\tconst fields = Array.isArray(fallbackInfo.nameMatch.fields)\n\t\t\t? fallbackInfo.nameMatch.fields.join(', ')\n\t\t\t: fallbackInfo.nameMatch.field;\n\t\tnotes.push(`Expanded name match fields: ${fields}.`);\n\t}\n\tif (fallbackInfo?.chemicalLookup?.used) {\n\t\tconst collection = fallbackInfo.chemicalLookup.collection ? ` in ${fallbackInfo.chemicalLookup.collection}` : '';\n\t\tnotes.push(`Applied chemical lookup${collection}.`);\n\t}\n\tif (fallbackInfo?.reportFallback?.used) {\n\t\tconst from = fallbackInfo.reportFallback.from || 'report';\n\t\tconst to = fallbackInfo.reportFallback.to || 'base';\n\t\tnotes.push(`Report fallback: ${from} -> ${to}.`);\n\t}\n\tif (fallbackInfo?.idLookup?.used) {\n\t\tconst field = fallbackInfo.idLookup.field || 'id';\n\t\tconst strategy = fallbackInfo.idLookup.strategy || 'lookup';\n\t\tconst collection = fallbackInfo.idLookup.collection ? ` in ${fallbackInfo.idLookup.collection}` : '';\n\t\tconst detail = fallbackInfo.idLookup.nameField ? ` via ${fallbackInfo.idLookup.nameField}` : '';\n\t\tnotes.push(`Resolved ${field} by ${strategy}${collection}${detail}.`);\n\t}\n\tif (fallbackInfo?.idDisplayLookup?.used) {\n\t\tconst lookups = Array.isArray(fallbackInfo.idDisplayLookup.lookups)\n\t\t\t? fallbackInfo.idDisplayLookup.lookups\n\t\t\t: [];\n\t\tconst summary = lookups\n\t\t\t.map((entry: any) => entry?.displayField || entry?.field)\n\t\t\t.filter(Boolean)\n\t\t\t.join(', ');\n\t\tnotes.push(summary ? `Resolved id lookups for display: ${summary}.` : 'Resolved id lookups for display.');\n\t}\n\tif (params.toolError) {\n\t\tconst errorMessage = params.toolError?.message || String(params.toolError || '');\n\t\tif (errorMessage) {\n\t\t\tnotes.push(`Tool error: ${errorMessage}`);\n\t\t}\n\t}\n\n\tconst payload: Record<string, any> = {\n\t\tdecision: {\n\t\t\tdataQuestion: params.dataQuestion,\n\t\t\tdirectiveSource: params.directiveSource\n\t\t},\n\t\tdirective: directive ? {\n\t\t\ttype: directive.type,\n\t\t\tpayload: directivePayload,\n\t\t\trawLine: directive.rawLine\n\t\t} : null,\n\t\tcollectionOverride: params.collectionOverride || undefined,\n\t\tcollection: resolvedCollection || requestedCollection || undefined,\n\t\tcollectionRequested: requestedCollection || undefined,\n\t\tcollectionResolved: resolvedCollection || undefined,\n\t\tcollectionMatched: matchedCollection,\n\t\tcollectionCandidates: candidateCollections.length ? candidateCollections : undefined,\n\t\tcollectionScore: typeof params.toolResponseDebug?.collectionScore === 'number'\n\t\t\t? params.toolResponseDebug.collectionScore\n\t\t\t: undefined,\n\t\tquery: params.toolResponseDebug?.query || undefined,\n\t\tpipeline: params.toolResponseDebug?.executedPipeline || params.toolResponseDebug?.originalPipeline || undefined,\n\t\toptions: params.toolResponseDebug?.options || undefined,\n\t\tfallbacks: params.toolResponseDebug?.fallbacks || undefined,\n\t\tnotes\n\t};\n\tif (params.trace && typeof params.trace === 'object') {\n\t\tpayload.trace = params.trace;\n\t}\n\treturn payload;\n}\n\nfunction buildAssistantToolErrorMessage(\n\terror: any,\n\tdirective: AssistantMongoDirective,\n\trequest: Record<string, any>\n): string {\n\tconst rawMessage = normalizeOptionalString(error?.message) || 'Unable to access data.';\n\tconst normalized = rawMessage.toLowerCase();\n\tconst routeHint = normalizeOptionalString(request?.permissionView)\n\t\t|| normalizeOptionalString(directive.payload?.permissionView);\n\tconst collection = normalizeOptionalString(request?.collection) || normalizeOptionalString(directive.payload?.collection);\n\tlet routeLine = routeHint\n\t\t? `Open ${routeHint} in the app to view this data or request access.`\n\t\t: 'Open the related screen in the app to view this data or request access.';\n\tif (!routeHint && collection && requiresInvoicePermission(collection)) {\n\t\trouteLine = 'Open /invoice/list or /report/invoice to view this data or request access.';\n\t}\n\tif (normalized.includes('permission scope required')) {\n\t\treturn `I need a permission scope to access that data. ${routeLine}`;\n\t}\n\tif (normalized.includes('access denied')) {\n\t\tif (collection && requiresInvoicePermission(collection)) {\n\t\t\treturn `Invoice access is required to view that data. ${routeLine}`;\n\t\t}\n\t\treturn `You don't have permission to view that data. ${routeLine}`;\n\t}\n\tif (normalized.includes('database access denied')) {\n\t\treturn `Database access is restricted for that request. ${routeLine}`;\n\t}\n\tif (normalized.includes('collection is required')) {\n\t\treturn 'I need a valid collection to read from. Please specify which screen or dataset you want.';\n\t}\n\treturn `I couldn't access the requested data. ${routeLine}`;\n}\n\nfunction deriveAssistantStreamStatus(event: any): string | null {\n\tif (!event || !event.type) {\n\t\treturn null;\n\t}\n\tif (event.type === 'thread.started' || event.type === 'turn.started') {\n\t\treturn 'Planning';\n\t}\n\tif (event.type === 'turn.completed') {\n\t\treturn 'Drafting response';\n\t}\n\tif (event.type === 'item.started' || event.type === 'item.updated' || event.type === 'item.completed') {\n\t\tconst itemType = String(event?.item?.type || '').trim().toLowerCase();\n\t\tif (!itemType) {\n\t\t\treturn null;\n\t\t}\n\t\tif (itemType === 'mcp_tool_call') {\n\t\t\treturn 'Grabbing Data';\n\t\t}\n\t\tif (itemType === 'command_execution') {\n\t\t\treturn 'Grabbing Data';\n\t\t}\n\t\tif (itemType === 'web_search') {\n\t\t\treturn 'Planning';\n\t\t}\n\t\tif (itemType === 'file_change') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'agent_message') {\n\t\t\treturn 'Drafting response';\n\t\t}\n\t\tif (itemType === 'reasoning') {\n\t\t\treturn 'Planning';\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction createAssistantStreamProgressHandler(progressTracker: CodexProgressTracker): CodexStreamStatusHandler {\n\tlet lastStatus = '';\n\tlet lastSentAt = 0;\n\treturn (status: string) => {\n\t\tconst trimmed = normalizeOptionalString(status);\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst now = Date.now();\n\t\tif (trimmed === lastStatus && now - lastSentAt < 3000) {\n\t\t\treturn;\n\t\t}\n\t\tlastStatus = trimmed;\n\t\tlastSentAt = now;\n\t\tprogressTracker.push(trimmed);\n\t};\n}\n\nfunction normalizeAssistantProgress(items: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst cleaned: string[] = [];\n\titems.forEach((item) => {\n\t\tconst trimmed = String(item || '').trim();\n\t\tif (!trimmed) {\n\t\t\treturn;\n\t\t}\n\t\tconst key = trimmed.toLowerCase();\n\t\tif (seen.has(key)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(key);\n\t\tcleaned.push(trimmed);\n\t});\n\treturn cleaned;\n}\n\nasync function updateAssistantProgress(messageId: any, progress: string[]): Promise<void> {\n\tconst normalized = normalizeAssistantProgress(progress);\n\tif (!messageId || !normalized.length) {\n\t\treturn;\n\t}\n\ttry {\n\t\tawait AiTerminalMessages.updateOne(\n\t\t\t{ _id: messageId, 'metadata.pending': true },\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\t'metadata.pending': true,\n\t\t\t\t\t'metadata.progress': normalized,\n\t\t\t\t\tupdatedAt: new Date()\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\tcatch {\n\t\t// Ignore progress update failures.\n\t}\n}\n\nfunction createAssistantProgressTracker(messageId: any, initialProgress: string[]) {\n\tlet progress = normalizeAssistantProgress(initialProgress);\n\tlet stopped = false;\n\tlet tickIndex = 0;\n\tlet updateScheduled = false;\n\tlet timer: ReturnType<typeof setInterval> | null = null;\n\tconst queueProgressUpdate = () => {\n\t\tif (stopped || !messageId || updateScheduled) {\n\t\t\treturn;\n\t\t}\n\t\tupdateScheduled = true;\n\t\tsetTimeout(async () => {\n\t\t\tupdateScheduled = false;\n\t\t\tif (stopped) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait updateAssistantProgress(messageId, progress);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore progress update failures.\n\t\t\t}\n\t\t}, 0);\n\t};\n\tif (messageId) {\n\t\ttimer = setInterval(() => {\n\t\t\tif (stopped) {\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = null;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (tickIndex >= AI_ASSISTANT_PROGRESS_TICKS.length) {\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = null;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = AI_ASSISTANT_PROGRESS_TICKS[tickIndex++];\n\t\t\tprogress = normalizeAssistantProgress([...progress, next]);\n\t\t\tqueueProgressUpdate();\n\t\t}, AI_ASSISTANT_PROGRESS_TICK_MS);\n\t}\n\treturn {\n\t\tpush: (item: string) => {\n\t\t\tif (stopped || !messageId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprogress = normalizeAssistantProgress([...progress, item]);\n\t\t\tqueueProgressUpdate();\n\t\t},\n\t\tstop: () => {\n\t\t\tstopped = true;\n\t\t\tif (timer) {\n\t\t\t\tclearInterval(timer);\n\t\t\t\ttimer = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction buildAssistantCodexErrorMessage(error: any): string {\n\tconst raw = normalizeOptionalString(error?.message);\n\tif (raw && /timed out/i.test(raw)) {\n\t\treturn 'That took longer than expected. Please try again or narrow the request.';\n\t}\n\treturn 'I ran into an internal error while preparing that response. Please try again.';\n}\n\nfunction isAssistantIdField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized === '_id' || normalized === '__v') {\n\t\treturn true;\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('.');\n\tconst last = parts[parts.length - 1] || '';\n\treturn last.startsWith('id_');\n}\n\nfunction isMongoObjectId(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (typeof value.toHexString === 'function') {\n\t\treturn true;\n\t}\n\treturn value._bsontype === 'ObjectId';\n}\n\nfunction isPlainObject(value: any): boolean {\n\treturn !!value && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nfunction normalizeColumnPriorityKey(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst base = trimmed.includes('.') ? trimmed.split('.').pop() || trimmed : trimmed;\n\treturn base.toLowerCase();\n}\n\nfunction tokenizeFieldKey(value: string): string[] {\n\tconst normalized = String(value || '')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/[^a-zA-Z0-9]+/g, ' ')\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized ? normalized.split(/\\s+/).filter(Boolean) : [];\n}\n\nfunction normalizeFieldMatchKey(value: string): string {\n\treturn tokenizeFieldKey(value).join('');\n}\n\nfunction getCollectionSchemaFieldNames(collectionName: string): string[] {\n\tconst normalized = normalizeOptionalString(collectionName);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\ttry {\n\t\tconst collection = ResolveIOServer.getMongoManager()?.collection(normalized);\n\t\tconst schema = collection?.simplschema;\n\t\tconst fields = schema && typeof schema.schema === 'function'\n\t\t\t? Object.keys(schema.schema())\n\t\t\t: [];\n\t\tconst rbSchema = collection?.rbSchema;\n\t\tif (rbSchema && typeof rbSchema === 'object') {\n\t\t\tObject.keys(rbSchema).forEach((field) => {\n\t\t\t\tif (field && !fields.includes(field)) {\n\t\t\t\t\tfields.push(field);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn fields;\n\t}\n\tcatch {\n\t\treturn [];\n\t}\n}\n\nfunction getCollectionLookupMappings(collectionName: string): Array<{ localKey: string; lookupCollection: string; lookupKey: string }> {\n\tconst normalized = normalizeOptionalString(collectionName);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\ttry {\n\t\tconst collection = ResolveIOServer.getMongoManager()?.collection(normalized);\n\t\tconst rbSchema = collection?.rbSchema;\n\t\tif (!rbSchema || typeof rbSchema !== 'object') {\n\t\t\treturn [];\n\t\t}\n\t\tconst mappings: Array<{ localKey: string; lookupCollection: string; lookupKey: string }> = [];\n\t\tObject.keys(rbSchema).forEach((key) => {\n\t\t\tconst entry = rbSchema[key];\n\t\t\tif (!entry || typeof entry !== 'object') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lookupCollection = normalizeOptionalString(entry.lookup_collection);\n\t\t\tconst localKey = normalizeOptionalString(entry.local_key);\n\t\t\tif (!lookupCollection || !localKey) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lookupKey = normalizeOptionalString(entry.lookup_key) || '_id';\n\t\t\tmappings.push({ localKey, lookupCollection, lookupKey });\n\t\t});\n\t\treturn mappings;\n\t}\n\tcatch {\n\t\treturn [];\n\t}\n}\n\nfunction normalizeLookupPath(value: string): string {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\treturn trimmed\n\t\t.replace(/\\.\\$\\./g, '.')\n\t\t.replace(/\\.\\$/g, '.')\n\t\t.replace(/\\.\\d+\\./g, '.')\n\t\t.replace(/\\.\\d+$/g, '')\n\t\t.replace(/\\.+/g, '.')\n\t\t.replace(/^\\./, '')\n\t\t.replace(/\\.$/, '');\n}\n\nfunction isUnsafeFieldAlias(\n\trequestedTokens: string[],\n\tcandidateTokens: string[]\n): boolean {\n\tconst reqSet = new Set(requestedTokens);\n\tconst candSet = new Set(candidateTokens);\n\tconst hasReqCreated = reqSet.has('created') || reqSet.has('create');\n\tconst hasReqUpdated = reqSet.has('updated') || reqSet.has('update') || reqSet.has('modified') || reqSet.has('modify');\n\tconst hasCandCreated = candSet.has('created') || candSet.has('create');\n\tconst hasCandUpdated = candSet.has('updated') || candSet.has('update') || candSet.has('modified') || candSet.has('modify');\n\tif (hasReqCreated && hasCandUpdated && !hasCandCreated) {\n\t\treturn true;\n\t}\n\tif (hasReqUpdated && hasCandCreated && !hasCandUpdated) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction expandFieldTokens(tokens: string[]): string[] {\n\tconst expanded = new Set<string>();\n\ttokens.forEach((token) => {\n\t\tif (!token) {\n\t\t\treturn;\n\t\t}\n\t\texpanded.add(token);\n\t\tconst synonyms = AI_ASSISTANT_FIELD_TOKEN_SYNONYMS[token];\n\t\tif (Array.isArray(synonyms)) {\n\t\t\tsynonyms.forEach((synonym) => {\n\t\t\t\tif (synonym) {\n\t\t\t\t\texpanded.add(synonym);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn Array.from(expanded);\n}\n\nfunction getValueAtPath(obj: any, path: string): any {\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst parts = String(path || '').split('.').filter(Boolean);\n\tconst walk = (current: any, index: number): any => {\n\t\tif (index >= parts.length) {\n\t\t\treturn current;\n\t\t}\n\t\tconst part = parts[index];\n\t\tif (Array.isArray(current)) {\n\t\t\tconst numeric = Number(part);\n\t\t\tif (!Number.isNaN(numeric) && current[numeric] !== undefined) {\n\t\t\t\treturn walk(current[numeric], index + 1);\n\t\t\t}\n\t\t\tconst values = current.map(entry => walk(entry, index)).filter(value => value !== undefined);\n\t\t\tif (!values.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn values.length === 1 ? values[0] : values;\n\t\t}\n\t\tif (!current || typeof current !== 'object') {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn walk(current[part], index + 1);\n\t};\n\treturn walk(obj, 0);\n}\n\nfunction inferIdFieldStorageTypeFromDocs(\n\tdocs: any[],\n\tfieldPath: string\n): 'objectId' | 'string' | 'unknown' {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn 'unknown';\n\t}\n\tlet sawString = false;\n\tfor (const doc of docs) {\n\t\tconst value = fieldPath.includes('.')\n\t\t\t? getValueAtPath(doc, fieldPath)\n\t\t\t: (doc as any)?.[fieldPath];\n\t\tconst queue = Array.isArray(value) ? value : [value];\n\t\tfor (const entry of queue) {\n\t\t\tif (entry === null || entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isMongoObjectId(entry)) {\n\t\t\t\treturn 'objectId';\n\t\t\t}\n\t\t\tif (typeof entry === 'string' && entry.trim()) {\n\t\t\t\tsawString = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn sawString ? 'string' : 'unknown';\n}\n\nexport function normalizeIdsForTargetField(\n\tids: any[],\n\ttargetDocs: any[],\n\ttargetFieldPath: string,\n\ttargetFieldTypeOverride?: 'objectId' | 'string' | 'unknown'\n): any[] {\n\tif (!Array.isArray(ids) || !ids.length) {\n\t\treturn [];\n\t}\n\tconst targetType = targetFieldTypeOverride\n\t\t|| inferIdFieldStorageTypeFromDocs(targetDocs || [], targetFieldPath);\n\tconst normalized: any[] = [];\n\tconst seenStrings = new Set<string>();\n\tconst seenObjectIds = new Set<string>();\n\tconst pushString = (value: any) => {\n\t\tconst text = String(value || '').trim();\n\t\tif (!text || seenStrings.has(text)) {\n\t\t\treturn;\n\t\t}\n\t\tseenStrings.add(text);\n\t\tnormalized.push(text);\n\t};\n\tconst pushObjectId = (value: any) => {\n\t\tif (!isMongoObjectId(value)) {\n\t\t\treturn;\n\t\t}\n\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\tif (!hex || seenObjectIds.has(hex)) {\n\t\t\treturn;\n\t\t}\n\t\tseenObjectIds.add(hex);\n\t\tnormalized.push(value);\n\t};\n\tids.forEach((value) => {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'string') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\t\tpushString(hex);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tif (targetType === 'objectId') {\n\t\t\tif (isMongoObjectId(value)) {\n\t\t\t\tpushObjectId(value);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\t\ttry {\n\t\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isMongoObjectId(value)) {\n\t\t\tpushObjectId(value);\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value || '');\n\t\t\tif (hex) {\n\t\t\t\tpushString(hex);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\t\ttry {\n\t\t\t\tpushObjectId(new ObjectId(value));\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// Ignore invalid object id conversions.\n\t\t\t}\n\t\t\tpushString(value);\n\t\t\treturn;\n\t\t}\n\t\tpushString(value);\n\t});\n\treturn normalized;\n}\n\nfunction normalizeLookupKeyValue(value: any): string {\n\tif (value === null || value === undefined) {\n\t\treturn '';\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn typeof value.toHexString === 'function' ? value.toHexString() : String(value);\n\t}\n\tif (typeof value === 'string') {\n\t\treturn value.trim();\n\t}\n\treturn '';\n}\n\nfunction collectTopLevelIdFieldValues(\n\tdocs: any[],\n\toptions?: { maxFields?: number; maxIds?: number }\n): Array<{ field: string; values: any[] }> {\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn [];\n\t}\n\tconst maxFields = typeof options?.maxFields === 'number'\n\t\t? Math.max(options.maxFields, 0)\n\t\t: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS;\n\tconst maxIds = typeof options?.maxIds === 'number'\n\t\t? Math.max(options.maxIds, 0)\n\t\t: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS;\n\tconst fieldMap = new Map<string, Set<any>>();\n\tfor (const doc of docs) {\n\t\tif (!doc || typeof doc !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst keys = Object.keys(doc);\n\t\tfor (const key of keys) {\n\t\t\tif (!key || key === '_id' || key === '__v') {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isAssistantIdField(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = (doc as any)[key];\n\t\t\tconst values = Array.isArray(value) ? value : [value];\n\t\t\tif (!fieldMap.has(key)) {\n\t\t\t\tif (maxFields && fieldMap.size >= maxFields) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfieldMap.set(key, new Set<any>());\n\t\t\t}\n\t\t\tconst bucket = fieldMap.get(key);\n\t\t\tif (!bucket) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalues.forEach((entry) => {\n\t\t\t\tif (entry === null || entry === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (bucket.size >= maxIds) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbucket.add(entry);\n\t\t\t});\n\t\t}\n\t}\n\treturn Array.from(fieldMap.entries()).map(([field, values]) => ({\n\t\tfield,\n\t\tvalues: Array.from(values)\n\t}));\n}\n\nfunction resolveLookupDisplayField(\n\tbaseToken: string,\n\tprobeDocs: any[],\n\tschemaFields?: string[]\n): string | null {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tif (!normalizedBase) {\n\t\treturn null;\n\t}\n\tconst candidates = buildNameLookupFields(normalizedBase, probeDocs || []);\n\tconst schema = Array.isArray(schemaFields) ? schemaFields : [];\n\tif (schema.length) {\n\t\tconst schemaCandidates = candidates.filter(candidate => schema.includes(candidate));\n\t\tif (schemaCandidates.length) {\n\t\t\tfor (const candidate of schemaCandidates) {\n\t\t\t\tif (hasNonEmptyValue(probeDocs || [], candidate, { treatObjectLikeAsEmpty: true })) {\n\t\t\t\t\treturn candidate;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn schemaCandidates[0];\n\t\t}\n\t}\n\tfor (const candidate of candidates) {\n\t\tif (hasNonEmptyValue(probeDocs || [], candidate, { treatObjectLikeAsEmpty: true })) {\n\t\t\treturn candidate;\n\t\t}\n\t}\n\treturn candidates.length ? candidates[0] : null;\n}\n\nfunction resolveLookupMappingsForField(\n\tfield: string,\n\tmappings: Array<{ localKey: string; lookupCollection: string; lookupKey: string }>\n): Array<{ localKey: string; lookupCollection: string; lookupKey: string }> {\n\tconst normalizedField = normalizeLookupPath(field);\n\tif (!normalizedField) {\n\t\treturn [];\n\t}\n\treturn mappings.filter((mapping) => normalizeLookupPath(mapping.localKey) === normalizedField);\n}\n\nasync function applyIdLookupDisplayEnrichment(params: {\n\tdocs: any[];\n\tcollection: string;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n}): Promise<{ docs: any[]; meta?: Record<string, any> }> {\n\tconst { docs, collection, db, dbName, idClient, idCustomer, isSuperAdmin } = params;\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn { docs };\n\t}\n\tconst idFields = collectTopLevelIdFieldValues(docs, {\n\t\tmaxFields: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_FIELDS,\n\t\tmaxIds: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS\n\t});\n\tif (!idFields.length) {\n\t\treturn { docs };\n\t}\n\tconst lookupMappings = getCollectionLookupMappings(collection);\n\tconst allCollections = await listAssistantCollections(db, dbName);\n\tconst collectionProbeCache = new Map<string, any[]>();\n\tconst collectionSchemaCache = new Map<string, string[]>();\n\tconst lookupMeta: Array<Record<string, any>> = [];\n\tlet enrichedDocs = docs.map(doc => ({ ...doc }));\n\n\tfor (const fieldEntry of idFields) {\n\t\tconst values = fieldEntry.values || [];\n\t\tif (!values.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseToken = normalizeIdFieldBase(fieldEntry.field);\n\t\tif (!baseToken) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst mappingMatches = resolveLookupMappingsForField(fieldEntry.field, lookupMappings);\n\t\tconst candidateCollections = mappingMatches.length\n\t\t\t? mappingMatches.map(entry => entry.lookupCollection)\n\t\t\t: resolveIdLookupCandidates(baseToken, allCollections);\n\t\tconst filteredCandidates = candidateCollections\n\t\t\t.filter(candidate => !!candidate)\n\t\t\t.filter(candidate => candidate !== collection)\n\t\t\t.filter(candidate => !candidate.endsWith('.versions'))\n\t\t\t.filter(candidate => isSuperAdmin || !AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate))\n\t\t\t.slice(0, AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_COLLECTIONS);\n\t\tif (!filteredCandidates.length) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const candidate of filteredCandidates) {\n\t\t\tlet probeDocs = collectionProbeCache.get(candidate);\n\t\t\tif (!probeDocs) {\n\t\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t\t: false;\n\t\t\t\tprobeDocs = await fetchAssistantProbeDocs({\n\t\t\t\t\tdb,\n\t\t\t\t\tcollection: candidate,\n\t\t\t\t\tidClient,\n\t\t\t\t\tidCustomer,\n\t\t\t\t\tisSuperAdmin,\n\t\t\t\t\tincludeClientScope: candidateHasClientScope\n\t\t\t\t});\n\t\t\t\tcollectionProbeCache.set(candidate, probeDocs);\n\t\t\t}\n\t\t\tconst schemaFields = collectionSchemaCache.get(candidate)\n\t\t\t\t|| getCollectionSchemaFieldNames(candidate);\n\t\t\tcollectionSchemaCache.set(candidate, schemaFields);\n\n\t\t\tconst nameField = resolveLookupDisplayField(baseToken, probeDocs, schemaFields);\n\t\t\tif (!nameField) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst mapping = mappingMatches.find(entry => entry.lookupCollection === candidate);\n\t\t\tconst lookupKey = normalizeOptionalString(mapping?.lookupKey) || '_id';\n\t\t\tconst idsForQuery = normalizeIdsForTargetField(values, probeDocs, lookupKey);\n\t\t\tif (!idsForQuery.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet query: Record<string, any> = { [lookupKey]: { $in: idsForQuery } };\n\t\t\tif (!isSuperAdmin) {\n\t\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t\t: false;\n\t\t\t\tif (candidateHasClientScope) {\n\t\t\t\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t\t\t\t}\n\t\t\t\tquery = applyCustomerScopeFilter(query, candidate, idCustomer, isSuperAdmin);\n\t\t\t}\n\t\t\tconst lookupDocs = await db.collection(candidate).find(query, {\n\t\t\t\tprojection: { [lookupKey]: 1, [nameField]: 1 },\n\t\t\t\tlimit: AI_ASSISTANT_ID_DISPLAY_LOOKUP_MAX_IDS,\n\t\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t\t}).toArray();\n\t\t\tif (!lookupDocs.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst nameMap = new Map<string, any>();\n\t\t\tlookupDocs.forEach((doc: any) => {\n\t\t\t\tconst key = normalizeLookupKeyValue(getValueAtPath(doc, lookupKey) ?? doc?.[lookupKey]);\n\t\t\t\tif (!key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nameValue = getValueAtPath(doc, nameField) ?? doc?.[nameField];\n\t\t\t\tif (isEmptyDisplayValue(nameValue)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!nameMap.has(key)) {\n\t\t\t\t\tnameMap.set(key, nameValue);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!nameMap.size) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst displayField = baseToken;\n\t\t\tenrichedDocs = enrichedDocs.map((doc: any) => {\n\t\t\t\tconst rawValue = doc?.[fieldEntry.field];\n\t\t\t\tif (rawValue === undefined || rawValue === null) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\tif (!displayField || !isEmptyDisplayValue(doc?.[displayField])) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\tconst valuesToResolve = Array.isArray(rawValue) ? rawValue : [rawValue];\n\t\t\t\tconst resolved = valuesToResolve\n\t\t\t\t\t.map(value => nameMap.get(normalizeLookupKeyValue(value)))\n\t\t\t\t\t.filter(value => !isEmptyDisplayValue(value));\n\t\t\t\tif (!resolved.length) {\n\t\t\t\t\treturn doc;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...doc,\n\t\t\t\t\t[displayField]: resolved.length === 1 ? resolved[0] : resolved\n\t\t\t\t};\n\t\t\t});\n\t\t\tlookupMeta.push({\n\t\t\t\tfield: fieldEntry.field,\n\t\t\t\tdisplayField,\n\t\t\t\tcollection: candidate,\n\t\t\t\tnameField,\n\t\t\t\tidCount: values.length,\n\t\t\t\tmatched: nameMap.size,\n\t\t\t\tstrategy: mapping ? 'schema' : 'token'\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!lookupMeta.length) {\n\t\treturn { docs: enrichedDocs };\n\t}\n\treturn {\n\t\tdocs: enrichedDocs,\n\t\tmeta: {\n\t\t\tattempted: true,\n\t\t\tused: true,\n\t\t\tlookups: lookupMeta\n\t\t}\n\t};\n}\n\nfunction hasNonEmptyValue(\n\tdocs: any[],\n\tfieldPath: string,\n\toptions?: { treatObjectLikeAsEmpty?: boolean }\n): boolean {\n\tif (!Array.isArray(docs) || !fieldPath) {\n\t\treturn false;\n\t}\n\tconst usePath = fieldPath.includes('.');\n\tfor (const doc of docs) {\n\t\tconst value = usePath ? getValueAtPath(doc, fieldPath) : (doc as any)?.[fieldPath];\n\t\tif (options?.treatObjectLikeAsEmpty && isDisplayObjectLike(value)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\ntype FieldCandidateStats = {\n\tnonEmpty: number;\n\tobjectLike: number;\n\tnormalized: string;\n};\n\nfunction collectFieldCandidates(docs: any[]): Map<string, FieldCandidateStats> {\n\tconst candidates = new Map<string, FieldCandidateStats>();\n\tif (!Array.isArray(docs)) {\n\t\treturn candidates;\n\t}\n\tconst addCandidate = (path: string, value: any) => {\n\t\tif (!path) {\n\t\t\treturn;\n\t\t}\n\t\tconst entry = candidates.get(path) || {\n\t\t\tnonEmpty: 0,\n\t\t\tobjectLike: 0,\n\t\t\tnormalized: normalizeFieldMatchKey(path)\n\t\t};\n\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\tentry.nonEmpty += 1;\n\t\t}\n\t\tif (isDisplayObjectLike(value)) {\n\t\t\tentry.objectLike += 1;\n\t\t}\n\t\tcandidates.set(path, entry);\n\t};\n\tdocs.forEach((doc) => {\n\t\tif (!doc || typeof doc !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(doc).forEach((key) => {\n\t\t\tif (!key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = (doc as any)[key];\n\t\t\taddCandidate(key, value);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tconst nestedSamples = value.filter(entry => isPlainObject(entry)).slice(0, 3);\n\t\t\t\tnestedSamples.forEach((entry) => {\n\t\t\t\t\tObject.keys(entry).slice(0, 50).forEach((nestedKey) => {\n\t\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (entry as any)[nestedKey]);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\t\tconst nestedKeys = Object.keys(value).slice(0, 50);\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\taddCandidate(`${key}.${nestedKey}`, (value as any)[nestedKey]);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\treturn candidates;\n}\n\nfunction resolveFieldAliases(docs: any[], requestedFields: string[], schemaFields?: string[]): Record<string, string> {\n\tconst aliases: Record<string, string> = {};\n\tif (!Array.isArray(docs) || !requestedFields.length) {\n\t\treturn aliases;\n\t}\n\tconst missing = requestedFields.filter(field => field && !hasNonEmptyValue(docs, field, { treatObjectLikeAsEmpty: true }));\n\tif (!missing.length) {\n\t\treturn aliases;\n\t}\n\tconst candidates = collectFieldCandidates(docs);\n\tconst schemaFieldList = Array.isArray(schemaFields) ? schemaFields.filter(Boolean) : [];\n\tconst candidateFieldList = schemaFieldList.length ? schemaFieldList : Array.from(candidates.keys());\n\tmissing.forEach((field) => {\n\t\tconst normalizedRequested = normalizeFieldMatchKey(field);\n\t\tif (!normalizedRequested) {\n\t\t\treturn;\n\t\t}\n\t\tconst requestedBaseTokens = tokenizeFieldKey(field);\n\t\tconst requestedHasType = requestedBaseTokens.includes('type');\n\t\tconst hasNonTypeCandidate = requestedBaseTokens.length\n\t\t\t? candidateFieldList.some((candidateField) => {\n\t\t\t\tconst tokens = tokenizeFieldKey(candidateField);\n\t\t\t\tif (tokens.includes('type')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn requestedBaseTokens.some(token => tokens.includes(token));\n\t\t\t})\n\t\t\t: false;\n\t\tlet bestPath = '';\n\t\tlet bestScore = 0;\n\t\tcandidates.forEach((stats, path) => {\n\t\t\tif (!path || stats.nonEmpty === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isAssistantIdField(path)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst candidateTokens = tokenizeFieldKey(path);\n\t\t\tif (isUnsafeFieldAlias(requestedBaseTokens, candidateTokens)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!requestedHasType && candidateTokens.includes('type') && hasNonTypeCandidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst normalizedCandidate = stats.normalized || normalizeFieldMatchKey(path);\n\t\t\tif (!normalizedCandidate) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet score = 0;\n\t\t\tif (normalizedCandidate === normalizedRequested) {\n\t\t\t\tscore = 100;\n\t\t\t}\n\t\t\telse if (normalizedCandidate.includes(normalizedRequested) || normalizedRequested.includes(normalizedCandidate)) {\n\t\t\t\tscore = 70;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst requestedTokens = expandFieldTokens(requestedBaseTokens);\n\t\t\t\tconst overlap = requestedTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tconst baseOverlap = requestedBaseTokens.filter(token => candidateTokens.includes(token)).length;\n\t\t\t\tif (overlap > 0) {\n\t\t\t\t\tscore = 40 + overlap * 10;\n\t\t\t\t\tif (baseOverlap === 0) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t\tif (requestedBaseTokens.length <= 2) {\n\t\t\t\t\t\tscore += 10;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst objectRatio = stats.objectLike / Math.max(stats.nonEmpty, 1);\n\t\t\tif (objectRatio > 0.5) {\n\t\t\t\tscore -= 50;\n\t\t\t}\n\t\t\tif (score > bestScore) {\n\t\t\t\tbestScore = score;\n\t\t\t\tbestPath = path;\n\t\t\t}\n\t\t});\n\t\tif (bestPath && bestScore >= 60) {\n\t\t\taliases[field] = bestPath;\n\t\t}\n\t});\n\treturn aliases;\n}\n\nfunction applyFieldAliasesForDisplay(docs: any[], aliases: Record<string, string>): any[] {\n\tif (!Array.isArray(docs) || !aliases || !Object.keys(aliases).length) {\n\t\treturn docs;\n\t}\n\treturn docs.map((doc) => {\n\t\tconst next = { ...doc } as Record<string, any>;\n\t\tObject.keys(aliases).forEach((targetField) => {\n\t\t\tconst sourcePath = aliases[targetField];\n\t\t\tif (!sourcePath) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst existing = targetField.includes('.') ? getValueAtPath(doc, targetField) : (doc as any)?.[targetField];\n\t\t\tif (!isEmptyDisplayValue(existing)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst value = getValueAtPath(doc, sourcePath);\n\t\t\tif (value !== undefined) {\n\t\t\t\tnext[targetField] = value;\n\t\t\t}\n\t\t});\n\t\treturn next;\n\t});\n}\n\nfunction resolveProjectionRequestedFields(projection?: Record<string, number | boolean>): string[] {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn [];\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn [];\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (!hasInclude || hasExclude) {\n\t\treturn [];\n\t}\n\treturn keys.filter(key => !isAssistantIdField(key));\n}\n\nfunction isInclusiveProjection(projection?: Record<string, number | boolean>): boolean {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn false;\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn false;\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\treturn hasInclude && !hasExclude;\n}\n\nfunction expandProjectionWithAliases(\n\tprojection: Record<string, number | boolean> | undefined,\n\taliases: Record<string, string>\n): Record<string, number | boolean> | undefined {\n\tif (!projection || !isInclusiveProjection(projection) || !aliases || !Object.keys(aliases).length) {\n\t\treturn projection;\n\t}\n\tconst next = { ...projection } as Record<string, number | boolean>;\n\tObject.keys(aliases).forEach((target) => {\n\t\tconst source = aliases[target];\n\t\tif (!source) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Object.prototype.hasOwnProperty.call(next, source)) {\n\t\t\tnext[source] = 1;\n\t\t}\n\t});\n\treturn next;\n}\n\nfunction collectQueryFieldPaths(value: any, fields: Set<string>): void {\n\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectQueryFieldPaths(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectQueryFieldPaths(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tfields.add(key);\n\t\tif (entry && typeof entry === 'object' && !Array.isArray(entry) && !isMongoObjectId(entry) && !(entry instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(entry).filter(nested => !nested.startsWith('$'));\n\t\t\tnestedKeys.forEach((nested) => {\n\t\t\t\tfields.add(`${key}.${nested}`);\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction extractQueryFieldPaths(query: any): string[] {\n\tconst fields = new Set<string>();\n\tcollectQueryFieldPaths(query, fields);\n\treturn Array.from(fields).filter(Boolean);\n}\n\nfunction replaceFieldPathDeep(value: any, fromField: string, toField: string): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => replaceFieldPathDeep(entry, fromField, toField));\n\t}\n\tif (value instanceof Date || isMongoObjectId(value)) {\n\t\treturn value;\n\t}\n\tif (value && typeof value === 'object') {\n\t\tconst next: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\tnext[nextKey] = replaceFieldPathDeep(value[key], fromField, toField);\n\t\t});\n\t\treturn next;\n\t}\n\tif (typeof value === 'string') {\n\t\tif (value.startsWith(`$${fromField}`)) {\n\t\t\treturn `$${toField}${value.slice(fromField.length + 1)}`;\n\t\t}\n\t\treturn value;\n\t}\n\treturn value;\n}\n\nfunction replaceQueryFieldCondition(query: any, field: string, condition: any): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => replaceQueryFieldCondition(entry, field, condition));\n\t}\n\tif (!query || typeof query !== 'object') {\n\t\treturn query;\n\t}\n\tconst next: Record<string, any> = { ...query };\n\tObject.keys(next).forEach((key) => {\n\t\tif (key === field) {\n\t\t\tnext[key] = condition;\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tnext[key] = replaceQueryFieldCondition(next[key], field, condition);\n\t\t\treturn;\n\t\t}\n\t\tif (next[key] && typeof next[key] === 'object') {\n\t\t\tnext[key] = replaceQueryFieldCondition(next[key], field, condition);\n\t\t}\n\t});\n\treturn next;\n}\n\nfunction formatDisplayColumnName(column: string): string {\n\tconst trimmed = String(column || '').trim();\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tif (trimmed === '_id') {\n\t\treturn 'id';\n\t}\n\tif (trimmed === '_group') {\n\t\treturn 'Group';\n\t}\n\tconst normalized = trimmed.replace(/[\\s_]+/g, '').toLowerCase();\n\tif (normalized === 'createdat') {\n\t\treturn 'Created At';\n\t}\n\tif (normalized === 'updatedat') {\n\t\treturn 'Updated At';\n\t}\n\tconst parts = trimmed.split('.');\n\tconst base = parts[parts.length - 1] || trimmed;\n\tif ((base === 'name' || base === 'title' || base === 'label') && parts.length > 1) {\n\t\treturn parts[parts.length - 2]\n\t\t\t.replace(/[_-]+/g, ' ')\n\t\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t.trim()\n\t\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n\t}\n\treturn base\n\t\t.replace(/[_-]+/g, ' ')\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n\t\t.replace(/\\s+/g, ' ')\n\t\t.trim()\n\t\t.replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n\nfunction truncateDisplayText(value: string, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string {\n\tif (!value) {\n\t\treturn value;\n\t}\n\tif (value.length <= maxLength) {\n\t\treturn value;\n\t}\n\tconst sliceLength = Math.max(0, maxLength - 3);\n\treturn `${value.slice(0, sliceLength)}...`;\n}\n\nexport function serializeMongoValue(value: any, maxLength = AI_ASSISTANT_DISPLAY_STRING_LIMIT): string | number | boolean | null {\n\tif (value === null || value === undefined) {\n\t\treturn null;\n\t}\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn truncateDisplayText(value, maxLength);\n\t}\n\tif (value instanceof Date) {\n\t\treturn value.toISOString();\n\t}\n\tif (isMongoObjectId(value)) {\n\t\ttry {\n\t\t\tconst hex = typeof value.toHexString === 'function' ? value.toHexString() : String(value);\n\t\t\tconst shortened = hex.length > 8 ? hex.slice(0, 8) : hex;\n\t\t\treturn truncateDisplayText(shortened, maxLength);\n\t\t}\n\t\tcatch {\n\t\t\treturn truncateDisplayText(String(value), maxLength);\n\t\t}\n\t}\n\tif (Array.isArray(value)) {\n\t\tconst preview = value.slice(0, 3).map(entry => serializeMongoValue(entry, maxLength));\n\t\tconst compact = preview.map(entry => (entry === null || entry === undefined) ? '' : String(entry)).join(', ');\n\t\tconst suffix = value.length > 3 ? ', ...' : '';\n\t\treturn truncateDisplayText(`[${compact}${suffix}]`, maxLength);\n\t}\n\tif (typeof value === 'object') {\n\t\tlet text = '';\n\t\ttry {\n\t\t\ttext = JSON.stringify(value);\n\t\t}\n\t\tcatch {\n\t\t\ttext = String(value);\n\t\t}\n\t\tif (!text || text === '[object Object]') {\n\t\t\ttry {\n\t\t\t\ttext = JSON.stringify(value, null, 2);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\ttext = String(value);\n\t\t\t}\n\t\t}\n\t\treturn truncateDisplayText(text, maxLength);\n\t}\n\treturn truncateDisplayText(String(value), maxLength);\n}\n\nexport function flattenForTable(\n\tdoc: any,\n\toptions?: { includeGroupFromId?: boolean; includeIds?: boolean }\n): Record<string, any> {\n\tconst result: Record<string, any> = {};\n\tif (!doc || typeof doc !== 'object') {\n\t\treturn result;\n\t}\n\tif (Object.prototype.hasOwnProperty.call(doc, '_id')) {\n\t\tconst idValue = (doc as any)._id;\n\t\tif (options?.includeIds) {\n\t\t\tresult._id = idValue;\n\t\t}\n\t\tif (options?.includeGroupFromId && idValue !== null && idValue !== undefined) {\n\t\t\tif (isPlainObject(idValue) && !isMongoObjectId(idValue) && !(idValue instanceof Date)) {\n\t\t\t\tObject.keys(idValue).forEach((key) => {\n\t\t\t\t\tif (!key || Object.prototype.hasOwnProperty.call(result, key)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = (idValue as any)[key];\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (!Object.prototype.hasOwnProperty.call(result, '_group')) {\n\t\t\t\tresult._group = idValue;\n\t\t\t}\n\t\t}\n\t}\n\tObject.keys(doc).forEach((key) => {\n\t\tif (key === '_id') {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (doc as any)[key];\n\t\tif (value === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (isPlainObject(value) && !isMongoObjectId(value) && !(value instanceof Date)) {\n\t\t\tconst nestedKeys = Object.keys(value);\n\t\t\tif (nestedKeys.length && nestedKeys.length <= 6) {\n\t\t\t\tnestedKeys.forEach((nestedKey) => {\n\t\t\t\t\tif (!nestedKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst nestedValue = (value as any)[nestedKey];\n\t\t\t\t\tif (nestedValue === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresult[`${key}.${nestedKey}`] = nestedValue;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nexport function buildDisplayTable(\n\tdocs: any[],\n\toptions?: {\n\t\tmaxColumns?: number;\n\t\tmaxRows?: number;\n\t\tincludeIds?: boolean;\n\t\tpriorityFields?: string[];\n\t\tincludeGroupFromId?: boolean;\n\t}\n): AiAssistantDisplayTable {\n\tconst rowsRaw = Array.isArray(docs)\n\t\t? docs.map(doc => flattenForTable(doc, {\n\t\t\tincludeIds: options?.includeIds === true,\n\t\t\tincludeGroupFromId: options?.includeGroupFromId === true\n\t\t}))\n\t\t: [];\n\tconst stats = new Map<string, { nonEmpty: number; objectLike: number }>();\n\trowsRaw.forEach((row) => {\n\t\tObject.keys(row).forEach((key) => {\n\t\t\tconst value = (row as any)[key];\n\t\t\tconst entry = stats.get(key) || { nonEmpty: 0, objectLike: 0 };\n\t\t\tif (!isEmptyDisplayValue(value)) {\n\t\t\t\tentry.nonEmpty += 1;\n\t\t\t}\n\t\t\tif (isDisplayObjectLike(value)) {\n\t\t\t\tentry.objectLike += 1;\n\t\t\t}\n\t\t\tstats.set(key, entry);\n\t\t});\n\t});\n\n\tlet columns = Array.from(stats.keys()).filter((key) => {\n\t\tconst entry = stats.get(key);\n\t\tif (!entry || entry.nonEmpty === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!options?.includeIds && isAssistantIdField(key)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (entry.objectLike / Math.max(entry.nonEmpty, 1) > 0.5) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tif (!columns.length && rowsRaw.length) {\n\t\tcolumns = Object.keys(rowsRaw[0] || {}).filter(key => options?.includeIds || !isAssistantIdField(key));\n\t}\n\n\tconst priorityFields = options?.priorityFields || AI_ASSISTANT_DISPLAY_PRIORITY_FIELDS;\n\tconst priorityMap = new Map(priorityFields.map((field, index) => [field.toLowerCase(), index]));\n\tcolumns.sort((a, b) => {\n\t\tconst aPriority = priorityMap.get(normalizeColumnPriorityKey(a)) ?? 999;\n\t\tconst bPriority = priorityMap.get(normalizeColumnPriorityKey(b)) ?? 999;\n\t\tif (aPriority !== bPriority) {\n\t\t\treturn aPriority - bPriority;\n\t\t}\n\t\tconst aCount = stats.get(a)?.nonEmpty || 0;\n\t\tconst bCount = stats.get(b)?.nonEmpty || 0;\n\t\tif (aCount !== bCount) {\n\t\t\treturn bCount - aCount;\n\t\t}\n\t\treturn a.localeCompare(b);\n\t});\n\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: AI_ASSISTANT_DISPLAY_MAX_COLUMNS;\n\tif (maxColumns && columns.length > maxColumns) {\n\t\tcolumns = columns.slice(0, maxColumns);\n\t}\n\tconst columnLabels = columns.map(column => formatDisplayColumnName(column) || column);\n\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsRaw.length;\n\tconst limitedRows = maxRows ? rowsRaw.slice(0, maxRows) : [];\n\tconst rows = limitedRows.map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column, index) => {\n\t\t\tconst label = columnLabels[index] || column;\n\t\t\tnext[label] = serializeMongoValue((row as any)[column]);\n\t\t});\n\t\treturn next;\n\t});\n\n\treturn {\n\t\tcolumns: columnLabels,\n\t\trows,\n\t\trowCount: rowsRaw.length,\n\t\ttruncated: rowsRaw.length > maxRows || columns.length > maxColumns,\n\t\tincludeIds: options?.includeIds === true\n\t};\n}\n\nfunction trimDisplayTable(\n\tdisplay: AiAssistantDisplayTable,\n\toptions?: { maxColumns?: number; maxRows?: number }\n): AiAssistantDisplayTable {\n\tif (!display || !Array.isArray(display.columns)) {\n\t\treturn display;\n\t}\n\tconst rowsSource = Array.isArray(display.rows) ? display.rows : [];\n\tconst maxColumns = typeof options?.maxColumns === 'number'\n\t\t? Math.max(options.maxColumns, 0)\n\t\t: display.columns.length;\n\tconst maxRows = typeof options?.maxRows === 'number'\n\t\t? Math.max(options.maxRows, 0)\n\t\t: rowsSource.length;\n\tconst columns = maxColumns ? display.columns.slice(0, maxColumns) : [];\n\tconst rows = maxRows ? rowsSource.slice(0, maxRows).map((row) => {\n\t\tconst next: Record<string, any> = {};\n\t\tcolumns.forEach((column) => {\n\t\t\tnext[column] = (row as any)?.[column];\n\t\t});\n\t\treturn next;\n\t}) : [];\n\treturn {\n\t\t...display,\n\t\tcolumns,\n\t\trows,\n\t\ttruncated: display.truncated || display.columns.length > maxColumns || rowsSource.length > maxRows\n\t};\n}\n\nexport function formatDisplayTableMarkdown(display: AiAssistantDisplayTable): string {\n\tif (!display || !Array.isArray(display.columns) || !display.columns.length) {\n\t\treturn '';\n\t}\n\tconst header = `| ${display.columns.join(' | ')} |`;\n\tconst separator = `| ${display.columns.map(() => '---').join(' | ')} |`;\n\tconst rows = (display.rows || []).map((row) => {\n\t\tconst cells = display.columns.map((column) => escapeMarkdownCell((row as any)?.[column]));\n\t\treturn `| ${cells.join(' | ')} |`;\n\t});\n\treturn [header, separator, ...rows].join('\\n').trim();\n}\n\nfunction escapeMarkdownCell(value: any): string {\n\tconst raw = value === null || value === undefined ? '' : String(value);\n\treturn raw.replace(/\\|/g, '\\\\|').replace(/\\r?\\n/g, ' ').trim();\n}\n\nfunction isEmptyDisplayValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !value.trim();\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\treturn false;\n}\n\nfunction isDisplayObjectLike(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn false;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn false;\n\t}\n\treturn typeof value === 'object';\n}\n\nasync function ensureAssistantReadAccess(context: any, permissionView?: string, collection?: string): Promise<{ user: any; isSuperAdmin: boolean }> {\n\tconst idUser = context?.id_user;\n\tif (!idUser) {\n\t\tthrow new Error('AI assistant mongo read: Unauthorized.');\n\t}\n\tconst user = await Users.findById(idUser);\n\tif (!user) {\n\t\tthrow new Error('AI assistant mongo read: Unauthorized.');\n\t}\n\tconst isSuperAdmin = !!user?.roles?.super_admin;\n\tconst normalizedPermission = normalizeOptionalString(permissionView);\n\tif (!isSuperAdmin) {\n\t\tif (!normalizedPermission) {\n\t\t\tthrow new Error('AI assistant mongo read: Permission scope required.');\n\t\t}\n\t\tif (!userHasViewPermission(user, normalizedPermission)) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t\tconst normalizedCollection = normalizeOptionalString(collection);\n\t\tif (normalizedCollection && requiresInvoicePermission(normalizedCollection) && !userHasInvoiceAccess(user)) {\n\t\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t\t}\n\t}\n\telse if (normalizedPermission && !userHasViewPermission(user, normalizedPermission)) {\n\t\tthrow new Error('AI assistant mongo read: Access denied.');\n\t}\n\treturn { user, isSuperAdmin };\n}\n\nfunction resolveAssistantDatabaseName(database?: string, mongoConfig?: AiAssistantMongoReadInput['mongo']): string {\n\tconst defaultDb = normalizeOptionalString(mongoConfig?.database) || ResolveIOServer.getServerConfig()?.DATABASE || '';\n\tconst dbName = normalizeOptionalString(database) || defaultDb;\n\tif (!dbName) {\n\t\tthrow new Error('AI assistant mongo read: Database is required.');\n\t}\n\tconst allowedFromConfig = Array.isArray(mongoConfig?.databases)\n\t\t? mongoConfig?.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tif (allowedFromConfig.length && !allowedFromConfig.includes(dbName)) {\n\t\tthrow new Error('AI assistant mongo read: Database access denied.');\n\t}\n\tconst allowedDatabases = ResolveIOServer.getMongoManager()?.getWatchedDatabases() || [];\n\tif (allowedDatabases.length && !allowedDatabases.includes(dbName)) {\n\t\tthrow new Error('AI assistant mongo read: Database access denied.');\n\t}\n\treturn dbName;\n}\n\nfunction normalizeAssistantFindOptions(options?: AiAssistantMongoReadInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst projection = sanitizeAssistantProjection(normalized.projection);\n\tconst sort = normalized.sort && Object.keys(normalized.sort).length ? normalized.sort : undefined;\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(normalized.limit, 0), maxLimit)\n\t\t: defaultLimit;\n\tconst skip = typeof normalized.skip === 'number' ? Math.max(normalized.skip, 0) : 0;\n\treturn {\n\t\tfindOptions: {\n\t\t\tprojection,\n\t\t\tsort,\n\t\t\tlimit,\n\t\t\tskip\n\t\t},\n\t\tincludeTotal: normalized.includeTotal === true\n\t};\n}\n\nfunction sanitizeAssistantProjection(projection?: Record<string, number | boolean>): Record<string, number | boolean> | undefined {\n\tif (!projection || typeof projection !== 'object') {\n\t\treturn undefined;\n\t}\n\tconst keys = Object.keys(projection);\n\tif (!keys.length) {\n\t\treturn undefined;\n\t}\n\tlet hasInclude = false;\n\tlet hasExclude = false;\n\tkeys.forEach((key) => {\n\t\tconst value = projection[key];\n\t\tif (value === 0 || value === false) {\n\t\t\thasExclude = true;\n\t\t}\n\t\telse if (value === 1 || value === true) {\n\t\t\thasInclude = true;\n\t\t}\n\t});\n\tif (hasInclude && !hasExclude) {\n\t\tconst onlyIds = keys.every(key => isAssistantIdField(key));\n\t\tif (onlyIds) {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\treturn projection;\n}\n\nfunction normalizeAssistantAggregatePipeline(pipeline?: Array<Record<string, any>>): Array<Record<string, any>> {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn [];\n\t}\n\treturn pipeline\n\t\t.filter(stage => stage && typeof stage === 'object' && !Array.isArray(stage))\n\t\t.map((stage) => {\n\t\t\tconst next = { ...stage } as Record<string, any>;\n\t\t\tif (next.$match && typeof next.$match === 'object') {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$match);\n\t\t\t\tnext.$match = applyAssistantNameRegexToQuery(rewritten);\n\t\t\t}\n\t\t\tif (next.$geoNear && typeof next.$geoNear === 'object' && next.$geoNear.query) {\n\t\t\t\tconst rewritten = rewriteEmbeddedMatchObjects(next.$geoNear.query);\n\t\t\t\tnext.$geoNear = {\n\t\t\t\t\t...next.$geoNear,\n\t\t\t\t\tquery: applyAssistantNameRegexToQuery(rewritten)\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn next;\n\t\t});\n}\n\nfunction buildAssistantAggregatePipeline(query: Record<string, any>, pipeline: Array<Record<string, any>>): Array<Record<string, any>> {\n\tconst scopedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tif (!query || !Object.keys(query).length) {\n\t\treturn scopedPipeline;\n\t}\n\tif (scopedPipeline.length && scopedPipeline[0]?.$geoNear && typeof scopedPipeline[0].$geoNear === 'object') {\n\t\tconst geoNearStage = { ...scopedPipeline[0].$geoNear };\n\t\tconst existingQuery = geoNearStage.query && typeof geoNearStage.query === 'object' ? geoNearStage.query : {};\n\t\tgeoNearStage.query = { $and: [existingQuery, query] };\n\t\treturn [{ $geoNear: geoNearStage }, ...scopedPipeline.slice(1)];\n\t}\n\treturn [{ $match: query }, ...scopedPipeline];\n}\n\nfunction normalizeAssistantAggregateOptions(options?: AiAssistantMongoAggregateInput['options']) {\n\tconst normalized = options || {};\n\tconst exportMode = normalized.export === true;\n\tconst maxLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_MAX_LIMIT;\n\tconst defaultLimit = exportMode ? AI_ASSISTANT_MONGO_EXPORT_MAX_LIMIT : AI_ASSISTANT_MONGO_DEFAULT_LIMIT;\n\tconst allowDiskUse = normalized.allowDiskUse === true ? true : undefined;\n\tconst maxTimeMS = typeof normalized.maxTimeMS === 'number' && normalized.maxTimeMS > 0\n\t\t? round(normalized.maxTimeMS)\n\t\t: undefined;\n\tconst limit = typeof normalized.limit === 'number'\n\t\t? Math.min(Math.max(round(normalized.limit), 0), maxLimit)\n\t\t: defaultLimit;\n\tconst aggregateOptions: Record<string, any> = {};\n\tif (allowDiskUse !== undefined) {\n\t\taggregateOptions.allowDiskUse = allowDiskUse;\n\t}\n\tif (maxTimeMS !== undefined) {\n\t\taggregateOptions.maxTimeMS = maxTimeMS;\n\t}\n\treturn {\n\t\taggregateOptions,\n\t\tlimit,\n\t\tmaxLimit,\n\t\tdefaultLimit\n\t};\n}\n\nfunction findAggregateLimit(pipeline: Array<Record<string, any>>): number | null {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst limit = (stage as any).$limit;\n\t\tif (typeof limit === 'number' && Number.isFinite(limit)) {\n\t\t\treturn limit;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction applyAssistantAggregateLimit(\n\tpipeline: Array<Record<string, any>>,\n\tlimit?: number,\n\tmaxLimit = AI_ASSISTANT_MONGO_MAX_LIMIT,\n\tdefaultLimit = AI_ASSISTANT_MONGO_DEFAULT_LIMIT\n): Array<Record<string, any>> {\n\tconst normalizedPipeline = Array.isArray(pipeline) ? [...pipeline] : [];\n\tconst requestedLimit = typeof limit === 'number' && limit > 0\n\t\t? Math.min(limit, maxLimit)\n\t\t: defaultLimit;\n\tconst existingLimit = findAggregateLimit(normalizedPipeline);\n\tif (existingLimit === null) {\n\t\tnormalizedPipeline.push({ $limit: requestedLimit });\n\t\treturn normalizedPipeline;\n\t}\n\tif (existingLimit > maxLimit) {\n\t\tnormalizedPipeline.push({ $limit: maxLimit });\n\t}\n\treturn normalizedPipeline;\n}\n\nfunction resolveAggregateDateFieldFallback(pipeline: Array<Record<string, any>>): { from: string; to: string } | null {\n\tconst dateField = findAggregateDateField(pipeline);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction normalizeAggregateFieldList(values: string[]): string[] {\n\tconst seen = new Set<string>();\n\tconst result: string[] = [];\n\tvalues.forEach((value) => {\n\t\tconst normalized = normalizeOptionalString(value);\n\t\tif (!normalized) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(normalized)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(normalized);\n\t\tresult.push(normalized);\n\t});\n\treturn result;\n}\n\nfunction isCompletionFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('complete') || normalized.includes('close');\n}\n\nfunction isDateLikeFieldName(value: string): boolean {\n\tconst normalized = String(value || '').toLowerCase();\n\treturn normalized.includes('date') || normalized.endsWith('_at') || normalized.endsWith('at');\n}\n\nfunction matchContainsField(value: any, field: string): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => matchContainsField(entry, field));\n\t}\n\treturn Object.keys(value).some((key) => {\n\t\tif (key === field) {\n\t\t\treturn true;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\tif (value[key] && typeof value[key] === 'object') {\n\t\t\treturn matchContainsField(value[key], field);\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction resolveAggregateCompletionFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tmatchCondition: any;\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tlet candidateField = '';\n\tlet candidateSources: string[] = [];\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$addFields || typeof stage.$addFields !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst addFields = stage.$addFields as Record<string, any>;\n\t\tfor (const key of Object.keys(addFields)) {\n\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sources = extractExpressionFieldPaths(addFields[key])\n\t\t\t\t.filter(field => isDateLikeFieldName(field));\n\t\t\tif (sources.length) {\n\t\t\t\tcandidateField = key;\n\t\t\t\tcandidateSources = sources;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (candidateField) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!candidateField || !candidateSources.length) {\n\t\treturn null;\n\t}\n\tlet matchIndex = -1;\n\tlet matchCondition: any = null;\n\tlet matchStage: Record<string, any> | null = null;\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Object.prototype.hasOwnProperty.call(stage.$match, candidateField)) {\n\t\t\tmatchIndex = i;\n\t\t\tmatchCondition = (stage.$match as any)[candidateField];\n\t\t\tmatchStage = stage.$match as Record<string, any>;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (matchIndex === -1 || !matchStage) {\n\t\treturn null;\n\t}\n\tconst normalizedSources = normalizeAggregateFieldList([\n\t\t...candidateSources,\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n\tif (!normalizedSources.length) {\n\t\treturn null;\n\t}\n\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\tconst statusFilter = !hasStatus && isCompletionFieldName(candidateField)\n\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t: null;\n\treturn {\n\t\tmatchIndex,\n\t\tfield: candidateField,\n\t\tsources: normalizedSources,\n\t\tmatchCondition,\n\t\tstatusFilter\n\t};\n}\n\nfunction buildIfNullChain(fields: string[]): any {\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet expr: any = `$${fields[fields.length - 1]}`;\n\tfor (let i = fields.length - 2; i >= 0; i -= 1) {\n\t\texpr = { $ifNull: [`$${fields[i]}`, expr] };\n\t}\n\treturn expr;\n}\n\nfunction buildAggregateCompletionFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tmatchCondition: any;\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst orConditions = fallback.sources.map(field => ({ [field]: fallback.matchCondition }));\n\tconst nextMatch = { ...(matchStage as Record<string, any>) };\n\tdelete (nextMatch as any)[fallback.field];\n\tconst andParts: Array<Record<string, any>> = [];\n\tif (Object.keys(nextMatch).length) {\n\t\tandParts.push(nextMatch);\n\t}\n\tandParts.push({ $or: orConditions });\n\tif (fallback.statusFilter) {\n\t\tandParts.push(fallback.statusFilter);\n\t}\n\tconst mergedMatch = andParts.length === 1 ? andParts[0] : { $and: andParts };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: mergedMatch };\n\t\t}\n\t\tif (stage && typeof stage === 'object' && stage.$addFields && typeof stage.$addFields === 'object') {\n\t\t\tif (Object.prototype.hasOwnProperty.call(stage.$addFields, fallback.field)) {\n\t\t\t\treturn {\n\t\t\t\t\t...stage,\n\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t...(stage.$addFields as Record<string, any>),\n\t\t\t\t\t\t[fallback.field]: buildIfNullChain(fallback.sources)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction normalizeCompletionStatusValue(value: string): string | null {\n\tconst normalized = String(value || '').toLowerCase();\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tif (normalized.includes('complete')) {\n\t\treturn 'complete';\n\t}\n\tif (normalized.includes('close')) {\n\t\treturn 'close';\n\t}\n\treturn null;\n}\n\nfunction applyCompletionStatusRegexFallback(match: any): any {\n\tif (Array.isArray(match)) {\n\t\treturn match.map(entry => applyCompletionStatusRegexFallback(entry));\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn match;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(match).forEach((key) => {\n\t\tconst value = match[key];\n\t\tif (key === 'status' || key === 'state') {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tconst token = normalizeCompletionStatusValue(value);\n\t\t\t\tif (token) {\n\t\t\t\t\tresult[key] = { $regex: token, $options: 'i' };\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult[key] = value;\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyCompletionStatusRegexFallback(value);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction buildCompletionFallbackSources(field: string): string[] {\n\treturn normalizeAggregateFieldList([\n\t\tfield,\n\t\t'date_completed',\n\t\t'date_closed',\n\t\t'completedAt',\n\t\t'closedAt',\n\t\t'completed_at',\n\t\t'closed_at',\n\t\t'date_completed_at',\n\t\t'date_closed_at',\n\t\t'completion_date',\n\t\t'completed_date',\n\t\t'date_finished',\n\t\t'finished_at',\n\t\t'createdAt',\n\t\t'date_created'\n\t]);\n}\n\nfunction resolveAggregateCompletionExprFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tsources: string[];\n\tstatusFilter: Record<string, any> | null;\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchStage = stage.$match as Record<string, any>;\n\t\tlet candidateField = '';\n\t\tif (matchStage.$expr) {\n\t\t\tconst exprFields = extractExpressionFieldPaths(matchStage.$expr)\n\t\t\t\t.filter(field => isCompletionFieldName(field));\n\t\t\tif (exprFields.length) {\n\t\t\t\tcandidateField = exprFields[0];\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tfor (const key of Object.keys(matchStage)) {\n\t\t\t\tif (key.startsWith('$')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!isCompletionFieldName(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst entry = matchStage[key];\n\t\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\t\tcandidateField = key;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!candidateField) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst sources = buildCompletionFallbackSources(candidateField);\n\t\tif (!sources.length) {\n\t\t\treturn null;\n\t\t}\n\t\tconst hasStatus = matchContainsField(matchStage, 'status') || matchContainsField(matchStage, 'state');\n\t\tconst statusFilter = !hasStatus\n\t\t\t? { $or: [{ status: { $regex: 'complete', $options: 'i' } }, { state: { $regex: 'complete', $options: 'i' } }] }\n\t\t\t: null;\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: candidateField,\n\t\t\tsources,\n\t\t\tstatusFilter\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction buildAggregateCompletionExprFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tsources: string[];\n\t\tstatusFilter: Record<string, any> | null;\n\t}\n): Array<Record<string, any>> {\n\tconst targetField = 'completed_at_effective';\n\tconst replacedPipeline = replaceAggregateDateField(pipeline, fallback.field, targetField);\n\tconst matchStage = replacedPipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn replacedPipeline;\n\t}\n\tconst baseMatch = applyCompletionStatusRegexFallback(matchStage);\n\tconst nextMatch = fallback.statusFilter ? { $and: [baseMatch, fallback.statusFilter] } : baseMatch;\n\tconst addFieldsStage = { $addFields: { [targetField]: buildIfNullChain(fallback.sources) } };\n\tconst alreadyHasField = replacedPipeline\n\t\t.slice(0, fallback.matchIndex)\n\t\t.some(stage => stage && typeof stage === 'object' && stage.$addFields && Object.prototype.hasOwnProperty.call(stage.$addFields, targetField));\n\tconst output: Array<Record<string, any>> = [];\n\treplacedPipeline.forEach((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\tif (!alreadyHasField) {\n\t\t\t\toutput.push(addFieldsStage);\n\t\t\t}\n\t\t\toutput.push({ $match: nextMatch });\n\t\t\treturn;\n\t\t}\n\t\toutput.push(stage);\n\t});\n\treturn output;\n}\n\nfunction resolveAggregateUnwindFallback(pipeline: Array<Record<string, any>>): { path: string; groupIndex: number } | null {\n\tconst groupIndex = findAggregateGroupIndex(pipeline);\n\tif (groupIndex === -1) {\n\t\treturn null;\n\t}\n\tconst groupStage = pipeline[groupIndex];\n\tconst groupPaths = extractGroupFieldPaths(groupStage?.$group);\n\tif (!groupPaths.length) {\n\t\treturn null;\n\t}\n\tconst prefix = findCommonPathPrefix(groupPaths);\n\tif (!prefix) {\n\t\treturn null;\n\t}\n\tif (pipelineHasUnwindPath(pipeline, prefix)) {\n\t\treturn null;\n\t}\n\treturn { path: prefix, groupIndex };\n}\n\nfunction findAggregateGroupIndex(pipeline: Array<Record<string, any>>): number {\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (stage && typeof stage === 'object' && stage.$group && typeof stage.$group === 'object') {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction extractGroupFieldPaths(groupStage: any): string[] {\n\tif (!groupStage || typeof groupStage !== 'object') {\n\t\treturn [];\n\t}\n\tconst id = groupStage._id;\n\treturn extractExpressionFieldPaths(id);\n}\n\nfunction extractExpressionFieldPaths(value: any): string[] {\n\tconst results: string[] = [];\n\tconst visit = (entry: any) => {\n\t\tif (Array.isArray(entry)) {\n\t\t\tentry.forEach(item => visit(item));\n\t\t\treturn;\n\t\t}\n\t\tif (!entry) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry === 'string') {\n\t\t\tif (entry.startsWith('$') && entry.length > 1 && !entry.startsWith('$$')) {\n\t\t\t\tresults.push(entry.slice(1));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (typeof entry !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(entry).forEach((key) => {\n\t\t\tvisit(entry[key]);\n\t\t});\n\t};\n\tvisit(value);\n\treturn results.filter(Boolean);\n}\n\nfunction findCommonPathPrefix(paths: string[]): string | null {\n\tif (!paths.length) {\n\t\treturn null;\n\t}\n\tconst splitPaths = paths.map(path => path.split('.').filter(Boolean));\n\tlet prefix = splitPaths[0] || [];\n\tfor (let i = 1; i < splitPaths.length; i += 1) {\n\t\tconst current = splitPaths[i];\n\t\tlet j = 0;\n\t\twhile (j < prefix.length && j < current.length && prefix[j] === current[j]) {\n\t\t\tj += 1;\n\t\t}\n\t\tprefix = prefix.slice(0, j);\n\t\tif (!prefix.length) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn prefix.length ? prefix.join('.') : splitPaths[0]?.[0] || null;\n}\n\nfunction pipelineHasUnwindPath(pipeline: Array<Record<string, any>>, path: string): boolean {\n\treturn (pipeline || []).some((stage) => {\n\t\tif (!stage || typeof stage !== 'object' || !stage.$unwind) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof stage.$unwind === 'string') {\n\t\t\treturn stage.$unwind === `$${path}`;\n\t\t}\n\t\tif (stage.$unwind && typeof stage.$unwind === 'object') {\n\t\t\treturn stage.$unwind.path === `$${path}`;\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction buildAggregateUnwindFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: { path: string; groupIndex: number }\n): Array<Record<string, any>> {\n\tconst before = pipeline.slice(0, fallback.groupIndex);\n\tconst after = pipeline.slice(fallback.groupIndex);\n\tconst unwindStage = {\n\t\t$unwind: {\n\t\t\tpath: `$${fallback.path}`,\n\t\t\tpreserveNullAndEmptyArrays: false\n\t\t}\n\t};\n\treturn [...before, unwindStage, ...after];\n}\n\nfunction isRegexMatchCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'object' && !Array.isArray(value)) {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction findRegexMatchInMatchObject(\n\tmatch: any,\n\tprefix = ''\n): { field: string; condition: any } | null {\n\tif (Array.isArray(match)) {\n\t\tfor (const entry of match) {\n\t\t\tconst found = findRegexMatchInMatchObject(entry, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn null;\n\t}\n\tconst keys = Object.keys(match);\n\tfor (const key of keys) {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findRegexMatchInMatchObject(value, prefix);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (isRegexMatchCondition(value)) {\n\t\t\treturn { field: currentPath, condition: value };\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst found = findRegexMatchInMatchObject(value, currentPath);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction expandNameFieldCandidates(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst leaf = parts[parts.length - 1] || normalized;\n\tconst prefix = parts.length > 1 ? parts.slice(0, -1).join('.') : '';\n\tconst withPrefix = (value: string) => (prefix ? `${prefix}.${value}` : value);\n\tconst candidates: string[] = [];\n\tconst seen = new Set<string>();\n\tconst push = (value: string) => {\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\t\tif (seen.has(value)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(value);\n\t\tcandidates.push(value);\n\t};\n\tpush(normalized);\n\n\tconst leafLower = leaf.toLowerCase();\n\tconst genericVariants = ['name', 'title', 'label', 'display_name', 'displayName', 'description'];\n\tgenericVariants.forEach((variant) => push(withPrefix(variant)));\n\tif (!leafLower.endsWith('name')) {\n\t\tpush(withPrefix(`${leaf}_name`));\n\t\tpush(withPrefix(`${leaf}Name`));\n\t}\n\tif (leafLower.includes('chemical')) {\n\t\t[\n\t\t\t'chemical',\n\t\t\t'chemical_name',\n\t\t\t'chemicalName',\n\t\t\t'chem_name',\n\t\t\t'chemName',\n\t\t\t'product',\n\t\t\t'product_name',\n\t\t\t'productName',\n\t\t\t'material',\n\t\t\t'blend_name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t\tpush(withPrefix(`${leaf}.label`));\n\t\tpush(withPrefix(`${leaf}.product`));\n\t\tif (normalized.includes('blend_chemicals')) {\n\t\t\t['chemical', 'chemical_name', 'chemicalName', 'product', 'product_name', 'productName'].forEach(push);\n\t\t}\n\t}\n\tif (leafLower.includes('customer')) {\n\t\t[\n\t\t\t'customer',\n\t\t\t'customer_name',\n\t\t\t'customerName',\n\t\t\t'company',\n\t\t\t'company_name',\n\t\t\t'companyName',\n\t\t\t'account',\n\t\t\t'account_name',\n\t\t\t'accountName',\n\t\t\t'name'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\tif (leafLower.includes('well')) {\n\t\t[\n\t\t\t'well',\n\t\t\t'well_name',\n\t\t\t'wellName',\n\t\t\t'name',\n\t\t\t'site',\n\t\t\t'site_name',\n\t\t\t'siteName',\n\t\t\t'pad',\n\t\t\t'pad_name',\n\t\t\t'padName',\n\t\t\t'api',\n\t\t\t'api_number',\n\t\t\t'apiNumber',\n\t\t\t'well_number',\n\t\t\t'wellNumber'\n\t\t].forEach((variant) => push(withPrefix(variant)));\n\t\tpush(withPrefix(`${leaf}.name`));\n\t}\n\treturn candidates.slice(0, AI_ASSISTANT_NAME_MATCH_FALLBACK_MAX_FIELDS);\n}\n\nfunction resolveAggregateNameMatchFallback(pipeline: Array<Record<string, any>>): {\n\tmatchIndex: number;\n\tfield: string;\n\tcondition: any;\n\tfields: string[];\n} | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst found = findRegexMatchInMatchObject(stage.$match);\n\t\tif (!found || !shouldApplyAssistantNameRegex(found.field)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst fields = expandNameFieldCandidates(found.field);\n\t\tif (fields.length <= 1) {\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tmatchIndex: i,\n\t\t\tfield: found.field,\n\t\t\tcondition: found.condition,\n\t\t\tfields\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction resolveReadNameMatchFallback(query: Record<string, any>): { query: any; field: string; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst found = findRegexMatchInMatchObject(query);\n\tif (!found || !shouldApplyAssistantNameRegex(found.field) || isAssistantIdField(found.field)) {\n\t\treturn null;\n\t}\n\tconst fields = expandNameFieldCandidates(found.field);\n\tif (fields.length <= 1) {\n\t\treturn null;\n\t}\n\tconst baseMatch = stripMatchField(query, found.field);\n\tconst orConditions = fields.map(field => ({ [field]: found.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn {\n\t\tquery: nextMatch,\n\t\tfield: found.field,\n\t\tfields\n\t};\n}\n\nfunction isEmptyMatchValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripMatchField(match: any, field: string): any {\n\tif (Array.isArray(match)) {\n\t\tconst strippedArray = match\n\t\t\t.map(entry => stripMatchField(entry, field))\n\t\t\t.filter(entry => !isEmptyMatchValue(entry));\n\t\treturn strippedArray;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn match;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(match).forEach((key) => {\n\t\tif (key === field) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst stripped = stripMatchField(value, field);\n\t\t\tif (isEmptyMatchValue(stripped) && (key === '$and' || key === '$or')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = stripped;\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst stripped = stripMatchField(value, field);\n\t\t\tif (!isEmptyMatchValue(stripped)) {\n\t\t\t\tresult[key] = stripped;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\n// eslint-disable-next-line no-unused-vars\ntype MatchFieldPredicate = (field: string, condition: any) => boolean;\n\nfunction collectMatchFieldsByCondition(\n\tmatch: any,\n\tpredicate: MatchFieldPredicate,\n\tprefix = ''\n): string[] {\n\tconst results: string[] = [];\n\tif (Array.isArray(match)) {\n\t\tmatch.forEach((entry) => {\n\t\t\tresults.push(...collectMatchFieldsByCondition(entry, predicate, prefix));\n\t\t});\n\t\treturn results;\n\t}\n\tif (!match || typeof match !== 'object') {\n\t\treturn results;\n\t}\n\tObject.keys(match).forEach((key) => {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tresults.push(...collectMatchFieldsByCondition(value, predicate, prefix));\n\t\t\treturn;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (predicate(currentPath, value)) {\n\t\t\tresults.push(currentPath);\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresults.push(...collectMatchFieldsByCondition(value, predicate, currentPath));\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction findMatchConditionForField(match: any, targetField: string, prefix = ''): any {\n\tif (!match || typeof match !== 'object') {\n\t\treturn undefined;\n\t}\n\tif (Array.isArray(match)) {\n\t\tfor (const entry of match) {\n\t\t\tconst found = findMatchConditionForField(entry, targetField, prefix);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\tfor (const key of Object.keys(match)) {\n\t\tconst value = match[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findMatchConditionForField(value, targetField, prefix);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\tif (currentPath === targetField) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst found = findMatchConditionForField(value, targetField, currentPath);\n\t\t\tif (found !== undefined) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction stripMatchFields(match: any, fields: string[]): any {\n\tlet result = match;\n\tfields.forEach((field) => {\n\t\tresult = stripMatchField(result, field);\n\t});\n\treturn result;\n}\n\nfunction isDateCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof Date) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'object' && !Array.isArray(value)) {\n\t\treturn hasDateRangeOperators(value);\n\t}\n\treturn false;\n}\n\nfunction isChemicalFieldPath(field: string): boolean {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\treturn normalized.includes('chemical');\n}\n\nfunction detectIdLikeValue(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (isMongoObjectId(value)) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string' && isObjectIdString(value)) {\n\t\treturn true;\n\t}\n\tif (isPlainObject(value)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction detectChemicalIdFromProbe(probeDocs: any[], fields: string[]): boolean {\n\tif (!Array.isArray(probeDocs) || !probeDocs.length) {\n\t\treturn false;\n\t}\n\tconst targets = fields.filter(field => isChemicalFieldPath(field));\n\tif (!targets.length) {\n\t\treturn false;\n\t}\n\tfor (const doc of probeDocs) {\n\t\tfor (const field of targets) {\n\t\t\tconst value = getValueAtPath(doc, field);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tif (value.some(entry => detectIdLikeValue(entry))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (detectIdLikeValue(value)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction isEmptyQueryValue(value: any): boolean {\n\tif (value === null || value === undefined) {\n\t\treturn true;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0;\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.keys(value).length === 0;\n\t}\n\treturn false;\n}\n\nfunction stripQueryFieldPathsDeepWithMeta(\n\tquery: any,\n\tfieldsToStrip: string[]\n): { value: any; changed: boolean } {\n\tconst fieldSet = new Set((fieldsToStrip || []).filter(Boolean));\n\tconst stripValue = (value: any, prefix: string): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value\n\t\t\t\t.map(entry => {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\treturn stripped.value;\n\t\t\t\t})\n\t\t\t\t.filter(entry => !isEmptyQueryValue(entry));\n\t\t\tif (nextArray.length !== value.length) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\treturn { value: nextArray, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tlet changed = false;\n\t\tconst keys = Object.keys(value);\n\t\tkeys.forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tif (Array.isArray(entry) && (key === '$and' || key === '$or' || key === '$nor')) {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tconst arrayValue = Array.isArray(stripped.value) ? stripped.value : [];\n\t\t\t\t\tif (arrayValue.length === 0) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (arrayValue.length !== entry.length || stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\t\tconst stripped = stripValue(entry, prefix);\n\t\t\t\t\tif (stripped.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult[key] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentPath = prefix ? `${prefix}.${key}` : key;\n\t\t\tif (fieldSet.has(currentPath)) {\n\t\t\t\tchanged = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tconst stripped = stripValue(entry, currentPath);\n\t\t\t\tif (stripped.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (!isEmptyQueryValue(stripped.value)) {\n\t\t\t\t\tresult[key] = stripped.value;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\tconst resultKeys = Object.keys(result);\n\t\tif (resultKeys.length === 1 && (resultKeys[0] === '$and' || resultKeys[0] === '$or')) {\n\t\t\tconst only = result[resultKeys[0]];\n\t\t\tif (Array.isArray(only) && only.length === 1) {\n\t\t\t\treturn { value: only[0], changed: true };\n\t\t\t}\n\t\t}\n\t\treturn { value: result, changed };\n\t};\n\treturn stripValue(query, '');\n}\n\nexport function stripQueryFieldPathsDeep(query: any, fieldsToStrip: string[]): any {\n\treturn stripQueryFieldPathsDeepWithMeta(query, fieldsToStrip).value;\n}\n\nfunction stripScopedFieldsFromPipelineWithMeta(\n\tpipeline: any[],\n\tfieldsToStrip: string[]\n): { pipeline: any[]; changed: boolean } {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn { pipeline: [], changed: false };\n\t}\n\tlet changed = false;\n\tconst nextPipeline = pipeline.map((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn stage;\n\t\t}\n\t\tlet nextStage = stage;\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$match, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = { ...nextStage, $match: stripped.value };\n\t\t}\n\t\tif (stage.$geoNear && typeof stage.$geoNear === 'object' && stage.$geoNear.query) {\n\t\t\tconst stripped = stripQueryFieldPathsDeepWithMeta(stage.$geoNear.query, fieldsToStrip);\n\t\t\tif (stripped.changed) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tnextStage = {\n\t\t\t\t...nextStage,\n\t\t\t\t$geoNear: {\n\t\t\t\t\t...stage.$geoNear,\n\t\t\t\t\tquery: stripped.value\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn nextStage;\n\t});\n\treturn { pipeline: nextPipeline, changed };\n}\n\nexport function stripScopedFieldsFromPipeline(pipeline: any[], fieldsToStrip: string[]): any[] {\n\treturn stripScopedFieldsFromPipelineWithMeta(pipeline, fieldsToStrip).pipeline;\n}\n\nfunction isIdLookupCondition(value: any): boolean {\n\tif (!value) {\n\t\treturn false;\n\t}\n\tif (value instanceof RegExp) {\n\t\treturn true;\n\t}\n\tif (typeof value === 'string') {\n\t\treturn !isObjectIdString(value.trim());\n\t}\n\tif (typeof value === 'object') {\n\t\treturn Object.prototype.hasOwnProperty.call(value, '$regex');\n\t}\n\treturn false;\n}\n\nfunction collectIdFieldConditions(match: any): Array<{ field: string; condition: any }> {\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tconst visit = (value: any) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(entry => visit(entry));\n\t\t\treturn;\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tvisit(entry);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isAssistantIdField(key) && isIdLookupCondition(entry)) {\n\t\t\t\tresults.push({ field: key, condition: entry });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (entry && typeof entry === 'object') {\n\t\t\t\tvisit(entry);\n\t\t\t}\n\t\t});\n\t};\n\tvisit(match);\n\treturn results;\n}\n\nfunction resolveLocalNameFieldFromDocs(docs: any[], baseToken: string): string | null {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tif (!normalizedBase || !Array.isArray(docs) || !docs.length) {\n\t\treturn null;\n\t}\n\tif (hasNonEmptyValue(docs, normalizedBase, { treatObjectLikeAsEmpty: true })) {\n\t\treturn normalizedBase;\n\t}\n\tconst aliases = resolveFieldAliases(docs, [normalizedBase]);\n\treturn aliases[normalizedBase] || null;\n}\n\nfunction buildIdFieldNameFallbackQuery(\n\tquery: Record<string, any>,\n\tidField: string,\n\tnameField: string,\n\tcondition: any\n): Record<string, any> {\n\tconst baseMatch = stripMatchField(query, idField);\n\tconst orConditions = [\n\t\t{ [idField]: condition },\n\t\t{ [nameField]: condition }\n\t];\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn nextMatch;\n}\n\nfunction buildChemicalIdFieldCandidates(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst leaf = parts[parts.length - 1] || normalized;\n\tconst prefix = parts.length > 1 ? parts.slice(0, -1).join('.') : '';\n\tconst withPrefix = (value: string) => (prefix ? `${prefix}.${value}` : value);\n\tconst candidates = new Set<string>();\n\tcandidates.add(normalized);\n\tif (!leaf.startsWith('id_')) {\n\t\tcandidates.add(withPrefix('id_chemical'));\n\t\tcandidates.add(withPrefix('chemical_id'));\n\t\tcandidates.add(withPrefix('chemicalId'));\n\t\tcandidates.add(withPrefix('idChemical'));\n\t}\n\treturn Array.from(candidates);\n}\n\nasync function applyChemicalNameLookupFallbackToQuery(params: {\n\tquery: Record<string, any>;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tprobeDocs?: any[];\n}): Promise<{ query: Record<string, any>; meta: Record<string, any> } | null> {\n\tconst { query, db, dbName, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst chemicalFields = collectMatchFieldsByCondition(query, (field, condition) => (\n\t\tisRegexMatchCondition(condition) && isChemicalFieldPath(field)\n\t));\n\tif (!chemicalFields.length) {\n\t\treturn null;\n\t}\n\tconst targetField = chemicalFields[0];\n\tconst condition = findMatchConditionForField(query, targetField);\n\tconst regex = buildRegexFromCondition(condition);\n\tif (!regex) {\n\t\treturn null;\n\t}\n\tconst sampleDocs = Array.isArray(probeDocs) ? probeDocs : [];\n\tif (!detectChemicalIdFromProbe(sampleDocs, [targetField])) {\n\t\treturn null;\n\t}\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\tconst candidates = resolveIdLookupCandidates('chemical', collectionNames);\n\tfor (const candidate of candidates) {\n\t\tif (!candidate) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst candidateHasClientScope = idClient\n\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t: false;\n\t\tconst candidateProbe = await fetchAssistantProbeDocs({\n\t\t\tdb,\n\t\t\tcollection: candidate,\n\t\t\tidClient,\n\t\t\tidCustomer,\n\t\t\tisSuperAdmin,\n\t\t\tincludeClientScope: candidateHasClientScope\n\t\t});\n\t\tconst lookup = await lookupIdsForNameMatch({\n\t\t\tdb,\n\t\t\tdbName,\n\t\t\tcollection: candidate,\n\t\t\tbaseToken: 'chemical',\n\t\t\tregex,\n\t\t\tidClient,\n\t\t\tidCustomer,\n\t\t\tisSuperAdmin,\n\t\t\tprobeDocs: candidateProbe\n\t\t});\n\t\tif (lookup?.ids?.length) {\n\t\t\tconst idFields = buildChemicalIdFieldCandidates(targetField);\n\t\t\tconst baseMatch = stripMatchField(query, targetField);\n\t\t\tconst orConditions = idFields.map(field => ({ [field]: { $in: lookup.ids } }));\n\t\t\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t\t\t? { $or: orConditions }\n\t\t\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\t\t\treturn {\n\t\t\t\tquery: nextMatch,\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: targetField,\n\t\t\t\t\tstrategy: 'chemical_lookup',\n\t\t\t\t\tcollection: candidate,\n\t\t\t\t\tids: lookup.ids.length,\n\t\t\t\t\tfields: lookup.fields,\n\t\t\t\t\tidFields\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveIdLookupCandidates(baseToken: string, collectionNames: string[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken).toLowerCase();\n\tif (!normalizedBase || !Array.isArray(collectionNames) || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst candidates = new Set<string>();\n\tconst hints = AI_ASSISTANT_ID_LOOKUP_HINTS[normalizedBase] || [];\n\thints.forEach((hint) => {\n\t\tif (collectionNames.includes(hint)) {\n\t\t\tcandidates.add(hint);\n\t\t}\n\t});\n\tconst tokens = tokenizeCollectionText(normalizedBase);\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, AI_ASSISTANT_ID_LOOKUP_CANDIDATE_LIMIT);\n\tranked.forEach(entry => candidates.add(entry.name));\n\treturn Array.from(candidates);\n}\n\nfunction buildNameLookupFields(baseToken: string, docs?: any[]): string[] {\n\tconst normalizedBase = normalizeOptionalString(baseToken);\n\tconst candidates = expandNameFieldCandidates(normalizedBase);\n\tif (!Array.isArray(docs) || !docs.length) {\n\t\treturn candidates;\n\t}\n\tconst available = collectFieldCandidates(docs);\n\tconst filtered = candidates.filter(field => {\n\t\tconst stats = available.get(field);\n\t\treturn !!stats && stats.nonEmpty > 0;\n\t});\n\treturn filtered.length ? filtered : candidates;\n}\n\nasync function lookupIdsForNameMatch(params: {\n\tdb: any;\n\tdbName: string;\n\tcollection: string;\n\tbaseToken: string;\n\tregex: RegExp;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tprobeDocs?: any[];\n}): Promise<{ ids: any[]; fields: string[] } | null> {\n\tconst { db, dbName, collection, baseToken, regex, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst fields = buildNameLookupFields(baseToken, probeDocs);\n\tif (!fields.length) {\n\t\treturn null;\n\t}\n\tlet query: Record<string, any> = { $or: fields.map(field => ({ [field]: regex })) };\n\tif (!isSuperAdmin) {\n\t\tconst hasClient = await collectionHasClientIndex(db, dbName, collection);\n\t\tif (hasClient) {\n\t\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t\t}\n\t\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\t\tif (normalizedCustomer && collection !== 'customers') {\n\t\t\tconst hasCustomer = await collectionHasFieldIndex(db, dbName, collection, 'id_customer');\n\t\t\tif (hasCustomer) {\n\t\t\t\tquery = applyCustomerScopeFilter(query, collection, normalizedCustomer, isSuperAdmin);\n\t\t\t}\n\t\t}\n\t}\n\tconst projection: Record<string, number> = { _id: 1 };\n\tfields.forEach((field) => {\n\t\tprojection[field] = 1;\n\t});\n\tconst docs = await db.collection(collection)\n\t\t.find(query, {\n\t\t\tprojection,\n\t\t\tlimit: AI_ASSISTANT_ID_LOOKUP_MAX_RESULTS,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t})\n\t\t.toArray();\n\tconst ids = docs.map((doc: any) => doc?._id).filter(Boolean);\n\treturn ids.length ? { ids, fields } : null;\n}\n\nasync function applyIdLookupFallbackToQuery(params: {\n\tquery: Record<string, any>;\n\tdb: any;\n\tdbName: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tcollectionNames?: string[];\n\tprobeDocs?: any[];\n}): Promise<{ query: Record<string, any>; meta: Record<string, any> } | null> {\n\tconst { query, db, dbName, idClient, idCustomer, isSuperAdmin, probeDocs } = params;\n\tconst conditions = collectIdFieldConditions(query);\n\tif (!conditions.length) {\n\t\treturn null;\n\t}\n\tconst collectionNames = params.collectionNames || await listAssistantCollections(db, dbName);\n\tfor (const condition of conditions) {\n\t\tconst regex = buildRegexFromCondition(condition.condition);\n\t\tif (!regex) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseToken = normalizeIdFieldBase(condition.field);\n\t\tif (!baseToken) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (baseToken === 'customer' && idCustomer) {\n\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\tlet nextValue: any = idCustomer;\n\t\t\tif (targetFieldType === 'objectId' && isObjectIdString(idCustomer)) {\n\t\t\t\ttry {\n\t\t\t\t\tnextValue = new ObjectId(idCustomer);\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tnextValue = idCustomer;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, nextValue),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'customer_scope',\n\t\t\t\t\tvalue: idCustomer,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst localNameField = resolveLocalNameFieldFromDocs(probeDocs || [], baseToken);\n\t\tif (localNameField) {\n\t\t\treturn {\n\t\t\t\tquery: buildIdFieldNameFallbackQuery(query, condition.field, localNameField, regex),\n\t\t\t\tmeta: {\n\t\t\t\t\tfield: condition.field,\n\t\t\t\t\tstrategy: 'local_name',\n\t\t\t\t\tnameField: localNameField\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tconst candidates = resolveIdLookupCandidates(baseToken, collectionNames);\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!candidate) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(candidate)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst candidateHasClientScope = idClient\n\t\t\t\t? await collectionHasClientIndex(db, dbName, candidate)\n\t\t\t\t: false;\n\t\t\tconst candidateProbe = await fetchAssistantProbeDocs({\n\t\t\t\tdb,\n\t\t\t\tcollection: candidate,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tincludeClientScope: candidateHasClientScope\n\t\t\t});\n\t\t\tconst lookup = await lookupIdsForNameMatch({\n\t\t\t\tdb,\n\t\t\t\tdbName,\n\t\t\t\tcollection: candidate,\n\t\t\t\tbaseToken,\n\t\t\t\tregex,\n\t\t\t\tidClient,\n\t\t\t\tidCustomer,\n\t\t\t\tisSuperAdmin,\n\t\t\t\tprobeDocs: candidateProbe\n\t\t\t});\n\t\t\tif (lookup?.ids?.length) {\n\t\t\t\tconst targetFieldType = inferIdFieldStorageTypeFromDocs(probeDocs || [], condition.field);\n\t\t\t\tconst normalizedIds = normalizeIdsForTargetField(\n\t\t\t\t\tlookup.ids,\n\t\t\t\t\tprobeDocs || [],\n\t\t\t\t\tcondition.field,\n\t\t\t\t\ttargetFieldType\n\t\t\t\t);\n\t\t\t\tconst idsForQuery = normalizedIds.length ? normalizedIds : lookup.ids;\n\t\t\t\treturn {\n\t\t\t\t\tquery: replaceQueryFieldCondition(query, condition.field, { $in: idsForQuery }),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tfield: condition.field,\n\t\t\t\t\t\tstrategy: 'lookup',\n\t\t\t\t\t\tcollection: candidate,\n\t\t\t\t\t\tids: lookup.ids.length,\n\t\t\t\t\t\tidsNormalized: normalizedIds.length,\n\t\t\t\t\t\ttargetFieldType,\n\t\t\t\t\t\tfields: lookup.fields\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction buildAggregateNameMatchFallbackPipeline(\n\tpipeline: Array<Record<string, any>>,\n\tfallback: {\n\t\tmatchIndex: number;\n\t\tfield: string;\n\t\tcondition: any;\n\t\tfields: string[];\n\t}\n): Array<Record<string, any>> {\n\tconst matchStage = pipeline[fallback.matchIndex]?.$match;\n\tif (!matchStage || typeof matchStage !== 'object') {\n\t\treturn pipeline;\n\t}\n\tconst baseMatch = stripMatchField(matchStage, fallback.field);\n\tconst orConditions = fallback.fields.map(field => ({ [field]: fallback.condition }));\n\tconst nextMatch = isEmptyMatchValue(baseMatch)\n\t\t? { $or: orConditions }\n\t\t: { $and: [baseMatch, { $or: orConditions }] };\n\treturn pipeline.map((stage, index) => {\n\t\tif (index === fallback.matchIndex) {\n\t\t\treturn { $match: nextMatch };\n\t\t}\n\t\treturn stage;\n\t});\n}\n\nfunction findAggregateDateField(pipeline: Array<Record<string, any>>): string | null {\n\tconst fields = new Set<string>();\n\t(pipeline || []).forEach((stage) => {\n\t\tif (!stage || typeof stage !== 'object') {\n\t\t\treturn;\n\t\t}\n\t\tif (stage.$match && typeof stage.$match === 'object') {\n\t\t\tcollectDateFieldsFromMatch(stage.$match, fields);\n\t\t}\n\t});\n\tif (fields.size !== 1) {\n\t\treturn null;\n\t}\n\treturn Array.from(fields)[0];\n}\n\nfunction collectDateFieldsFromMatch(value: any, fields: Set<string>) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach(entry => collectDateFieldsFromMatch(entry, fields));\n\t\treturn;\n\t}\n\tObject.keys(value).forEach((key) => {\n\t\tconst entry = value[key];\n\t\tif (Object.prototype.hasOwnProperty.call(AI_ASSISTANT_DATE_FALLBACKS, key)) {\n\t\t\tif (hasDateRangeOperators(entry) || entry instanceof Date) {\n\t\t\t\tfields.add(key);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (key.startsWith('$')) {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t\treturn;\n\t\t}\n\t\tif (entry && typeof entry === 'object') {\n\t\t\tcollectDateFieldsFromMatch(entry, fields);\n\t\t}\n\t});\n}\n\nfunction hasDateRangeOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\treturn Object.prototype.hasOwnProperty.call(value, '$gte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$gt')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lte')\n\t\t|| Object.prototype.hasOwnProperty.call(value, '$lt');\n}\n\nfunction replaceAggregateDateField(\n\tpipeline: Array<Record<string, any>>,\n\tfromField: string,\n\ttoField: string\n): Array<Record<string, any>> {\n\tconst replacer = (value: any): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(entry => replacer(entry));\n\t\t}\n\t\tif (value instanceof Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tconst next: Record<string, any> = {};\n\t\t\tObject.keys(value).forEach((key) => {\n\t\t\t\tconst nextKey = key === fromField ? toField : key;\n\t\t\t\tnext[nextKey] = replacer(value[key]);\n\t\t\t});\n\t\t\treturn next;\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tif (value.startsWith(`$${fromField}`)) {\n\t\t\t\treturn `$${toField}${value.slice(fromField.length + 1)}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\treturn value;\n\t};\n\treturn replacer(pipeline);\n}\n\nfunction normalizeMongoQuery(query?: Record<string, any>) {\n\tconst normalized = query && typeof query === 'object' ? query : {};\n\tif (containsForbiddenMongoOperators(normalized)) {\n\t\tthrow new Error('AI assistant mongo read: Query contains restricted operators.');\n\t}\n\tconst rewritten = rewriteEmbeddedMatchObjects(normalized);\n\treturn applyAssistantNameRegexToQuery(rewritten);\n}\n\nfunction shouldApplyAssistantNameRegex(field: string): boolean {\n\tconst normalized = String(field || '').toLowerCase().trim();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (normalized.startsWith('$')) {\n\t\treturn false;\n\t}\n\tif (isAssistantIdField(normalized)) {\n\t\treturn false;\n\t}\n\tif (normalized === 'id' || normalized.endsWith('_id')) {\n\t\treturn false;\n\t}\n\tconst tokens = normalized.split(/[^a-z0-9]+/g).filter(Boolean);\n\tconst targetTokens = new Set(['customer', 'well', 'chemical']);\n\tconst hasTargetToken = tokens.some(token => targetTokens.has(token));\n\tif (hasTargetToken) {\n\t\treturn true;\n\t}\n\tif (tokens.includes('name')) {\n\t\treturn true;\n\t}\n\treturn /(^|[._-])name$/i.test(normalized);\n}\n\nfunction escapeRegexValue(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildTokenizedRegex(value: string): RegExp {\n\tconst tokens = tokenizeFieldKey(value).filter(token => token.length);\n\tif (tokens.length <= 1) {\n\t\treturn new RegExp(escapeRegexValue(value), 'i');\n\t}\n\tconst tokenPattern = tokens.map(token => escapeRegexValue(token)).join('[\\\\s\\\\-_]*.*');\n\treturn new RegExp(tokenPattern, 'i');\n}\n\nfunction applyAssistantNameRegexToQuery(query: any): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => applyAssistantNameRegexToQuery(entry));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date || query instanceof RegExp || isMongoObjectId(query)) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst value = query[key];\n\t\tif (key.startsWith('$')) {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value === 'string' && shouldApplyAssistantNameRegex(key)) {\n\t\t\tconst trimmed = value.trim();\n\t\t\tresult[key] = trimmed ? buildTokenizedRegex(trimmed) : value;\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tresult[key] = applyAssistantNameRegexToQuery(value);\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = value;\n\t});\n\treturn result;\n}\n\nfunction isObjectIdString(value: string): boolean {\n\treturn /^[a-f0-9]{24}$/i.test(value);\n}\n\nfunction isPlainMatchObject(value: any): boolean {\n\treturn isPlainObject(value)\n\t\t&& !isMongoObjectId(value)\n\t\t&& !(value instanceof Date)\n\t\t&& !(value instanceof RegExp);\n}\n\nfunction hasOperatorKeys(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn Object.keys(value).some(key => key.startsWith('$'));\n}\n\nexport function rewriteEmbeddedMatchObjects(query: any): any {\n\tconst rewriteValue = (value: any, allowArrayRewrite: boolean, inOperator = false): any => {\n\t\tif (Array.isArray(value)) {\n\t\t\tif (!allowArrayRewrite) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\treturn value.map(entry => rewriteValue(entry, true, inOperator));\n\t\t}\n\t\tif (!value || typeof value !== 'object' || value instanceof Date || value instanceof RegExp || isMongoObjectId(value)) {\n\t\t\treturn value;\n\t\t}\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tif (key.startsWith('$')) {\n\t\t\t\tresult[key] = rewriteValue(entry, true, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!inOperator && isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, key, inOperator);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[key] = rewriteValue(entry, true, inOperator);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[key] = allowArrayRewrite ? entry.map(item => rewriteValue(item, true, inOperator)) : entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[key] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst flattenMatchObject = (value: any, prefix: string, inOperator: boolean): Record<string, any> => {\n\t\tconst result: Record<string, any> = {};\n\t\tObject.keys(value || {}).forEach((key) => {\n\t\t\tconst entry = value[key];\n\t\t\tconst currentPath = `${prefix}.${key}`;\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry) && !hasOperatorKeys(entry)) {\n\t\t\t\tconst flattened = flattenMatchObject(entry, currentPath, inOperator);\n\t\t\t\tObject.assign(result, flattened);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isPlainMatchObject(entry) && !Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = rewriteValue(entry, true, inOperator);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Array.isArray(entry)) {\n\t\t\t\tresult[currentPath] = entry;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult[currentPath] = entry;\n\t\t});\n\t\treturn result;\n\t};\n\n\treturn rewriteValue(query, true);\n}\n\nfunction buildRegexFromCondition(condition: any): RegExp | null {\n\tif (!condition) {\n\t\treturn null;\n\t}\n\tif (condition instanceof RegExp) {\n\t\treturn condition;\n\t}\n\tif (typeof condition === 'string') {\n\t\tconst trimmed = condition.trim();\n\t\tif (!trimmed || isObjectIdString(trimmed)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new RegExp(escapeRegexValue(trimmed), 'i');\n\t}\n\tif (typeof condition === 'object') {\n\t\tconst raw = (condition as any).$regex;\n\t\tif (raw !== undefined) {\n\t\t\tconst source = String(raw);\n\t\t\tconst options = typeof (condition as any).$options === 'string'\n\t\t\t\t? (condition as any).$options\n\t\t\t\t: 'i';\n\t\t\ttry {\n\t\t\t\treturn new RegExp(source, options);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\treturn new RegExp(escapeRegexValue(source), 'i');\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction normalizeIdFieldBase(field: string): string {\n\tconst normalized = normalizeOptionalString(field).toLowerCase();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split('.').filter(Boolean);\n\tconst last = parts[parts.length - 1] || normalized;\n\tif (last.startsWith('id_')) {\n\t\treturn last.slice(3);\n\t}\n\tif (normalized.startsWith('id_')) {\n\t\treturn normalized.slice(3);\n\t}\n\treturn last;\n}\n\nfunction normalizeCollectionKey(value: string): string {\n\treturn String(value || '').toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n\nfunction normalizeCollectionToken(token: string): string[] {\n\tconst trimmed = token.trim();\n\tif (!trimmed) {\n\t\treturn [];\n\t}\n\tconst tokens = new Set<string>([trimmed]);\n\tif (\n\t\ttrimmed.length > 4\n\t\t&& trimmed.endsWith('s')\n\t\t&& !trimmed.endsWith('ss')\n\t\t&& !trimmed.endsWith('us')\n\t\t&& !trimmed.endsWith('is')\n\t) {\n\t\ttokens.add(trimmed.slice(0, -1));\n\t}\n\treturn Array.from(tokens);\n}\n\nfunction tokenizeCollectionText(value: string): string[] {\n\tconst rawTokens = String(value || '')\n\t\t.toLowerCase()\n\t\t.split(/[^a-z0-9]+/g)\n\t\t.map(token => token.trim())\n\t\t.filter(Boolean);\n\tconst tokens: string[] = [];\n\trawTokens.forEach((token) => {\n\t\tnormalizeCollectionToken(token).forEach((normalized) => {\n\t\t\tif (!AI_ASSISTANT_COLLECTION_STOPWORDS.has(normalized)) {\n\t\t\t\ttokens.push(normalized);\n\t\t\t}\n\t\t});\n\t});\n\treturn Array.from(new Set(tokens));\n}\n\nfunction computeCollectionTokenWeights(tokens: string[]): { weights: Record<string, number>; hasDomain: boolean } {\n\tconst unique = Array.from(new Set(tokens));\n\tconst hasDomain = unique.some(token => AI_ASSISTANT_COLLECTION_DOMAIN_TOKENS.has(token));\n\tconst weights: Record<string, number> = {};\n\tunique.forEach((token) => {\n\t\tif (hasDomain && AI_ASSISTANT_COLLECTION_GENERIC_TOKENS.has(token)) {\n\t\t\tweights[token] = 0.4;\n\t\t\treturn;\n\t\t}\n\t\tweights[token] = 1;\n\t});\n\treturn { weights, hasDomain };\n}\n\nfunction expandAssistantTermSynonyms(text: string): { expanded: string; matches: Array<{ term: string; expansions: string[] }> } {\n\tconst base = normalizeOptionalString(text);\n\tif (!base) {\n\t\treturn { expanded: '', matches: [] };\n\t}\n\tlet expanded = base;\n\tconst matches: Array<{ term: string; expansions: string[] }> = [];\n\tAI_ASSISTANT_TERM_SYNONYMS.forEach((entry) => {\n\t\tif (!entry.pattern.test(base)) {\n\t\t\treturn;\n\t\t}\n\t\tconst existing = expanded.toLowerCase();\n\t\tentry.expansions.forEach((expansion) => {\n\t\t\tif (expansion && !existing.includes(expansion.toLowerCase())) {\n\t\t\t\texpanded = `${expanded} ${expansion}`;\n\t\t\t}\n\t\t});\n\t\tmatches.push({ term: entry.label, expansions: entry.expansions });\n\t});\n\treturn { expanded, matches };\n}\n\nasync function listAssistantCollections(db: any, dbName: string): Promise<string[]> {\n\tconst cacheKey = normalizeOptionalString(dbName) || 'default';\n\tconst cached = AI_ASSISTANT_COLLECTION_CACHE.get(cacheKey);\n\tconst now = Date.now();\n\tif (cached && now - cached.updatedAt < AI_ASSISTANT_COLLECTION_CACHE_TTL_MS) {\n\t\treturn cached.names;\n\t}\n\ttry {\n\t\tconst collections = await db.listCollections({}, { nameOnly: true }).toArray();\n\t\tconst names = Array.isArray(collections)\n\t\t\t? collections.map(entry => normalizeOptionalString(entry?.name)).filter(Boolean)\n\t\t\t: [];\n\t\tAI_ASSISTANT_COLLECTION_CACHE.set(cacheKey, { names, updatedAt: now });\n\t\treturn names;\n\t}\n\tcatch {\n\t\treturn cached?.names || [];\n\t}\n}\n\nfunction scoreCollectionMatch(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): number {\n\tif (!requestedTokens.length) {\n\t\treturn 0;\n\t}\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tif (!candidateTokens.length) {\n\t\treturn 0;\n\t}\n\tlet score = 0;\n\trequestedTokens.forEach((token) => {\n\t\tif (candidateTokens.includes(token)) {\n\t\t\tconst weight = tokenWeights?.[token] ?? 1;\n\t\t\tscore += 10 * weight;\n\t\t}\n\t});\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t}\n\tif (isVersionCollectionName(candidateName)) {\n\t\tscore -= 15;\n\t}\n\treturn score;\n}\n\nfunction scoreCollectionMatchDetailed(\n\trequestedTokens: string[],\n\tcandidateName: string,\n\ttokenWeights?: Record<string, number>\n): {\n\tscore: number;\n\ttokenMatches: string[];\n\tkeyMatch: 'exact' | 'partial' | null;\n\tcandidateTokens: string[];\n\ttokenScore: number;\n\ttokenWeights: Record<string, number>;\n} {\n\tconst candidateTokens = tokenizeCollectionText(candidateName);\n\tconst tokenMatches = requestedTokens.filter(token => candidateTokens.includes(token));\n\tconst weights = tokenWeights || {};\n\tconst tokenScore = tokenMatches.reduce((sum, token) => sum + 10 * (weights[token] ?? 1), 0);\n\tlet score = tokenScore;\n\tconst requestedKey = normalizeCollectionKey(requestedTokens.join('-'));\n\tconst candidateKey = normalizeCollectionKey(candidateName);\n\tlet keyMatch: 'exact' | 'partial' | null = null;\n\tif (candidateKey === requestedKey && requestedKey) {\n\t\tscore += 50;\n\t\tkeyMatch = 'exact';\n\t}\n\telse if (requestedKey && (candidateKey.includes(requestedKey) || requestedKey.includes(candidateKey))) {\n\t\tscore += 20;\n\t\tkeyMatch = 'partial';\n\t}\n\tif (isVersionCollectionName(candidateName)) {\n\t\tscore -= 15;\n\t}\n\treturn {\n\t\tscore,\n\t\ttokenMatches,\n\t\tkeyMatch,\n\t\tcandidateTokens,\n\t\ttokenScore,\n\t\ttokenWeights: tokenMatches.reduce((acc, token) => {\n\t\t\tacc[token] = weights[token] ?? 1;\n\t\t\treturn acc;\n\t\t}, {} as Record<string, number>)\n\t};\n}\n\nfunction resolveCollectionHintsFromTokens(tokens: string[], collectionNames: string[], max = 5): string[] {\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn [];\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\treturn collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0))\n\t\t.map(entry => entry.name);\n}\n\nfunction buildCollectionRankingDebugFromTokens(tokens: string[], collectionNames: string[], max = 8): Record<string, any> {\n\tconst requestedKey = normalizeCollectionKey(tokens.join('-'));\n\tconst { weights, hasDomain } = computeCollectionTokenWeights(tokens);\n\tif (!tokens.length || !collectionNames.length) {\n\t\treturn {\n\t\t\ttokens,\n\t\t\trequestedKey,\n\t\t\thasDomain,\n\t\t\ttokenWeights: weights,\n\t\t\tranked: []\n\t\t};\n\t}\n\tconst ranked = collectionNames\n\t\t.map(name => ({ name, ...scoreCollectionMatchDetailed(tokens, name, weights) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, Math.max(max, 0));\n\treturn {\n\t\ttokens,\n\t\trequestedKey,\n\t\thasDomain,\n\t\ttokenWeights: weights,\n\t\tranked\n\t};\n}\n\nfunction buildCollectionSelectionDetail(tokens: string[], collection: string): Record<string, any> | null {\n\tconst trimmed = normalizeOptionalString(collection);\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst weights = computeCollectionTokenWeights(tokens).weights;\n\tconst detail = scoreCollectionMatchDetailed(tokens, trimmed, weights);\n\treturn {\n\t\tcollection: trimmed,\n\t\tscore: detail.score,\n\t\ttokenMatches: detail.tokenMatches,\n\t\tkeyMatch: detail.keyMatch,\n\t\tcandidateTokens: detail.candidateTokens,\n\t\ttokenScore: detail.tokenScore,\n\t\ttokenWeights: detail.tokenWeights\n\t};\n}\n\nfunction isVersionCollectionName(value: string): boolean {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\treturn normalized.endsWith('.versions') || normalized.endsWith('-versions') || normalized.includes('.versions.');\n}\n\nfunction stripVersionSuffix(value: string): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.endsWith('.versions')) {\n\t\treturn normalized.slice(0, -'.versions'.length);\n\t}\n\tif (normalized.endsWith('-versions')) {\n\t\treturn normalized.slice(0, -'-versions'.length);\n\t}\n\treturn normalized;\n}\n\nfunction shouldAllowVersionCollections(message: string): boolean {\n\tconst normalized = normalizeOptionalString(message).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (!normalized.includes('bug')) {\n\t\treturn false;\n\t}\n\treturn /(last\\s*(5|five)\\s+updates|version|history|audit)/i.test(normalized);\n}\n\nfunction resolveReportCollectionName(permissionView: string, collectionNames: string[], currentCollection: string): string | null {\n\tconst normalizedView = normalizeOptionalString(permissionView).toLowerCase();\n\tif (!normalizedView.startsWith('/report/')) {\n\t\treturn null;\n\t}\n\tconst current = stripVersionSuffix(normalizeOptionalString(currentCollection));\n\tconst reportCollection = current.startsWith('report-') ? current : `report-${current}`;\n\tif (collectionNames.includes(reportCollection)) {\n\t\treturn reportCollection;\n\t}\n\tconst routeTail = normalizedView.replace('/report/', '').replace(/\\//g, '-');\n\tconst routeCandidate = routeTail ? `report-${routeTail}` : '';\n\tif (routeCandidate && collectionNames.includes(routeCandidate)) {\n\t\treturn routeCandidate;\n\t}\n\treturn null;\n}\n\nasync function resolveBaseCollectionFromReport(db: any, dbName: string, collection: string): Promise<string | null> {\n\tconst normalized = normalizeOptionalString(collection);\n\tif (!normalized.startsWith('report-')) {\n\t\treturn null;\n\t}\n\tconst base = stripVersionSuffix(normalized.slice('report-'.length));\n\tif (!base) {\n\t\treturn null;\n\t}\n\tconst names = await listAssistantCollections(db, dbName);\n\treturn names.includes(base) ? base : null;\n}\n\nfunction resolveCollectionOverrideWithContext(params: {\n\tmessage: string;\n\tcollectionRanking: Record<string, any> | null;\n\trequestedCollection: string;\n\tpermissionView?: string;\n\tcollectionNames: string[];\n}): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\tconst requested = normalizeOptionalString(params.requestedCollection);\n\tconst allowVersions = shouldAllowVersionCollections(params.message);\n\tconst collectionNames = Array.isArray(params.collectionNames) ? params.collectionNames : [];\n\tconst permissionView = normalizeOptionalString(params.permissionView);\n\tif (permissionView) {\n\t\tconst reportPreferred = resolveReportCollectionName(permissionView, collectionNames, requested);\n\t\tif (reportPreferred && reportPreferred !== requested) {\n\t\t\treturn {\n\t\t\t\tfrom: requested,\n\t\t\t\tto: reportPreferred,\n\t\t\t\tfromScore: 0,\n\t\t\t\ttoScore: 0,\n\t\t\t\treason: 'report route preference'\n\t\t\t};\n\t\t}\n\t}\n\tif (!allowVersions && isVersionCollectionName(requested)) {\n\t\tconst base = stripVersionSuffix(requested);\n\t\tif (base && collectionNames.includes(base)) {\n\t\t\treturn {\n\t\t\t\tfrom: requested,\n\t\t\t\tto: base,\n\t\t\t\tfromScore: 0,\n\t\t\t\ttoScore: 0,\n\t\t\t\treason: 'avoid versions collection'\n\t\t\t};\n\t\t}\n\t}\n\tconst rankingOverride = resolveAssistantCollectionOverride(params.collectionRanking, requested);\n\tif (rankingOverride) {\n\t\tif (!allowVersions && isVersionCollectionName(rankingOverride.to)) {\n\t\t\tconst base = stripVersionSuffix(rankingOverride.to);\n\t\t\tif (base && collectionNames.includes(base)) {\n\t\t\t\treturn {\n\t\t\t\t\tfrom: requested,\n\t\t\t\t\tto: base,\n\t\t\t\t\tfromScore: rankingOverride.fromScore,\n\t\t\t\t\ttoScore: rankingOverride.toScore,\n\t\t\t\t\treason: 'avoid versions collection'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn rankingOverride;\n\t}\n\treturn null;\n}\n\nfunction pickPreferredCollectionCandidate(\n\tranked: Array<{ name: string; score: number }>\n): { name: string; score: number } | null {\n\tif (!Array.isArray(ranked) || !ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = ranked[0];\n\tif (!top) {\n\t\treturn null;\n\t}\n\tif (!isVersionCollectionName(top.name)) {\n\t\treturn top;\n\t}\n\tconst nonVersion = ranked.find(entry => entry && !isVersionCollectionName(entry.name));\n\tif (nonVersion && nonVersion.score >= top.score - 5) {\n\t\treturn nonVersion;\n\t}\n\treturn top;\n}\n\nfunction resolveAssistantCollectionOverride(\n\tcollectionRanking: Record<string, any> | null,\n\tcurrentCollection: string\n): { from: string; to: string; fromScore: number; toScore: number; reason: string } | null {\n\tconst ranked = Array.isArray(collectionRanking?.ranked) ? collectionRanking?.ranked : [];\n\tif (!ranked.length) {\n\t\treturn null;\n\t}\n\tconst top = pickPreferredCollectionCandidate(ranked);\n\tif (!top || top.score < AI_ASSISTANT_COLLECTION_OVERRIDE_MIN_SCORE) {\n\t\treturn null;\n\t}\n\tconst current = normalizeOptionalString(currentCollection);\n\tif (!current) {\n\t\treturn {\n\t\t\tfrom: '',\n\t\t\tto: top.name,\n\t\t\tfromScore: 0,\n\t\t\ttoScore: top.score,\n\t\t\treason: 'no collection specified'\n\t\t};\n\t}\n\tif (current === top.name) {\n\t\treturn null;\n\t}\n\tconst currentScore = ranked.find(entry => entry.name === current)?.score ?? 0;\n\tconst scoreGap = top.score - currentScore;\n\tconst currentIsVersion = isVersionCollectionName(current);\n\tconst topIsVersion = isVersionCollectionName(top.name);\n\tif (scoreGap < AI_ASSISTANT_COLLECTION_OVERRIDE_SCORE_GAP && !(currentIsVersion && !topIsVersion)) {\n\t\treturn null;\n\t}\n\tconst reason = currentIsVersion && !topIsVersion\n\t\t? 'preferred non-version collection'\n\t\t: `higher score (${top.score} vs ${currentScore})`;\n\treturn {\n\t\tfrom: current,\n\t\tto: top.name,\n\t\tfromScore: currentScore,\n\t\ttoScore: top.score,\n\t\treason\n\t};\n}\n\nfunction findBestCollectionMatch(requested: string, collectionNames: string[]): { name: string; score: number } | null {\n\tconst requestedTokens = tokenizeCollectionText(requested);\n\tif (!requestedTokens.length || !collectionNames.length) {\n\t\treturn null;\n\t}\n\tlet best: { name: string; score: number } | null = null;\n\tcollectionNames.forEach((name) => {\n\t\tconst score = scoreCollectionMatch(requestedTokens, name);\n\t\tif (!best || score > best.score) {\n\t\t\tbest = { name, score };\n\t\t}\n\t});\n\treturn best;\n}\n\nasync function resolveAssistantCollectionName(\n\tdb: any,\n\tdbName: string,\n\trequested: string\n): Promise<{ name: string; matched: boolean; candidates: string[]; score: number }> {\n\tconst trimmed = normalizeOptionalString(requested);\n\tif (!trimmed) {\n\t\treturn { name: '', matched: false, candidates: [], score: 0 };\n\t}\n\tconst collectionNames = await listAssistantCollections(db, dbName);\n\tif (collectionNames.includes(trimmed)) {\n\t\treturn { name: trimmed, matched: true, candidates: [], score: 100 };\n\t}\n\tconst best = findBestCollectionMatch(trimmed, collectionNames);\n\tif (best && best.score >= 20) {\n\t\treturn { name: best.name, matched: true, candidates: [], score: best.score };\n\t}\n\tconst candidates = collectionNames\n\t\t.map(name => ({ name, score: scoreCollectionMatch(tokenizeCollectionText(trimmed), name) }))\n\t\t.filter(entry => entry.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.slice(0, 5)\n\t\t.map(entry => entry.name);\n\treturn { name: trimmed, matched: false, candidates, score: best?.score || 0 };\n}\n\nfunction findQueryDateField(query: any): string | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tif (Array.isArray(query)) {\n\t\tfor (const entry of query) {\n\t\t\tconst found = findQueryDateField(entry);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\tfor (const key of Object.keys(query)) {\n\t\tif (key.startsWith('$')) {\n\t\t\tconst found = findQueryDateField(query[key]);\n\t\t\tif (found) {\n\t\t\t\treturn found;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (AI_ASSISTANT_DATE_FALLBACKS[key]) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction replaceQueryField(query: any, fromField: string, toField: string): any {\n\tif (Array.isArray(query)) {\n\t\treturn query.map(entry => replaceQueryField(entry, fromField, toField));\n\t}\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn query;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(query).forEach((key) => {\n\t\tconst nextKey = key === fromField ? toField : key;\n\t\tresult[nextKey] = replaceQueryField((query as any)[key], fromField, toField);\n\t});\n\treturn result;\n}\n\nfunction extractDateRangeConditions(query: any): Array<{ field: string; condition: any }> {\n\tif (!query || typeof query !== 'object' || query instanceof Date) {\n\t\treturn [];\n\t}\n\tconst results: Array<{ field: string; condition: any }> = [];\n\tObject.keys(query).forEach((key) => {\n\t\tif (key.startsWith('$')) {\n\t\t\treturn;\n\t\t}\n\t\tconst value = (query as any)[key];\n\t\tif (value instanceof Date) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t\treturn;\n\t\t}\n\t\tif (value && typeof value === 'object' && hasDateRangeOperators(value)) {\n\t\t\tresults.push({ field: key, condition: value });\n\t\t}\n\t});\n\treturn results;\n}\n\nfunction expandQueryDateFallbacks(query: any): { query: any; fields: string[] } | null {\n\tif (!query || typeof query !== 'object') {\n\t\treturn null;\n\t}\n\tconst addedFields: string[] = [];\n\tconst pushField = (field: string) => {\n\t\tif (!field) {\n\t\t\treturn;\n\t\t}\n\t\tif (addedFields.includes(field)) {\n\t\t\treturn;\n\t\t}\n\t\taddedFields.push(field);\n\t};\n\n\tconst expandOrArray = (orArray: any[]): any[] => {\n\t\tconst existingFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet extended = [...orArray];\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst dateConditions = extractDateRangeConditions(entry);\n\t\t\tdateConditions.forEach((condition) => {\n\t\t\t\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[condition.field];\n\t\t\t\tif (fallback && !existingFields.has(fallback)) {\n\t\t\t\t\textended = [...extended, replaceQueryField(entry, condition.field, fallback)];\n\t\t\t\t\texistingFields.add(fallback);\n\t\t\t\t\tpushField(fallback);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!existingFields.has('date_original')) {\n\t\t\t\tconst candidate = dateConditions.find(condition => condition.field.startsWith('date_') && condition.field !== 'date_original');\n\t\t\t\tif (candidate) {\n\t\t\t\t\textended = [...extended, replaceQueryField(entry, candidate.field, 'date_original')];\n\t\t\t\t\texistingFields.add('date_original');\n\t\t\t\t\tpushField('date_original');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn extended;\n\t};\n\n\tconst visit = (value: any): { value: any; changed: boolean } => {\n\t\tif (Array.isArray(value)) {\n\t\t\tlet changed = false;\n\t\t\tconst nextArray = value.map((entry) => {\n\t\t\t\tconst visited = visit(entry);\n\t\t\t\tif (visited.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn visited.value;\n\t\t\t});\n\t\t\treturn { value: changed ? nextArray : value, changed };\n\t\t}\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn { value, changed: false };\n\t\t}\n\t\tlet changed = false;\n\t\tconst next: Record<string, any> = { ...value };\n\t\tObject.keys(value).forEach((key) => {\n\t\t\tif (key === '$or' && Array.isArray(value.$or)) {\n\t\t\t\tconst expanded = expandOrArray(value.$or);\n\t\t\t\tif (expanded.length !== value.$or.length) {\n\t\t\t\t\tnext.$or = expanded;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst visited = visit(value[key]);\n\t\t\tif (visited.changed) {\n\t\t\t\tnext[key] = visited.value;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn { value: changed ? next : value, changed };\n\t};\n\n\tconst result = visit(query);\n\tif (!result.changed || !addedFields.length) {\n\t\treturn null;\n\t}\n\treturn { query: result.value, fields: addedFields };\n}\n\nfunction buildDateFieldExpansionList(field: string): string[] {\n\tconst normalized = normalizeOptionalString(field);\n\tif (!normalized) {\n\t\treturn [];\n\t}\n\tconst expansions = new Set<string>();\n\tconst add = (value: string) => {\n\t\tif (value && value !== normalized) {\n\t\t\texpansions.add(value);\n\t\t}\n\t};\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[normalized];\n\tif (fallback) {\n\t\tadd(fallback);\n\t}\n\tif (normalized.startsWith('date_') || normalized === 'date' || normalized.endsWith('_date')) {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\tif (normalized === 'createdAt' || normalized === 'updatedAt') {\n\t\tAI_ASSISTANT_DATE_EXPANSION_FIELDS.forEach(add);\n\t}\n\treturn Array.from(expansions);\n}\n\nfunction expandAggregateDateMatchFallback(\n\tpipeline: Array<Record<string, any>>\n): { pipeline: Array<Record<string, any>>; fields: string[] } | null {\n\tif (!Array.isArray(pipeline)) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < pipeline.length; i += 1) {\n\t\tconst stage = pipeline[i];\n\t\tif (!stage || typeof stage !== 'object' || !stage.$match || typeof stage.$match !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchStage = stage.$match as Record<string, any>;\n\t\tconst orArray = Array.isArray(matchStage.$or) ? matchStage.$or : null;\n\t\tif (!orArray || !orArray.length) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst existingFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.keys(entry).forEach((key) => {\n\t\t\t\tif (!key.startsWith('$')) {\n\t\t\t\t\texistingFields.add(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tlet expandedOr = [...orArray];\n\t\tconst addedFields = new Set<string>();\n\t\torArray.forEach((entry) => {\n\t\t\tif (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst conditions = extractDateRangeConditions(entry);\n\t\t\tconditions.forEach((condition) => {\n\t\t\t\tconst expansions = buildDateFieldExpansionList(condition.field);\n\t\t\t\texpansions.forEach((field) => {\n\t\t\t\t\tif (existingFields.has(field)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\texpandedOr = [...expandedOr, replaceQueryField(entry, condition.field, field)];\n\t\t\t\t\texistingFields.add(field);\n\t\t\t\t\taddedFields.add(field);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tif (!addedFields.size) {\n\t\t\treturn null;\n\t\t}\n\t\tconst nextMatch = {\n\t\t\t...matchStage,\n\t\t\t$or: expandedOr\n\t\t};\n\t\tconst updated = pipeline.map((current, index) => (index === i ? { $match: nextMatch } : current));\n\t\treturn { pipeline: updated, fields: Array.from(addedFields) };\n\t}\n\treturn null;\n}\n\nfunction resolveQueryDateFieldFallback(query: any): { from: string; to: string } | null {\n\tconst dateField = findQueryDateField(query);\n\tif (!dateField) {\n\t\treturn null;\n\t}\n\tconst fallback = AI_ASSISTANT_DATE_FALLBACKS[dateField];\n\tif (!fallback) {\n\t\treturn null;\n\t}\n\treturn { from: dateField, to: fallback };\n}\n\nfunction containsForbiddenMongoOperators(value: any): boolean {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.some(entry => containsForbiddenMongoOperators(entry));\n\t}\n\tfor (const key of Object.keys(value)) {\n\t\tconst normalized = key.toLowerCase();\n\t\tif (normalized === '$where' || normalized === '$function' || normalized === '$accumulator') {\n\t\t\treturn true;\n\t\t}\n\t\tif (containsForbiddenMongoOperators(value[key])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction buildClientScopeCacheKey(dbName: string, collection: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}`;\n}\n\nfunction buildFieldIndexCacheKey(dbName: string, collection: string, field: string): string {\n\tconst normalizedDb = normalizeOptionalString(dbName).toLowerCase();\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst normalizedField = normalizeOptionalString(field).toLowerCase();\n\treturn `${normalizedDb || 'db'}:${normalizedCollection}:${normalizedField}`;\n}\n\nasync function collectionHasFieldIndex(db: any, dbName: string, collection: string, field: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tconst normalizedField = normalizeOptionalString(field);\n\tif (!normalizedCollection || !normalizedField) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildFieldIndexCacheKey(dbName, normalizedCollection, normalizedField);\n\tconst cached = AI_ASSISTANT_FIELD_INDEX_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst indexes = await db.collection(normalizedCollection).indexes();\n\t\tconst hasIndex = Array.isArray(indexes)\n\t\t\t&& indexes.some((entry: any) => entry?.key && Object.prototype.hasOwnProperty.call(entry.key, normalizedField));\n\t\tAI_ASSISTANT_FIELD_INDEX_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function collectionHasClientIndex(db: any, dbName: string, collection: string): Promise<boolean> {\n\tconst normalizedCollection = normalizeOptionalString(collection);\n\tif (!normalizedCollection) {\n\t\treturn false;\n\t}\n\tconst cacheKey = buildClientScopeCacheKey(dbName, normalizedCollection);\n\tconst cached = AI_ASSISTANT_CLIENT_SCOPE_CACHE.get(cacheKey);\n\tif (typeof cached === 'boolean') {\n\t\treturn cached;\n\t}\n\ttry {\n\t\tconst hasIndex = await collectionHasFieldIndex(db, dbName, normalizedCollection, 'id_client');\n\t\tAI_ASSISTANT_CLIENT_SCOPE_CACHE.set(cacheKey, hasIndex);\n\t\treturn hasIndex;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction applyClientScopeFilter(query: Record<string, any>, idClient?: string, isSuperAdmin = false): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedClient = normalizeOptionalString(idClient);\n\tif (!normalizedClient) {\n\t\treturn query;\n\t}\n\treturn {\n\t\t$and: [query, { id_client: normalizedClient }]\n\t};\n}\n\nfunction applyCustomerScopeFilter(\n\tquery: Record<string, any>,\n\tcollection: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false\n): Record<string, any> {\n\tif (isSuperAdmin) {\n\t\treturn query;\n\t}\n\tconst normalizedCustomer = normalizeOptionalString(idCustomer);\n\tif (!normalizedCustomer) {\n\t\treturn query;\n\t}\n\tconst normalizedCollection = normalizeOptionalString(collection).toLowerCase();\n\tconst customerField = normalizedCollection === 'users' || normalizedCollection === 'user-versions'\n\t\t? 'other.id_customer'\n\t\t: 'id_customer';\n\treturn {\n\t\t$and: [query, { [customerField]: normalizedCustomer }]\n\t};\n}\n\nfunction buildAssistantProbeQuery(\n\tcollection: string,\n\tidClient?: string,\n\tidCustomer?: string,\n\tisSuperAdmin = false,\n\tincludeClientScope = false\n): Record<string, any> {\n\tlet query: Record<string, any> = {};\n\tif (includeClientScope) {\n\t\tquery = applyClientScopeFilter(query, idClient, isSuperAdmin);\n\t}\n\treturn applyCustomerScopeFilter(query, collection, idCustomer, isSuperAdmin);\n}\n\nfunction fetchAssistantProbeDocs(params: {\n\tdb: any;\n\tcollection: string;\n\tidClient?: string;\n\tidCustomer?: string;\n\tisSuperAdmin: boolean;\n\tincludeClientScope: boolean;\n}): Promise<any[]> {\n\tconst { db, collection, idClient, idCustomer, isSuperAdmin, includeClientScope } = params;\n\tconst probeQuery = buildAssistantProbeQuery(collection, idClient, idCustomer, isSuperAdmin, includeClientScope);\n\treturn db.collection(collection)\n\t\t.find(probeQuery, {\n\t\t\tlimit: AI_ASSISTANT_PROBE_LIMIT,\n\t\t\treadPreference: AI_ASSISTANT_READ_PREFERENCE\n\t\t})\n\t\t.toArray();\n}\n\nfunction userHasViewPermission(user: any, view: string): boolean {\n\tif (!user || !view) {\n\t\treturn false;\n\t}\n\tif (user.roles?.super_admin) {\n\t\treturn true;\n\t}\n\tconst groups = Array.isArray(user.roles?.groups) ? user.roles.groups : [];\n\tconst miscs = Array.isArray(user.roles?.miscs) ? user.roles.miscs : [];\n\tif (groups.some(group => Array.isArray(group.views) && group.views.some(v => v.startsWith(view)))) {\n\t\treturn true;\n\t}\n\tif (miscs.some(v => v.startsWith(view))) {\n\t\treturn true;\n\t}\n\tif (groups.some(group => group.name === view)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction userHasAnyViewPermission(user: any, views: string[]): boolean {\n\tif (!user || !Array.isArray(views)) {\n\t\treturn false;\n\t}\n\treturn views.some(view => view && userHasViewPermission(user, view));\n}\n\nfunction userHasInvoiceAccess(user: any): boolean {\n\treturn userHasAnyViewPermission(user, ['/invoice', '/report/invoice']);\n}\n\nfunction requiresInvoicePermission(collection: string): boolean {\n\tconst normalized = normalizeOptionalString(collection).toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn normalized.includes('invoice');\n}\n\nfunction redactSensitiveFields(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => redactSensitiveFields(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst result: Record<string, any> = {};\n\tObject.keys(value).forEach((key) => {\n\t\tif (shouldRedactField(key)) {\n\t\t\treturn;\n\t\t}\n\t\tresult[key] = redactSensitiveFields(value[key]);\n\t});\n\treturn result;\n}\n\nfunction shouldRedactField(key: string): boolean {\n\tconst normalized = String(key || '').trim().toLowerCase();\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\treturn AI_ASSISTANT_SENSITIVE_FIELDS.some((field) => normalized === field || normalized.includes(field));\n}\n\nfunction resolveCodexTimeoutMs(): number {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalNumber(config['AI_ASSISTANT_CODEX_TIMEOUT_MS'] || process.env.AI_ASSISTANT_CODEX_TIMEOUT_MS);\n\tif (raw && raw > 0) {\n\t\treturn round(raw);\n\t}\n\treturn DEFAULT_CODEX_TIMEOUT_MS;\n}\n\nfunction resolveCodexWorkerThreadEnabled(): boolean {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_USE_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_USE_WORKER_THREAD\n\t\t|| config['AI_ASSISTANT_CODEX_WORKER_THREAD']\n\t\t|| process.env.AI_ASSISTANT_CODEX_WORKER_THREAD\n\t);\n\tconst normalized = normalizeOptionalBoolean(raw);\n\tif (typeof normalized === 'boolean') {\n\t\treturn normalized;\n\t}\n\treturn process.env.IS_WORKER_INSTANCE !== 'true';\n}\n\nfunction resolveCodexModel(): string {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_MODEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_MODEL\n\t\t|| config['AI_TERMINAL_CODEX_MODEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_MODEL\n\t\t|| config['AI_DASHBOARD_CODEX_MODEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_MODEL\n\t);\n\treturn raw || DEFAULT_CODEX_MODEL;\n}\n\nfunction resolveCodexThoughtLevel(): 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst raw = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_ASSISTANT_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_TERMINAL_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_TERMINAL_CODEX_THOUGHT_LEVEL\n\t\t|| config['AI_DASHBOARD_CODEX_THOUGHT_LEVEL']\n\t\t|| process.env.AI_DASHBOARD_CODEX_THOUGHT_LEVEL\n\t);\n\tconst normalized = (raw || '').trim().toLowerCase();\n\tif (normalized === 'minimal' || normalized === 'low' || normalized === 'medium' || normalized === 'high' || normalized === 'xhigh') {\n\t\treturn normalized as 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';\n\t}\n\treturn 'low';\n}\n\nfunction resolveCodexSettings(): CodexConfig {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst apiKey = (serverConfig['OPENAI_API_KEY'] || process.env.OPENAI_API_KEY || '').trim();\n\tif (!apiKey) {\n\t\tthrow new Error('OpenAI API key missing. Add OPENAI_API_KEY to server config.');\n\t}\n\treturn {\n\t\tapiKey,\n\t\tbaseUrl: (serverConfig['OPENAI_BASE_URL'] || process.env.OPENAI_BASE_URL || '').trim() || undefined,\n\t\tmodel: resolveCodexModel(),\n\t\tmaxRetries: normalizeOptionalNumber(serverConfig['OPENAI_MAX_RETRIES'] || process.env.OPENAI_MAX_RETRIES),\n\t\tretryDelayMs: normalizeOptionalNumber(serverConfig['OPENAI_RETRY_DELAY_MS'] || process.env.OPENAI_RETRY_DELAY_MS)\n\t};\n}\n\nfunction getAssistantCodexClient(): CodexClient {\n\tif (!assistantCodexClient) {\n\t\tassistantCodexClient = new CodexClient(resolveCodexSettings());\n\t}\n\treturn assistantCodexClient;\n}\n\nclass CodexWorkerBootstrapError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'CodexWorkerBootstrapError';\n\t}\n}\n\nfunction applyCodexStreamStatusHandler(\n\trunOptions: CodexRunOptions,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): CodexRunOptions {\n\tif (!streamStatusHandler) {\n\t\treturn runOptions;\n\t}\n\tconst existing = runOptions?.onStreamEvent;\n\treturn {\n\t\t...runOptions,\n\t\tonStreamEvent: async (event: any) => {\n\t\t\tif (existing) {\n\t\t\t\tawait existing(event);\n\t\t\t}\n\t\t\tconst status = deriveAssistantStreamStatus(event);\n\t\t\tif (status) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t}\n\t};\n}\n\nasync function waitForCodexWorkerMessage(\n\tworker: Worker,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<CodexWorkerResponse> {\n\tfor await (const [message] of on(worker, 'message')) {\n\t\tconst payload = message as CodexWorkerResponse;\n\t\tif (payload?.type === 'stream') {\n\t\t\tconst status = normalizeOptionalString(payload.status);\n\t\t\tif (status && streamStatusHandler) {\n\t\t\t\tstreamStatusHandler(status);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn payload;\n\t}\n\tthrow new CodexWorkerBootstrapError('Codex worker exited before completing.');\n}\n\nasync function runCodexInWorkerThread(\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst streamedOptions = applyCodexStreamStatusHandler(runOptions, streamStatusHandler);\n\tif (!resolveCodexWorkerThreadEnabled()) {\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\tconst workerPath = await resolveCodexWorkerPath();\n\tif (!workerPath) {\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n\n\ttry {\n\t\treturn await runCodexInWorkerThreadInternal(workerPath, prompt, runOptions, config, streamStatusHandler);\n\t}\n\tcatch (error) {\n\t\tif (!(error instanceof CodexWorkerBootstrapError)) {\n\t\t\tthrow error;\n\t\t}\n\t\tconsole.error('Codex worker bootstrap failed, falling back to in-process run.', error);\n\t\tconst codexClient = getAssistantCodexClient();\n\t\treturn await codexClient.run(prompt, streamedOptions);\n\t}\n}\n\nasync function runCodexInWorkerThreadInternal(\n\tworkerPath: string,\n\tprompt: string,\n\trunOptions: CodexRunOptions,\n\tconfig: CodexConfig,\n\tstreamStatusHandler?: CodexStreamStatusHandler\n): Promise<string> {\n\tconst sanitizedOptions = sanitizeCodexRunOptions(runOptions);\n\tlet worker: Worker;\n\n\ttry {\n\t\tworker = new Worker(workerPath, {\n\t\t\tworkerData: {\n\t\t\t\tprompt,\n\t\t\t\trunOptions: sanitizedOptions,\n\t\t\t\tconfig,\n\t\t\t\tstreamStatus: !!streamStatusHandler\n\t\t\t}\n\t\t});\n\t}\n\tcatch (error) {\n\t\tconst wrapped = new CodexWorkerBootstrapError('Failed to start codex worker.');\n\t\tif (error instanceof Error && error.stack) {\n\t\t\twrapped.stack = error.stack;\n\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tconst timeoutMs = (sanitizedOptions?.timeoutMs || resolveCodexTimeoutMs()) + 15000;\n\tconst timeoutController = new AbortController();\n\tconst timeoutPromise = (async () => {\n\t\ttry {\n\t\t\tawait sleepTimeout(timeoutMs, null, { signal: timeoutController.signal });\n\t\t\treturn { type: 'timeout' as const };\n\t\t}\n\t\tcatch (error: any) {\n\t\t\tif (error?.name === 'AbortError') {\n\t\t\t\treturn { type: 'aborted' as const };\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t})();\n\n\tconst messagePromise = (async () => {\n\t\tconst message = await waitForCodexWorkerMessage(worker, streamStatusHandler);\n\t\treturn { type: 'message' as const, message };\n\t})();\n\tconst errorPromise = (async () => {\n\t\tconst [error] = await once(worker, 'error');\n\t\treturn { type: 'error' as const, error: error as Error };\n\t})();\n\tconst exitPromise = (async () => {\n\t\tconst [code] = await once(worker, 'exit');\n\t\treturn { type: 'exit' as const, code: code as number };\n\t})();\n\n\tlet outcome: { type: 'message'; message: CodexWorkerResponse }\n\t\t| { type: 'error'; error: Error }\n\t\t| { type: 'exit'; code: number }\n\t\t| { type: 'timeout' }\n\t\t| { type: 'aborted' };\n\n\ttry {\n\t\toutcome = await Promise.race([messagePromise, errorPromise, exitPromise, timeoutPromise]);\n\t}\n\tfinally {\n\t\ttimeoutController.abort();\n\t\tworker.removeAllListeners('error');\n\t\tworker.removeAllListeners('exit');\n\t}\n\n\tif (outcome.type === 'message') {\n\t\tawait terminateWorker(worker);\n\t\tif (outcome.message && outcome.message.ok) {\n\t\t\treturn outcome.message.result || '';\n\t\t}\n\t\tthrow new Error(outcome.message?.error || 'Codex worker failed.');\n\t}\n\n\tif (outcome.type === 'timeout') {\n\t\tawait terminateWorker(worker);\n\t\tthrow new CodexWorkerBootstrapError('Codex worker timed out.');\n\t}\n\n\tif (outcome.type === 'error') {\n\t\tawait terminateWorker(worker);\n\t\tconst wrapped = new CodexWorkerBootstrapError('Codex worker errored before completing.');\n\t\tif (outcome.error?.stack) {\n\t\t\twrapped.stack = outcome.error.stack;\n\t\t}\n\t\tthrow wrapped;\n\t}\n\n\tif (outcome.type === 'exit') {\n\t\tthrow new CodexWorkerBootstrapError(`Codex worker exited before completing (code ${outcome.code}).`);\n\t}\n\n\tthrow new CodexWorkerBootstrapError('Codex worker aborted before completing.');\n}\n\nasync function terminateWorker(worker: Worker): Promise<void> {\n\ttry {\n\t\tawait worker.terminate();\n\t}\n\tcatch {\n\t\t// Ignore termination errors.\n\t}\n}\n\nfunction sanitizeCodexRunOptions(options: CodexRunOptions): CodexRunOptions {\n\tif (!options) {\n\t\treturn {};\n\t}\n\treturn {\n\t\ttimeoutMs: options.timeoutMs,\n\t\tthreadOptions: options.threadOptions,\n\t\tthreadKey: options.threadKey,\n\t\treuseThread: options.reuseThread\n\t};\n}\n\nasync function resolveCodexWorkerPath(): Promise<string | null> {\n\tconst jsPath = path.join(__dirname, '../workers/codex-runner.worker.js');\n\tif (await pathExists(jsPath)) {\n\t\treturn jsPath;\n\t}\n\tconst tsPath = path.join(__dirname, '../workers/codex-runner.worker.ts');\n\tif (await pathExists(tsPath)) {\n\t\treturn tsPath;\n\t}\n\treturn null;\n}\n\nasync function pathExists(target: string): Promise<boolean> {\n\ttry {\n\t\tconst stat = await fs.stat(target);\n\t\treturn stat.isFile();\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nasync function resolveAssistantWorkspaceRoot(): Promise<string> {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(\n\t\tconfig['AI_ASSISTANT_WORKSPACE_ROOT']\n\t\t|| process.env.AI_ASSISTANT_WORKSPACE_ROOT\n\t\t|| config['CODEX_WORKSPACE_ROOT']\n\t\t|| process.env.CODEX_WORKSPACE_ROOT\n\t);\n\tconst candidate = configured || ResolveIOServer.getClientDir() || process.cwd();\n\tlet stat = null;\n\ttry {\n\t\tstat = await fs.stat(candidate);\n\t}\n\tcatch {\n\t\tstat = null;\n\t}\n\tif (!stat || !stat.isDirectory()) {\n\t\tthrow new Error('AI assistant workspace root not found.');\n\t}\n\treturn candidate;\n}\n\nfunction isAssistantDataQuestion(message: string): boolean {\n\tconst text = normalizeOptionalString(message).toLowerCase();\n\tif (!text) {\n\t\treturn false;\n\t}\n\tconst patterns = [\n\t\t/\\bshow\\b/,\n\t\t/\\blist\\b/,\n\t\t/\\bhow many\\b/,\n\t\t/\\bcount\\b/,\n\t\t/\\btotal\\b/,\n\t\t/\\bnumber of\\b/,\n\t\t/\\blast\\b/,\n\t\t/\\brecent\\b/,\n\t\t/\\bthis week\\b/,\n\t\t/\\blast month\\b/,\n\t\t/\\boverdue\\b/,\n\t\t/\\bopen\\b/,\n\t\t/\\bclosed\\b/,\n\t\t/\\bcompleted\\b/,\n\t\t/\\bmissing\\b/,\n\t\t/\\bgroup(ed)? by\\b/,\n\t\t/\\bbreakdown\\b/,\n\t\t/\\bper day\\b/,\n\t\t/\\bper week\\b/,\n\t\t/\\bper month\\b/\n\t];\n\treturn patterns.some(pattern => pattern.test(text));\n}\n\nfunction buildAssistantCodexDirectivePrompt(\n\tmessage: string,\n\tattachmentText: string,\n\thistoryText: string,\n\tcontextText?: string\n): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\tconst instruction = '\\n\\nInstruction:\\nReturn ONLY a single MONGO_READ or MONGO_AGG directive line. Do not include any other text.';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}${instruction}`.trim();\n}\n\nfunction buildAssistantCodexPrompt(message: string, attachmentText: string, historyText: string, contextText?: string): string {\n\tconst trimmedContext = normalizeOptionalString(contextText);\n\tconst contextBlock = trimmedContext ? `\\n\\nContext:\\n${trimmedContext}` : '';\n\tconst trimmedHistory = normalizeOptionalString(historyText);\n\tconst historyBlock = trimmedHistory ? `\\n\\nConversation so far:\\n${trimmedHistory}` : '';\n\treturn `System:\\n${AI_ASSISTANT_SYSTEM_PROMPT}${contextBlock}${historyBlock}\\n\\nUser:\\n${message}${attachmentText || ''}`.trim();\n}\n\nfunction buildAssistantContext(\n\tinput: AiCodexRunInput,\n\tuserContext?: {\n\t\tisSuperAdmin?: boolean;\n\t\thasInvoiceAccess?: boolean;\n\t\tcustomerId?: string;\n\t\tcollectionHints?: string[];\n\t\ttermHints?: string[];\n\t}\n): string {\n\tconst lines: string[] = [];\n\tconst idApp = normalizeOptionalString(input?.id_app);\n\tif (idApp) {\n\t\tlines.push(`Current app id: ${idApp}`);\n\t}\n\tif (typeof userContext?.isSuperAdmin === 'boolean') {\n\t\tlines.push(`User is super admin: ${userContext.isSuperAdmin ? 'yes' : 'no'}`);\n\t}\n\tif (typeof userContext?.hasInvoiceAccess === 'boolean') {\n\t\tlines.push(`User has invoice access: ${userContext.hasInvoiceAccess ? 'yes' : 'no'}`);\n\t}\n\tconst customerId = normalizeOptionalString(userContext?.customerId);\n\tif (customerId) {\n\t\tlines.push('Customer portal scope: yes');\n\t\tlines.push(`Customer id: ${customerId}`);\n\t}\n\tconst contextMode = normalizeOptionalString(input?.context?.mode);\n\tconst contextRoute = normalizeOptionalString(input?.context?.route);\n\tif (contextMode) {\n\t\tlines.push(`Context scope: ${contextMode === 'current' ? 'current page' : contextMode}`);\n\t}\n\tif (contextRoute) {\n\t\tlines.push(`Current page route: ${contextRoute}`);\n\t}\n\tconst collectionHints = Array.isArray(userContext?.collectionHints)\n\t\t? userContext?.collectionHints.filter(Boolean)\n\t\t: [];\n\tif (collectionHints.length) {\n\t\tlines.push(`Collection hints: ${collectionHints.join(', ')}`);\n\t}\n\tconst termHints = Array.isArray(userContext?.termHints)\n\t\t? userContext?.termHints.filter(Boolean)\n\t\t: [];\n\tif (termHints.length) {\n\t\tlines.push(`Term hints: ${termHints.join('; ')}`);\n\t}\n\tconst mongoDb = normalizeOptionalString(input?.mongo?.database);\n\tconst mongoDbs = Array.isArray(input?.mongo?.databases)\n\t\t? input.mongo.databases.map(value => normalizeOptionalString(value)).filter(Boolean)\n\t\t: [];\n\tconst mongoAccess = normalizeOptionalString(input?.mongo?.access)\n\t\t|| (input?.mongo?.readonly === true ? 'read' : '');\n\tif (mongoDb) {\n\t\tlines.push(`Mongo database: ${mongoDb}`);\n\t}\n\tif (mongoDbs.length) {\n\t\tlines.push(`Mongo databases allowed: ${mongoDbs.join(', ')}`);\n\t}\n\tif (mongoAccess) {\n\t\tlines.push(`Mongo access: ${mongoAccess}`);\n\t}\n\treturn lines.join('\\n');\n}\n\ntype ClientRouteIndex = {\n\tset: Set<string>;\n\tmap: Map<string, string>;\n\tsize: number;\n};\n\nlet cachedClientRouteIndex: ClientRouteIndex | null = null;\n\nfunction normalizeRouteKey(value: string): string {\n\tconst trimmed = normalizeOptionalString(value);\n\tif (!trimmed) {\n\t\treturn '';\n\t}\n\tconst withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;\n\treturn withSlash.replace(/\\/+$/, '');\n}\n\nfunction normalizeRouteMatchKey(value: string): string {\n\treturn normalizeRouteKey(value).toLowerCase();\n}\n\nfunction buildClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tconst set = new Set<string>();\n\tconst map = new Map<string, string>();\n\tfor (const route of routes) {\n\t\tconst normalized = normalizeRouteKey(route);\n\t\tif (!normalized) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst matchKey = normalized.toLowerCase();\n\t\tset.add(matchKey);\n\t\tif (!map.has(matchKey)) {\n\t\t\tmap.set(matchKey, normalized);\n\t\t}\n\t}\n\treturn { set, map, size: routes.length };\n}\n\nfunction getClientRouteIndex(): ClientRouteIndex {\n\tconst routes = ResolveIOServer.getClientRoutes?.() || [];\n\tif (cachedClientRouteIndex && cachedClientRouteIndex.size === routes.length) {\n\t\treturn cachedClientRouteIndex;\n\t}\n\tcachedClientRouteIndex = buildClientRouteIndex();\n\treturn cachedClientRouteIndex;\n}\n\nfunction splitRouteSuffix(value: string): { base: string; suffix: string } {\n\tconst matchIndex = value.search(/[?#]/);\n\tif (matchIndex === -1) {\n\t\treturn { base: value, suffix: '' };\n\t}\n\treturn { base: value.slice(0, matchIndex), suffix: value.slice(matchIndex) };\n}\n\nfunction isClientRoute(value: string, index: ClientRouteIndex): boolean {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn false;\n\t}\n\tif (index.set.has(normalized)) {\n\t\treturn true;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\twhile (parts.length > 1) {\n\t\tparts.pop();\n\t\tconst prefix = `/${parts.join('/')}`;\n\t\tif (index.set.has(prefix)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction getCanonicalRoute(value: string, index: ClientRouteIndex): string | null {\n\tconst normalized = normalizeRouteMatchKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\treturn index.map.get(normalized) || null;\n}\n\nfunction swapTwoSegmentRoute(value: string): string | null {\n\tconst normalized = normalizeRouteKey(value);\n\tif (!normalized) {\n\t\treturn null;\n\t}\n\tconst parts = normalized.split('/').filter(Boolean);\n\tif (parts.length !== 2) {\n\t\treturn null;\n\t}\n\treturn `/${parts[1]}/${parts[0]}`;\n}\n\nfunction normalizeAssistantRoutes(value: string): string {\n\tconst index = getClientRouteIndex();\n\tif (!index.set.size) {\n\t\treturn value;\n\t}\n\tconst routePattern = /\\/[a-z0-9][a-z0-9/_-]*(?:\\?[a-z0-9=&%._-]+)?(?:#[a-z0-9._-]+)?/gi;\n\treturn value.replace(routePattern, (match) => {\n\t\tconst { base, suffix } = splitRouteSuffix(match);\n\t\tif (isClientRoute(base, index)) {\n\t\t\tconst canonical = getCanonicalRoute(base, index);\n\t\t\treturn canonical ? `${canonical}${suffix}` : match;\n\t\t}\n\t\tconst swapped = swapTwoSegmentRoute(base);\n\t\tif (!swapped || !isClientRoute(swapped, index)) {\n\t\t\treturn match;\n\t\t}\n\t\tconst canonical = getCanonicalRoute(swapped, index) || swapped;\n\t\treturn `${canonical}${suffix}`;\n\t});\n}\n\nfunction sanitizeAssistantResponse(value: string): string {\n\tconst raw = normalizeOptionalString(value);\n\tif (!raw) {\n\t\treturn 'I could not generate a response. Please try again.';\n\t}\n\tconst withoutBlocks = raw.replace(/```[\\s\\S]*?```/g, '').replace(/`([^`]+)`/g, '$1').trim();\n\tconst stripEstimated = (line: string) => line.replace(/\\bEstimated (human )?hours:\\s*.*$/i, '').trimEnd();\n\tconst isTentativeQueryLine = (line: string) => {\n\t\tconst normalized = line.trim().replace(/^[-*•]+\\s*/, '');\n\t\tif (/^(pulling|running|fetching|querying|retrieving|gathering)\\b/i.test(normalized)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn /^i\\s+(can|will|['’]ll|am going to|['’]m going to)\\s+(pull|run|query|get|fetch|look up|retrieve|grab)\\b/i.test(normalized);\n\t};\n\tconst isInternalPlanLine = (line: string) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed || trimmed.length > 120) {\n\t\t\treturn false;\n\t\t}\n\t\tconst normalized = trimmed.toLowerCase();\n\t\tconst hasPhrase = /schema[-\\s]?probe|query rewrite|id[-\\s]?lookup|collection override|probe read|tiny probe|fallback plan/i.test(normalized);\n\t\tif (!hasPhrase) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isBulletish = /^[-*•]+\\s+/.test(trimmed);\n\t\tconst isPlanish = /^(plan|planning|approach|strategy|steps?|todo|checklist)\\b/i.test(trimmed);\n\t\treturn isBulletish || isPlanish;\n\t};\n\tconst cleanedLines: string[] = [];\n\twithoutBlocks.split('\\n').forEach((line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) {\n\t\t\tcleanedLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tif (isTentativeQueryLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (isInternalPlanLine(line)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^work ticket summary:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^estimated (human )?hours:/i.test(trimmed)) {\n\t\t\treturn;\n\t\t}\n\t\tif (/^customer-facing summary:/i.test(trimmed)) {\n\t\t\tconst stripped = line.replace(/^(\\s*)customer-facing summary:\\s*/i, '$1');\n\t\t\tconst cleaned = stripEstimated(stripped);\n\t\t\tif (cleaned.trim()) {\n\t\t\t\tcleanedLines.push(cleaned);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcleanedLines.push(stripEstimated(line));\n\t});\n\tconst cleaned = cleanedLines.join('\\n').trim();\n\tif (!cleaned) {\n\t\treturn 'I can’t share code, but I can point you to files or explain behavior at a high level.';\n\t}\n\tconst normalizedCurrency = cleaned.replace(/\\bUSD\\s*([0-9][0-9,]*(?:\\.[0-9]+)?)/g, (_match, amount) => {\n\t\treturn `$${amount}`;\n\t});\n\treturn normalizeAssistantRoutes(normalizedCurrency);\n}\n\nfunction evaluateAssistantGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst patterns: Array<{ pattern: RegExp; reason: string; response: string }> = [\n\t\t{\n\t\t\tpattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|snippet|file|function|class|script|sql)\\b/i,\n\t\t\treason: 'Code sharing is restricted.',\n\t\t\tresponse: 'I can’t share code or file contents. All code is proprietary. I can explain behavior and point you to screens or routes.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(write|generate|create|implement|fix)\\b.*\\b(code|script|function|class|endpoint|sql)\\b/i,\n\t\t\treason: 'Code generation is restricted.',\n\t\t\tresponse: 'I can’t generate code. All code is proprietary. I can explain how the feature works and where to look in the product.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i,\n\t\t\treason: 'Credentials and secrets are restricted.',\n\t\t\tresponse: 'I can’t help with credentials or secrets. If you need access, please contact support.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(delete|drop|truncate)\\s+(database|db|schema)\\b/i,\n\t\t\treason: 'Database operations are restricted.',\n\t\t\tresponse: 'I can’t help with database operations. I can explain system behavior or file locations.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(shell|terminal|ssh|sudo|rm\\\\s+-rf|chmod|chown)\\b/i,\n\t\t\treason: 'System operations are restricted.',\n\t\t\tresponse: 'I can’t help with system operations. I can explain workflows and where to find related code.'\n\t\t},\n\t\t{\n\t\t\tpattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos|hack)\\b/i,\n\t\t\treason: 'Security abuse is restricted.',\n\t\t\tresponse: 'I can’t assist with that request.'\n\t\t}\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: entry.response\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveOpenAISettings(config: any) {\n\tconst serverConfig = ResolveIOServer.getServerConfig() || {};\n\tconst apiKey = (serverConfig['OPENAI_API_KEY'] || process.env.OPENAI_API_KEY || '').trim();\n\tif (!apiKey) {\n\t\tthrow new Error('OpenAI API key missing. Add OPENAI_API_KEY to server config.');\n\t}\n\treturn {\n\t\tapiKey,\n\t\tbaseUrl: (serverConfig['OPENAI_BASE_URL'] || process.env.OPENAI_BASE_URL || '').trim() || undefined,\n\t\tmodel: normalizeOptionalString(config?.model) || (serverConfig['OPENAI_MODEL'] || process.env.OPENAI_MODEL || 'gpt-5.1').trim(),\n\t\ttemperature: normalizeOptionalNumber(config?.temperature),\n\t\tmaxTokens: normalizeOptionalNumber(config?.max_tokens),\n\t\tmaxRetries: normalizeOptionalNumber(serverConfig['OPENAI_MAX_RETRIES'] || process.env.OPENAI_MAX_RETRIES),\n\t\tretryDelayMs: normalizeOptionalNumber(serverConfig['OPENAI_RETRY_DELAY_MS'] || process.env.OPENAI_RETRY_DELAY_MS)\n\t};\n}\n\nfunction buildAiFormSystemPrompt(): string {\n\treturn AI_FORM_PATCH_SYSTEM_PROMPT;\n}\n\nfunction buildAiFormUserPrompt(\n\tmessage: string,\n\tfields: Array<AiFormField>,\n\tpatchFormat?: string,\n\troute?: string\n): string {\n\tconst lines: string[] = [];\n\tlines.push(`User request: ${message}`);\n\tconst normalizedRoute = normalizeOptionalString(route);\n\tif (normalizedRoute) {\n\t\tlines.push(`Current route: ${normalizedRoute}`);\n\t}\n\tif (patchFormat) {\n\t\tlines.push('Patch format:');\n\t\tlines.push(patchFormat);\n\t}\n\tlines.push('Allowed fields:');\n\tfields.forEach((field) => {\n\t\tconst name = field.name || '';\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\t\tconst parts = [name];\n\t\tif (field.type) {\n\t\t\tparts.push(`type=${field.type}`);\n\t\t}\n\t\tif (field.label) {\n\t\t\tparts.push(`label=\"${field.label}\"`);\n\t\t}\n\t\tif (Array.isArray(field.enums) && field.enums.length) {\n\t\t\tparts.push(`enums=${field.enums.join('|')}`);\n\t\t}\n\t\tlines.push(`- ${parts.join(' ')}`);\n\t});\n\tlines.push('Return JSON only.');\n\treturn lines.join('\\n');\n}\n\nfunction normalizeAiFormFields(fields: any): Array<AiFormField> {\n\tif (!Array.isArray(fields)) {\n\t\treturn [];\n\t}\n\treturn fields\n\t\t.map((field) => {\n\t\t\tif (!field || typeof field !== 'object') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst name = normalizeOptionalString(field.name) || normalizeOptionalString(field.path);\n\t\t\tif (!name) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst type = normalizeOptionalString(field.type);\n\t\t\tconst label = normalizeOptionalString(field.label);\n\t\t\tconst enums = Array.isArray(field.enums)\n\t\t\t\t? field.enums.map((value: any) => normalizeOptionalString(value)).filter(Boolean)\n\t\t\t\t: undefined;\n\t\t\tconst normalizedField: AiFormField = { name };\n\t\t\tif (type) {\n\t\t\t\tnormalizedField.type = type;\n\t\t\t}\n\t\t\tif (label) {\n\t\t\t\tnormalizedField.label = label;\n\t\t\t}\n\t\t\tif (enums && enums.length) {\n\t\t\t\tnormalizedField.enums = enums;\n\t\t\t}\n\t\t\treturn normalizedField;\n\t\t})\n\t\t.filter((field): field is AiFormField => !!field);\n}\n\nfunction tokenizeArithmeticExpression(expression: string): string[] | null {\n\tconst tokens: string[] = [];\n\tlet i = 0;\n\twhile (i < expression.length) {\n\t\tconst char = expression[i];\n\t\tif (/\\s/.test(char)) {\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/[()+\\-*/]/.test(char)) {\n\t\t\ttokens.push(char);\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\d|\\./.test(char)) {\n\t\t\tlet j = i + 1;\n\t\t\twhile (j < expression.length && /[\\d.]/.test(expression[j])) {\n\t\t\t\tj += 1;\n\t\t\t}\n\t\t\ttokens.push(expression.slice(i, j));\n\t\t\ti = j;\n\t\t\tcontinue;\n\t\t}\n\t\treturn null;\n\t}\n\treturn tokens;\n}\n\nfunction evaluateArithmeticExpression(expression: string): number | null {\n\tconst tokens = tokenizeArithmeticExpression(expression);\n\tif (!tokens || !tokens.length) {\n\t\treturn null;\n\t}\n\tconst output: string[] = [];\n\tconst ops: string[] = [];\n\tconst precedence: Record<string, number> = { '+': 1, '-': 1, '*': 2, '/': 2 };\n\tlet prevToken = '';\n\tconst pushOperator = (op: string) => {\n\t\twhile (ops.length) {\n\t\t\tconst top = ops[ops.length - 1];\n\t\t\tif (top === '(') {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ((precedence[top] || 0) >= (precedence[op] || 0)) {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tops.push(op);\n\t};\n\tfor (const token of tokens) {\n\t\tif (token === '(') {\n\t\t\tops.push(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === ')') {\n\t\t\twhile (ops.length && ops[ops.length - 1] !== '(') {\n\t\t\t\toutput.push(ops.pop() as string);\n\t\t\t}\n\t\t\tif (!ops.length) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tops.pop();\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (precedence[token]) {\n\t\t\tif (!prevToken || prevToken === '(' || precedence[prevToken]) {\n\t\t\t\toutput.push('0');\n\t\t\t}\n\t\t\tpushOperator(token);\n\t\t\tprevToken = token;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!/^\\d+(\\.\\d+)?$/.test(token)) {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(token);\n\t\tprevToken = token;\n\t}\n\twhile (ops.length) {\n\t\tconst op = ops.pop() as string;\n\t\tif (op === '(' || op === ')') {\n\t\t\treturn null;\n\t\t}\n\t\toutput.push(op);\n\t}\n\tconst stack: number[] = [];\n\tfor (const token of output) {\n\t\tif (precedence[token]) {\n\t\t\tif (stack.length < 2) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst b = stack.pop() as number;\n\t\t\tconst a = stack.pop() as number;\n\t\t\tswitch (token) {\n\t\t\t\tcase '+':\n\t\t\t\t\tstack.push(a + b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\tstack.push(a - b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '*':\n\t\t\t\t\tstack.push(a * b);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '/':\n\t\t\t\t\tstack.push(a / b);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tstack.push(Number(token));\n\t}\n\tif (stack.length !== 1 || Number.isNaN(stack[0])) {\n\t\treturn null;\n\t}\n\treturn stack[0];\n}\n\nfunction resolveDateExpression(expression: string): string | null {\n\tconst trimmed = String(expression || '').trim();\n\tif (!trimmed) {\n\t\treturn null;\n\t}\n\tconst quotedMatch = trimmed.match(/^['\"](.+?)['\"]$/);\n\tif (quotedMatch) {\n\t\tconst date = new Date(quotedMatch[1]);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\tif (trimmed === 'Date.now()') {\n\t\treturn new Date(Date.now()).toISOString();\n\t}\n\tconst nowMatch = trimmed.match(/^Date\\.now\\(\\)\\s*([+-])\\s*(.+)$/);\n\tif (nowMatch) {\n\t\tconst delta = evaluateArithmeticExpression(nowMatch[2]);\n\t\tif (delta === null) {\n\t\t\treturn null;\n\t\t}\n\t\tconst base = Date.now();\n\t\tconst computed = nowMatch[1] === '-' ? base - delta : base + delta;\n\t\treturn new Date(computed).toISOString();\n\t}\n\tconst numeric = evaluateArithmeticExpression(trimmed);\n\tif (numeric !== null) {\n\t\tconst date = new Date(numeric);\n\t\treturn Number.isNaN(date.getTime()) ? null : date.toISOString();\n\t}\n\treturn null;\n}\n\nfunction replaceNewDateExpressions(input: string): string {\n\tlet output = '';\n\tlet index = 0;\n\twhile (index < input.length) {\n\t\tconst start = input.indexOf('new Date(', index);\n\t\tif (start === -1) {\n\t\t\toutput += input.slice(index);\n\t\t\tbreak;\n\t\t}\n\t\toutput += input.slice(index, start);\n\t\tlet cursor = start + 'new Date('.length;\n\t\tlet depth = 1;\n\t\twhile (cursor < input.length && depth > 0) {\n\t\t\tconst char = input[cursor];\n\t\t\tif (char === '(') {\n\t\t\t\tdepth += 1;\n\t\t\t}\n\t\t\telse if (char === ')') {\n\t\t\t\tdepth -= 1;\n\t\t\t}\n\t\t\tcursor += 1;\n\t\t}\n\t\tif (depth !== 0) {\n\t\t\toutput += input.slice(start);\n\t\t\tbreak;\n\t\t}\n\t\tconst inner = input.slice(start + 'new Date('.length, cursor - 1);\n\t\tconst iso = resolveDateExpression(inner);\n\t\tif (iso) {\n\t\t\toutput += `{\\\"$date\\\":\\\"${iso}\\\"}`;\n\t\t}\n\t\telse {\n\t\t\toutput += input.slice(start, cursor);\n\t\t}\n\t\tindex = cursor;\n\t}\n\treturn output;\n}\n\nfunction replaceIsoDateExpressions(input: string): string {\n\treturn input.replace(/ISODate\\(([^)]+)\\)/g, (_match, inner) => {\n\t\tconst iso = resolveDateExpression(inner);\n\t\treturn iso ? `{\\\"$date\\\":\\\"${iso}\\\"}` : _match;\n\t});\n}\n\nfunction preprocessJsonLike(content: string): string {\n\tlet normalized = content;\n\tnormalized = replaceNewDateExpressions(normalized);\n\tnormalized = replaceIsoDateExpressions(normalized);\n\treturn normalized;\n}\n\nfunction convertExtendedDates(value: any): any {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(entry => convertExtendedDates(entry));\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn value;\n\t}\n\tconst keys = Object.keys(value);\n\tif (keys.length === 1 && keys[0] === '$date') {\n\t\tconst raw = (value as any).$date;\n\t\tconst date = new Date(raw);\n\t\treturn Number.isNaN(date.getTime()) ? value : date;\n\t}\n\tconst output: Record<string, any> = {};\n\tkeys.forEach((key) => {\n\t\toutput[key] = convertExtendedDates(value[key]);\n\t});\n\treturn output;\n}\n\nfunction parseJsonObject(content: string): any | null {\n\tif (!content || typeof content !== 'string') {\n\t\treturn null;\n\t}\n\tconst normalized = preprocessJsonLike(content);\n\ttry {\n\t\treturn convertExtendedDates(JSON.parse(normalized));\n\t}\n\tcatch {\n\t\tconst match = normalized.match(/\\{[\\s\\S]*\\}/);\n\t\tif (!match) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\treturn convertExtendedDates(JSON.parse(match[0]));\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\nfunction resolveUploadLimits(): { maxFileBytes: number; maxFileMb: number; maxTotalBytes: number; maxTotalMb: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxFileMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_FILE_MB'] || process.env.AI_TERMINAL_MAX_FILE_MB) || DEFAULT_MAX_FILE_MB;\n\tconst maxTotalMb = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_MB'] || process.env.AI_TERMINAL_MAX_TOTAL_MB) || DEFAULT_MAX_TOTAL_MB;\n\treturn {\n\t\tmaxFileBytes: round(maxFileMb * 1024 * 1024),\n\t\tmaxFileMb,\n\t\tmaxTotalBytes: round(maxTotalMb * 1024 * 1024),\n\t\tmaxTotalMb\n\t};\n}\n\nfunction resolveUploadRoot(): string {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst configured = normalizeOptionalString(config['AI_TERMINAL_UPLOAD_ROOT'] || process.env.AI_TERMINAL_UPLOAD_ROOT);\n\tif (configured) {\n\t\treturn configured;\n\t}\n\treturn path.join(os.tmpdir(), 'resolveio-ai-terminal-uploads');\n}\n\nasync function handleCodexUpload(id_conversation: string, file_name: string, content_base64: string, size: number, content_type?: string) {\n\tconst limits = resolveUploadLimits();\n\tif (size > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tconst safeName = sanitizeFilename(file_name);\n\tconst uploadRoot = resolveUploadRoot();\n\tconst targetDir = path.join(uploadRoot, id_conversation);\n\tawait fs.mkdir(targetDir, { recursive: true });\n\tconst targetPath = path.join(targetDir, safeName);\n\tconst dataBuffer = Buffer.from(content_base64, 'base64');\n\tconst data = new Uint8Array(dataBuffer);\n\tif (data.byteLength > limits.maxFileBytes) {\n\t\tthrow new Error(`File exceeds ${limits.maxFileMb}MB limit.`);\n\t}\n\tawait fs.writeFile(targetPath, data);\n\treturn {\n\t\tid_file: objectIdHexString(),\n\t\tname: safeName,\n\t\tsize: data.byteLength,\n\t\ttype: normalizeOptionalString(content_type),\n\t\tlocal_path: targetPath\n\t};\n}\n\nasync function readAttachmentContents(attachments: AttachmentInput[]): Promise<{ promptText: string; attachments: AttachmentInput[] }> {\n\tif (!attachments || !attachments.length) {\n\t\treturn { promptText: '', attachments: [] };\n\t}\n\tconst limits = resolveAttachmentLimits();\n\tlet totalBytes = 0;\n\tlet totalChars = 0;\n\tconst chunks: string[] = [];\n\tconst cleaned: AttachmentInput[] = [];\n\n\tfor (const attachment of attachments) {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, resolveUploadRoot());\n\t\tif (!safe) {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst stat = await fs.stat(localPath);\n\t\t\tif (!stat.isFile()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttotalBytes += stat.size;\n\t\t\tif (totalBytes > limits.maxTotalBytes) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst ext = path.extname(localPath).toLowerCase();\n\t\t\tconst name = normalizeOptionalString(attachment.name) || path.basename(localPath);\n\t\t\tconst type = normalizeOptionalString(attachment.type);\n\t\t\tconst readable = isReadableAttachment(type, ext);\n\t\t\tlet content = '';\n\t\t\tif (readable) {\n\t\t\t\tcontent = await fs.readFile(localPath, 'utf8');\n\t\t\t\tif (content.length > limits.maxAttachmentChars) {\n\t\t\t\t\tcontent = content.slice(0, limits.maxAttachmentChars) + '\\n[...truncated]';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontent = `[${name} attached; binary content omitted]`;\n\t\t\t}\n\t\t\ttotalChars += content.length;\n\t\t\tif (totalChars > limits.maxTotalAttachmentChars) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tchunks.push(`File: ${name}\\n${content}`);\n\t\t\tcleaned.push({\n\t\t\t\tid: attachment.id,\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\tsize: stat.size,\n\t\t\t\tlocal_path: localPath\n\t\t\t});\n\t\t}\n\t\tcatch {}\n\t}\n\n\treturn {\n\t\tpromptText: chunks.length ? `\\n\\nAttachments:\\n${chunks.join('\\n\\n')}` : '',\n\t\tattachments: cleaned\n\t};\n}\n\nfunction resolveAttachmentLimits(): { maxAttachmentChars: number; maxTotalAttachmentChars: number; maxTotalBytes: number } {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst maxAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_ATTACHMENT_CHARS;\n\tconst maxTotalAttachmentChars = normalizeOptionalNumber(config['AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS'] || process.env.AI_TERMINAL_MAX_TOTAL_ATTACHMENT_CHARS)\n\t\t|| DEFAULT_MAX_TOTAL_ATTACHMENT_CHARS;\n\tconst limits = resolveUploadLimits();\n\treturn {\n\t\tmaxAttachmentChars,\n\t\tmaxTotalAttachmentChars,\n\t\tmaxTotalBytes: limits.maxTotalBytes\n\t};\n}\n\nfunction buildUserPrompt(template: string | undefined, inputText: string, attachmentText: string): string {\n\tconst data = {\n\t\tinput: inputText || '',\n\t\ttoday: new Date().toISOString().slice(0, 10)\n\t};\n\tif (template) {\n\t\treturn applyTemplate(template, data).trim() + attachmentText;\n\t}\n\treturn `${inputText || ''}${attachmentText}`.trim();\n}\n\nfunction applyTemplate(template: string, data: Record<string, string>): string {\n\tlet output = template;\n\tObject.keys(data).forEach(key => {\n\t\tconst value = data[key] || '';\n\t\tconst pattern = new RegExp(`{{\\\\s*${key}\\\\s*}}`, 'gi');\n\t\toutput = output.replace(pattern, value);\n\t});\n\treturn output;\n}\n\nfunction sanitizeConfig(source: any): any {\n\treturn {\n\t\tmode: normalizeOptionalString(source?.mode),\n\t\tmodel: normalizeOptionalString(source?.model),\n\t\tsystem_prompt: normalizeOptionalString(source?.system_prompt),\n\t\tuser_prompt_template: normalizeOptionalString(source?.user_prompt_template),\n\t\tresponse_format: normalizeOptionalString(source?.response_format),\n\t\ttemperature: normalizeOptionalNumber(source?.temperature),\n\t\tmax_tokens: normalizeOptionalNumber(source?.max_tokens)\n\t};\n}\n\nfunction resolveClientIdFromConfig(explicit?: string): string {\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\treturn normalizeOptionalString(explicit)\n\t\t|| normalizeOptionalString(config['CLIENT_ID'] || config['client_id'] || process.env.CLIENT_ID || '');\n}\n\nasync function ensureConversation(input: AiTerminalRunInput, mode: 'openai' | 'codex'): Promise<AiTerminalConversationModel> {\n\tconst idConversation = normalizeOptionalString(input.id_conversation);\n\tif (idConversation) {\n\t\tconst existing = await AiTerminalConversations.findById(idConversation);\n\t\tif (existing) {\n\t\t\treturn existing as AiTerminalConversationModel;\n\t\t}\n\t}\n\tconst now = new Date();\n\tconst doc: Partial<AiTerminalConversationModel> = {\n\t\tid_client: resolveClientIdFromConfig(input.id_client),\n\t\tid_app: normalizeOptionalString(input.id_app),\n\t\ttitle: 'New Conversation',\n\t\tmode,\n\t\tbranch_enabled: mode === 'codex',\n\t\tstatus: normalizeConversationStatus('active'),\n\t\tprofile_id: normalizeOptionalString(input.profile_id),\n\t\tmetadata: {},\n\t\tcreatedAt: now,\n\t\tupdatedAt: now\n\t};\n\tconst result = await AiTerminalConversations.insertOne(doc as any);\n\treturn result as AiTerminalConversationModel;\n}\n\nasync function touchConversation(idConversation: string, timestamp: Date, lastMessageId?: string): Promise<void> {\n\tconst update: any = {\n\t\tupdatedAt: timestamp,\n\t\tlast_message_at: timestamp\n\t};\n\tif (lastMessageId) {\n\t\tupdate.last_message_id = lastMessageId;\n\t}\n\tawait AiTerminalConversations.updateOne({ _id: idConversation }, { $set: update });\n}\n\nfunction normalizeOptionalString(value: any): string {\n\tconst raw = typeof value === 'string' ? value.trim() : '';\n\treturn raw || '';\n}\n\nfunction resolveSingleWorkerTarget(value: any): string {\n\tconst normalized = normalizeOptionalString(value);\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tconst parts = normalized.split(',').map(part => part.trim()).filter(Boolean);\n\tif (parts.length !== 1) {\n\t\treturn '';\n\t}\n\treturn parts[0];\n}\n\nfunction normalizeConversationMode(value: any): AiTerminalMode {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'codex') {\n\t\treturn 'codex';\n\t}\n\treturn 'openai';\n}\n\nfunction normalizeConversationStatus(value: any): AiTerminalConversationStatus {\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (normalized === 'archived') {\n\t\treturn 'archived';\n\t}\n\treturn 'active';\n}\n\nfunction normalizeOptionalNumber(value: any): number | undefined {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction normalizeOptionalBoolean(value: any): boolean | undefined {\n\tif (typeof value === 'boolean') {\n\t\treturn value;\n\t}\n\tconst normalized = normalizeOptionalString(value).toLowerCase();\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {\n\t\treturn true;\n\t}\n\tif (['false', '0', 'no', 'n', 'off'].includes(normalized)) {\n\t\treturn false;\n\t}\n\treturn undefined;\n}\n\nfunction normalizeHistoryLimit(value: any): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed)) {\n\t\treturn 12;\n\t}\n\treturn Math.min(Math.max(round(parsed), 0), 30);\n}\n\nfunction resolveClientId(conversation: AiTerminalConversationModel, inputClientId?: string): string {\n\treturn normalizeOptionalString(inputClientId)\n\t\t|| normalizeOptionalString(conversation?.id_client)\n\t\t|| resolveClientIdFromConfig();\n}\n\nfunction estimateUsage(messages: Array<{ role: string; content: string }>, responseText: string, model?: string) {\n\tconst inputTokens = countChatTokens(messages, model);\n\tconst outputTokens = countTokens(responseText || '', model);\n\treturn {\n\t\tinputTokens,\n\t\toutputTokens,\n\t\ttotalTokens: inputTokens + outputTokens\n\t};\n}\n\nfunction evaluateGuardrails(message: string): GuardrailResult | null {\n\tconst normalized = String(message || '').toLowerCase();\n\tconst patterns: Array<{ pattern: RegExp; reason: string }> = [\n\t\t{ pattern: /\\b(source\\s*code|full\\s*code|entire\\s*code|repo\\s*dump|repository|git\\s*clone)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(show|share|paste|provide|dump|output)\\b.*\\b(code|file|contents|snippet)\\b/i, reason: 'Code access is restricted.' },\n\t\t{ pattern: /\\b(credentials?|passwords?|secrets?|tokens?)\\b/i, reason: 'Credentials and secrets are restricted.' },\n\t\t{ pattern: /\\b(delete|drop)\\s+(database|db|schema)\\b/i, reason: 'Database operations are restricted.' },\n\t\t{ pattern: /\\b(shell|terminal|ssh|sudo|rm\\s+-rf|chmod|chown)\\b/i, reason: 'Server operations are restricted.' },\n\t\t{ pattern: /\\b(exploit|bypass|malware|phishing|ransomware|ddos)\\b/i, reason: 'Security abuse is restricted.' }\n\t];\n\tfor (const entry of patterns) {\n\t\tif (entry.pattern.test(normalized)) {\n\t\t\treturn {\n\t\t\t\tblocked: true,\n\t\t\t\treason: entry.reason,\n\t\t\t\tresponse: 'I can’t help with that request because it could expose proprietary code or protected information. If you need a change, describe the outcome and I can help within approved workflows.'\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\nasync function resolveIsSuperAdmin(id_user?: string): Promise<boolean> {\n\tif (!id_user) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst user = await Users.findById(id_user);\n\t\treturn !!user?.roles?.super_admin;\n\t}\n\tcatch {\n\t\treturn false;\n\t}\n}\n\nfunction sanitizeFilename(value: string): string {\n\tconst trimmed = (value || '').trim();\n\tconst base = path.basename(trimmed);\n\treturn base.replace(/[^\\w.\\-]/g, '_') || `upload_${Date.now()}`;\n}\n\nfunction isReadableAttachment(type: string, ext: string): boolean {\n\tconst normalizedType = (type || '').toLowerCase();\n\tif (normalizedType.startsWith('text/')) {\n\t\treturn true;\n\t}\n\tif (['application/json', 'application/xml', 'application/csv'].includes(normalizedType)) {\n\t\treturn true;\n\t}\n\treturn ['.txt', '.md', '.json', '.csv', '.xml', '.log', '.yml', '.yaml', '.ts', '.tsx', '.js', '.jsx', '.css', '.scss', '.html', '.htm', '.sql'].includes(ext);\n}\n\nfunction ensurePathUnderRoot(targetPath: string, root: string): boolean {\n\tconst resolvedRoot = path.resolve(root);\n\tconst resolvedTarget = path.resolve(targetPath);\n\treturn resolvedTarget.startsWith(resolvedRoot);\n}\n\nasync function cleanupAttachments(attachments: AttachmentInput[]): Promise<void> {\n\tif (!attachments || !attachments.length) {\n\t\treturn;\n\t}\n\tconst uploadRoot = resolveUploadRoot();\n\tconst removals = attachments.map(async (attachment) => {\n\t\tconst localPath = normalizeOptionalString(attachment.local_path);\n\t\tif (!localPath) {\n\t\t\treturn;\n\t\t}\n\t\tconst safe = ensurePathUnderRoot(localPath, uploadRoot);\n\t\tif (!safe) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait fs.rm(localPath, { force: true });\n\t\t}\n\t\tcatch {}\n\t});\n\tawait Promise.all(removals);\n}\n"]}
|