@raindrop-ai/ai-sdk 0.0.29 → 0.0.31

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.
@@ -1017,7 +1017,7 @@ async function* asyncGeneratorWithCurrent(span, gen) {
1017
1017
  // package.json
1018
1018
  var package_default = {
1019
1019
  name: "@raindrop-ai/ai-sdk",
1020
- version: "0.0.29"};
1020
+ version: "0.0.31"};
1021
1021
 
1022
1022
  // src/internal/version.ts
1023
1023
  var libraryName = package_default.name;
@@ -1733,13 +1733,76 @@ function readRaindropCallMetadataFromArgs(args) {
1733
1733
  return meta;
1734
1734
  }
1735
1735
 
1736
+ // src/internal/parent-tool-context.ts
1737
+ var SyncFallbackStorage2 = class {
1738
+ constructor() {
1739
+ this._stack = [];
1740
+ }
1741
+ getStore() {
1742
+ return this._stack[this._stack.length - 1];
1743
+ }
1744
+ run(store, callback) {
1745
+ this._stack.push(store);
1746
+ try {
1747
+ return callback();
1748
+ } finally {
1749
+ this._stack.pop();
1750
+ }
1751
+ }
1752
+ // `enterWith` is intentionally absent on the sync fallback — the
1753
+ // event-driven enter/clear pattern only makes sense when the runtime
1754
+ // can propagate state across awaits, which the sync stack cannot.
1755
+ };
1756
+ var _storage2 = null;
1757
+ function getStorage2() {
1758
+ if (_storage2) return _storage2;
1759
+ const Ctor = globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;
1760
+ _storage2 = Ctor ? new Ctor() : new SyncFallbackStorage2();
1761
+ return _storage2;
1762
+ }
1763
+ function _resetParentToolContextStorage() {
1764
+ _storage2 = null;
1765
+ }
1766
+ function getCurrentParentToolContext() {
1767
+ return getStorage2().getStore();
1768
+ }
1769
+ function enterParentToolContext(ctx) {
1770
+ var _a;
1771
+ const storage = getStorage2();
1772
+ (_a = storage.enterWith) == null ? void 0 : _a.call(storage, ctx);
1773
+ }
1774
+ function clearParentToolContext() {
1775
+ var _a;
1776
+ const storage = getStorage2();
1777
+ (_a = storage.enterWith) == null ? void 0 : _a.call(storage, void 0);
1778
+ }
1779
+ function runWithParentToolContext(ctx, fn) {
1780
+ return getStorage2().run(ctx, fn);
1781
+ }
1782
+
1736
1783
  // src/internal/raindrop-telemetry-integration.ts
1737
1784
  var RaindropTelemetryIntegration = class {
1738
1785
  constructor(opts) {
1739
1786
  this.callStates = /* @__PURE__ */ new Map();
1787
+ /**
1788
+ * Per-tool-call snapshot of the parent-tool ALS context taken right
1789
+ * before `enterParentToolContext` overwrites it in `toolExecutionStart`.
1790
+ * Kept at the integration level (rather than on `CallState`) so the
1791
+ * snapshot survives even when the parent generation has no tracked
1792
+ * `CallState` — e.g. the AI SDK dispatches a tool callback for a
1793
+ * `callId` we never registered via `onStart`. Without this, the
1794
+ * unconditional ALS enter in `toolExecutionStart` would leave
1795
+ * `toolExecutionEnd` no way to restore the prior context, so it would
1796
+ * clear and wipe whatever the outer scope had set.
1797
+ *
1798
+ * Keyed by `toolCallId` because that's the only identifier guaranteed
1799
+ * to round-trip between `toolExecutionStart` and `toolExecutionEnd`
1800
+ * (the `event.callId` can be the same for parallel sibling tools).
1801
+ */
1802
+ this.priorParentContexts = /* @__PURE__ */ new Map();
1740
1803
  // ── onStart ─────────────────────────────────────────────────────────────
1741
1804
  this.onStart = (event) => {
1742
- var _a, _b, _c, _d;
1805
+ var _a, _b, _c, _d, _e;
1743
1806
  if (event.isEnabled === false) return;
1744
1807
  const isEmbed = event.operationId === "ai.embed" || event.operationId === "ai.embedMany";
1745
1808
  const recordInputs = event.recordInputs !== false;
@@ -1758,6 +1821,47 @@ var RaindropTelemetryIntegration = class {
1758
1821
  event.operationId,
1759
1822
  functionId
1760
1823
  );
1824
+ const parentToolContext = !isEmbed && this.subagentWrapping ? getCurrentParentToolContext() : void 0;
1825
+ const metadataSubagentName = !isEmbed && this.subagentWrapping && parentToolContext === void 0 ? typeof (metadata == null ? void 0 : metadata["ash.subagent.name"]) === "string" ? metadata["ash.subagent.name"] : void 0 : void 0;
1826
+ const subagentName = (_e = parentToolContext == null ? void 0 : parentToolContext.toolName) != null ? _e : metadataSubagentName;
1827
+ let subagentToolCallSpan;
1828
+ let rootParentOverride;
1829
+ if (subagentName && this.sendTraces) {
1830
+ const parentAttrs = parentToolContext ? [
1831
+ attrString("raindrop.parent.callId", parentToolContext.parentCallId),
1832
+ attrString("raindrop.parent.toolCallId", parentToolContext.toolCallId),
1833
+ attrString("raindrop.parent.toolName", parentToolContext.toolName)
1834
+ ] : [];
1835
+ subagentToolCallSpan = this.traceShipper.startSpan({
1836
+ name: subagentName,
1837
+ parent: inheritedParent,
1838
+ eventId,
1839
+ operationId: "ai.toolCall",
1840
+ attributes: [
1841
+ attrString("operation.name", "ai.toolCall"),
1842
+ attrString("resource.name", subagentName),
1843
+ attrString("raindrop.span.kind", "tool_call"),
1844
+ attrString("ai.toolCall.name", subagentName),
1845
+ attrString("raindrop.subagent.name", subagentName),
1846
+ attrString("raindrop.agent.role", "subagent"),
1847
+ ...parentAttrs
1848
+ ]
1849
+ });
1850
+ const subagentParentRef = this.spanParentRef(subagentToolCallSpan);
1851
+ const markerSpan = this.traceShipper.startSpan({
1852
+ name: "agent.subagent",
1853
+ parent: subagentParentRef,
1854
+ eventId,
1855
+ operationId: "agent.subagent",
1856
+ attributes: [
1857
+ attrString("operation.name", "agent.subagent"),
1858
+ attrString("raindrop.span.kind", "llm_call"),
1859
+ attrString("raindrop.subagent.name", subagentName)
1860
+ ]
1861
+ });
1862
+ this.traceShipper.endSpan(markerSpan);
1863
+ rootParentOverride = subagentParentRef;
1864
+ }
1761
1865
  let rootSpan;
1762
1866
  if (this.sendTraces) {
1763
1867
  const promptAttrs = !isEmbed && recordInputs ? [
@@ -1778,7 +1882,7 @@ var RaindropTelemetryIntegration = class {
1778
1882
  ] : [attrString("ai.value", safeJsonWithUint8(event.value))] : [];
1779
1883
  rootSpan = this.traceShipper.startSpan({
1780
1884
  name: event.operationId,
1781
- parent: inheritedParent,
1885
+ parent: rootParentOverride != null ? rootParentOverride : inheritedParent,
1782
1886
  eventId,
1783
1887
  operationId: event.operationId,
1784
1888
  attributes: [
@@ -1806,18 +1910,21 @@ var RaindropTelemetryIntegration = class {
1806
1910
  operationId: event.operationId,
1807
1911
  eventId,
1808
1912
  rootSpan,
1809
- rootParent: rootSpan ? this.spanParentRef(rootSpan) : inheritedParent,
1913
+ rootParent: rootSpan ? this.spanParentRef(rootSpan) : rootParentOverride != null ? rootParentOverride : inheritedParent,
1810
1914
  stepSpan: void 0,
1811
1915
  stepParent: void 0,
1812
1916
  toolSpans: /* @__PURE__ */ new Map(),
1813
1917
  embedSpans: /* @__PURE__ */ new Map(),
1918
+ parentContextToolCallIds: /* @__PURE__ */ new Set(),
1814
1919
  recordInputs,
1815
1920
  recordOutputs,
1816
1921
  functionId,
1817
1922
  metadata,
1818
1923
  accumulatedText: "",
1819
1924
  inputText: isEmbed ? void 0 : this.extractInputText(event),
1820
- toolCallCount: 0
1925
+ toolCallCount: 0,
1926
+ subagentName,
1927
+ subagentToolCallSpan
1821
1928
  });
1822
1929
  };
1823
1930
  // ── onStepStart ─────────────────────────────────────────────────────────
@@ -2031,6 +2138,10 @@ var RaindropTelemetryIntegration = class {
2031
2138
  this.traceShipper.endSpan(embedSpan, { attributes: outputAttrs });
2032
2139
  state.embedSpans.delete(event.embedCallId);
2033
2140
  };
2141
+ // v7 canary.159 renamed `onEmbedFinish` -> `onEmbedEnd`. Both names forward
2142
+ // to the same implementation; the installed SDK only wires up whichever it
2143
+ // knows about, so there is no double dispatch.
2144
+ this.onEmbedEnd = (event) => this.onEmbedFinish(event);
2034
2145
  // ── onFinish ────────────────────────────────────────────────────────────
2035
2146
  this.onFinish = (event) => {
2036
2147
  const state = this.getState(event.callId);
@@ -2041,8 +2152,17 @@ var RaindropTelemetryIntegration = class {
2041
2152
  } else {
2042
2153
  this.finishGenerate(event, state);
2043
2154
  }
2155
+ if (state.subagentToolCallSpan) {
2156
+ this.traceShipper.endSpan(state.subagentToolCallSpan);
2157
+ }
2044
2158
  this.cleanup(event.callId);
2045
2159
  };
2160
+ // v7 < canary.159 dispatched `onFinish` as the operation finalizer; canary.159
2161
+ // renamed it to `onEnd` (the same change renamed onEmbedFinish -> onEmbedEnd
2162
+ // and onRerankFinish -> onRerankEnd). The event shape is unchanged, so this
2163
+ // is a thin alias to one implementation. The installed SDK wires up whichever
2164
+ // name it knows about, so old and new names never double dispatch.
2165
+ this.onEnd = (event) => this.onFinish(event);
2046
2166
  // ── onError ─────────────────────────────────────────────────────────────
2047
2167
  this.onError = (error) => {
2048
2168
  var _a;
@@ -2058,6 +2178,10 @@ var RaindropTelemetryIntegration = class {
2058
2178
  this.traceShipper.endSpan(embedSpan, { error: actualError });
2059
2179
  }
2060
2180
  state.embedSpans.clear();
2181
+ for (const toolCallId of state.parentContextToolCallIds) {
2182
+ this.priorParentContexts.delete(toolCallId);
2183
+ }
2184
+ state.parentContextToolCallIds.clear();
2061
2185
  for (const toolSpan of state.toolSpans.values()) {
2062
2186
  this.traceShipper.endSpan(toolSpan, { error: actualError });
2063
2187
  }
@@ -2065,6 +2189,9 @@ var RaindropTelemetryIntegration = class {
2065
2189
  if (state.rootSpan) {
2066
2190
  this.traceShipper.endSpan(state.rootSpan, { error: actualError });
2067
2191
  }
2192
+ if (state.subagentToolCallSpan) {
2193
+ this.traceShipper.endSpan(state.subagentToolCallSpan, { error: actualError });
2194
+ }
2068
2195
  this.cleanup(event.callId);
2069
2196
  };
2070
2197
  // ── executeTool ─────────────────────────────────────────────────────────
@@ -2089,6 +2216,7 @@ var RaindropTelemetryIntegration = class {
2089
2216
  this.eventShipper = opts.eventShipper;
2090
2217
  this.sendTraces = opts.sendTraces !== false;
2091
2218
  this.sendEvents = opts.sendEvents !== false;
2219
+ this.subagentWrapping = opts.subagentWrapping !== false;
2092
2220
  this.debug = opts.debug === true;
2093
2221
  this.defaultContext = opts.context;
2094
2222
  }
@@ -2170,9 +2298,20 @@ var RaindropTelemetryIntegration = class {
2170
2298
  // (see https://github.com/vercel/ai/pull/14589). Event shape is identical.
2171
2299
  // Both names are exposed and forward to a single implementation.
2172
2300
  toolExecutionStart(event) {
2301
+ const { toolCall } = event;
2302
+ const priorParent = getCurrentParentToolContext();
2303
+ this.priorParentContexts.set(
2304
+ toolCall.toolCallId,
2305
+ priorParent != null ? priorParent : null
2306
+ );
2307
+ enterParentToolContext({
2308
+ parentCallId: event.callId,
2309
+ toolCallId: toolCall.toolCallId,
2310
+ toolName: toolCall.toolName
2311
+ });
2173
2312
  const state = this.getState(event.callId);
2313
+ state == null ? void 0 : state.parentContextToolCallIds.add(toolCall.toolCallId);
2174
2314
  if (!(state == null ? void 0 : state.stepParent)) return;
2175
- const { toolCall } = event;
2176
2315
  const { operationName, resourceName } = opName(
2177
2316
  "ai.toolCall",
2178
2317
  state.functionId
@@ -2196,6 +2335,17 @@ var RaindropTelemetryIntegration = class {
2196
2335
  this.emitLive(state, "tool_start", toolCall.toolName, { args: toolCall.input });
2197
2336
  }
2198
2337
  toolExecutionEnd(event) {
2338
+ var _a;
2339
+ const toolCallId = (_a = event.toolCall) == null ? void 0 : _a.toolCallId;
2340
+ if (toolCallId && this.priorParentContexts.has(toolCallId)) {
2341
+ const prior = this.priorParentContexts.get(toolCallId);
2342
+ this.priorParentContexts.delete(toolCallId);
2343
+ if (prior) {
2344
+ enterParentToolContext(prior);
2345
+ } else {
2346
+ clearParentToolContext();
2347
+ }
2348
+ }
2199
2349
  const state = this.getState(event.callId);
2200
2350
  if (!state) return;
2201
2351
  const toolSpan = state.toolSpans.get(event.toolCall.toolCallId);
@@ -2259,7 +2409,8 @@ var RaindropTelemetryIntegration = class {
2259
2409
  );
2260
2410
  this.traceShipper.endSpan(state.rootSpan, { attributes: outputAttrs });
2261
2411
  }
2262
- if (this.sendEvents) {
2412
+ const suppressSubagentEvent = state.subagentName !== void 0 && state.subagentToolCallSpan !== void 0;
2413
+ if (this.sendEvents && !suppressSubagentEvent) {
2263
2414
  const callMeta = this.extractRaindropMetadata(state.metadata);
2264
2415
  const userId = (_f = callMeta.userId) != null ? _f : (_e = this.defaultContext) == null ? void 0 : _e.userId;
2265
2416
  if (userId) {
@@ -4421,12 +4572,16 @@ function createRaindropAISDK(opts) {
4421
4572
  const writeKey = opts.writeKey;
4422
4573
  const eventsRequested = ((_a = opts.events) == null ? void 0 : _a.enabled) !== false;
4423
4574
  const tracesRequested = ((_b = opts.traces) == null ? void 0 : _b.enabled) !== false;
4424
- const eventsEnabled = eventsRequested && !!writeKey;
4425
- const tracesEnabled = tracesRequested && !!writeKey;
4426
4575
  const envDebug = envDebugEnabled();
4427
- if (!writeKey && (eventsRequested || tracesRequested)) {
4576
+ const localWorkshopInput = opts.localWorkshopUrl === false ? null : opts.localWorkshopUrl;
4577
+ const resolvedLocalDebuggerUrl = resolveLocalDebuggerBaseUrl(localWorkshopInput);
4578
+ const localDebuggerUrl = localWorkshopInput === null ? null : resolvedLocalDebuggerUrl != null ? resolvedLocalDebuggerUrl : void 0;
4579
+ const hasDestination = !!writeKey || !!resolvedLocalDebuggerUrl;
4580
+ const eventsEnabled = eventsRequested && hasDestination;
4581
+ const tracesEnabled = tracesRequested && hasDestination;
4582
+ if (!hasDestination && (eventsRequested || tracesRequested)) {
4428
4583
  console.warn(
4429
- "[raindrop-ai/ai-sdk] writeKey not provided; telemetry shipping is disabled"
4584
+ "[raindrop-ai/ai-sdk] writeKey not provided and no local Workshop reachable; telemetry shipping is disabled"
4430
4585
  );
4431
4586
  }
4432
4587
  const eventShipper = new EventShipper2({
@@ -4434,9 +4589,9 @@ function createRaindropAISDK(opts) {
4434
4589
  endpoint: opts.endpoint,
4435
4590
  enabled: eventsEnabled,
4436
4591
  debug: ((_c = opts.events) == null ? void 0 : _c.debug) === true || envDebug,
4437
- partialFlushMs: (_d = opts.events) == null ? void 0 : _d.partialFlushMs
4592
+ partialFlushMs: (_d = opts.events) == null ? void 0 : _d.partialFlushMs,
4593
+ localDebuggerUrl
4438
4594
  });
4439
- const localDebuggerUrl = opts.localWorkshopUrl === false ? null : opts.localWorkshopUrl;
4440
4595
  const traceShipper = new TraceShipper2({
4441
4596
  writeKey,
4442
4597
  endpoint: opts.endpoint,
@@ -4458,12 +4613,30 @@ function createRaindropAISDK(opts) {
4458
4613
  traceShipper
4459
4614
  });
4460
4615
  },
4461
- createTelemetryIntegration(context) {
4616
+ createTelemetryIntegration(contextOrOptions) {
4617
+ const FLAT_CONTEXT_KEYS = [
4618
+ "userId",
4619
+ "eventId",
4620
+ "eventName",
4621
+ "convoId",
4622
+ "properties"
4623
+ ];
4624
+ let context;
4625
+ let subagentWrapping;
4626
+ if (contextOrOptions === void 0) ; else if ("context" in contextOrOptions) {
4627
+ context = contextOrOptions.context;
4628
+ subagentWrapping = contextOrOptions.subagentWrapping;
4629
+ } else if ("subagentWrapping" in contextOrOptions && !FLAT_CONTEXT_KEYS.some((k) => k in contextOrOptions)) {
4630
+ subagentWrapping = contextOrOptions.subagentWrapping;
4631
+ } else {
4632
+ context = contextOrOptions;
4633
+ }
4462
4634
  return new RaindropTelemetryIntegration({
4463
4635
  traceShipper,
4464
4636
  eventShipper,
4465
4637
  sendTraces: tracesEnabled,
4466
4638
  sendEvents: eventsEnabled,
4639
+ subagentWrapping,
4467
4640
  debug: envDebug,
4468
4641
  context
4469
4642
  });
@@ -4571,4 +4744,4 @@ function createRaindropAISDK(opts) {
4571
4744
  };
4572
4745
  }
4573
4746
 
4574
- export { DEFAULT_REDACT_ATTRIBUTE_KEYS, DEFAULT_SECRET_KEY_NAMES, REDACTED_PLACEHOLDER, RaindropTelemetryIntegration, _resetRaindropCallMetadataStorage, _resetWarnedMissingUserId, createRaindropAISDK, currentSpan, defaultTransformSpan, eventMetadata, eventMetadataFromChatRequest, getContextManager, getCurrentRaindropCallMetadata, readRaindropCallMetadataFromArgs, redactJsonAttributeValue, redactSecretsInObject, runWithRaindropCallMetadata, withCurrent };
4747
+ export { DEFAULT_REDACT_ATTRIBUTE_KEYS, DEFAULT_SECRET_KEY_NAMES, REDACTED_PLACEHOLDER, RaindropTelemetryIntegration, _resetParentToolContextStorage, _resetRaindropCallMetadataStorage, _resetWarnedMissingUserId, clearParentToolContext, createRaindropAISDK, currentSpan, defaultTransformSpan, enterParentToolContext, eventMetadata, eventMetadataFromChatRequest, getContextManager, getCurrentParentToolContext, getCurrentRaindropCallMetadata, readRaindropCallMetadataFromArgs, redactJsonAttributeValue, redactSecretsInObject, runWithParentToolContext, runWithRaindropCallMetadata, withCurrent };
@@ -1,4 +1,4 @@
1
- export { A as AISDKChatRequestLike, a as AISDKChatRequestMessageLike, b as AISDKMessage, c as AgentCallMetadata, d as AgentWithMetadata, e as Attachment, B as BuildEventPatch, C as ContextManager, f as ContextSpan, g as CreateSpanArgs, D as DEFAULT_REDACT_ATTRIBUTE_KEYS, h as DEFAULT_SECRET_KEY_NAMES, E as EndSpanArgs, i as EventBuilder, j as EventMetadataOptions, I as IdentifyInput, O as OtlpAnyValue, k as OtlpSpan, R as REDACTED_PLACEHOLDER, l as RaindropAISDKClient, m as RaindropAISDKContext, n as RaindropAISDKOptions, o as RaindropCallMetadata, p as RaindropTelemetryIntegration, q as RaindropTelemetryIntegrationOptions, S as SelfDiagnosticsOptions, r as SelfDiagnosticsSignalDefinition, s as SelfDiagnosticsSignalDefinitions, t as StartSpanArgs, T as TraceSpan, u as TransformSpanHook, W as WrapAISDKOptions, v as WrappedAI, w as WrappedAISDK, _ as _resetRaindropCallMetadataStorage, x as _resetWarnedMissingUserId, y as createRaindropAISDK, z as currentSpan, F as defaultTransformSpan, G as eventMetadata, H as eventMetadataFromChatRequest, J as getContextManager, K as getCurrentRaindropCallMetadata, L as readRaindropCallMetadataFromArgs, M as redactJsonAttributeValue, N as redactSecretsInObject, P as runWithRaindropCallMetadata, Q as withCurrent } from './index-DKdCelJA.mjs';
1
+ export { A as AISDKChatRequestLike, a as AISDKChatRequestMessageLike, b as AISDKMessage, c as AgentCallMetadata, d as AgentWithMetadata, e as Attachment, B as BuildEventPatch, C as ContextManager, f as ContextSpan, g as CreateSpanArgs, D as DEFAULT_REDACT_ATTRIBUTE_KEYS, h as DEFAULT_SECRET_KEY_NAMES, E as EndSpanArgs, i as EventBuilder, j as EventMetadataOptions, I as IdentifyInput, O as OtlpAnyValue, k as OtlpSpan, P as ParentToolContext, R as REDACTED_PLACEHOLDER, l as RaindropAISDKClient, m as RaindropAISDKContext, n as RaindropAISDKOptions, o as RaindropCallMetadata, p as RaindropTelemetryIntegration, q as RaindropTelemetryIntegrationOptions, S as SelfDiagnosticsOptions, r as SelfDiagnosticsSignalDefinition, s as SelfDiagnosticsSignalDefinitions, t as StartSpanArgs, T as TraceSpan, u as TransformSpanHook, W as WrapAISDKOptions, v as WrappedAI, w as WrappedAISDK, _ as _resetParentToolContextStorage, x as _resetRaindropCallMetadataStorage, y as _resetWarnedMissingUserId, z as clearParentToolContext, F as createRaindropAISDK, G as currentSpan, H as defaultTransformSpan, J as enterParentToolContext, K as eventMetadata, L as eventMetadataFromChatRequest, M as getContextManager, N as getCurrentParentToolContext, Q as getCurrentRaindropCallMetadata, U as readRaindropCallMetadataFromArgs, V as redactJsonAttributeValue, X as redactSecretsInObject, Y as runWithParentToolContext, Z as runWithRaindropCallMetadata, $ as withCurrent } from './index-IMe7ZUXV.mjs';
2
2
 
3
3
  declare global {
4
4
  var RAINDROP_ASYNC_LOCAL_STORAGE: (new <T>() => {
@@ -1,4 +1,4 @@
1
- export { A as AISDKChatRequestLike, a as AISDKChatRequestMessageLike, b as AISDKMessage, c as AgentCallMetadata, d as AgentWithMetadata, e as Attachment, B as BuildEventPatch, C as ContextManager, f as ContextSpan, g as CreateSpanArgs, D as DEFAULT_REDACT_ATTRIBUTE_KEYS, h as DEFAULT_SECRET_KEY_NAMES, E as EndSpanArgs, i as EventBuilder, j as EventMetadataOptions, I as IdentifyInput, O as OtlpAnyValue, k as OtlpSpan, R as REDACTED_PLACEHOLDER, l as RaindropAISDKClient, m as RaindropAISDKContext, n as RaindropAISDKOptions, o as RaindropCallMetadata, p as RaindropTelemetryIntegration, q as RaindropTelemetryIntegrationOptions, S as SelfDiagnosticsOptions, r as SelfDiagnosticsSignalDefinition, s as SelfDiagnosticsSignalDefinitions, t as StartSpanArgs, T as TraceSpan, u as TransformSpanHook, W as WrapAISDKOptions, v as WrappedAI, w as WrappedAISDK, _ as _resetRaindropCallMetadataStorage, x as _resetWarnedMissingUserId, y as createRaindropAISDK, z as currentSpan, F as defaultTransformSpan, G as eventMetadata, H as eventMetadataFromChatRequest, J as getContextManager, K as getCurrentRaindropCallMetadata, L as readRaindropCallMetadataFromArgs, M as redactJsonAttributeValue, N as redactSecretsInObject, P as runWithRaindropCallMetadata, Q as withCurrent } from './index-DKdCelJA.js';
1
+ export { A as AISDKChatRequestLike, a as AISDKChatRequestMessageLike, b as AISDKMessage, c as AgentCallMetadata, d as AgentWithMetadata, e as Attachment, B as BuildEventPatch, C as ContextManager, f as ContextSpan, g as CreateSpanArgs, D as DEFAULT_REDACT_ATTRIBUTE_KEYS, h as DEFAULT_SECRET_KEY_NAMES, E as EndSpanArgs, i as EventBuilder, j as EventMetadataOptions, I as IdentifyInput, O as OtlpAnyValue, k as OtlpSpan, P as ParentToolContext, R as REDACTED_PLACEHOLDER, l as RaindropAISDKClient, m as RaindropAISDKContext, n as RaindropAISDKOptions, o as RaindropCallMetadata, p as RaindropTelemetryIntegration, q as RaindropTelemetryIntegrationOptions, S as SelfDiagnosticsOptions, r as SelfDiagnosticsSignalDefinition, s as SelfDiagnosticsSignalDefinitions, t as StartSpanArgs, T as TraceSpan, u as TransformSpanHook, W as WrapAISDKOptions, v as WrappedAI, w as WrappedAISDK, _ as _resetParentToolContextStorage, x as _resetRaindropCallMetadataStorage, y as _resetWarnedMissingUserId, z as clearParentToolContext, F as createRaindropAISDK, G as currentSpan, H as defaultTransformSpan, J as enterParentToolContext, K as eventMetadata, L as eventMetadataFromChatRequest, M as getContextManager, N as getCurrentParentToolContext, Q as getCurrentRaindropCallMetadata, U as readRaindropCallMetadataFromArgs, V as redactJsonAttributeValue, X as redactSecretsInObject, Y as runWithParentToolContext, Z as runWithRaindropCallMetadata, $ as withCurrent } from './index-IMe7ZUXV.js';
2
2
 
3
3
  declare global {
4
4
  var RAINDROP_ASYNC_LOCAL_STORAGE: (new <T>() => {