@bitfab/sdk 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
@@ -38,11 +38,12 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
38
38
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
39
39
 
40
40
  // src/version.generated.ts
41
- var __version__;
41
+ var __version__, __packageName__;
42
42
  var init_version_generated = __esm({
43
43
  "src/version.generated.ts"() {
44
44
  "use strict";
45
- __version__ = "0.36.13";
45
+ __version__ = "0.38.1";
46
+ __packageName__ = "@bitfab/sdk";
46
47
  }
47
48
  });
48
49
 
@@ -1753,7 +1754,12 @@ var init_http = __esm({
1753
1754
  * the OTLP carrier has no path to carry it.
1754
1755
  */
1755
1756
  sendInternalTrace(functionId, payload) {
1756
- const body = { ...payload, functionId, sdkVersion: __version__ };
1757
+ const body = {
1758
+ ...payload,
1759
+ functionId,
1760
+ sdkPackage: __packageName__,
1761
+ sdkVersion: __version__
1762
+ };
1757
1763
  this.getTraceTransport()?.submit(
1758
1764
  "internal_trace",
1759
1765
  body,
@@ -1782,7 +1788,11 @@ var init_http = __esm({
1782
1788
  sendExternalTrace(payload) {
1783
1789
  this.getTraceTransport()?.submit(
1784
1790
  "external_trace",
1785
- { ...payload, sdkVersion: __version__ },
1791
+ {
1792
+ ...payload,
1793
+ sdkPackage: __packageName__,
1794
+ sdkVersion: __version__
1795
+ },
1786
1796
  this.recordedMeta(
1787
1797
  "external_trace",
1788
1798
  payload,
@@ -2525,12 +2535,15 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2525
2535
  let lease = includeDbBranchLease ? serverItem.dbBranchLease : void 0;
2526
2536
  let leaseError = includeDbBranchLease ? serverItem.dbBranchLeaseError : void 0;
2527
2537
  let dbSnapshotRef = serverItem.dbSnapshotRef;
2538
+ let dbBranchTimings = includeDbBranchLease ? serverItem.dbBranchTimings : void 0;
2528
2539
  let inputs = [];
2529
2540
  let originalOutput;
2530
2541
  let result;
2531
2542
  let error = null;
2532
2543
  let traceError = null;
2533
2544
  let replayError = null;
2545
+ let replayDurationMs = null;
2546
+ let replayStarted = null;
2534
2547
  const originalTraceId = serverItem.originalTraceId ?? serverItem.sourceTraceId;
2535
2548
  const originalSpanId = serverItem.originalSpanId ?? serverItem.sourceSpanId;
2536
2549
  try {
@@ -2553,6 +2566,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2553
2566
  lease = resolved.lease ?? void 0;
2554
2567
  leaseError = resolved.leaseError ?? void 0;
2555
2568
  dbSnapshotRef = resolved.dbSnapshotRef ?? dbSnapshotRef;
2569
+ dbBranchTimings = resolved.timings ?? dbBranchTimings;
2556
2570
  }
2557
2571
  if (leaseError) {
2558
2572
  throw new DbBranchReplayError(
@@ -2613,6 +2627,7 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2613
2627
  return pending;
2614
2628
  } : void 0;
2615
2629
  try {
2630
+ replayStarted = performance.now();
2616
2631
  const maybePromise = runWithReplayContext(
2617
2632
  {
2618
2633
  testRunId,
@@ -2625,16 +2640,24 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2625
2640
  mockStrategy,
2626
2641
  mockOverrides: hasOverrides ? resolvedOverrides : void 0,
2627
2642
  fetchSpanOutput,
2628
- dbBranchLease: lease
2643
+ dbBranchLease: lease,
2644
+ dbBranchTimings
2629
2645
  },
2630
2646
  () => fn(...inputs)
2631
2647
  );
2632
2648
  result = maybePromise instanceof Promise ? await maybePromise : maybePromise;
2649
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2633
2650
  } catch (e) {
2651
+ if (replayStarted !== null) {
2652
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2653
+ }
2634
2654
  traceError = e;
2635
2655
  error = errorMessage(e);
2636
2656
  }
2637
2657
  } catch (e) {
2658
+ if (replayStarted !== null) {
2659
+ replayDurationMs = Math.round(performance.now() - replayStarted);
2660
+ }
2638
2661
  replayError = e;
2639
2662
  error = replayItemErrorMessage(e);
2640
2663
  } finally {
@@ -2651,6 +2674,8 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2651
2674
  }
2652
2675
  }
2653
2676
  }
2677
+ const originalDurationMs = serverItem.originalDurationMs ?? serverItem.durationMs ?? null;
2678
+ const originalModel = serverItem.originalModel ?? serverItem.model ?? null;
2654
2679
  return {
2655
2680
  // Written in by replay() from the complete-replay response once the server
2656
2681
  // has minted this replay trace's row. Null until then: the client-side
@@ -2667,13 +2692,17 @@ async function processItem(httpClient, serverItem, fn, testRunId, mockStrategy,
2667
2692
  error,
2668
2693
  traceError,
2669
2694
  replayError,
2670
- durationMs: serverItem.durationMs ?? null,
2695
+ durationMs: replayDurationMs,
2696
+ originalDurationMs,
2697
+ originalTokens: serverItem.originalTokens ?? serverItem.tokens ?? null,
2698
+ originalModel,
2671
2699
  // Filled in by replay() from the complete-replay response once the
2672
2700
  // replay traces are persisted and their spans aggregated server-side.
2673
2701
  // Null here (and on older servers) means "replay tokens not known".
2674
2702
  tokens: null,
2675
- model: serverItem.model ?? null,
2676
- dbSnapshotRef: dbSnapshotRef ?? null
2703
+ model: originalModel,
2704
+ dbSnapshotRef: dbSnapshotRef ?? null,
2705
+ dbBranchTimings: dbBranchTimings ?? null
2677
2706
  };
2678
2707
  }
2679
2708
  async function waitForReplayPersistence(httpClient, testRunId, replayedTraceIds) {
@@ -2900,9 +2929,13 @@ async function replay(httpClient, serviceUrl, traceFunctionKey, fn, options, reg
2900
2929
  traceError: item.traceError,
2901
2930
  replayError: item.replayError,
2902
2931
  durationMs: item.durationMs,
2932
+ originalDurationMs: item.originalDurationMs,
2933
+ originalTokens: item.originalTokens,
2934
+ originalModel: item.originalModel,
2903
2935
  tokens: item.tokens,
2904
2936
  model: item.model,
2905
- dbSnapshotRef: item.dbSnapshotRef
2937
+ dbSnapshotRef: item.dbSnapshotRef,
2938
+ dbBranchTimings: item.dbBranchTimings
2906
2939
  }
2907
2940
  });
2908
2941
  } catch {
@@ -6081,7 +6114,8 @@ var Bitfab = class {
6081
6114
  snapshotTimestamp: replayCtx.dbBranchLease.snapshotTimestamp,
6082
6115
  region: replayCtx.dbBranchLease.region,
6083
6116
  originalTraceId: replayCtx.sourceBitfabTraceId,
6084
- accessed: replayCtx.dbSnapshotAccessed === true
6117
+ accessed: replayCtx.dbSnapshotAccessed === true,
6118
+ timings: replayCtx.dbBranchTimings
6085
6119
  }
6086
6120
  }
6087
6121
  });
@@ -6413,7 +6447,13 @@ var Bitfab = class {
6413
6447
  // against servers that predate the rename.
6414
6448
  source_trace_id: params.dbSnapshotUsage.originalTraceId
6415
6449
  },
6416
- accessed: params.dbSnapshotUsage.accessed
6450
+ accessed: params.dbSnapshotUsage.accessed,
6451
+ // Echoed verbatim (camelCase inside) rather than re-cased into this
6452
+ // record's snake_case: it is the server's own object coming back, and
6453
+ // a translation layer here is one more thing to drift.
6454
+ ...params.dbSnapshotUsage.timings && {
6455
+ timings: params.dbSnapshotUsage.timings
6456
+ }
6417
6457
  };
6418
6458
  }
6419
6459
  this.httpClient.sendExternalTrace({