braintrust 3.21.0 → 3.23.0

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.
Files changed (54) hide show
  1. package/README.md +47 -0
  2. package/dev/dist/index.d.mts +1030 -1
  3. package/dev/dist/index.d.ts +1030 -1
  4. package/dev/dist/index.js +1429 -663
  5. package/dev/dist/index.mjs +811 -45
  6. package/dist/apply-auto-instrumentation.js +222 -186
  7. package/dist/apply-auto-instrumentation.mjs +37 -1
  8. package/dist/auto-instrumentations/bundler/esbuild.cjs +53 -1
  9. package/dist/auto-instrumentations/bundler/esbuild.mjs +2 -2
  10. package/dist/auto-instrumentations/bundler/next.cjs +53 -1
  11. package/dist/auto-instrumentations/bundler/next.mjs +3 -3
  12. package/dist/auto-instrumentations/bundler/rollup.cjs +53 -1
  13. package/dist/auto-instrumentations/bundler/rollup.mjs +2 -2
  14. package/dist/auto-instrumentations/bundler/vite.cjs +53 -1
  15. package/dist/auto-instrumentations/bundler/vite.mjs +2 -2
  16. package/dist/auto-instrumentations/bundler/webpack-loader.cjs +53 -1
  17. package/dist/auto-instrumentations/bundler/webpack.cjs +53 -1
  18. package/dist/auto-instrumentations/bundler/webpack.mjs +3 -3
  19. package/dist/auto-instrumentations/{chunk-TKRPRPGD.mjs → chunk-EXY7QCJD.mjs} +5 -2
  20. package/dist/auto-instrumentations/{chunk-T6J4C7LX.mjs → chunk-KIMLYPRW.mjs} +1 -1
  21. package/dist/auto-instrumentations/{chunk-BRQX23KL.mjs → chunk-YXLNSAMJ.mjs} +51 -0
  22. package/dist/auto-instrumentations/hook.mjs +224 -31
  23. package/dist/auto-instrumentations/index.cjs +52 -0
  24. package/dist/auto-instrumentations/index.d.mts +3 -1
  25. package/dist/auto-instrumentations/index.d.ts +3 -1
  26. package/dist/auto-instrumentations/index.mjs +3 -1
  27. package/dist/browser.d.mts +3273 -93
  28. package/dist/browser.d.ts +3273 -93
  29. package/dist/browser.js +2495 -63
  30. package/dist/browser.mjs +2495 -63
  31. package/dist/{chunk-KMGUTPB7.mjs → chunk-36IPYKMG.mjs} +20 -1
  32. package/dist/{chunk-BFGIH2ZJ.js → chunk-CDIKAHDZ.js} +21 -2
  33. package/dist/{chunk-FY7DAKA5.js → chunk-FZWPFCVE.js} +1590 -832
  34. package/dist/{chunk-O2P765XK.mjs → chunk-IXL4PMY4.mjs} +802 -44
  35. package/dist/cli.js +816 -47
  36. package/dist/edge-light.d.mts +1 -1
  37. package/dist/edge-light.d.ts +1 -1
  38. package/dist/edge-light.js +2495 -63
  39. package/dist/edge-light.mjs +2495 -63
  40. package/dist/index.d.mts +3273 -93
  41. package/dist/index.d.ts +3273 -93
  42. package/dist/index.js +2078 -416
  43. package/dist/index.mjs +1664 -2
  44. package/dist/instrumentation/index.d.mts +912 -2
  45. package/dist/instrumentation/index.d.ts +912 -2
  46. package/dist/instrumentation/index.js +2202 -42
  47. package/dist/instrumentation/index.mjs +2200 -42
  48. package/dist/vitest-evals-reporter.js +16 -16
  49. package/dist/vitest-evals-reporter.mjs +2 -2
  50. package/dist/workerd.d.mts +1 -1
  51. package/dist/workerd.d.ts +1 -1
  52. package/dist/workerd.js +2495 -63
  53. package/dist/workerd.mjs +2495 -63
  54. package/package.json +5 -2
@@ -70,7 +70,8 @@ var envIntegrationAliases = {
70
70
  langchain: "langchain",
71
71
  "langchain-js": "langchain",
72
72
  "@langchain": "langchain",
73
- langgraph: "langgraph"
73
+ langgraph: "langgraph",
74
+ langsmith: "langsmith"
74
75
  };
75
76
  function readDisabledInstrumentationEnvConfig(disabledList) {
76
77
  const integrations = {};
@@ -2127,19 +2128,30 @@ var CallEvent = z6.union([
2127
2128
  var ChatCompletionContentPartTextWithTitle = z6.object({
2128
2129
  text: z6.string().default(""),
2129
2130
  type: z6.literal("text"),
2130
- cache_control: z6.object({ type: z6.literal("ephemeral") }).optional()
2131
+ cache_control: z6.object({
2132
+ type: z6.literal("ephemeral"),
2133
+ ttl: z6.enum(["5m", "1h"]).optional()
2134
+ }).optional()
2131
2135
  });
2132
2136
  var ChatCompletionContentPartImageWithTitle = z6.object({
2133
2137
  image_url: z6.object({
2134
2138
  url: z6.string(),
2135
2139
  detail: z6.union([z6.literal("auto"), z6.literal("low"), z6.literal("high")]).optional()
2136
2140
  }),
2137
- type: z6.literal("image_url")
2141
+ type: z6.literal("image_url"),
2142
+ cache_control: z6.object({
2143
+ type: z6.literal("ephemeral"),
2144
+ ttl: z6.enum(["5m", "1h"]).optional()
2145
+ }).optional()
2138
2146
  });
2139
2147
  var ChatCompletionContentPartFileFile = z6.object({ file_data: z6.string(), filename: z6.string(), file_id: z6.string() }).partial();
2140
2148
  var ChatCompletionContentPartFileWithTitle = z6.object({
2141
2149
  file: ChatCompletionContentPartFileFile,
2142
- type: z6.literal("file")
2150
+ type: z6.literal("file"),
2151
+ cache_control: z6.object({
2152
+ type: z6.literal("ephemeral"),
2153
+ ttl: z6.enum(["5m", "1h"]).optional()
2154
+ }).optional()
2143
2155
  });
2144
2156
  var ChatCompletionContentPart = z6.union([
2145
2157
  ChatCompletionContentPartTextWithTitle,
@@ -2149,7 +2161,10 @@ var ChatCompletionContentPart = z6.union([
2149
2161
  var ChatCompletionContentPartText = z6.object({
2150
2162
  text: z6.string().default(""),
2151
2163
  type: z6.literal("text"),
2152
- cache_control: z6.object({ type: z6.literal("ephemeral") }).optional()
2164
+ cache_control: z6.object({
2165
+ type: z6.literal("ephemeral"),
2166
+ ttl: z6.enum(["5m", "1h"]).optional()
2167
+ }).optional()
2153
2168
  });
2154
2169
  var ChatCompletionMessageToolCall = z6.object({
2155
2170
  id: z6.string(),
@@ -4158,7 +4173,7 @@ var DiskCache = class {
4158
4173
  }
4159
4174
  };
4160
4175
 
4161
- // src/prompt-cache/lru-cache.ts
4176
+ // src/lru-cache.ts
4162
4177
  var LRUCache = class {
4163
4178
  cache;
4164
4179
  maxSize;
@@ -4174,13 +4189,23 @@ var LRUCache = class {
4174
4189
  * @returns The cached value if found, undefined otherwise.
4175
4190
  */
4176
4191
  get(key) {
4177
- const value = this.cache.get(key);
4178
- if (value === void 0) {
4192
+ const entry = this.cache.get(key);
4193
+ if (entry === void 0) {
4179
4194
  return void 0;
4180
4195
  }
4181
4196
  this.cache.delete(key);
4182
- this.cache.set(key, value);
4183
- return value;
4197
+ this.cache.set(key, entry);
4198
+ return entry.value;
4199
+ }
4200
+ /**
4201
+ * Checks whether a key exists and marks it as most recently used.
4202
+ */
4203
+ has(key) {
4204
+ if (!this.cache.has(key)) {
4205
+ return false;
4206
+ }
4207
+ this.get(key);
4208
+ return true;
4184
4209
  }
4185
4210
  /**
4186
4211
  * Stores a value in the cache.
@@ -4197,7 +4222,38 @@ var LRUCache = class {
4197
4222
  const first = this.cache.keys().next().value;
4198
4223
  this.cache.delete(first);
4199
4224
  }
4200
- this.cache.set(key, value);
4225
+ this.cache.set(key, { value });
4226
+ }
4227
+ /**
4228
+ * Removes an item from the cache.
4229
+ */
4230
+ delete(key) {
4231
+ return this.cache.delete(key);
4232
+ }
4233
+ /**
4234
+ * Iterates over cache entries from least to most recently used.
4235
+ */
4236
+ *entries() {
4237
+ for (const [key, entry] of this.cache) {
4238
+ yield [key, entry.value];
4239
+ }
4240
+ }
4241
+ /**
4242
+ * Iterates over cache keys from least to most recently used.
4243
+ */
4244
+ keys() {
4245
+ return this.cache.keys();
4246
+ }
4247
+ /**
4248
+ * Iterates over cache values from least to most recently used.
4249
+ */
4250
+ *values() {
4251
+ for (const entry of this.cache.values()) {
4252
+ yield entry.value;
4253
+ }
4254
+ }
4255
+ [Symbol.iterator]() {
4256
+ return this.entries();
4201
4257
  }
4202
4258
  /**
4203
4259
  * Removes all items from the cache.
@@ -4755,6 +4811,9 @@ function applyMaskingToField(maskingFunction, data, fieldName) {
4755
4811
  return `ERROR: Failed to mask field '${fieldName}' - ${errorType}`;
4756
4812
  }
4757
4813
  }
4814
+ var INITIAL_SPAN_WRITE_AS_MERGE = /* @__PURE__ */ Symbol(
4815
+ "braintrust.initial-span-write-as-merge"
4816
+ );
4758
4817
  var BRAINTRUST_CURRENT_SPAN_STORE = /* @__PURE__ */ Symbol.for(
4759
4818
  "braintrust.currentSpanStore"
4760
4819
  );
@@ -5324,25 +5383,46 @@ var HTTPConnection = class _HTTPConnection {
5324
5383
  })
5325
5384
  );
5326
5385
  }
5327
- async post(path, params, config) {
5386
+ async post(path, params, config, retries = 0) {
5328
5387
  const { headers, ...rest } = config || {};
5329
5388
  const this_fetch = this.fetch;
5330
5389
  const this_base_url = this.base_url;
5331
5390
  const this_headers = this.headers;
5332
- return await checkResponse(
5333
- await this_fetch(_urljoin(this_base_url, path), {
5334
- method: "POST",
5335
- headers: {
5336
- Accept: "application/json",
5337
- "Content-Type": "application/json",
5338
- ...this_headers,
5339
- ...headers
5340
- },
5341
- body: typeof params === "string" ? params : params ? JSON.stringify(params) : void 0,
5342
- keepalive: true,
5343
- ...rest
5344
- })
5345
- );
5391
+ const tries = retries + 1;
5392
+ for (let i = 0; i < tries; i++) {
5393
+ try {
5394
+ return await checkResponse(
5395
+ await this_fetch(_urljoin(this_base_url, path), {
5396
+ method: "POST",
5397
+ headers: {
5398
+ Accept: "application/json",
5399
+ "Content-Type": "application/json",
5400
+ ...this_headers,
5401
+ ...headers
5402
+ },
5403
+ body: typeof params === "string" ? params : params ? JSON.stringify(params) : void 0,
5404
+ keepalive: true,
5405
+ ...rest
5406
+ })
5407
+ );
5408
+ } catch (error) {
5409
+ if (config?.signal?.aborted) {
5410
+ throw getAbortReason(config.signal);
5411
+ }
5412
+ if (i === tries - 1 || !isRetryableHTTPError(error)) {
5413
+ throw error;
5414
+ }
5415
+ debugLogger.debug(
5416
+ `Retrying API request ${path} after ${formatHTTPError(error)}`
5417
+ );
5418
+ const sleepTimeMs = HTTP_RETRY_BASE_SLEEP_TIME_S * 1e3 * 2 ** i + Math.random() * HTTP_RETRY_JITTER_MS;
5419
+ debugLogger.info(
5420
+ `Sleeping for ${sleepTimeMs}ms before retrying API request`
5421
+ );
5422
+ await waitForRetry(sleepTimeMs, config?.signal);
5423
+ }
5424
+ }
5425
+ throw new Error("Unexpected retry state");
5346
5426
  }
5347
5427
  async get_json(object_type, args = void 0, retries = 0) {
5348
5428
  const tries = retries + 1;
@@ -6242,6 +6322,45 @@ function now() {
6242
6322
  var DEFAULT_FLUSH_BACKPRESSURE_BYTES = 10 * 1024 * 1024;
6243
6323
  var BACKGROUND_LOGGER_BASE_SLEEP_TIME_S = 1;
6244
6324
  var HTTP_RETRY_BASE_SLEEP_TIME_S = 1;
6325
+ var HTTP_RETRY_JITTER_MS = 200;
6326
+ var BTQL_HTTP_RETRIES = 3;
6327
+ var RETRYABLE_HTTP_STATUS_CODES = /* @__PURE__ */ new Set([500, 502, 503, 504]);
6328
+ function isRetryableHTTPError(error) {
6329
+ return !(error instanceof FailedHTTPResponse) || RETRYABLE_HTTP_STATUS_CODES.has(error.status);
6330
+ }
6331
+ function formatHTTPError(error) {
6332
+ if (error instanceof FailedHTTPResponse) {
6333
+ return `${error.status} ${error.text}`;
6334
+ }
6335
+ return error instanceof Error ? error.message : String(error);
6336
+ }
6337
+ function getAbortReason(signal) {
6338
+ return signal.reason ?? new Error("Request aborted");
6339
+ }
6340
+ async function waitForRetry(delayMs, signal) {
6341
+ if (!signal) {
6342
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
6343
+ return;
6344
+ }
6345
+ if (signal.aborted) {
6346
+ throw getAbortReason(signal);
6347
+ }
6348
+ await new Promise((resolve, reject) => {
6349
+ const onAbort = () => {
6350
+ clearTimeout(timeout);
6351
+ signal.removeEventListener("abort", onAbort);
6352
+ reject(getAbortReason(signal));
6353
+ };
6354
+ const timeout = setTimeout(() => {
6355
+ signal.removeEventListener("abort", onAbort);
6356
+ resolve();
6357
+ }, delayMs);
6358
+ signal.addEventListener("abort", onAbort, { once: true });
6359
+ if (signal.aborted) {
6360
+ onAbort();
6361
+ }
6362
+ });
6363
+ }
6245
6364
  var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6246
6365
  apiConn;
6247
6366
  queue;
@@ -7483,7 +7602,8 @@ var ObjectFetcher = class {
7483
7602
  version: this.pinnedVersion
7484
7603
  } : {}
7485
7604
  },
7486
- { headers: { "Accept-Encoding": "gzip" } }
7605
+ { headers: { "Accept-Encoding": "gzip" } },
7606
+ BTQL_HTTP_RETRIES
7487
7607
  );
7488
7608
  const respJson = await resp.json();
7489
7609
  const mutate = this.mutateRecord;
@@ -7959,7 +8079,7 @@ var SpanImpl = class _SpanImpl {
7959
8079
  this._spanId = resolvedIds.spanId;
7960
8080
  this._rootSpanId = resolvedIds.rootSpanId;
7961
8081
  this._spanParents = resolvedIds.spanParents;
7962
- this.isMerge = false;
8082
+ this.isMerge = args[INITIAL_SPAN_WRITE_AS_MERGE] === true;
7963
8083
  this.logInternal({ event, internalData });
7964
8084
  this.isMerge = true;
7965
8085
  }
@@ -8717,6 +8837,15 @@ function modelMetrics(attributes) {
8717
8837
  }
8718
8838
  return Object.keys(out).length > 0 ? out : void 0;
8719
8839
  }
8840
+ function timeToFirstTokenSeconds(attributes, spanStartSeconds) {
8841
+ if (!isObject(attributes)) return void 0;
8842
+ if (spanStartSeconds === void 0) return void 0;
8843
+ const raw = attributes.completionStartTime;
8844
+ const completionStart = raw instanceof Date || typeof raw === "string" || typeof raw === "number" ? epochSeconds(raw) : void 0;
8845
+ if (completionStart === void 0) return void 0;
8846
+ const ttft = completionStart - spanStartSeconds;
8847
+ return Number.isFinite(ttft) && ttft >= 0 ? ttft : void 0;
8848
+ }
8720
8849
  function buildMetadata(exported) {
8721
8850
  const out = {};
8722
8851
  if (exported.entityId !== void 0) out.entity_id = exported.entityId;
@@ -8786,7 +8915,13 @@ var BraintrustObservabilityExporter = class {
8786
8915
  const args = {
8787
8916
  name: exported.name,
8788
8917
  spanAttributes: { type: spanTypeFor(exported.type) },
8789
- startTime: epochSeconds(exported.startTime)
8918
+ startTime: epochSeconds(exported.startTime),
8919
+ // Use the Mastra span id as the Braintrust row id so that
8920
+ // `logFeedback({ id: <mastra span id> })` (and Mastra's score events)
8921
+ // attach to the right row. Without this, `SpanImpl` auto-generates a
8922
+ // row id (`this._id = eventId ?? idGenerator.getSpanId()`) that no
8923
+ // external caller could know.
8924
+ event: { id: exported.id }
8790
8925
  };
8791
8926
  const parentRecord = exported.parentSpanId ? this.spans.get(exported.parentSpanId) : void 0;
8792
8927
  if (!this.capturedParent) {
@@ -8835,8 +8970,15 @@ var BraintrustObservabilityExporter = class {
8835
8970
  event.metadata = metadata;
8836
8971
  }
8837
8972
  const metrics = modelMetrics(exported.attributes);
8838
- if (metrics) {
8839
- event.metrics = metrics;
8973
+ const ttft = timeToFirstTokenSeconds(
8974
+ exported.attributes,
8975
+ epochSeconds(exported.startTime)
8976
+ );
8977
+ if (metrics || ttft !== void 0) {
8978
+ event.metrics = {
8979
+ ...metrics ?? {},
8980
+ ...ttft !== void 0 ? { time_to_first_token: ttft } : {}
8981
+ };
8840
8982
  }
8841
8983
  if (Object.keys(event).length > 0) {
8842
8984
  record.span.log(event);
@@ -10948,6 +11090,56 @@ var langchainConfigs = [
10948
11090
  }
10949
11091
  ];
10950
11092
 
11093
+ // src/instrumentation/plugins/langsmith-channels.ts
11094
+ var langSmithChannels = defineChannels("langsmith", {
11095
+ createRun: channel({
11096
+ channelName: "Client.createRun",
11097
+ kind: "async"
11098
+ }),
11099
+ updateRun: channel({
11100
+ channelName: "Client.updateRun",
11101
+ kind: "async"
11102
+ }),
11103
+ batchIngestRuns: channel({
11104
+ channelName: "Client.batchIngestRuns",
11105
+ kind: "async"
11106
+ })
11107
+ });
11108
+
11109
+ // src/auto-instrumentations/configs/langsmith.ts
11110
+ var versionRange = ">=0.3.30 <1.0.0";
11111
+ var langSmithConfigs = [
11112
+ ...["dist/client.js", "dist/client.cjs"].flatMap((filePath) => [
11113
+ {
11114
+ channelName: langSmithChannels.createRun.channelName,
11115
+ module: { name: "langsmith", versionRange, filePath },
11116
+ functionQuery: {
11117
+ className: "Client",
11118
+ methodName: "createRun",
11119
+ kind: "Async"
11120
+ }
11121
+ },
11122
+ {
11123
+ channelName: langSmithChannels.updateRun.channelName,
11124
+ module: { name: "langsmith", versionRange, filePath },
11125
+ functionQuery: {
11126
+ className: "Client",
11127
+ methodName: "updateRun",
11128
+ kind: "Async"
11129
+ }
11130
+ },
11131
+ {
11132
+ channelName: langSmithChannels.batchIngestRuns.channelName,
11133
+ module: { name: "langsmith", versionRange, filePath },
11134
+ functionQuery: {
11135
+ className: "Client",
11136
+ methodName: "batchIngestRuns",
11137
+ kind: "Async"
11138
+ }
11139
+ }
11140
+ ])
11141
+ ];
11142
+
10951
11143
  // src/instrumentation/plugins/mistral-channels.ts
10952
11144
  var mistralChannels = defineChannels("@mistralai/mistralai", {
10953
11145
  chatComplete: channel({
@@ -11851,6 +12043,7 @@ var defaultInstrumentationConfigGroups = [
11851
12043
  integrations: ["langchain", "langgraph"],
11852
12044
  configs: langchainConfigs
11853
12045
  },
12046
+ { integrations: ["langsmith"], configs: langSmithConfigs },
11854
12047
  { integrations: ["openrouter"], configs: openRouterConfigs },
11855
12048
  {
11856
12049
  integrations: ["openrouterAgent"],
@@ -32,6 +32,7 @@ __export(index_exports, {
32
32
  googleGenAIConfigs: () => googleGenAIConfigs,
33
33
  groqConfigs: () => groqConfigs,
34
34
  huggingFaceConfigs: () => huggingFaceConfigs,
35
+ langSmithConfigs: () => langSmithConfigs,
35
36
  langchainConfigs: () => langchainConfigs,
36
37
  mistralConfigs: () => mistralConfigs,
37
38
  openAIAgentsCoreConfigs: () => openAIAgentsCoreConfigs,
@@ -2997,6 +2998,56 @@ var langchainConfigs = [
2997
2998
  }
2998
2999
  ];
2999
3000
 
3001
+ // src/instrumentation/plugins/langsmith-channels.ts
3002
+ var langSmithChannels = defineChannels("langsmith", {
3003
+ createRun: channel({
3004
+ channelName: "Client.createRun",
3005
+ kind: "async"
3006
+ }),
3007
+ updateRun: channel({
3008
+ channelName: "Client.updateRun",
3009
+ kind: "async"
3010
+ }),
3011
+ batchIngestRuns: channel({
3012
+ channelName: "Client.batchIngestRuns",
3013
+ kind: "async"
3014
+ })
3015
+ });
3016
+
3017
+ // src/auto-instrumentations/configs/langsmith.ts
3018
+ var versionRange = ">=0.3.30 <1.0.0";
3019
+ var langSmithConfigs = [
3020
+ ...["dist/client.js", "dist/client.cjs"].flatMap((filePath) => [
3021
+ {
3022
+ channelName: langSmithChannels.createRun.channelName,
3023
+ module: { name: "langsmith", versionRange, filePath },
3024
+ functionQuery: {
3025
+ className: "Client",
3026
+ methodName: "createRun",
3027
+ kind: "Async"
3028
+ }
3029
+ },
3030
+ {
3031
+ channelName: langSmithChannels.updateRun.channelName,
3032
+ module: { name: "langsmith", versionRange, filePath },
3033
+ functionQuery: {
3034
+ className: "Client",
3035
+ methodName: "updateRun",
3036
+ kind: "Async"
3037
+ }
3038
+ },
3039
+ {
3040
+ channelName: langSmithChannels.batchIngestRuns.channelName,
3041
+ module: { name: "langsmith", versionRange, filePath },
3042
+ functionQuery: {
3043
+ className: "Client",
3044
+ methodName: "batchIngestRuns",
3045
+ kind: "Async"
3046
+ }
3047
+ }
3048
+ ])
3049
+ ];
3050
+
3000
3051
  // src/instrumentation/plugins/pi-coding-agent-channels.ts
3001
3052
  var piCodingAgentChannels = defineChannels(
3002
3053
  "@earendil-works/pi-coding-agent",
@@ -3039,6 +3090,7 @@ var piCodingAgentConfigs = [
3039
3090
  googleGenAIConfigs,
3040
3091
  groqConfigs,
3041
3092
  huggingFaceConfigs,
3093
+ langSmithConfigs,
3042
3094
  langchainConfigs,
3043
3095
  mistralConfigs,
3044
3096
  openAIAgentsCoreConfigs,
@@ -111,6 +111,8 @@ declare const gitHubCopilotConfigs: InstrumentationConfig[];
111
111
 
112
112
  declare const langchainConfigs: InstrumentationConfig[];
113
113
 
114
+ declare const langSmithConfigs: InstrumentationConfig[];
115
+
114
116
  declare const piCodingAgentConfigs: InstrumentationConfig[];
115
117
 
116
- export { InstrumentationConfig, aiSDKConfigs, anthropicConfigs, bedrockRuntimeConfigs, claudeAgentSDKConfigs, cohereConfigs, cursorSDKConfigs, genkitConfigs, gitHubCopilotConfigs, googleADKConfigs, googleGenAIConfigs, groqConfigs, huggingFaceConfigs, langchainConfigs, mistralConfigs, openAIAgentsCoreConfigs, openAICodexConfigs, openRouterAgentConfigs, openRouterConfigs, openaiConfigs, piCodingAgentConfigs };
118
+ export { InstrumentationConfig, aiSDKConfigs, anthropicConfigs, bedrockRuntimeConfigs, claudeAgentSDKConfigs, cohereConfigs, cursorSDKConfigs, genkitConfigs, gitHubCopilotConfigs, googleADKConfigs, googleGenAIConfigs, groqConfigs, huggingFaceConfigs, langSmithConfigs, langchainConfigs, mistralConfigs, openAIAgentsCoreConfigs, openAICodexConfigs, openRouterAgentConfigs, openRouterConfigs, openaiConfigs, piCodingAgentConfigs };
@@ -111,6 +111,8 @@ declare const gitHubCopilotConfigs: InstrumentationConfig[];
111
111
 
112
112
  declare const langchainConfigs: InstrumentationConfig[];
113
113
 
114
+ declare const langSmithConfigs: InstrumentationConfig[];
115
+
114
116
  declare const piCodingAgentConfigs: InstrumentationConfig[];
115
117
 
116
- export { InstrumentationConfig, aiSDKConfigs, anthropicConfigs, bedrockRuntimeConfigs, claudeAgentSDKConfigs, cohereConfigs, cursorSDKConfigs, genkitConfigs, gitHubCopilotConfigs, googleADKConfigs, googleGenAIConfigs, groqConfigs, huggingFaceConfigs, langchainConfigs, mistralConfigs, openAIAgentsCoreConfigs, openAICodexConfigs, openRouterAgentConfigs, openRouterConfigs, openaiConfigs, piCodingAgentConfigs };
118
+ export { InstrumentationConfig, aiSDKConfigs, anthropicConfigs, bedrockRuntimeConfigs, claudeAgentSDKConfigs, cohereConfigs, cursorSDKConfigs, genkitConfigs, gitHubCopilotConfigs, googleADKConfigs, googleGenAIConfigs, groqConfigs, huggingFaceConfigs, langSmithConfigs, langchainConfigs, mistralConfigs, openAIAgentsCoreConfigs, openAICodexConfigs, openRouterAgentConfigs, openRouterConfigs, openaiConfigs, piCodingAgentConfigs };
@@ -11,6 +11,7 @@ import {
11
11
  googleGenAIConfigs,
12
12
  groqConfigs,
13
13
  huggingFaceConfigs,
14
+ langSmithConfigs,
14
15
  langchainConfigs,
15
16
  mistralConfigs,
16
17
  openAIAgentsCoreConfigs,
@@ -19,7 +20,7 @@ import {
19
20
  openRouterConfigs,
20
21
  openaiConfigs,
21
22
  piCodingAgentConfigs
22
- } from "./chunk-BRQX23KL.mjs";
23
+ } from "./chunk-YXLNSAMJ.mjs";
23
24
  export {
24
25
  aiSDKConfigs,
25
26
  anthropicConfigs,
@@ -33,6 +34,7 @@ export {
33
34
  googleGenAIConfigs,
34
35
  groqConfigs,
35
36
  huggingFaceConfigs,
37
+ langSmithConfigs,
36
38
  langchainConfigs,
37
39
  mistralConfigs,
38
40
  openAIAgentsCoreConfigs,