@kaitranntt/ccs 7.43.0-dev.1 → 7.43.0-dev.3

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.
Files changed (46) hide show
  1. package/dist/ccs.js +7 -0
  2. package/dist/ccs.js.map +1 -1
  3. package/dist/commands/cursor-command.d.ts +12 -0
  4. package/dist/commands/cursor-command.d.ts.map +1 -0
  5. package/dist/commands/cursor-command.js +225 -0
  6. package/dist/commands/cursor-command.js.map +1 -0
  7. package/dist/cursor/cursor-daemon.d.ts +47 -0
  8. package/dist/cursor/cursor-daemon.d.ts.map +1 -0
  9. package/dist/cursor/cursor-daemon.js +332 -0
  10. package/dist/cursor/cursor-daemon.js.map +1 -0
  11. package/dist/cursor/cursor-executor.d.ts +74 -0
  12. package/dist/cursor/cursor-executor.d.ts.map +1 -0
  13. package/dist/cursor/cursor-executor.js +621 -0
  14. package/dist/cursor/cursor-executor.js.map +1 -0
  15. package/dist/cursor/cursor-models.d.ts +43 -0
  16. package/dist/cursor/cursor-models.d.ts.map +1 -0
  17. package/dist/cursor/cursor-models.js +205 -0
  18. package/dist/cursor/cursor-models.js.map +1 -0
  19. package/dist/cursor/cursor-protobuf-decoder.d.ts +52 -0
  20. package/dist/cursor/cursor-protobuf-decoder.d.ts.map +1 -0
  21. package/dist/cursor/cursor-protobuf-decoder.js +311 -0
  22. package/dist/cursor/cursor-protobuf-decoder.js.map +1 -0
  23. package/dist/cursor/cursor-protobuf-encoder.d.ts +54 -0
  24. package/dist/cursor/cursor-protobuf-encoder.d.ts.map +1 -0
  25. package/dist/cursor/cursor-protobuf-encoder.js +173 -0
  26. package/dist/cursor/cursor-protobuf-encoder.js.map +1 -0
  27. package/dist/cursor/cursor-protobuf-schema.d.ts +168 -0
  28. package/dist/cursor/cursor-protobuf-schema.d.ts.map +1 -0
  29. package/dist/cursor/cursor-protobuf-schema.js +130 -0
  30. package/dist/cursor/cursor-protobuf-schema.js.map +1 -0
  31. package/dist/cursor/cursor-protobuf.d.ts +21 -0
  32. package/dist/cursor/cursor-protobuf.d.ts.map +1 -0
  33. package/dist/cursor/cursor-protobuf.js +116 -0
  34. package/dist/cursor/cursor-protobuf.js.map +1 -0
  35. package/dist/cursor/cursor-translator.d.ts +39 -0
  36. package/dist/cursor/cursor-translator.d.ts.map +1 -0
  37. package/dist/cursor/cursor-translator.js +118 -0
  38. package/dist/cursor/cursor-translator.js.map +1 -0
  39. package/dist/cursor/index.d.ts +11 -0
  40. package/dist/cursor/index.d.ts.map +1 -0
  41. package/dist/cursor/index.js +53 -0
  42. package/dist/cursor/index.js.map +1 -0
  43. package/dist/cursor/types.d.ts +33 -1
  44. package/dist/cursor/types.d.ts.map +1 -1
  45. package/dist/cursor/types.js +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,621 @@
1
+ "use strict";
2
+ /**
3
+ * Cursor Executor
4
+ * Handles HTTP/2 requests to Cursor API with protobuf encoding/decoding
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.CursorExecutor = void 0;
31
+ const crypto = __importStar(require("crypto"));
32
+ const zlib = __importStar(require("zlib"));
33
+ const cursor_protobuf_js_1 = require("./cursor-protobuf.js");
34
+ const cursor_translator_js_1 = require("./cursor-translator.js");
35
+ const cursor_protobuf_schema_js_1 = require("./cursor-protobuf-schema.js");
36
+ /** Lazy import http2 */
37
+ let http2Module = null;
38
+ async function getHttp2() {
39
+ if (http2Module)
40
+ return http2Module;
41
+ try {
42
+ http2Module = await Promise.resolve().then(() => __importStar(require('http2')));
43
+ return http2Module;
44
+ }
45
+ catch (err) {
46
+ if (process.env.CCS_DEBUG) {
47
+ console.error('[cursor] http2 module not available, falling back to fetch:', err);
48
+ }
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * Decompress payload if needed
54
+ * NOTE: Uses synchronous gzip for single-request CLI tool. Async not warranted for small payloads.
55
+ */
56
+ function decompressPayload(payload, flags) {
57
+ // Check if payload is JSON error
58
+ if (payload.length > 10 && payload[0] === 0x7b && payload[1] === 0x22) {
59
+ try {
60
+ const text = payload.toString('utf-8');
61
+ if (text.startsWith('{"error"')) {
62
+ return payload;
63
+ }
64
+ }
65
+ catch (err) {
66
+ if (process.env.CCS_DEBUG) {
67
+ console.error('[cursor] JSON error detection failed:', err);
68
+ }
69
+ }
70
+ }
71
+ if (flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP ||
72
+ flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP_ALT ||
73
+ flags === cursor_protobuf_schema_js_1.COMPRESS_FLAG.GZIP_BOTH) {
74
+ try {
75
+ return zlib.gunzipSync(payload);
76
+ }
77
+ catch (err) {
78
+ if (process.env.CCS_DEBUG) {
79
+ console.error('[cursor] gzip decompression failed:', err);
80
+ }
81
+ return Buffer.alloc(0);
82
+ }
83
+ }
84
+ return payload;
85
+ }
86
+ /**
87
+ * Create error response from JSON error
88
+ */
89
+ function createErrorResponse(jsonError) {
90
+ const errorMsg = jsonError?.error?.details?.[0]?.debug?.details?.title ||
91
+ jsonError?.error?.details?.[0]?.debug?.details?.detail ||
92
+ jsonError?.error?.message ||
93
+ 'API Error';
94
+ const isRateLimit = jsonError?.error?.code === 'resource_exhausted';
95
+ return new Response(JSON.stringify({
96
+ error: {
97
+ message: errorMsg,
98
+ type: isRateLimit ? 'rate_limit_error' : 'api_error',
99
+ code: jsonError?.error?.details?.[0]?.debug?.error || 'unknown',
100
+ },
101
+ }), {
102
+ status: isRateLimit ? 429 : 400,
103
+ headers: { 'Content-Type': 'application/json' },
104
+ });
105
+ }
106
+ class CursorExecutor {
107
+ constructor() {
108
+ this.baseUrl = 'https://api2.cursor.sh';
109
+ this.chatPath = '/aiserver.v1.AiService/StreamChat';
110
+ this.CURSOR_CLIENT_VERSION = '2.3.41';
111
+ this.CURSOR_USER_AGENT = 'connect-es/1.6.1';
112
+ }
113
+ buildUrl() {
114
+ return `${this.baseUrl}${this.chatPath}`;
115
+ }
116
+ /**
117
+ * Generate checksum using Jyh cipher (time-based XOR with rolling key seed=165)
118
+ */
119
+ generateChecksum(machineId) {
120
+ const timestamp = Math.floor(Date.now() / 1000000);
121
+ // JS bitwise shifts wrap modulo 32, so >>40 and >>32 give wrong results.
122
+ // Use Math.trunc division for upper bytes that exceed 32-bit range.
123
+ const byteArray = new Uint8Array([
124
+ Math.trunc(timestamp / 2 ** 40) & 0xff,
125
+ Math.trunc(timestamp / 2 ** 32) & 0xff,
126
+ (timestamp >>> 24) & 0xff,
127
+ (timestamp >>> 16) & 0xff,
128
+ (timestamp >>> 8) & 0xff,
129
+ timestamp & 0xff,
130
+ ]);
131
+ let t = 165;
132
+ for (let i = 0; i < byteArray.length; i++) {
133
+ byteArray[i] = ((byteArray[i] ^ t) + (i % 256)) & 0xff;
134
+ t = byteArray[i];
135
+ }
136
+ const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
137
+ let encoded = '';
138
+ for (let i = 0; i < byteArray.length; i += 3) {
139
+ const a = byteArray[i];
140
+ const b = i + 1 < byteArray.length ? byteArray[i + 1] : 0;
141
+ const c = i + 2 < byteArray.length ? byteArray[i + 2] : 0;
142
+ encoded += alphabet[a >> 2];
143
+ encoded += alphabet[((a & 3) << 4) | (b >> 4)];
144
+ if (i + 1 < byteArray.length) {
145
+ encoded += alphabet[((b & 15) << 2) | (c >> 6)];
146
+ }
147
+ if (i + 2 < byteArray.length) {
148
+ encoded += alphabet[c & 63];
149
+ }
150
+ }
151
+ return `${encoded}${machineId}`;
152
+ }
153
+ buildHeaders(credentials) {
154
+ const accessToken = credentials.accessToken;
155
+ const machineId = credentials.machineId;
156
+ const ghostMode = credentials.ghostMode !== false;
157
+ if (!machineId) {
158
+ throw new Error('Machine ID is required for Cursor API');
159
+ }
160
+ const delimIdx = accessToken.indexOf('::');
161
+ const cleanToken = delimIdx !== -1 ? accessToken.slice(delimIdx + 2) : accessToken;
162
+ if (!cleanToken) {
163
+ throw new Error('Access token is empty after parsing');
164
+ }
165
+ return {
166
+ authorization: `Bearer ${cleanToken}`,
167
+ 'connect-accept-encoding': 'gzip',
168
+ 'connect-protocol-version': '1',
169
+ 'content-type': 'application/connect+proto',
170
+ 'user-agent': this.CURSOR_USER_AGENT,
171
+ 'x-amzn-trace-id': `Root=${crypto.randomUUID()}`,
172
+ 'x-client-key': crypto.createHash('sha256').update(cleanToken).digest('hex'),
173
+ 'x-cursor-checksum': this.generateChecksum(machineId),
174
+ 'x-cursor-client-version': this.CURSOR_CLIENT_VERSION,
175
+ 'x-cursor-client-type': 'ide',
176
+ 'x-cursor-client-os': process.platform === 'win32'
177
+ ? 'windows'
178
+ : process.platform === 'darwin'
179
+ ? 'macos'
180
+ : 'linux',
181
+ 'x-cursor-client-arch': process.arch === 'arm64' ? 'aarch64' : 'x64',
182
+ 'x-cursor-client-device-type': 'desktop',
183
+ 'x-cursor-config-version': crypto.randomUUID(),
184
+ 'x-cursor-timezone': Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC',
185
+ 'x-ghost-mode': ghostMode ? 'true' : 'false',
186
+ 'x-request-id': crypto.randomUUID(),
187
+ 'x-session-id': crypto.createHash('sha256').update(cleanToken).digest('hex').substring(0, 36),
188
+ };
189
+ }
190
+ transformRequest(model, body, stream, credentials) {
191
+ const translatedBody = (0, cursor_translator_js_1.buildCursorRequest)(model, body, stream, credentials);
192
+ const messages = translatedBody.messages || [];
193
+ const tools = (translatedBody.tools || body.tools || []);
194
+ const reasoningEffort = body.reasoning_effort || null;
195
+ return (0, cursor_protobuf_js_1.generateCursorBody)(messages, model, tools, reasoningEffort);
196
+ }
197
+ async makeFetchRequest(url, headers, body, signal) {
198
+ const response = await fetch(url, {
199
+ method: 'POST',
200
+ headers,
201
+ body,
202
+ signal,
203
+ });
204
+ const responseHeaders = {};
205
+ response.headers.forEach((value, key) => {
206
+ responseHeaders[key] = value;
207
+ });
208
+ return {
209
+ status: response.status,
210
+ headers: responseHeaders,
211
+ body: Buffer.from(await response.arrayBuffer()),
212
+ };
213
+ }
214
+ async makeHttp2Request(url, headers, body, signal) {
215
+ const http2 = await getHttp2();
216
+ if (!http2) {
217
+ throw new Error('http2 module not available');
218
+ }
219
+ return new Promise((resolve, reject) => {
220
+ const urlObj = new URL(url);
221
+ const client = http2.connect(`https://${urlObj.host}`);
222
+ const chunks = [];
223
+ let responseHeaders = {};
224
+ client.on('error', (err) => {
225
+ client.close();
226
+ reject(err);
227
+ });
228
+ const req = client.request({
229
+ ':method': 'POST',
230
+ ':path': urlObj.pathname,
231
+ ':authority': urlObj.host,
232
+ ':scheme': 'https',
233
+ ...headers,
234
+ });
235
+ req.on('response', (hdrs) => {
236
+ responseHeaders = hdrs;
237
+ });
238
+ req.on('data', (chunk) => {
239
+ chunks.push(chunk);
240
+ });
241
+ req.on('end', () => {
242
+ client.close();
243
+ resolve({
244
+ status: Number(responseHeaders[':status']) || 500,
245
+ headers: responseHeaders,
246
+ body: Buffer.concat(chunks),
247
+ });
248
+ });
249
+ req.on('error', (err) => {
250
+ client.close();
251
+ reject(err);
252
+ });
253
+ if (signal) {
254
+ const onAbort = () => {
255
+ req.close();
256
+ client.close();
257
+ reject(new Error('Request aborted'));
258
+ };
259
+ signal.addEventListener('abort', onAbort, { once: true });
260
+ const cleanup = () => {
261
+ signal.removeEventListener('abort', onAbort);
262
+ };
263
+ req.on('end', cleanup);
264
+ req.on('error', cleanup);
265
+ }
266
+ req.write(body);
267
+ req.end();
268
+ });
269
+ }
270
+ async execute(params) {
271
+ const { model, body, stream, credentials, signal } = params;
272
+ const url = this.buildUrl();
273
+ const headers = this.buildHeaders(credentials);
274
+ const transformedBody = this.transformRequest(model, body, stream, credentials);
275
+ try {
276
+ const http2 = await getHttp2();
277
+ const response = http2
278
+ ? await this.makeHttp2Request(url, headers, transformedBody, signal)
279
+ : await this.makeFetchRequest(url, headers, transformedBody, signal);
280
+ if (response.status !== 200) {
281
+ const errorText = response.body?.toString() || 'Unknown error';
282
+ const errorResponse = new Response(JSON.stringify({
283
+ error: {
284
+ message: `[${response.status}]: ${errorText}`,
285
+ type: 'invalid_request_error',
286
+ code: '',
287
+ },
288
+ }), {
289
+ status: response.status,
290
+ headers: { 'Content-Type': 'application/json' },
291
+ });
292
+ return { response: errorResponse, url, headers, transformedBody: body };
293
+ }
294
+ const transformedResponse = stream === true
295
+ ? this.transformProtobufToSSE(response.body, model, body)
296
+ : this.transformProtobufToJSON(response.body, model, body);
297
+ return { response: transformedResponse, url, headers, transformedBody: body };
298
+ }
299
+ catch (error) {
300
+ const errorResponse = new Response(JSON.stringify({
301
+ error: {
302
+ message: error.message,
303
+ type: 'connection_error',
304
+ code: '',
305
+ },
306
+ }), {
307
+ status: 500,
308
+ headers: { 'Content-Type': 'application/json' },
309
+ });
310
+ return { response: errorResponse, url, headers, transformedBody: body };
311
+ }
312
+ }
313
+ /**
314
+ * Parse protobuf buffer into frames and extract text/toolcalls.
315
+ * Shared logic between JSON and SSE transformers.
316
+ */
317
+ *parseProtobufFrames(buffer) {
318
+ let offset = 0;
319
+ while (offset < buffer.length) {
320
+ if (offset + 5 > buffer.length)
321
+ break;
322
+ const flags = buffer[offset];
323
+ const length = buffer.readUInt32BE(offset + 1);
324
+ if (offset + 5 + length > buffer.length)
325
+ break;
326
+ let payload = buffer.slice(offset + 5, offset + 5 + length);
327
+ offset += 5 + length;
328
+ payload = decompressPayload(payload, flags);
329
+ // Check for JSON error format
330
+ try {
331
+ const text = payload.toString('utf-8');
332
+ if (text.startsWith('{') && text.includes('"error"')) {
333
+ yield { type: 'error', response: createErrorResponse(JSON.parse(text)) };
334
+ return;
335
+ }
336
+ }
337
+ catch (err) {
338
+ if (process.env.CCS_DEBUG) {
339
+ console.error('[cursor] parseProtobufFrames error parsing failed:', err);
340
+ }
341
+ }
342
+ const result = (0, cursor_protobuf_js_1.extractTextFromResponse)(new Uint8Array(payload));
343
+ // Check for protobuf-decoded error
344
+ if (result.error) {
345
+ const errorLower = result.error.toLowerCase();
346
+ const isRateLimit = errorLower.includes('rate limit') ||
347
+ errorLower.includes('resource_exhausted') ||
348
+ errorLower.includes('too many requests');
349
+ yield {
350
+ type: 'error',
351
+ response: new Response(JSON.stringify({
352
+ error: {
353
+ message: result.error,
354
+ type: isRateLimit ? 'rate_limit_error' : 'server_error',
355
+ code: isRateLimit ? 'rate_limited' : 'cursor_error',
356
+ },
357
+ }), {
358
+ status: isRateLimit ? 429 : 400,
359
+ headers: { 'Content-Type': 'application/json' },
360
+ }),
361
+ };
362
+ return;
363
+ }
364
+ if (result.toolCall) {
365
+ yield { type: 'toolCall', toolCall: result.toolCall };
366
+ }
367
+ if (result.text) {
368
+ yield { type: 'text', text: result.text };
369
+ }
370
+ }
371
+ }
372
+ transformProtobufToJSON(buffer, model, _body) {
373
+ const responseId = `chatcmpl-cursor-${Date.now()}`;
374
+ const created = Math.floor(Date.now() / 1000);
375
+ let totalContent = '';
376
+ const toolCalls = [];
377
+ const toolCallsMap = new Map();
378
+ for (const frame of this.parseProtobufFrames(buffer)) {
379
+ if (frame.type === 'error') {
380
+ return frame.response;
381
+ }
382
+ if (frame.type === 'toolCall') {
383
+ const tc = frame.toolCall;
384
+ if (toolCallsMap.has(tc.id)) {
385
+ const existing = toolCallsMap.get(tc.id);
386
+ if (!existing)
387
+ continue;
388
+ existing.function.arguments += tc.function.arguments;
389
+ existing.isLast = tc.isLast;
390
+ }
391
+ else {
392
+ toolCallsMap.set(tc.id, {
393
+ ...tc,
394
+ index: toolCallsMap.size,
395
+ });
396
+ }
397
+ if (tc.isLast) {
398
+ const finalToolCall = toolCallsMap.get(tc.id);
399
+ if (!finalToolCall)
400
+ continue;
401
+ toolCalls.push({
402
+ id: finalToolCall.id,
403
+ type: finalToolCall.type,
404
+ function: {
405
+ name: finalToolCall.function.name,
406
+ arguments: finalToolCall.function.arguments,
407
+ },
408
+ });
409
+ }
410
+ }
411
+ if (frame.type === 'text') {
412
+ totalContent += frame.text;
413
+ }
414
+ }
415
+ // Finalize remaining tool calls
416
+ for (const id of Array.from(toolCallsMap.keys())) {
417
+ const tc = toolCallsMap.get(id);
418
+ if (!tc)
419
+ continue;
420
+ if (!toolCalls.find((t) => t.id === id)) {
421
+ toolCalls.push({
422
+ id: tc.id,
423
+ type: tc.type,
424
+ function: {
425
+ name: tc.function.name,
426
+ arguments: tc.function.arguments,
427
+ },
428
+ });
429
+ }
430
+ }
431
+ const message = {
432
+ role: 'assistant',
433
+ content: totalContent || null,
434
+ };
435
+ if (toolCalls.length > 0) {
436
+ message.tool_calls = toolCalls;
437
+ }
438
+ const completion = {
439
+ id: responseId,
440
+ object: 'chat.completion',
441
+ created,
442
+ model,
443
+ choices: [
444
+ {
445
+ index: 0,
446
+ message,
447
+ finish_reason: toolCalls.length > 0 ? 'tool_calls' : 'stop',
448
+ },
449
+ ],
450
+ usage: {
451
+ prompt_tokens: 0,
452
+ completion_tokens: 0,
453
+ total_tokens: 0,
454
+ },
455
+ };
456
+ return new Response(JSON.stringify(completion), {
457
+ status: 200,
458
+ headers: { 'Content-Type': 'application/json' },
459
+ });
460
+ }
461
+ transformProtobufToSSE(buffer, model, _body) {
462
+ // TODO(#531): Implement true streaming — currently buffers entire response before transforming.
463
+ // This should pipe HTTP/2 data events through a TransformStream for incremental SSE output.
464
+ // See: https://github.com/kaitranntt/ccs/issues/531
465
+ // NOTE: Chunk boundary splits may emit duplicate SSE messages if a frame spans multiple chunks.
466
+ const responseId = `chatcmpl-cursor-${Date.now()}`;
467
+ const created = Math.floor(Date.now() / 1000);
468
+ const chunks = [];
469
+ const toolCalls = [];
470
+ const toolCallsMap = new Map();
471
+ for (const frame of this.parseProtobufFrames(buffer)) {
472
+ if (frame.type === 'error') {
473
+ return frame.response;
474
+ }
475
+ if (frame.type === 'toolCall') {
476
+ const tc = frame.toolCall;
477
+ if (chunks.length === 0) {
478
+ chunks.push(`data: ${JSON.stringify({
479
+ id: responseId,
480
+ object: 'chat.completion.chunk',
481
+ created,
482
+ model,
483
+ choices: [
484
+ {
485
+ index: 0,
486
+ delta: { role: 'assistant', content: '' },
487
+ finish_reason: null,
488
+ },
489
+ ],
490
+ })}\n\n`);
491
+ }
492
+ if (toolCallsMap.has(tc.id)) {
493
+ const existing = toolCallsMap.get(tc.id);
494
+ if (!existing)
495
+ continue;
496
+ existing.function.arguments += tc.function.arguments;
497
+ existing.isLast = tc.isLast;
498
+ if (tc.function.arguments) {
499
+ chunks.push(`data: ${JSON.stringify({
500
+ id: responseId,
501
+ object: 'chat.completion.chunk',
502
+ created,
503
+ model,
504
+ choices: [
505
+ {
506
+ index: 0,
507
+ delta: {
508
+ tool_calls: [
509
+ {
510
+ index: existing.index,
511
+ id: tc.id,
512
+ type: 'function',
513
+ function: {
514
+ name: tc.function.name,
515
+ arguments: tc.function.arguments,
516
+ },
517
+ },
518
+ ],
519
+ },
520
+ finish_reason: null,
521
+ },
522
+ ],
523
+ })}\n\n`);
524
+ }
525
+ }
526
+ else {
527
+ const toolCallIndex = toolCalls.length;
528
+ toolCalls.push({ ...tc, index: toolCallIndex });
529
+ toolCallsMap.set(tc.id, { ...tc, index: toolCallIndex });
530
+ chunks.push(`data: ${JSON.stringify({
531
+ id: responseId,
532
+ object: 'chat.completion.chunk',
533
+ created,
534
+ model,
535
+ choices: [
536
+ {
537
+ index: 0,
538
+ delta: {
539
+ tool_calls: [
540
+ {
541
+ index: toolCallIndex,
542
+ id: tc.id,
543
+ type: 'function',
544
+ function: {
545
+ name: tc.function.name,
546
+ arguments: tc.function.arguments,
547
+ },
548
+ },
549
+ ],
550
+ },
551
+ finish_reason: null,
552
+ },
553
+ ],
554
+ })}\n\n`);
555
+ }
556
+ }
557
+ if (frame.type === 'text') {
558
+ chunks.push(`data: ${JSON.stringify({
559
+ id: responseId,
560
+ object: 'chat.completion.chunk',
561
+ created,
562
+ model,
563
+ choices: [
564
+ {
565
+ index: 0,
566
+ delta: chunks.length === 0 && toolCalls.length === 0
567
+ ? { role: 'assistant', content: frame.text }
568
+ : { content: frame.text },
569
+ finish_reason: null,
570
+ },
571
+ ],
572
+ })}\n\n`);
573
+ }
574
+ }
575
+ if (chunks.length === 0 && toolCalls.length === 0) {
576
+ chunks.push(`data: ${JSON.stringify({
577
+ id: responseId,
578
+ object: 'chat.completion.chunk',
579
+ created,
580
+ model,
581
+ choices: [
582
+ {
583
+ index: 0,
584
+ delta: { role: 'assistant', content: '' },
585
+ finish_reason: null,
586
+ },
587
+ ],
588
+ })}\n\n`);
589
+ }
590
+ chunks.push(`data: ${JSON.stringify({
591
+ id: responseId,
592
+ object: 'chat.completion.chunk',
593
+ created,
594
+ model,
595
+ choices: [
596
+ {
597
+ index: 0,
598
+ delta: {},
599
+ finish_reason: toolCalls.length > 0 ? 'tool_calls' : 'stop',
600
+ },
601
+ ],
602
+ usage: {
603
+ prompt_tokens: 0,
604
+ completion_tokens: 0,
605
+ total_tokens: 0,
606
+ },
607
+ })}\n\n`);
608
+ chunks.push('data: [DONE]\n\n');
609
+ return new Response(chunks.join(''), {
610
+ status: 200,
611
+ headers: {
612
+ 'Content-Type': 'text/event-stream',
613
+ 'Cache-Control': 'no-cache',
614
+ Connection: 'keep-alive',
615
+ },
616
+ });
617
+ }
618
+ }
619
+ exports.CursorExecutor = CursorExecutor;
620
+ exports.default = CursorExecutor;
621
+ //# sourceMappingURL=cursor-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-executor.js","sourceRoot":"","sources":["../../src/cursor/cursor-executor.ts"],"names":[],"mappings":"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"}