@syntheticminds/wiretap-llm 0.2.3 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKxC,MAAM,MAAM,wBAAwB,GAAG;IACrC,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAoBF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,KAAK,CA8Td"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAKxC,MAAM,MAAM,wBAAwB,GAAG;IACrC,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAoBF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,KAAK,CAuUd"}
package/dist/index.js CHANGED
@@ -243,13 +243,17 @@ class TelemetryClient {
243
243
  // src/sse.ts
244
244
  function parseSSE(chunk) {
245
245
  const events = [];
246
- const normalized = chunk.replace(/\r\n/g, "\n");
247
- const blocks = normalized.split("\n\n");
246
+ const normalized = chunk.replace(/\r\n/g, `
247
+ `);
248
+ const blocks = normalized.split(`
249
+
250
+ `);
248
251
  for (let i = 0;i < blocks.length - 1; i += 1) {
249
252
  const block = blocks[i];
250
253
  if (!block.trim())
251
254
  continue;
252
- const lines = block.split("\n");
255
+ const lines = block.split(`
256
+ `);
253
257
  const data = [];
254
258
  let event;
255
259
  let id;
@@ -272,7 +276,8 @@ function parseSSE(chunk) {
272
276
  }
273
277
  if (data.length === 0)
274
278
  continue;
275
- events.push({ data: data.join("\n"), event, id });
279
+ events.push({ data: data.join(`
280
+ `), event, id });
276
281
  }
277
282
  return events;
278
283
  }
@@ -317,6 +322,7 @@ function createInstrumentedFetch(client, options) {
317
322
  const cloned = response.clone();
318
323
  let responseBody = {};
319
324
  let outputText;
325
+ let reasoning;
320
326
  let finishReason2;
321
327
  let usage2;
322
328
  try {
@@ -328,12 +334,12 @@ function createInstrumentedFetch(client, options) {
328
334
  if (choices?.[0]) {
329
335
  const message = choices[0].message;
330
336
  outputText = message?.content;
337
+ reasoning = message?.reasoning;
331
338
  finishReason2 = choices[0].finish_reason;
332
339
  }
333
340
  usage2 = json.usage;
334
341
  }
335
- } catch {
336
- }
342
+ } catch {}
337
343
  try {
338
344
  const log = {
339
345
  id: logId,
@@ -363,16 +369,16 @@ function createInstrumentedFetch(client, options) {
363
369
  body_json: responseBody.json,
364
370
  body_text: responseBody.text
365
371
  },
366
- stream: outputText ? {
367
- output_text: outputText,
372
+ stream: outputText || reasoning ? {
373
+ output_text: outputText ?? "",
374
+ reasoning_text: reasoning,
368
375
  finish_reason: finishReason2 ?? null,
369
376
  usage: usage2
370
377
  } : undefined,
371
378
  usage: usage2
372
379
  };
373
380
  client.report(log);
374
- } catch {
375
- }
381
+ } catch {}
376
382
  return response;
377
383
  }
378
384
  if (!response.body) {
@@ -381,6 +387,7 @@ function createInstrumentedFetch(client, options) {
381
387
  const sseEvents = [];
382
388
  let sseTruncated = false;
383
389
  const textChunks = [];
390
+ const reasoningChunks = [];
384
391
  const toolCalls = new Map;
385
392
  let finishReason = null;
386
393
  let usage;
@@ -405,6 +412,9 @@ function createInstrumentedFetch(client, options) {
405
412
  if (delta?.content) {
406
413
  textChunks.push(delta.content);
407
414
  }
415
+ if (delta?.reasoning) {
416
+ reasoningChunks.push(delta.reasoning);
417
+ }
408
418
  const deltaToolCalls = delta?.tool_calls;
409
419
  if (deltaToolCalls) {
410
420
  for (const tc of deltaToolCalls) {
@@ -432,11 +442,9 @@ function createInstrumentedFetch(client, options) {
432
442
  if (parsed.usage) {
433
443
  usage = parsed.usage;
434
444
  }
435
- } catch {
436
- }
445
+ } catch {}
437
446
  }
438
- } catch {
439
- }
447
+ } catch {}
440
448
  },
441
449
  flush() {
442
450
  const endTime = new Date;
@@ -481,6 +489,7 @@ function createInstrumentedFetch(client, options) {
481
489
  sse_events: finalEvents,
482
490
  sse_events_truncated: sseTruncated,
483
491
  output_text: outputText,
492
+ reasoning_text: reasoningChunks.join("") || undefined,
484
493
  tool_calls: toolCallsArray.length > 0 ? toolCallsArray : undefined,
485
494
  finish_reason: finishReason,
486
495
  usage
@@ -488,8 +497,7 @@ function createInstrumentedFetch(client, options) {
488
497
  usage
489
498
  };
490
499
  client.report(log);
491
- } catch {
492
- }
500
+ } catch {}
493
501
  }
494
502
  });
495
503
  return new Response(response.body.pipeThrough(transform), {
@@ -528,8 +536,7 @@ function createInstrumentedFetch(client, options) {
528
536
  }
529
537
  };
530
538
  client.report(log);
531
- } catch {
532
- }
539
+ } catch {}
533
540
  throw err;
534
541
  }
535
542
  };
@@ -40,6 +40,7 @@ export type TelemetryLog = {
40
40
  sse_events?: JsonValue[];
41
41
  sse_events_truncated?: boolean;
42
42
  output_text?: string;
43
+ reasoning_text?: string;
43
44
  tool_calls?: JsonValue;
44
45
  finish_reason?: string | null;
45
46
  usage?: JsonValue;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/types/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB,OAAO,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,SAAS,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IAEF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/types/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB,OAAO,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,SAAS,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IAEF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntheticminds/wiretap-llm",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Telemetry client for sending LLM logs to Wiretap",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",