cccc-sdk 0.4.4 → 0.4.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +252 -16
  2. package/dist/client.d.ts +87 -163
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +663 -536
  5. package/dist/client.js.map +1 -1
  6. package/dist/client_0430_admin_ops.d.ts +56 -0
  7. package/dist/client_0430_admin_ops.d.ts.map +1 -0
  8. package/dist/client_0430_admin_ops.js +143 -0
  9. package/dist/client_0430_admin_ops.js.map +1 -0
  10. package/dist/client_0430_assistant_ops.d.ts +106 -0
  11. package/dist/client_0430_assistant_ops.d.ts.map +1 -0
  12. package/dist/client_0430_assistant_ops.js +122 -0
  13. package/dist/client_0430_assistant_ops.js.map +1 -0
  14. package/dist/client_0430_memory_ops.d.ts +14 -0
  15. package/dist/client_0430_memory_ops.d.ts.map +1 -0
  16. package/dist/client_0430_memory_ops.js +84 -0
  17. package/dist/client_0430_memory_ops.js.map +1 -0
  18. package/dist/client_0430_ops.d.ts +8 -0
  19. package/dist/client_0430_ops.d.ts.map +1 -0
  20. package/dist/client_0430_ops.js +9 -0
  21. package/dist/client_0430_ops.js.map +1 -0
  22. package/dist/client_0430_shared.d.ts +15 -0
  23. package/dist/client_0430_shared.d.ts.map +1 -0
  24. package/dist/client_0430_shared.js +4 -0
  25. package/dist/client_0430_shared.js.map +1 -0
  26. package/dist/client_0434_ops.d.ts +10 -0
  27. package/dist/client_0434_ops.d.ts.map +1 -0
  28. package/dist/client_0434_ops.js +43 -0
  29. package/dist/client_0434_ops.js.map +1 -0
  30. package/dist/client_chat_ops.d.ts +28 -0
  31. package/dist/client_chat_ops.d.ts.map +1 -0
  32. package/dist/client_chat_ops.js +213 -0
  33. package/dist/client_chat_ops.js.map +1 -0
  34. package/dist/client_connect_ops.d.ts +9 -0
  35. package/dist/client_connect_ops.d.ts.map +1 -0
  36. package/dist/client_connect_ops.js +44 -0
  37. package/dist/client_connect_ops.js.map +1 -0
  38. package/dist/client_group_space_ops.d.ts +24 -0
  39. package/dist/client_group_space_ops.d.ts.map +1 -0
  40. package/dist/client_group_space_ops.js +167 -0
  41. package/dist/client_group_space_ops.js.map +1 -0
  42. package/dist/errors.d.ts +17 -1
  43. package/dist/errors.d.ts.map +1 -1
  44. package/dist/errors.js +26 -1
  45. package/dist/errors.js.map +1 -1
  46. package/dist/index.d.ts +4 -4
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +3 -3
  49. package/dist/index.js.map +1 -1
  50. package/dist/transport.d.ts +4 -3
  51. package/dist/transport.d.ts.map +1 -1
  52. package/dist/transport.js +236 -120
  53. package/dist/transport.js.map +1 -1
  54. package/dist/types.d.ts +752 -89
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js +7 -3
  57. package/dist/types.js.map +1 -1
  58. package/package.json +3 -3
package/dist/transport.js CHANGED
@@ -5,22 +5,24 @@ import * as net from 'node:net';
5
5
  import * as fs from 'node:fs/promises';
6
6
  import * as path from 'node:path';
7
7
  import * as os from 'node:os';
8
- import { DaemonUnavailableError } from './errors.js';
8
+ import { DaemonConnectionError, DaemonUnavailableError, IncompatibleDaemonError, OutcomeUnknownError, RequestTooLargeError, } from './errors.js';
9
9
  // ============================================================
10
10
  // Constants
11
11
  // ============================================================
12
12
  export const MAX_LINE_SIZE = 4000000; // 4MB
13
+ export const MAX_REQUEST_SIZE = 2000000;
13
14
  export const DEFAULT_TIMEOUT_MS = 30000;
14
15
  const MAX_PORT = 65535;
15
16
  function normalizeTcpConnectHost(rawHost) {
16
- const host = String(rawHost ?? '').trim();
17
+ let host = String(rawHost ?? '').trim();
18
+ if (host.startsWith('[') && host.endsWith(']')) {
19
+ host = host.slice(1, -1).trim();
20
+ }
17
21
  if (!host || host === 'localhost' || host === '0.0.0.0') {
18
22
  return '127.0.0.1';
19
23
  }
20
- // Daemon IPC currently uses AF_INET only; fall back to loopback for
21
- // IPv6-style addresses (contains ':') or the IPv6 loopback literal.
22
- if (host.includes(':') || host === '::1') {
23
- return '127.0.0.1';
24
+ if (host === '::') {
25
+ return '::1';
24
26
  }
25
27
  return host;
26
28
  }
@@ -88,40 +90,84 @@ export async function discoverEndpoint(home) {
88
90
  /**
89
91
  * Create socket connection
90
92
  */
91
- function connect(endpoint, timeoutMs) {
93
+ function connect(endpoint, timeoutMs, signal) {
92
94
  return new Promise((resolve, reject) => {
93
95
  const socket = new net.Socket();
94
- socket.setTimeout(timeoutMs);
96
+ let settled = false;
97
+ let timer;
95
98
  const cleanup = () => {
96
- socket.removeAllListeners();
97
- };
98
- const onError = (err) => {
99
- cleanup();
100
- socket.destroy();
101
- reject(new DaemonUnavailableError(err.message));
99
+ if (timer !== undefined)
100
+ clearTimeout(timer);
101
+ socket.removeListener('connect', onConnect);
102
+ socket.removeListener('error', onError);
103
+ signal?.removeEventListener('abort', onAbort);
102
104
  };
103
- const onTimeout = () => {
105
+ const rejectAndDestroy = (error) => {
106
+ if (settled)
107
+ return;
108
+ settled = true;
104
109
  cleanup();
105
110
  socket.destroy();
106
- reject(new DaemonUnavailableError('Connection timeout'));
111
+ reject(error);
107
112
  };
108
- socket.once('error', onError);
109
- socket.once('timeout', onTimeout);
113
+ const onError = (err) => rejectAndDestroy(new DaemonConnectionError(err.message));
114
+ const onTimeout = () => rejectAndDestroy(new DaemonConnectionError('Connection timeout'));
115
+ const onAbort = () => rejectAndDestroy(new DaemonUnavailableError('Event stream aborted'));
110
116
  const onConnect = () => {
117
+ if (settled) {
118
+ socket.destroy();
119
+ return;
120
+ }
121
+ settled = true;
111
122
  cleanup();
112
123
  resolve(socket);
113
124
  };
114
- if (endpoint.transport === 'tcp') {
115
- socket.connect(endpoint.port, endpoint.host, onConnect);
125
+ if (signal?.aborted) {
126
+ onAbort();
127
+ return;
116
128
  }
117
- else if (endpoint.transport === 'unix') {
118
- socket.connect(endpoint.path, onConnect);
129
+ signal?.addEventListener('abort', onAbort, { once: true });
130
+ timer = setTimeout(onTimeout, timeoutMs);
131
+ socket.once('connect', onConnect);
132
+ socket.once('error', onError);
133
+ try {
134
+ if (endpoint.transport === 'tcp') {
135
+ socket.connect(endpoint.port, endpoint.host);
136
+ }
137
+ else if (endpoint.transport === 'unix') {
138
+ socket.connect(endpoint.path);
139
+ }
140
+ else {
141
+ rejectAndDestroy(new DaemonConnectionError(`Invalid endpoint transport: ${endpoint.transport}`));
142
+ }
119
143
  }
120
- else {
121
- reject(new DaemonUnavailableError(`Invalid endpoint transport: ${endpoint.transport}`));
144
+ catch (error) {
145
+ rejectAndDestroy(new DaemonConnectionError(error instanceof Error ? error.message : String(error)));
122
146
  }
123
147
  });
124
148
  }
149
+ function remainingTimeout(deadline) {
150
+ return Math.max(1, deadline - Date.now());
151
+ }
152
+ function appendChunk(buffer, chunk) {
153
+ return buffer.length === 0 ? chunk : Buffer.concat([buffer, chunk]);
154
+ }
155
+ function assertBufferedLineLimit(buffer) {
156
+ let start = 0;
157
+ let newlineIndex;
158
+ while ((newlineIndex = buffer.indexOf(0x0a, start)) !== -1) {
159
+ if (newlineIndex - start > MAX_LINE_SIZE) {
160
+ throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
161
+ }
162
+ start = newlineIndex + 1;
163
+ }
164
+ if (buffer.length - start > MAX_LINE_SIZE) {
165
+ throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
166
+ }
167
+ }
168
+ function decodeLine(bytes) {
169
+ return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
170
+ }
125
171
  // ============================================================
126
172
  // IPC calls
127
173
  // ============================================================
@@ -136,59 +182,82 @@ function connect(endpoint, timeoutMs) {
136
182
  * @throws {DaemonUnavailableError} On connection, write, or parse failure.
137
183
  */
138
184
  export async function callDaemon(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS) {
185
+ const deadline = Date.now() + timeoutMs;
186
+ const line = JSON.stringify(request) + '\n';
187
+ if (Buffer.byteLength(line, 'utf8') > MAX_REQUEST_SIZE) {
188
+ throw new RequestTooLargeError(`Daemon request exceeds ${MAX_REQUEST_SIZE} bytes`);
189
+ }
139
190
  const socket = await connect(endpoint, timeoutMs);
140
191
  return new Promise((resolve, reject) => {
141
- let buffer = '';
142
- let resolved = false;
192
+ let buffer = Buffer.alloc(0);
193
+ let settled = false;
194
+ let timer;
143
195
  const cleanup = () => {
144
- socket.removeAllListeners();
196
+ if (timer !== undefined)
197
+ clearTimeout(timer);
198
+ socket.removeListener('data', onData);
199
+ socket.removeListener('error', onError);
200
+ socket.removeListener('close', onClose);
145
201
  };
146
- socket.on('data', (chunk) => {
147
- buffer += chunk.toString('utf-8');
148
- const newlineIndex = buffer.indexOf('\n');
149
- if (newlineIndex !== -1 && !resolved) {
150
- resolved = true;
151
- const line = buffer.slice(0, newlineIndex);
202
+ const fail = (error) => {
203
+ if (settled)
204
+ return;
205
+ settled = true;
206
+ cleanup();
207
+ socket.destroy();
208
+ reject(error);
209
+ };
210
+ const onData = (chunk) => {
211
+ if (settled)
212
+ return;
213
+ buffer = appendChunk(buffer, chunk);
214
+ const newlineIndex = buffer.indexOf(0x0a);
215
+ if (newlineIndex !== -1) {
216
+ settled = true;
217
+ const responseBytes = buffer.subarray(0, newlineIndex);
152
218
  cleanup();
153
219
  socket.destroy();
154
- if (line.length > MAX_LINE_SIZE) {
155
- reject(new DaemonUnavailableError('Response too large'));
220
+ if (responseBytes.length > MAX_LINE_SIZE) {
221
+ reject(new OutcomeUnknownError(request.op, 'Response too large'));
156
222
  return;
157
223
  }
158
224
  try {
159
- resolve(JSON.parse(line));
225
+ const parsed = JSON.parse(decodeLine(responseBytes));
226
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
227
+ reject(new OutcomeUnknownError(request.op, 'Response must be a JSON object'));
228
+ return;
229
+ }
230
+ const response = parsed;
231
+ if (response.v !== 1) {
232
+ reject(new IncompatibleDaemonError(`Daemon response uses unsupported IPC version: ${String(response.v)}`));
233
+ return;
234
+ }
235
+ resolve(response);
160
236
  }
161
237
  catch {
162
- reject(new DaemonUnavailableError('Invalid JSON response'));
238
+ reject(new OutcomeUnknownError(request.op, 'Invalid JSON response'));
163
239
  }
164
240
  }
165
- });
166
- socket.on('error', (err) => {
167
- if (!resolved) {
168
- resolved = true;
169
- cleanup();
170
- socket.destroy();
171
- reject(new DaemonUnavailableError(err.message));
172
- }
173
- });
174
- socket.on('close', () => {
175
- if (!resolved) {
176
- resolved = true;
177
- cleanup();
178
- socket.destroy();
179
- reject(new DaemonUnavailableError('Connection closed unexpectedly'));
241
+ if (newlineIndex === -1 && buffer.length > MAX_LINE_SIZE) {
242
+ fail(new OutcomeUnknownError(request.op, 'Response too large'));
180
243
  }
181
- });
244
+ };
245
+ const onError = (err) => fail(new OutcomeUnknownError(request.op, err.message));
246
+ const onClose = () => fail(new OutcomeUnknownError(request.op, 'Connection closed unexpectedly'));
247
+ socket.on('data', onData);
248
+ socket.once('error', onError);
249
+ socket.once('close', onClose);
250
+ timer = setTimeout(() => fail(new OutcomeUnknownError(request.op, 'Response timeout')), remainingTimeout(deadline));
182
251
  // Send request.
183
- const line = JSON.stringify(request) + '\n';
184
- socket.write(line, (err) => {
185
- if (err && !resolved) {
186
- resolved = true;
187
- cleanup();
188
- socket.destroy();
189
- reject(new DaemonUnavailableError(`Write failed: ${err.message}`));
190
- }
191
- });
252
+ try {
253
+ socket.write(line, (err) => {
254
+ if (err)
255
+ fail(new OutcomeUnknownError(request.op, `Write failed: ${err.message}`));
256
+ });
257
+ }
258
+ catch (error) {
259
+ fail(new OutcomeUnknownError(request.op, error instanceof Error ? error.message : String(error)));
260
+ }
192
261
  });
193
262
  }
194
263
  /**
@@ -201,68 +270,101 @@ export async function callDaemon(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_
201
270
  * @returns The socket, handshake response, and any buffered data after the handshake.
202
271
  * @throws {DaemonUnavailableError} On connection or handshake failure.
203
272
  */
204
- export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS) {
205
- const socket = await connect(endpoint, timeoutMs);
206
- // Send request.
273
+ export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TIMEOUT_MS, signal) {
274
+ const deadline = Date.now() + timeoutMs;
275
+ if (signal?.aborted) {
276
+ throw new DaemonUnavailableError('Event stream aborted');
277
+ }
207
278
  const line = JSON.stringify(request) + '\n';
208
- await new Promise((resolve, reject) => {
209
- socket.write(line, (err) => {
210
- if (err) {
211
- socket.destroy();
212
- reject(new DaemonUnavailableError(`Write failed: ${err.message}`));
213
- }
214
- else {
215
- resolve();
216
- }
217
- });
218
- });
219
- // Read handshake response.
279
+ if (Buffer.byteLength(line, 'utf8') > MAX_REQUEST_SIZE) {
280
+ throw new RequestTooLargeError(`Daemon request exceeds ${MAX_REQUEST_SIZE} bytes`);
281
+ }
282
+ const socket = await connect(endpoint, timeoutMs, signal);
283
+ if (signal?.aborted) {
284
+ socket.destroy();
285
+ throw new DaemonUnavailableError('Event stream aborted');
286
+ }
287
+ // Send the request and read the handshake under one listener set so an
288
+ // immediate socket error or response cannot race the handshake setup.
220
289
  const { handshake, remainingBuffer } = await new Promise((resolve, reject) => {
221
- let buffer = '';
222
- let resolved = false;
290
+ let buffer = Buffer.alloc(0);
291
+ let settled = false;
292
+ let timer;
223
293
  const cleanup = () => {
224
- socket.removeAllListeners();
294
+ if (timer !== undefined)
295
+ clearTimeout(timer);
296
+ socket.removeListener('data', onData);
297
+ socket.removeListener('error', onError);
298
+ socket.removeListener('close', onClose);
299
+ signal?.removeEventListener('abort', onAbort);
225
300
  };
301
+ const fail = (error) => {
302
+ if (settled)
303
+ return;
304
+ settled = true;
305
+ cleanup();
306
+ socket.destroy();
307
+ reject(error);
308
+ };
309
+ const onAbort = () => fail(new DaemonUnavailableError('Event stream aborted'));
226
310
  const onData = (chunk) => {
227
- buffer += chunk.toString('utf-8');
228
- const newlineIndex = buffer.indexOf('\n');
229
- if (newlineIndex !== -1 && !resolved) {
230
- resolved = true;
231
- cleanup();
232
- const responseLine = buffer.slice(0, newlineIndex);
233
- const remaining = buffer.slice(newlineIndex + 1);
311
+ if (settled)
312
+ return;
313
+ buffer = appendChunk(buffer, chunk);
314
+ const newlineIndex = buffer.indexOf(0x0a);
315
+ if (newlineIndex !== -1) {
316
+ const responseBytes = buffer.subarray(0, newlineIndex);
317
+ const remaining = buffer.subarray(newlineIndex + 1);
318
+ if (responseBytes.length > MAX_LINE_SIZE) {
319
+ fail(new OutcomeUnknownError(request.op, 'Handshake response too large'));
320
+ return;
321
+ }
234
322
  try {
323
+ const parsed = JSON.parse(decodeLine(responseBytes));
324
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
325
+ fail(new OutcomeUnknownError(request.op, 'Handshake must be a JSON object'));
326
+ return;
327
+ }
328
+ const handshake = parsed;
329
+ if (handshake.v !== 1) {
330
+ fail(new IncompatibleDaemonError(`Daemon stream handshake uses unsupported IPC version: ${String(handshake.v)}`));
331
+ return;
332
+ }
333
+ assertBufferedLineLimit(remaining);
334
+ settled = true;
335
+ cleanup();
235
336
  resolve({
236
- handshake: JSON.parse(responseLine),
337
+ handshake,
237
338
  remainingBuffer: remaining,
238
339
  });
239
340
  }
240
- catch {
241
- socket.destroy();
242
- reject(new DaemonUnavailableError('Invalid handshake JSON'));
341
+ catch (error) {
342
+ fail(error instanceof DaemonUnavailableError
343
+ ? error
344
+ : new OutcomeUnknownError(request.op, 'Invalid handshake JSON'));
243
345
  }
244
346
  }
347
+ if (newlineIndex === -1 && buffer.length > MAX_LINE_SIZE) {
348
+ fail(new OutcomeUnknownError(request.op, 'Handshake response too large'));
349
+ }
245
350
  };
351
+ const onError = (err) => fail(new OutcomeUnknownError(request.op, err.message));
352
+ const onClose = () => fail(new OutcomeUnknownError(request.op, 'Connection closed during handshake'));
246
353
  socket.on('data', onData);
247
- socket.once('error', (err) => {
248
- if (!resolved) {
249
- resolved = true;
250
- cleanup();
251
- socket.destroy();
252
- reject(new DaemonUnavailableError(err.message));
253
- }
254
- });
255
- socket.once('close', () => {
256
- if (!resolved) {
257
- resolved = true;
258
- cleanup();
259
- socket.destroy();
260
- reject(new DaemonUnavailableError('Connection closed during handshake'));
261
- }
262
- });
354
+ signal?.addEventListener('abort', onAbort, { once: true });
355
+ socket.once('error', onError);
356
+ socket.once('close', onClose);
357
+ timer = setTimeout(() => fail(new OutcomeUnknownError(request.op, 'Handshake timeout')), remainingTimeout(deadline));
358
+ try {
359
+ socket.write(line, (error) => {
360
+ if (error)
361
+ fail(new OutcomeUnknownError(request.op, `Write failed: ${error.message}`));
362
+ });
363
+ }
364
+ catch (error) {
365
+ fail(new OutcomeUnknownError(request.op, error instanceof Error ? error.message : String(error)));
366
+ }
263
367
  });
264
- // Remove timeout after handshake.
265
- socket.setTimeout(0);
266
368
  return { socket, handshake, initialBuffer: remainingBuffer };
267
369
  }
268
370
  /**
@@ -273,29 +375,43 @@ export async function openEventsStream(endpoint, request, timeoutMs = DEFAULT_TI
273
375
  * @yields Each non-empty line as a string (without the trailing newline).
274
376
  */
275
377
  export async function* readLines(socket, initialBuffer = '') {
276
- let buffer = initialBuffer;
378
+ let buffer = typeof initialBuffer === 'string'
379
+ ? Buffer.from(initialBuffer, 'utf8')
380
+ : initialBuffer;
277
381
  // Handle lines from initial buffer.
278
382
  let newlineIndex;
279
- while ((newlineIndex = buffer.indexOf('\n')) !== -1) {
280
- const line = buffer.slice(0, newlineIndex);
281
- buffer = buffer.slice(newlineIndex + 1);
383
+ while ((newlineIndex = buffer.indexOf(0x0a)) !== -1) {
384
+ if (newlineIndex > MAX_LINE_SIZE) {
385
+ throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
386
+ }
387
+ const line = decodeLine(buffer.subarray(0, newlineIndex));
388
+ buffer = buffer.subarray(newlineIndex + 1);
282
389
  if (line.trim()) {
283
390
  yield line;
284
391
  }
285
392
  }
393
+ assertBufferedLineLimit(buffer);
286
394
  // Continue reading from socket.
287
395
  for await (const chunk of socket) {
288
- buffer += chunk.toString('utf-8');
289
- if (buffer.indexOf('\n') === -1 && buffer.length > MAX_LINE_SIZE) {
290
- throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
291
- }
292
- while ((newlineIndex = buffer.indexOf('\n')) !== -1) {
293
- const line = buffer.slice(0, newlineIndex);
294
- buffer = buffer.slice(newlineIndex + 1);
396
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
397
+ buffer = appendChunk(buffer, bytes);
398
+ while ((newlineIndex = buffer.indexOf(0x0a)) !== -1) {
399
+ if (newlineIndex > MAX_LINE_SIZE) {
400
+ throw new DaemonUnavailableError(`Stream line exceeds MAX_LINE_SIZE (${MAX_LINE_SIZE} bytes)`);
401
+ }
402
+ const line = decodeLine(buffer.subarray(0, newlineIndex));
403
+ buffer = buffer.subarray(newlineIndex + 1);
295
404
  if (line.trim()) {
296
405
  yield line;
297
406
  }
298
407
  }
408
+ assertBufferedLineLimit(buffer);
409
+ }
410
+ if (buffer.length > 0) {
411
+ assertBufferedLineLimit(buffer);
412
+ const line = decodeLine(buffer);
413
+ if (line.trim())
414
+ yield line;
299
415
  }
300
416
  }
301
417
  //# sourceMappingURL=transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}