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/node.cjs CHANGED
@@ -93,11 +93,12 @@ var init_asyncStorage = __esm({
93
93
  });
94
94
 
95
95
  // src/version.generated.ts
96
- var __version__;
96
+ var __version__, __packageName__;
97
97
  var init_version_generated = __esm({
98
98
  "src/version.generated.ts"() {
99
99
  "use strict";
100
- __version__ = "0.36.13";
100
+ __version__ = "0.38.1";
101
+ __packageName__ = "bitfab";
101
102
  }
102
103
  });
103
104
 
@@ -1769,7 +1770,12 @@ var init_http = __esm({
1769
1770
  * the OTLP carrier has no path to carry it.
1770
1771
  */
1771
1772
  sendInternalTrace(functionId, payload) {
1772
- const body = { ...payload, functionId, sdkVersion: __version__ };
1773
+ const body = {
1774
+ ...payload,
1775
+ functionId,
1776
+ sdkPackage: __packageName__,
1777
+ sdkVersion: __version__
1778
+ };
1773
1779
  this.getTraceTransport()?.submit(
1774
1780
  "internal_trace",
1775
1781
  body,
@@ -1798,7 +1804,11 @@ var init_http = __esm({
1798
1804
  sendExternalTrace(payload) {
1799
1805
  this.getTraceTransport()?.submit(
1800
1806
  "external_trace",
1801
- { ...payload, sdkVersion: __version__ },
1807
+ {
1808
+ ...payload,
1809
+ sdkPackage: __packageName__,
1810
+ sdkVersion: __version__
1811
+ },
1802
1812
  this.recordedMeta(
1803
1813
  "external_trace",
1804
1814
  payload,
@@ -2541,12 +2551,15 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2541
2551
  let lease = includeDbBranchLease ? serverItem.dbBranchLease : void 0;
2542
2552
  let leaseError = includeDbBranchLease ? serverItem.dbBranchLeaseError : void 0;
2543
2553
  let dbSnapshotRef = serverItem.dbSnapshotRef;
2554
+ let dbBranchTimings = includeDbBranchLease ? serverItem.dbBranchTimings : void 0;
2544
2555
  let inputs = [];
2545
2556
  let originalOutput;
2546
2557
  let result;
2547
2558
  let error = null;
2548
2559
  let traceError = null;
2549
2560
  let replayError = null;
2561
+ let replayDurationMs = null;
2562
+ let replayStarted = null;
2550
2563
  const originalTraceId = serverItem.originalTraceId ?? serverItem.sourceTraceId;
2551
2564
  const originalSpanId = serverItem.originalSpanId ?? serverItem.sourceSpanId;
2552
2565
  try {
@@ -2569,6 +2582,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2569
2582
  lease = resolved.lease ?? void 0;
2570
2583
  leaseError = resolved.leaseError ?? void 0;
2571
2584
  dbSnapshotRef = resolved.dbSnapshotRef ?? dbSnapshotRef;
2585
+ dbBranchTimings = resolved.timings ?? dbBranchTimings;
2572
2586
  }
2573
2587
  if (leaseError) {
2574
2588
  throw new DbBranchReplayError(
@@ -2629,6 +2643,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2629
2643
  return pending;
2630
2644
  } : void 0;
2631
2645
  try {
2646
+ replayStarted = performance.now();
2632
2647
  const maybePromise = runWithReplayContext(
2633
2648
  {
2634
2649
  testRunId,
@@ -2641,16 +2656,24 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2641
2656
  mockStrategy,
2642
2657
  mockOverrides: hasOverrides ? resolvedOverrides : void 0,
2643
2658
  fetchSpanOutput,
2644
- dbBranchLease: lease
2659
+ dbBranchLease: lease,
2660
+ dbBranchTimings
2645
2661
  },
2646
2662
  () => fn(...inputs)
2647
2663
  );
2648
2664
  result = maybePromise instanceof Promise ? await maybePromise : maybePromise;
2665
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2649
2666
  } catch (e) {
2667
+ if (replayStarted !== null) {
2668
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2669
+ }
2650
2670
  traceError = e;
2651
2671
  error = errorMessage(e);
2652
2672
  }
2653
2673
  } catch (e) {
2674
+ if (replayStarted !== null) {
2675
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2676
+ }
2654
2677
  replayError = e;
2655
2678
  error = replayItemErrorMessage(e);
2656
2679
  } finally {
@@ -2667,6 +2690,8 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2667
2690
  }
2668
2691
  }
2669
2692
  }
2693
+ const originalDurationMs = serverItem.originalDurationMs ?? serverItem.durationMs ?? null;
2694
+ const originalModel = serverItem.originalModel ?? serverItem.model ?? null;
2670
2695
  return {
2671
2696
  // Written in by replay() from the complete-replay response once the server
2672
2697
  // has minted this replay trace's row. Null until then: the client-side
@@ -2683,13 +2708,17 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2683
2708
  error,
2684
2709
  traceError,
2685
2710
  replayError,
2686
- durationMs: serverItem.durationMs ?? null,
2711
+ durationMs: replayDurationMs,
2712
+ originalDurationMs,
2713
+ originalTokens: serverItem.originalTokens ?? serverItem.tokens ?? null,
2714
+ originalModel,
2687
2715
  // Filled in by replay() from the complete-replay response once the
2688
2716
  // replay traces are persisted and their spans aggregated server-side.
2689
2717
  // Null here (and on older servers) means "replay tokens not known".
2690
2718
  tokens: null,
2691
- model: serverItem.model ?? null,
2692
- dbSnapshotRef: dbSnapshotRef ?? null
2719
+ model: originalModel,
2720
+ dbSnapshotRef: dbSnapshotRef ?? null,
2721
+ dbBranchTimings: dbBranchTimings ?? null
2693
2722
  };
2694
2723
  }
2695
2724
  async function waitForReplayPersistence(httpClient, testRunId, replayedTraceIds) {
@@ -2916,9 +2945,13 @@ async function replay(httpClient, serviceUrl, traceFunctionKey, fn, options, reg
2916
2945
  traceError: item.traceError,
2917
2946
  replayError: item.replayError,
2918
2947
  durationMs: item.durationMs,
2948
+ originalDurationMs: item.originalDurationMs,
2949
+ originalTokens: item.originalTokens,
2950
+ originalModel: item.originalModel,
2919
2951
  tokens: item.tokens,
2920
2952
  model: item.model,
2921
- dbSnapshotRef: item.dbSnapshotRef
2953
+ dbSnapshotRef: item.dbSnapshotRef,
2954
+ dbBranchTimings: item.dbBranchTimings
2922
2955
  }
2923
2956
  });
2924
2957
  } catch {
@@ -6104,7 +6137,8 @@ var Bitfab = class {
6104
6137
  snapshotTimestamp: replayCtx.dbBranchLease.snapshotTimestamp,
6105
6138
  region: replayCtx.dbBranchLease.region,
6106
6139
  originalTraceId: replayCtx.sourceBitfabTraceId,
6107
- accessed: replayCtx.dbSnapshotAccessed === true
6140
+ accessed: replayCtx.dbSnapshotAccessed === true,
6141
+ timings: replayCtx.dbBranchTimings
6108
6142
  }
6109
6143
  }
6110
6144
  });
@@ -6436,7 +6470,13 @@ var Bitfab = class {
6436
6470
  // against servers that predate the rename.
6437
6471
  source_trace_id: params.dbSnapshotUsage.originalTraceId
6438
6472
  },
6439
- accessed: params.dbSnapshotUsage.accessed
6473
+ accessed: params.dbSnapshotUsage.accessed,
6474
+ // Echoed verbatim (camelCase inside) rather than re-cased into this
6475
+ // record's snake_case: it is the server's own object coming back, and
6476
+ // a translation layer here is one more thing to drift.
6477
+ ...params.dbSnapshotUsage.timings && {
6478
+ timings: params.dbSnapshotUsage.timings
6479
+ }
6440
6480
  };
6441
6481
  }
6442
6482
  this.httpClient.sendExternalTrace({