bitfab 0.27.0 → 0.27.2

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.
@@ -10,10 +10,10 @@ import {
10
10
  toJsonSafe,
11
11
  toJsonSafeReport,
12
12
  warnOnce
13
- } from "./chunk-RNTDM6WM.js";
13
+ } from "./chunk-MD4XQGAF.js";
14
14
 
15
15
  // src/version.generated.ts
16
- var __version__ = "0.27.0";
16
+ var __version__ = "0.27.2";
17
17
 
18
18
  // src/constants.ts
19
19
  var DEFAULT_SERVICE_URL = "https://bitfab.ai";
@@ -317,7 +317,7 @@ var HttpClient = class {
317
317
  * Start a replay session by fetching historical traces.
318
318
  * Blocking call — creates a test run and returns lightweight item references.
319
319
  */
320
- async startReplay(traceFunctionKey, limit, traceIds, codeChangeDescription, codeChangeFiles, includeDbBranchLease, experimentGroupId, datasetId) {
320
+ async startReplay(traceFunctionKey, limit, traceIds, name, codeChangeDescription, codeChangeFiles, includeDbBranchLease, experimentGroupId, datasetId) {
321
321
  const payload = { traceFunctionKey };
322
322
  if (limit !== void 0) {
323
323
  payload.limit = limit;
@@ -325,6 +325,9 @@ var HttpClient = class {
325
325
  if (traceIds) {
326
326
  payload.traceIds = traceIds;
327
327
  }
328
+ if (name !== void 0) {
329
+ payload.name = name;
330
+ }
328
331
  if (codeChangeDescription !== void 0) {
329
332
  payload.codeChangeDescription = codeChangeDescription;
330
333
  }
@@ -1356,6 +1359,7 @@ function buildSnapshotRef(config, sdkWallClockBeforeFn) {
1356
1359
 
1357
1360
  // src/langgraph.ts
1358
1361
  var LANGSMITH_HIDDEN_TAG = "langsmith:hidden";
1362
+ var CHAIN_RUN_TYPES = /* @__PURE__ */ new Set(["chain", "parser", "prompt"]);
1359
1363
  var LANGGRAPH_METADATA_KEYS = [
1360
1364
  "langgraph_step",
1361
1365
  "langgraph_node",
@@ -1366,6 +1370,18 @@ var LANGGRAPH_METADATA_KEYS = [
1366
1370
  function nowIso2() {
1367
1371
  return (/* @__PURE__ */ new Date()).toISOString();
1368
1372
  }
1373
+ function normalizeChainStartArgs(parentRunIdOrRunType, runTypeOrRunName, runNameOrParentRunId) {
1374
+ if (parentRunIdOrRunType && CHAIN_RUN_TYPES.has(parentRunIdOrRunType)) {
1375
+ return {
1376
+ parentRunId: runNameOrParentRunId,
1377
+ runName: runTypeOrRunName
1378
+ };
1379
+ }
1380
+ return {
1381
+ parentRunId: parentRunIdOrRunType,
1382
+ runName: runNameOrParentRunId
1383
+ };
1384
+ }
1369
1385
  function convertMessage(message) {
1370
1386
  if (typeof message !== "object" || message === null) {
1371
1387
  return { role: "unknown", content: String(message) };
@@ -1577,6 +1593,7 @@ var BitfabLangGraphCallbackHandler = class {
1577
1593
  const willHide = tags?.includes(LANGSMITH_HIDDEN_TAG) === true;
1578
1594
  let invocation;
1579
1595
  let effectiveParentId;
1596
+ let isRootInvocation = false;
1580
1597
  if (parentSpan) {
1581
1598
  const existing = this.invocations.get(parentSpan.rootRunId);
1582
1599
  if (existing) {
@@ -1607,6 +1624,7 @@ var BitfabLangGraphCallbackHandler = class {
1607
1624
  };
1608
1625
  this.invocations.set(runId, invocation);
1609
1626
  effectiveParentId = activeContext?.spanId ?? null;
1627
+ isRootInvocation = true;
1610
1628
  }
1611
1629
  const lgMetadata = extractLangGraphMetadata(metadata);
1612
1630
  const contexts = Object.keys(lgMetadata).length > 0 ? [lgMetadata] : [];
@@ -1629,6 +1647,9 @@ var BitfabLangGraphCallbackHandler = class {
1629
1647
  spanInfo.hidden = true;
1630
1648
  }
1631
1649
  this.runToSpan.set(runId, spanInfo);
1650
+ if (isRootInvocation) {
1651
+ this.sendTraceStart(spanInfo);
1652
+ }
1632
1653
  return spanInfo;
1633
1654
  }
1634
1655
  completeSpan(runId, output, error, extraContexts) {
@@ -1719,11 +1740,35 @@ var BitfabLangGraphCallbackHandler = class {
1719
1740
  } catch {
1720
1741
  }
1721
1742
  }
1743
+ sendTraceStart(rootSpan) {
1744
+ const traceData = {
1745
+ type: "sdk-function",
1746
+ source: "typescript-sdk-langgraph",
1747
+ traceFunctionKey: this.traceFunctionKey,
1748
+ externalTrace: {
1749
+ id: rootSpan.traceId,
1750
+ started_at: rootSpan.startedAt,
1751
+ workflow_name: this.traceFunctionKey
1752
+ },
1753
+ completed: false
1754
+ };
1755
+ const finalized = finalizeTracePayload(traceData);
1756
+ try {
1757
+ this.httpClient.sendExternalTrace(finalized);
1758
+ } catch {
1759
+ }
1760
+ }
1722
1761
  // ── chain callbacks (graph nodes) ─────────────────────────────
1723
- async handleChainStart(chain, inputs, runId, parentRunId, tags, metadata) {
1762
+ async handleChainStart(chain, inputs, runId, parentRunIdOrRunType, tags, metadata, runTypeOrRunName, runNameOrParentRunId) {
1724
1763
  try {
1725
- const idArr = chain.id;
1726
- const name = chain.name ?? idArr?.[idArr.length - 1] ?? "chain";
1764
+ const { parentRunId, runName } = normalizeChainStartArgs(
1765
+ parentRunIdOrRunType,
1766
+ runTypeOrRunName,
1767
+ runNameOrParentRunId
1768
+ );
1769
+ const serialized = chain ?? {};
1770
+ const idArr = serialized.id;
1771
+ const name = runName ?? serialized.name ?? idArr?.[idArr.length - 1] ?? "chain";
1727
1772
  this.startSpan(
1728
1773
  runId,
1729
1774
  parentRunId,
@@ -1758,11 +1803,12 @@ var BitfabLangGraphCallbackHandler = class {
1758
1803
  }
1759
1804
  }
1760
1805
  // ── LLM callbacks ─────────────────────────────────────────────
1761
- async handleChatModelStart(llm, messages, runId, parentRunId, _extraParams, tags, metadata) {
1806
+ async handleChatModelStart(llm, messages, runId, parentRunId, _extraParams, tags, metadata, runName) {
1762
1807
  try {
1763
- const model = extractModelName(llm, metadata);
1764
- const idArr = llm.id;
1765
- const name = model ?? idArr?.[idArr.length - 1] ?? "llm";
1808
+ const serialized = llm ?? {};
1809
+ const model = extractModelName(serialized, metadata);
1810
+ const idArr = serialized.id;
1811
+ const name = runName ?? model ?? idArr?.[idArr.length - 1] ?? "llm";
1766
1812
  const converted = messages.map((batch) => batch.map(convertMessage));
1767
1813
  const spanInfo = this.startSpan(
1768
1814
  runId,
@@ -1777,11 +1823,12 @@ var BitfabLangGraphCallbackHandler = class {
1777
1823
  } catch {
1778
1824
  }
1779
1825
  }
1780
- async handleLLMStart(llm, prompts, runId, parentRunId, _extraParams, tags, metadata) {
1826
+ async handleLLMStart(llm, prompts, runId, parentRunId, _extraParams, tags, metadata, runName) {
1781
1827
  try {
1782
- const model = extractModelName(llm, metadata);
1783
- const idArr = llm.id;
1784
- const name = model ?? idArr?.[idArr.length - 1] ?? "llm";
1828
+ const serialized = llm ?? {};
1829
+ const model = extractModelName(serialized, metadata);
1830
+ const idArr = serialized.id;
1831
+ const name = runName ?? model ?? idArr?.[idArr.length - 1] ?? "llm";
1785
1832
  const spanInfo = this.startSpan(
1786
1833
  runId,
1787
1834
  parentRunId,
@@ -1834,9 +1881,10 @@ var BitfabLangGraphCallbackHandler = class {
1834
1881
  async handleLLMNewToken() {
1835
1882
  }
1836
1883
  // ── tool callbacks ────────────────────────────────────────────
1837
- async handleToolStart(tool, input, runId, parentRunId, tags, metadata) {
1884
+ async handleToolStart(tool, input, runId, parentRunId, tags, metadata, runName) {
1838
1885
  try {
1839
- const name = tool.name ?? "tool";
1886
+ const serialized = tool ?? {};
1887
+ const name = runName ?? serialized.name ?? "tool";
1840
1888
  this.startSpan(
1841
1889
  runId,
1842
1890
  parentRunId,
@@ -1866,9 +1914,10 @@ var BitfabLangGraphCallbackHandler = class {
1866
1914
  }
1867
1915
  }
1868
1916
  // ── retriever callbacks ───────────────────────────────────────
1869
- async handleRetrieverStart(retriever, query, runId, parentRunId, tags, metadata) {
1917
+ async handleRetrieverStart(retriever, query, runId, parentRunId, tags, metadata, runName) {
1870
1918
  try {
1871
- const name = retriever.name ?? "retriever";
1919
+ const serialized = retriever ?? {};
1920
+ const name = runName ?? serialized.name ?? "retriever";
1872
1921
  this.startSpan(
1873
1922
  runId,
1874
1923
  parentRunId,
@@ -3524,7 +3573,7 @@ var Bitfab = class {
3524
3573
  `Function is wrapped with trace function key '${wrappedKey}' but replay was called with '${traceFunctionKey}'. Pass matching keys, or pass the unwrapped function to replay it under the explicit key.`
3525
3574
  );
3526
3575
  }
3527
- const { replay: doReplay } = await import("./replay-66KNEAMO.js");
3576
+ const { replay: doReplay } = await import("./replay-J3YTYE7V.js");
3528
3577
  return doReplay(
3529
3578
  this.httpClient,
3530
3579
  this.serviceUrl,
@@ -3749,4 +3798,4 @@ export {
3749
3798
  BitfabFunction,
3750
3799
  finalizers
3751
3800
  };
3752
- //# sourceMappingURL=chunk-PFV4MPNS.js.map
3801
+ //# sourceMappingURL=chunk-DW246LVL.js.map