bitfab 0.36.13 → 0.38.1

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.
package/dist/index.cjs CHANGED
@@ -47,11 +47,12 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
47
47
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
48
48
 
49
49
  // src/version.generated.ts
50
- var __version__;
50
+ var __version__, __packageName__;
51
51
  var init_version_generated = __esm({
52
52
  "src/version.generated.ts"() {
53
53
  "use strict";
54
- __version__ = "0.36.13";
54
+ __version__ = "0.38.1";
55
+ __packageName__ = "bitfab";
55
56
  }
56
57
  });
57
58
 
@@ -1762,7 +1763,12 @@ var init_http = __esm({
1762
1763
  * the OTLP carrier has no path to carry it.
1763
1764
  */
1764
1765
  sendInternalTrace(functionId, payload) {
1765
- const body = { ...payload, functionId, sdkVersion: __version__ };
1766
+ const body = {
1767
+ ...payload,
1768
+ functionId,
1769
+ sdkPackage: __packageName__,
1770
+ sdkVersion: __version__
1771
+ };
1766
1772
  this.getTraceTransport()?.submit(
1767
1773
  "internal_trace",
1768
1774
  body,
@@ -1791,7 +1797,11 @@ var init_http = __esm({
1791
1797
  sendExternalTrace(payload) {
1792
1798
  this.getTraceTransport()?.submit(
1793
1799
  "external_trace",
1794
- { ...payload, sdkVersion: __version__ },
1800
+ {
1801
+ ...payload,
1802
+ sdkPackage: __packageName__,
1803
+ sdkVersion: __version__
1804
+ },
1795
1805
  this.recordedMeta(
1796
1806
  "external_trace",
1797
1807
  payload,
@@ -2534,12 +2544,15 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2534
2544
  let lease = includeDbBranchLease ? serverItem.dbBranchLease : void 0;
2535
2545
  let leaseError = includeDbBranchLease ? serverItem.dbBranchLeaseError : void 0;
2536
2546
  let dbSnapshotRef = serverItem.dbSnapshotRef;
2547
+ let dbBranchTimings = includeDbBranchLease ? serverItem.dbBranchTimings : void 0;
2537
2548
  let inputs = [];
2538
2549
  let originalOutput;
2539
2550
  let result;
2540
2551
  let error = null;
2541
2552
  let traceError = null;
2542
2553
  let replayError = null;
2554
+ let replayDurationMs = null;
2555
+ let replayStarted = null;
2543
2556
  const originalTraceId = serverItem.originalTraceId ?? serverItem.sourceTraceId;
2544
2557
  const originalSpanId = serverItem.originalSpanId ?? serverItem.sourceSpanId;
2545
2558
  try {
@@ -2562,6 +2575,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2562
2575
  lease = resolved.lease ?? void 0;
2563
2576
  leaseError = resolved.leaseError ?? void 0;
2564
2577
  dbSnapshotRef = resolved.dbSnapshotRef ?? dbSnapshotRef;
2578
+ dbBranchTimings = resolved.timings ?? dbBranchTimings;
2565
2579
  }
2566
2580
  if (leaseError) {
2567
2581
  throw new DbBranchReplayError(
@@ -2622,6 +2636,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2622
2636
  return pending;
2623
2637
  } : void 0;
2624
2638
  try {
2639
+ replayStarted = performance.now();
2625
2640
  const maybePromise = runWithReplayContext(
2626
2641
  {
2627
2642
  testRunId,
@@ -2634,16 +2649,24 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2634
2649
  mockStrategy,
2635
2650
  mockOverrides: hasOverrides ? resolvedOverrides : void 0,
2636
2651
  fetchSpanOutput,
2637
- dbBranchLease: lease
2652
+ dbBranchLease: lease,
2653
+ dbBranchTimings
2638
2654
  },
2639
2655
  () => fn(...inputs)
2640
2656
  );
2641
2657
  result = maybePromise instanceof Promise ? await maybePromise : maybePromise;
2658
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2642
2659
  } catch (e) {
2660
+ if (replayStarted !== null) {
2661
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2662
+ }
2643
2663
  traceError = e;
2644
2664
  error = errorMessage(e);
2645
2665
  }
2646
2666
  } catch (e) {
2667
+ if (replayStarted !== null) {
2668
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2669
+ }
2647
2670
  replayError = e;
2648
2671
  error = replayItemErrorMessage(e);
2649
2672
  } finally {
@@ -2660,6 +2683,8 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2660
2683
  }
2661
2684
  }
2662
2685
  }
2686
+ const originalDurationMs = serverItem.originalDurationMs ?? serverItem.durationMs ?? null;
2687
+ const originalModel = serverItem.originalModel ?? serverItem.model ?? null;
2663
2688
  return {
2664
2689
  // Written in by replay() from the complete-replay response once the server
2665
2690
  // has minted this replay trace's row. Null until then: the client-side
@@ -2676,13 +2701,17 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2676
2701
  error,
2677
2702
  traceError,
2678
2703
  replayError,
2679
- durationMs: serverItem.durationMs ?? null,
2704
+ durationMs: replayDurationMs,
2705
+ originalDurationMs,
2706
+ originalTokens: serverItem.originalTokens ?? serverItem.tokens ?? null,
2707
+ originalModel,
2680
2708
  // Filled in by replay() from the complete-replay response once the
2681
2709
  // replay traces are persisted and their spans aggregated server-side.
2682
2710
  // Null here (and on older servers) means "replay tokens not known".
2683
2711
  tokens: null,
2684
- model: serverItem.model ?? null,
2685
- dbSnapshotRef: dbSnapshotRef ?? null
2712
+ model: originalModel,
2713
+ dbSnapshotRef: dbSnapshotRef ?? null,
2714
+ dbBranchTimings: dbBranchTimings ?? null
2686
2715
  };
2687
2716
  }
2688
2717
  async function waitForReplayPersistence(httpClient, testRunId, replayedTraceIds) {
@@ -2909,9 +2938,13 @@ async function replay(httpClient, serviceUrl, traceFunctionKey, fn, options, reg
2909
2938
  traceError: item.traceError,
2910
2939
  replayError: item.replayError,
2911
2940
  durationMs: item.durationMs,
2941
+ originalDurationMs: item.originalDurationMs,
2942
+ originalTokens: item.originalTokens,
2943
+ originalModel: item.originalModel,
2912
2944
  tokens: item.tokens,
2913
2945
  model: item.model,
2914
- dbSnapshotRef: item.dbSnapshotRef
2946
+ dbSnapshotRef: item.dbSnapshotRef,
2947
+ dbBranchTimings: item.dbBranchTimings
2915
2948
  }
2916
2949
  });
2917
2950
  } catch {
@@ -6090,7 +6123,8 @@ var Bitfab = class {
6090
6123
  snapshotTimestamp: replayCtx.dbBranchLease.snapshotTimestamp,
6091
6124
  region: replayCtx.dbBranchLease.region,
6092
6125
  originalTraceId: replayCtx.sourceBitfabTraceId,
6093
- accessed: replayCtx.dbSnapshotAccessed === true
6126
+ accessed: replayCtx.dbSnapshotAccessed === true,
6127
+ timings: replayCtx.dbBranchTimings
6094
6128
  }
6095
6129
  }
6096
6130
  });
@@ -6422,7 +6456,13 @@ var Bitfab = class {
6422
6456
  // against servers that predate the rename.
6423
6457
  source_trace_id: params.dbSnapshotUsage.originalTraceId
6424
6458
  },
6425
- accessed: params.dbSnapshotUsage.accessed
6459
+ accessed: params.dbSnapshotUsage.accessed,
6460
+ // Echoed verbatim (camelCase inside) rather than re-cased into this
6461
+ // record's snake_case: it is the server's own object coming back, and
6462
+ // a translation layer here is one more thing to drift.
6463
+ ...params.dbSnapshotUsage.timings && {
6464
+ timings: params.dbSnapshotUsage.timings
6465
+ }
6426
6466
  };
6427
6467
  }
6428
6468
  this.httpClient.sendExternalTrace({