()
| 105 | } |
| 106 | |
| 107 | async function processRequestAsync(): Promise<void> { |
| 108 | let requestFile = ''; |
| 109 | let responseFile = ''; |
| 110 | let requestId = 'unknown'; |
| 111 | |
| 112 | try { |
| 113 | const requestFileLen = view[1]; |
| 114 | if (requestFileLen <= 0 || requestFileLen > FILENAME_MAX_LENGTH) { |
| 115 | log('error', `[Worker] Invalid request filename length: ${requestFileLen}`); |
| 116 | finishProcessing('', 'unknown', false, undefined, 'Invalid request filename length'); |
| 117 | return; |
| 118 | } |
| 119 | |
| 120 | requestFile = decoder.decode( |
| 121 | dataBuffer.slice(REQUEST_FILENAME_DATA_OFFSET, REQUEST_FILENAME_DATA_OFFSET + requestFileLen) |
| 122 | ); |
| 123 | const requestFilePath = join(tmpDir, requestFile); |
| 124 | |
| 125 | const responseFileLen = view[RESPONSE_FILENAME_LENGTH_INDEX]; |
| 126 | if (responseFileLen <= 0 || responseFileLen > FILENAME_MAX_LENGTH) { |
| 127 | log('error', `[Worker] Invalid response filename length: ${responseFileLen}`); |
| 128 | finishProcessing('', 'unknown', false, undefined, 'Invalid response filename length'); |
| 129 | return; |
| 130 | } |
| 131 | |
| 132 | responseFile = decoder.decode( |
| 133 | dataBuffer.slice(RESPONSE_FILENAME_DATA_OFFSET, RESPONSE_FILENAME_DATA_OFFSET + responseFileLen) |
| 134 | ); |
| 135 | |
| 136 | const requestJson = decrypt(new Uint8Array(readFileSync(requestFilePath)), aesKey); |
| 137 | const request = JSON.parse(requestJson); |
| 138 | requestId = request.requestId; |
| 139 | |
| 140 | let result: any; |
| 141 | |
| 142 | if (request.type === 'llm') { |
| 143 | const llmResponse = await callLLM(request.data as syncLLMRequest<Api>); |
| 144 | if (llmResponse) { |
| 145 | result = llmResponse; |
| 146 | } else { |
| 147 | throw new Error('LLM call returned null'); |
| 148 | } |
| 149 | } else if (request.type === 'add') { |
| 150 | const { a, b } = request.data as { a: number; b: number }; |
| 151 | result = { |
| 152 | calculation: `${a} + ${b}`, |
| 153 | sum: a + b, |
| 154 | processedAt: Date.now(), |
| 155 | }; |
| 156 | } else { |
| 157 | result = { |
| 158 | message: 'Unknown operation', |
| 159 | type: request.type, |
| 160 | processedAt: Date.now(), |
| 161 | }; |
| 162 | } |
| 163 | |
| 164 | finishProcessing(responseFile, requestId, true, result); |
no test coverage detected