@resolveio/server-lib 20.14.8 → 20.14.10

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.
@@ -214,7 +214,14 @@ var WorkerServerManager = /** @class */ (function () {
214
214
  clearTimeout(openTimeout);
215
215
  });
216
216
  ws.on('error', function (err) {
217
- console.error(new Date(), 'Worker WS error:', err);
217
+ var message = (err === null || err === void 0 ? void 0 : err.message) || '';
218
+ var isRestartNoise = message.includes('Unexpected server response: 502');
219
+ if (!isRestartNoise) {
220
+ console.error(new Date(), 'Worker WS error:', err);
221
+ }
222
+ else if (_this._methodManager.getEnableDebug()) {
223
+ console.log(new Date(), 'Worker WS reconnecting after main restart', message);
224
+ }
218
225
  ws.close();
219
226
  });
220
227
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/worker-server.manager.ts"],"names":[],"mappings":"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","file":"worker-server.manager.js","sourcesContent":["import { pack, unpack } from 'msgpackr';\nimport * as WebSocket from 'ws';\nimport { TaskPayload, TaskResponse } from '../models/server-message.model';\nimport { dateReviver } from '../util/common';\nimport { MethodManager } from './method.manager';\n\nexport class WorkerServerManager {\n private _methodManager: MethodManager;\n private _serverConfig;\n private _runningTasks = [];\n\n constructor() {}\n \n static create(methodManager: MethodManager, serverConfig) {\n const workerServerManager = new WorkerServerManager();\n workerServerManager.initialize(methodManager, serverConfig);\n return workerServerManager;\n }\n\n public initialize(methodManager: MethodManager, serverConfig) {\n this._methodManager = methodManager;\n this._serverConfig = serverConfig;\n this.startWorkerInstance();\n }\n\n private startWorkerInstance() {\n console.log(new Date(), 'Worker instance started, connecting to main server via WebSocket...');\n \n const workerIndex = encodeURIComponent(String(process.env.WORKER_INDEX || ''));\n const workerInstance = encodeURIComponent(String(process.env.NODE_APP_INSTANCE || ''));\n let wsUrl = this._serverConfig['SERVER_URL'] + '/websocket?workerToken=' + this._serverConfig['WORKER_TOKEN'] + '&workerIndex=' + workerIndex + '&workerInstance=' + workerInstance;\n const ws = new WebSocket(wsUrl);\n \n let lastComm = null;\n let interval = null;\n let openTimeout = null;\n let opened = false;\n \n // Set timeout if the socket never opens\n openTimeout = setTimeout(() => {\n if (!opened) {\n console.error(new Date(), 'WebSocket connection timeout. Retrying...');\n ws.terminate(); // force close if still connecting\n }\n }, 10000); // 10 seconds timeout\n \n ws.on('open', () => {\n opened = true;\n clearTimeout(openTimeout);\n \n console.log(new Date(), 'Connected to main server as worker', process.env.WORKER_INDEX, process.env.NODE_APP_INSTANCE);\n this.sendWorkerResponse(ws, 'ping');\n \n interval = setInterval(() => {\n if (!lastComm) {\n ws.close();\n }\n else {\n lastComm = null;\n this.sendWorkerResponse(ws, 'ping');\n }\n }, 15000);\n });\n \n\t\tws.on('message', async (rawData: WebSocket.RawData) => {\n\t\t\tif (typeof rawData === 'string') {\n\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'Message Recv', rawData);\n\t\t\t\t}\n\n\t\t\t\tif (rawData === 'ping') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Ping, Sending Pong');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.sendWorkerResponse(ws, 'pong');\n\t\t\t\t}\n\t\t\t\telse if (rawData === 'pong') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Pong');\n\t\t\t\t\t}\n\t\t\t\t\tlastComm = new Date();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet msg: any;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmsg = JSON.parse(rawData, dateReviver);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tconsole.error('Worker parse error', e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (msg.type === 'task') {\n\t\t\t\t\t\tawait this.handleIncomingTask(ws, msg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet messageBuffer: Buffer;\n\n\t\t\tif (Buffer.isBuffer(rawData)) {\n\t\t\t\tmessageBuffer = rawData;\n\t\t\t}\n\t\t\telse if (Array.isArray(rawData)) {\n\t\t\t\tconst chunks = rawData as unknown as ReadonlyArray<Uint8Array>;\n\t\t\t\tmessageBuffer = Buffer.concat(chunks);\n\t\t\t}\n\t\t\telse if (rawData instanceof ArrayBuffer) {\n\t\t\t\tmessageBuffer = Buffer.from(rawData);\n\t\t\t}\n\t\t\telse if (ArrayBuffer.isView(rawData)) {\n\t\t\t\tconst view = rawData as NodeJS.ArrayBufferView;\n\t\t\t\tmessageBuffer = Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmessageBuffer = Buffer.from(rawData as any);\n\t\t\t}\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Message Recv (binary)', messageBuffer.length);\n\t\t\t}\n\n\t\t\tif (messageBuffer.length === 4) {\n\t\t\t\tlet heartbeat = messageBuffer.toString('utf8');\n\n\t\t\t\tif (heartbeat === 'ping') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Ping (binary), Sending Pong');\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendWorkerResponse(ws, 'pong');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (heartbeat === 'pong') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Pong (binary)');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlastComm = new Date();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet msg: TaskPayload;\n\n\t\t\ttry {\n\t\t\t\tmsg = unpack(messageBuffer);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error('Worker binary parse error', e);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (msg.type === 'task') {\n\t\t\t\tawait this.handleIncomingTask(ws, msg);\n\t\t\t}\n\t\t});\n \n ws.on('close', () => {\n console.log(new Date(), 'Disconnected from main server. Reconnecting in 1s...');\n setTimeout(() => {\n this.startWorkerInstance();\n }, 1000);\n \n if (interval) {\n clearInterval(interval);\n }\n clearTimeout(openTimeout);\n });\n \n ws.on('error', (err) => {\n console.error(new Date(), 'Worker WS error:', err);\n ws.close();\n });\n }\n\n private async handleIncomingTask(ws: WebSocket.WebSocket, data: TaskPayload) {\n let { taskId, messageId, method, params, userContext } = data;\n this._runningTasks.push(taskId);\n if (!taskId || !method || !this._methodManager.getMethod(method)) {\n if (!this._methodManager.getMethod(method)) {\n console.error(new Date(), 'No method in method manager for handleIncomingTask worker server', method);\n await this._methodManager.callMethod('insertErrorLog', `No Method in worker server handleIncomingTask: ${method} - ${JSON.stringify(data, null, 2)}`);\n }\n\n // console.log('Invalid task message received', data);\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: 'Invalid task'\n });\n\n return;\n }\n\n let timedOut = false;\n let timeoutHandle = setTimeout(async () => {\n timedOut = true;\n console.error(new Date(), 'Worker timed out on task:', taskId, 'Method:', method);\n\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: 'Task timed out'\n });\n\n await this._methodManager.callMethod('insertErrorLog', `Timeout in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n }, this._methodManager.getMethod(method)?.timeoutOverride || (1000 * 60 * 2));\n\n try {\n let managerThis = Object.assign({}, this._methodManager, MethodManager.prototype, {\n id_user: userContext?.id_user || '',\n user: userContext?.user || '',\n id_ws: userContext?.id_ws || ''\n });\n\n if (this._methodManager.getEnableDebug()) {\n console.log(new Date(), 'Running method', method);\n }\n\n\t\t\tlet result = await this._methodManager.callMethod.call(managerThis, method, ...params);\n\t\t\tlet packedResult: Uint8Array | Buffer = null;\n\n\t\t\ttry {\n\t\t\t\tpackedResult = <Buffer>pack(result);\n\t\t\t}\n\t\t\tcatch (packErr) {\n\t\t\t\tconsole.error(new Date(), 'Worker pack error', packErr);\n\t\t\t}\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Finished method', method);\n\t\t\t}\n\n\t\t\tif (!timedOut) {\n\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t\tconst payload: TaskResponse = {\n\t\t\t\t\ttype: 'taskComplete',\n\t\t\t\t\ttaskId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\terror: false,\n\t\t\t\t\tresult: packedResult ? null : result,\n\t\t\t\t\tpackedResult,\n\t\t\t\t\tencoding: 'msgpack'\n\t\t\t\t};\n\n\t\t\t\tthis.sendWorkerResponse(ws, payload);\n\t\t\t}\n\n this._runningTasks = this._runningTasks.filter(a => a !== taskId);\n \n if (this._methodManager.getEnableDebug()) {\n console.log(new Date(), 'Done with Task', JSON.stringify(this._runningTasks, null, 2));\n }\n }\n catch (err) {\n if (!timedOut) {\n clearTimeout(timeoutHandle);\n console.error('Worker failed task:', taskId, 'Method:', method, err);\n err.message = 'Worker failed task:' + taskId + ' Method:' + method + ' - ' + err.message;\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: err || 'Unknown error'\n });\n throw err;\n }\n\n console.error(new Date(), `Error in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n \n await this._methodManager.callMethod('insertErrorLog', `Error in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n \n this._runningTasks = this._runningTasks.filter(a => a !== taskId);\n }\n }\n\n\tpublic sendWorkerResponse(ws, payload: TaskResponse | string) {\n\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Sending', typeof payload === 'string' ? payload : '[binary]');\n\t\t}\n\n\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\ttry {\n\t\t\t\tif (typeof payload === 'string') {\n\t\t\t\t\tws.send(payload);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tws.send(pack(payload));\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.error('Failed to send worker response:', err);\n\t\t\t}\n\t\t}\n\t\telse if (ws) {\n\t\t\tws.close();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/managers/worker-server.manager.ts"],"names":[],"mappings":"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","file":"worker-server.manager.js","sourcesContent":["import { pack, unpack } from 'msgpackr';\nimport * as WebSocket from 'ws';\nimport { TaskPayload, TaskResponse } from '../models/server-message.model';\nimport { dateReviver } from '../util/common';\nimport { MethodManager } from './method.manager';\n\nexport class WorkerServerManager {\n private _methodManager: MethodManager;\n private _serverConfig;\n private _runningTasks = [];\n\n constructor() {}\n \n static create(methodManager: MethodManager, serverConfig) {\n const workerServerManager = new WorkerServerManager();\n workerServerManager.initialize(methodManager, serverConfig);\n return workerServerManager;\n }\n\n public initialize(methodManager: MethodManager, serverConfig) {\n this._methodManager = methodManager;\n this._serverConfig = serverConfig;\n this.startWorkerInstance();\n }\n\n private startWorkerInstance() {\n console.log(new Date(), 'Worker instance started, connecting to main server via WebSocket...');\n \n const workerIndex = encodeURIComponent(String(process.env.WORKER_INDEX || ''));\n const workerInstance = encodeURIComponent(String(process.env.NODE_APP_INSTANCE || ''));\n let wsUrl = this._serverConfig['SERVER_URL'] + '/websocket?workerToken=' + this._serverConfig['WORKER_TOKEN'] + '&workerIndex=' + workerIndex + '&workerInstance=' + workerInstance;\n const ws = new WebSocket(wsUrl);\n \n let lastComm = null;\n let interval = null;\n let openTimeout = null;\n let opened = false;\n \n // Set timeout if the socket never opens\n openTimeout = setTimeout(() => {\n if (!opened) {\n console.error(new Date(), 'WebSocket connection timeout. Retrying...');\n ws.terminate(); // force close if still connecting\n }\n }, 10000); // 10 seconds timeout\n \n ws.on('open', () => {\n opened = true;\n clearTimeout(openTimeout);\n \n console.log(new Date(), 'Connected to main server as worker', process.env.WORKER_INDEX, process.env.NODE_APP_INSTANCE);\n this.sendWorkerResponse(ws, 'ping');\n \n interval = setInterval(() => {\n if (!lastComm) {\n ws.close();\n }\n else {\n lastComm = null;\n this.sendWorkerResponse(ws, 'ping');\n }\n }, 15000);\n });\n \n\t\tws.on('message', async (rawData: WebSocket.RawData) => {\n\t\t\tif (typeof rawData === 'string') {\n\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\tconsole.log(new Date(), 'Message Recv', rawData);\n\t\t\t\t}\n\n\t\t\t\tif (rawData === 'ping') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Ping, Sending Pong');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.sendWorkerResponse(ws, 'pong');\n\t\t\t\t}\n\t\t\t\telse if (rawData === 'pong') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Pong');\n\t\t\t\t\t}\n\t\t\t\t\tlastComm = new Date();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet msg: any;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmsg = JSON.parse(rawData, dateReviver);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tconsole.error('Worker parse error', e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (msg.type === 'task') {\n\t\t\t\t\t\tawait this.handleIncomingTask(ws, msg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet messageBuffer: Buffer;\n\n\t\t\tif (Buffer.isBuffer(rawData)) {\n\t\t\t\tmessageBuffer = rawData;\n\t\t\t}\n\t\t\telse if (Array.isArray(rawData)) {\n\t\t\t\tconst chunks = rawData as unknown as ReadonlyArray<Uint8Array>;\n\t\t\t\tmessageBuffer = Buffer.concat(chunks);\n\t\t\t}\n\t\t\telse if (rawData instanceof ArrayBuffer) {\n\t\t\t\tmessageBuffer = Buffer.from(rawData);\n\t\t\t}\n\t\t\telse if (ArrayBuffer.isView(rawData)) {\n\t\t\t\tconst view = rawData as NodeJS.ArrayBufferView;\n\t\t\t\tmessageBuffer = Buffer.from(view.buffer, view.byteOffset, view.byteLength);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmessageBuffer = Buffer.from(rawData as any);\n\t\t\t}\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Message Recv (binary)', messageBuffer.length);\n\t\t\t}\n\n\t\t\tif (messageBuffer.length === 4) {\n\t\t\t\tlet heartbeat = messageBuffer.toString('utf8');\n\n\t\t\t\tif (heartbeat === 'ping') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Ping (binary), Sending Pong');\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sendWorkerResponse(ws, 'pong');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (heartbeat === 'pong') {\n\t\t\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Recv Pong (binary)');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlastComm = new Date();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet msg: TaskPayload;\n\n\t\t\ttry {\n\t\t\t\tmsg = unpack(messageBuffer);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error('Worker binary parse error', e);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (msg.type === 'task') {\n\t\t\t\tawait this.handleIncomingTask(ws, msg);\n\t\t\t}\n\t\t});\n \n ws.on('close', () => {\n console.log(new Date(), 'Disconnected from main server. Reconnecting in 1s...');\n setTimeout(() => {\n this.startWorkerInstance();\n }, 1000);\n \n if (interval) {\n clearInterval(interval);\n }\n clearTimeout(openTimeout);\n });\n \n\t\tws.on('error', (err) => {\n\t\t\tconst message = err?.message || '';\n\t\t\tconst isRestartNoise = message.includes('Unexpected server response: 502');\n\t\t\tif (!isRestartNoise) {\n\t\t\t\tconsole.error(new Date(), 'Worker WS error:', err);\n\t\t\t}\n\t\t\telse if (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Worker WS reconnecting after main restart', message);\n\t\t\t}\n\t\t\tws.close();\n\t\t});\n }\n\n private async handleIncomingTask(ws: WebSocket.WebSocket, data: TaskPayload) {\n let { taskId, messageId, method, params, userContext } = data;\n this._runningTasks.push(taskId);\n if (!taskId || !method || !this._methodManager.getMethod(method)) {\n if (!this._methodManager.getMethod(method)) {\n console.error(new Date(), 'No method in method manager for handleIncomingTask worker server', method);\n await this._methodManager.callMethod('insertErrorLog', `No Method in worker server handleIncomingTask: ${method} - ${JSON.stringify(data, null, 2)}`);\n }\n\n // console.log('Invalid task message received', data);\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: 'Invalid task'\n });\n\n return;\n }\n\n let timedOut = false;\n let timeoutHandle = setTimeout(async () => {\n timedOut = true;\n console.error(new Date(), 'Worker timed out on task:', taskId, 'Method:', method);\n\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: 'Task timed out'\n });\n\n await this._methodManager.callMethod('insertErrorLog', `Timeout in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n }, this._methodManager.getMethod(method)?.timeoutOverride || (1000 * 60 * 2));\n\n try {\n let managerThis = Object.assign({}, this._methodManager, MethodManager.prototype, {\n id_user: userContext?.id_user || '',\n user: userContext?.user || '',\n id_ws: userContext?.id_ws || ''\n });\n\n if (this._methodManager.getEnableDebug()) {\n console.log(new Date(), 'Running method', method);\n }\n\n\t\t\tlet result = await this._methodManager.callMethod.call(managerThis, method, ...params);\n\t\t\tlet packedResult: Uint8Array | Buffer = null;\n\n\t\t\ttry {\n\t\t\t\tpackedResult = <Buffer>pack(result);\n\t\t\t}\n\t\t\tcatch (packErr) {\n\t\t\t\tconsole.error(new Date(), 'Worker pack error', packErr);\n\t\t\t}\n\n\t\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Finished method', method);\n\t\t\t}\n\n\t\t\tif (!timedOut) {\n\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t\tconst payload: TaskResponse = {\n\t\t\t\t\ttype: 'taskComplete',\n\t\t\t\t\ttaskId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\terror: false,\n\t\t\t\t\tresult: packedResult ? null : result,\n\t\t\t\t\tpackedResult,\n\t\t\t\t\tencoding: 'msgpack'\n\t\t\t\t};\n\n\t\t\t\tthis.sendWorkerResponse(ws, payload);\n\t\t\t}\n\n this._runningTasks = this._runningTasks.filter(a => a !== taskId);\n \n if (this._methodManager.getEnableDebug()) {\n console.log(new Date(), 'Done with Task', JSON.stringify(this._runningTasks, null, 2));\n }\n }\n catch (err) {\n if (!timedOut) {\n clearTimeout(timeoutHandle);\n console.error('Worker failed task:', taskId, 'Method:', method, err);\n err.message = 'Worker failed task:' + taskId + ' Method:' + method + ' - ' + err.message;\n this.sendWorkerResponse(ws, {\n type: 'taskComplete',\n taskId,\n messageId,\n error: true,\n result: err || 'Unknown error'\n });\n throw err;\n }\n\n console.error(new Date(), `Error in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n \n await this._methodManager.callMethod('insertErrorLog', `Error in Method: ${method} - ${JSON.stringify(data, null, 2)}`);\n \n this._runningTasks = this._runningTasks.filter(a => a !== taskId);\n }\n }\n\n\tpublic sendWorkerResponse(ws, payload: TaskResponse | string) {\n\t\tif (this._methodManager.getEnableDebug()) {\n\t\t\tconsole.log(new Date(), 'Sending', typeof payload === 'string' ? payload : '[binary]');\n\t\t}\n\n\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\ttry {\n\t\t\t\tif (typeof payload === 'string') {\n\t\t\t\t\tws.send(payload);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tws.send(pack(payload));\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconsole.error('Failed to send worker response:', err);\n\t\t\t}\n\t\t}\n\t\telse if (ws) {\n\t\t\tws.close();\n\t\t}\n\t}\n}\n"]}
@@ -95,6 +95,7 @@ var AI_ASSISTANT_SENSITIVE_FIELDS = [
95
95
  'services',
96
96
  'roles'
97
97
  ];
98
+ var AI_ASSISTANT_CLIENT_SCOPE_CACHE = new Map();
98
99
  var AI_ASSISTANT_SYSTEM_PROMPT = [
99
100
  'You are the ResolveIO in-app AI assistant running with read-only access to the codebase.',
100
101
  '- Never share code or file contents. All code is proprietary.',
@@ -795,9 +796,9 @@ function executeAiAssistantCodexRun(payload, context) {
795
796
  }
796
797
  function executeAiAssistantMongoRead(payload, context) {
797
798
  return __awaiter(this, void 0, void 0, function () {
798
- var input, collection, _a, user, isSuperAdmin, dbName, db, baseQuery, userId, scopedQuery, normalized, documents, total, sanitizedDocuments;
799
- return __generator(this, function (_b) {
800
- switch (_b.label) {
799
+ var input, collection, _a, user, isSuperAdmin, dbName, db, baseQuery, userId, normalizedClient, shouldScopeByClient, _b, scopedQuery, normalized, documents, total, sanitizedDocuments;
800
+ return __generator(this, function (_c) {
801
+ switch (_c.label) {
801
802
  case 0:
802
803
  input = payload || {};
803
804
  collection = normalizeOptionalString(input.collection);
@@ -806,7 +807,7 @@ function executeAiAssistantMongoRead(payload, context) {
806
807
  }
807
808
  return [4 /*yield*/, ensureAssistantReadAccess(context, input.permissionView, collection)];
808
809
  case 1:
809
- _a = _b.sent(), user = _a.user, isSuperAdmin = _a.isSuperAdmin;
810
+ _a = _c.sent(), user = _a.user, isSuperAdmin = _a.isSuperAdmin;
810
811
  if (!isSuperAdmin && AI_ASSISTANT_BLOCKED_COLLECTIONS.has(collection)) {
811
812
  throw new Error('AI assistant mongo read: Access denied.');
812
813
  }
@@ -822,18 +823,31 @@ function executeAiAssistantMongoRead(payload, context) {
822
823
  $and: [baseQuery, { _id: userId }]
823
824
  };
824
825
  }
825
- scopedQuery = applyClientScopeFilter(baseQuery, input.id_client, isSuperAdmin);
826
+ normalizedClient = normalizeOptionalString(input.id_client);
827
+ if (!(!isSuperAdmin && normalizedClient)) return [3 /*break*/, 3];
828
+ return [4 /*yield*/, collectionHasClientIndex(db, dbName, collection)];
829
+ case 2:
830
+ _b = _c.sent();
831
+ return [3 /*break*/, 4];
832
+ case 3:
833
+ _b = false;
834
+ _c.label = 4;
835
+ case 4:
836
+ shouldScopeByClient = _b;
837
+ scopedQuery = shouldScopeByClient
838
+ ? applyClientScopeFilter(baseQuery, normalizedClient, isSuperAdmin)
839
+ : baseQuery;
826
840
  normalized = normalizeAssistantFindOptions(input.options);
827
841
  return [4 /*yield*/, db.collection(collection).find(scopedQuery, normalized.findOptions).toArray()];
828
- case 2:
829
- documents = _b.sent();
842
+ case 5:
843
+ documents = _c.sent();
830
844
  total = null;
831
- if (!normalized.includeTotal) return [3 /*break*/, 4];
845
+ if (!normalized.includeTotal) return [3 /*break*/, 7];
832
846
  return [4 /*yield*/, db.collection(collection).countDocuments(scopedQuery)];
833
- case 3:
834
- total = _b.sent();
835
- _b.label = 4;
836
- case 4:
847
+ case 6:
848
+ total = _c.sent();
849
+ _c.label = 7;
850
+ case 7:
837
851
  sanitizedDocuments = isSuperAdmin
838
852
  ? documents
839
853
  : documents.map(function (doc) { return redactSensitiveFields((0, common_1.deepCopy)(doc)); });
@@ -957,6 +971,44 @@ function containsForbiddenMongoOperators(value) {
957
971
  }
958
972
  return false;
959
973
  }
974
+ function buildClientScopeCacheKey(dbName, collection) {
975
+ var normalizedDb = normalizeOptionalString(dbName).toLowerCase();
976
+ var normalizedCollection = normalizeOptionalString(collection).toLowerCase();
977
+ return "".concat(normalizedDb || 'db', ":").concat(normalizedCollection);
978
+ }
979
+ function collectionHasClientIndex(db, dbName, collection) {
980
+ return __awaiter(this, void 0, void 0, function () {
981
+ var normalizedCollection, cacheKey, cached, indexes, hasIndex, _a;
982
+ return __generator(this, function (_b) {
983
+ switch (_b.label) {
984
+ case 0:
985
+ normalizedCollection = normalizeOptionalString(collection);
986
+ if (!normalizedCollection) {
987
+ return [2 /*return*/, false];
988
+ }
989
+ cacheKey = buildClientScopeCacheKey(dbName, normalizedCollection);
990
+ cached = AI_ASSISTANT_CLIENT_SCOPE_CACHE.get(cacheKey);
991
+ if (typeof cached === 'boolean') {
992
+ return [2 /*return*/, cached];
993
+ }
994
+ _b.label = 1;
995
+ case 1:
996
+ _b.trys.push([1, 3, , 4]);
997
+ return [4 /*yield*/, db.collection(normalizedCollection).indexes()];
998
+ case 2:
999
+ indexes = _b.sent();
1000
+ hasIndex = Array.isArray(indexes)
1001
+ && indexes.some(function (entry) { return (entry === null || entry === void 0 ? void 0 : entry.key) && Object.prototype.hasOwnProperty.call(entry.key, 'id_client'); });
1002
+ AI_ASSISTANT_CLIENT_SCOPE_CACHE.set(cacheKey, hasIndex);
1003
+ return [2 /*return*/, hasIndex];
1004
+ case 3:
1005
+ _a = _b.sent();
1006
+ return [2 /*return*/, false];
1007
+ case 4: return [2 /*return*/];
1008
+ }
1009
+ });
1010
+ });
1011
+ }
960
1012
  function applyClientScopeFilter(query, idClient, isSuperAdmin) {
961
1013
  if (isSuperAdmin === void 0) { isSuperAdmin = false; }
962
1014
  if (isSuperAdmin) {