@bitfab/sdk 0.27.1 → 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.
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-MD4XQGAF.js";
14
14
 
15
15
  // src/version.generated.ts
16
- var __version__ = "0.27.1";
16
+ var __version__ = "0.27.2";
17
17
 
18
18
  // src/constants.ts
19
19
  var DEFAULT_SERVICE_URL = "https://bitfab.ai";
@@ -1359,6 +1359,7 @@ function buildSnapshotRef(config, sdkWallClockBeforeFn) {
1359
1359
 
1360
1360
  // src/langgraph.ts
1361
1361
  var LANGSMITH_HIDDEN_TAG = "langsmith:hidden";
1362
+ var CHAIN_RUN_TYPES = /* @__PURE__ */ new Set(["chain", "parser", "prompt"]);
1362
1363
  var LANGGRAPH_METADATA_KEYS = [
1363
1364
  "langgraph_step",
1364
1365
  "langgraph_node",
@@ -1369,6 +1370,18 @@ var LANGGRAPH_METADATA_KEYS = [
1369
1370
  function nowIso2() {
1370
1371
  return (/* @__PURE__ */ new Date()).toISOString();
1371
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
+ }
1372
1385
  function convertMessage(message) {
1373
1386
  if (typeof message !== "object" || message === null) {
1374
1387
  return { role: "unknown", content: String(message) };
@@ -1580,6 +1593,7 @@ var BitfabLangGraphCallbackHandler = class {
1580
1593
  const willHide = tags?.includes(LANGSMITH_HIDDEN_TAG) === true;
1581
1594
  let invocation;
1582
1595
  let effectiveParentId;
1596
+ let isRootInvocation = false;
1583
1597
  if (parentSpan) {
1584
1598
  const existing = this.invocations.get(parentSpan.rootRunId);
1585
1599
  if (existing) {
@@ -1610,6 +1624,7 @@ var BitfabLangGraphCallbackHandler = class {
1610
1624
  };
1611
1625
  this.invocations.set(runId, invocation);
1612
1626
  effectiveParentId = activeContext?.spanId ?? null;
1627
+ isRootInvocation = true;
1613
1628
  }
1614
1629
  const lgMetadata = extractLangGraphMetadata(metadata);
1615
1630
  const contexts = Object.keys(lgMetadata).length > 0 ? [lgMetadata] : [];
@@ -1632,6 +1647,9 @@ var BitfabLangGraphCallbackHandler = class {
1632
1647
  spanInfo.hidden = true;
1633
1648
  }
1634
1649
  this.runToSpan.set(runId, spanInfo);
1650
+ if (isRootInvocation) {
1651
+ this.sendTraceStart(spanInfo);
1652
+ }
1635
1653
  return spanInfo;
1636
1654
  }
1637
1655
  completeSpan(runId, output, error, extraContexts) {
@@ -1722,11 +1740,35 @@ var BitfabLangGraphCallbackHandler = class {
1722
1740
  } catch {
1723
1741
  }
1724
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
+ }
1725
1761
  // ── chain callbacks (graph nodes) ─────────────────────────────
1726
- async handleChainStart(chain, inputs, runId, parentRunId, tags, metadata) {
1762
+ async handleChainStart(chain, inputs, runId, parentRunIdOrRunType, tags, metadata, runTypeOrRunName, runNameOrParentRunId) {
1727
1763
  try {
1728
- const idArr = chain.id;
1729
- 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";
1730
1772
  this.startSpan(
1731
1773
  runId,
1732
1774
  parentRunId,
@@ -1761,11 +1803,12 @@ var BitfabLangGraphCallbackHandler = class {
1761
1803
  }
1762
1804
  }
1763
1805
  // ── LLM callbacks ─────────────────────────────────────────────
1764
- async handleChatModelStart(llm, messages, runId, parentRunId, _extraParams, tags, metadata) {
1806
+ async handleChatModelStart(llm, messages, runId, parentRunId, _extraParams, tags, metadata, runName) {
1765
1807
  try {
1766
- const model = extractModelName(llm, metadata);
1767
- const idArr = llm.id;
1768
- 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";
1769
1812
  const converted = messages.map((batch) => batch.map(convertMessage));
1770
1813
  const spanInfo = this.startSpan(
1771
1814
  runId,
@@ -1780,11 +1823,12 @@ var BitfabLangGraphCallbackHandler = class {
1780
1823
  } catch {
1781
1824
  }
1782
1825
  }
1783
- async handleLLMStart(llm, prompts, runId, parentRunId, _extraParams, tags, metadata) {
1826
+ async handleLLMStart(llm, prompts, runId, parentRunId, _extraParams, tags, metadata, runName) {
1784
1827
  try {
1785
- const model = extractModelName(llm, metadata);
1786
- const idArr = llm.id;
1787
- 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";
1788
1832
  const spanInfo = this.startSpan(
1789
1833
  runId,
1790
1834
  parentRunId,
@@ -1837,9 +1881,10 @@ var BitfabLangGraphCallbackHandler = class {
1837
1881
  async handleLLMNewToken() {
1838
1882
  }
1839
1883
  // ── tool callbacks ────────────────────────────────────────────
1840
- async handleToolStart(tool, input, runId, parentRunId, tags, metadata) {
1884
+ async handleToolStart(tool, input, runId, parentRunId, tags, metadata, runName) {
1841
1885
  try {
1842
- const name = tool.name ?? "tool";
1886
+ const serialized = tool ?? {};
1887
+ const name = runName ?? serialized.name ?? "tool";
1843
1888
  this.startSpan(
1844
1889
  runId,
1845
1890
  parentRunId,
@@ -1869,9 +1914,10 @@ var BitfabLangGraphCallbackHandler = class {
1869
1914
  }
1870
1915
  }
1871
1916
  // ── retriever callbacks ───────────────────────────────────────
1872
- async handleRetrieverStart(retriever, query, runId, parentRunId, tags, metadata) {
1917
+ async handleRetrieverStart(retriever, query, runId, parentRunId, tags, metadata, runName) {
1873
1918
  try {
1874
- const name = retriever.name ?? "retriever";
1919
+ const serialized = retriever ?? {};
1920
+ const name = runName ?? serialized.name ?? "retriever";
1875
1921
  this.startSpan(
1876
1922
  runId,
1877
1923
  parentRunId,
@@ -3752,4 +3798,4 @@ export {
3752
3798
  BitfabFunction,
3753
3799
  finalizers
3754
3800
  };
3755
- //# sourceMappingURL=chunk-H5QQ54UI.js.map
3801
+ //# sourceMappingURL=chunk-DW246LVL.js.map