@countly/ai-sdk-mastra 0.0.3 → 0.0.4

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/README.md CHANGED
@@ -90,9 +90,52 @@ agent.stream(msg, { ↓
90
90
  - Automatic trace completion when the root span ends (no `parentSpanId`)
91
91
  - Token usage, cost, and latency aggregated across all spans of a trace
92
92
  - Tool calls within agent workflows (`function_call` and `mcp_tool_call` types)
93
+ - **Workflow steps** — each `createStep` node's `inputData` captured as tool params (see below)
93
94
  - Error reporting for failed traces
94
95
  - Per-user aggregation across agent runs
95
96
 
97
+ ## Capturing workflow steps
98
+
99
+ If you orchestrate agents with Mastra **workflows** (`createWorkflow` / `createStep`),
100
+ the steps only reach the exporter when the workflow is **registered on the Mastra
101
+ instance** and run **through that instance**. A workflow imported and run standalone
102
+ (`myWorkflow.createRun()`) has no observability wired to it — only the agent runs it
103
+ invokes are traced, and the step decisions (routing, handoffs, gathered inputs) are
104
+ invisible.
105
+
106
+ Register the workflow and run it via `getWorkflow`:
107
+
108
+ ```typescript
109
+ const mastra = new Mastra({
110
+ agents: { intentAgent, pluginsAgent },
111
+ workflows: { myWorkflow }, // ← register it
112
+ observability: new Observability({ /* … exporter … */ }),
113
+ });
114
+
115
+ // Run THROUGH the instance so its spans inherit observability:
116
+ const run = await mastra.getWorkflow("myWorkflow").createRun();
117
+ await run.stream({ inputData, requestContext: ctx });
118
+ ```
119
+
120
+ Once registered, each **leaf** `createStep` surfaces as a tool row:
121
+
122
+ - `tool_name` = the step's `entityId` (hyphens normalized to underscores, e.g.
123
+ `potential-handoff` → `potential_handoff`), so it aggregates with function/MCP
124
+ tool rows of the same name.
125
+ - `[CLY]_llm_tool_usage_parameter` rows are emitted per key of the step's
126
+ `inputData` — `{ handoff_to, confidence, user_input, … }` become named params
127
+ you can break down in analytics.
128
+ - **Structural wrapper steps are skipped.** A `.then(nestedWorkflow)` /
129
+ `.branch([… nestedWorkflow])` surfaces as a `workflow_step` whose `entityId`
130
+ is that nested workflow's id; those are excluded so only real decision steps
131
+ become rows.
132
+ - The **`workflow_run` root** interaction (which carries no agent and no model)
133
+ is labelled with `workflow_name` = the root workflow's `entityName`, so it is
134
+ attributable rather than an unlabelled "unknown" row.
135
+
136
+ > Nested workflows are traced too: register only the top-level workflow you run —
137
+ > its `.then()` / `.branch()` children are traced automatically as part of the run.
138
+
96
139
  ## Configuration
97
140
 
98
141
  All adapters accept the same `CountlyAIConfig` object:
@@ -111,6 +154,40 @@ All adapters accept the same `CountlyAIConfig` object:
111
154
  | `debug` | `false` | Log transport errors |
112
155
  | `disabled` | `false` | Disable all telemetry |
113
156
 
157
+ ## Feedback
158
+
159
+ User feedback (thumbs up/down, ratings, comments) is not auto-collected — wire it from your UI. Capture the `prompt_id` of each tracked interaction via the `onPrompt` callback, then record feedback against it with `createFeedbackTracker` (re-exported from this package, so no extra install is needed):
160
+
161
+ ```typescript
162
+ import { CountlyMastraExporter, createFeedbackTracker, type PromptInfo } from "@countly/ai-sdk-mastra";
163
+
164
+ const countly = { appKey: "YOUR_APP_KEY", url: "https://your-countly-server.com" };
165
+
166
+ let lastPrompt: PromptInfo | undefined;
167
+ const exporter = new CountlyMastraExporter({
168
+ ...countly,
169
+ requestContextDeviceIdKey: "countlyDeviceId",
170
+ onPrompt: (info) => { lastPrompt = info; }, // fires after every exported LLM interaction
171
+ });
172
+ // wire the exporter into new Observability({...}) as shown in Quick Start
173
+
174
+ const feedback = createFeedbackTracker(countly, { sdk_adapter: "mastra" });
175
+
176
+ await mastra.getAgent("intent").generate(messages, { requestContext: ctx });
177
+
178
+ // ...later, when the user rates the answer:
179
+ feedback.track({
180
+ prompt_id: lastPrompt!.prompt_id,
181
+ rating: "thumbs_up", // or "thumbs_down", or any custom string
182
+ score: 0.9, // optional 0-1 numeric score
183
+ category: "helpful", // optional: hallucination, irrelevant, harmful, ...
184
+ comment: "Great answer", // optional free-form text
185
+ deviceId: user.id, // attribute to the same user as the interaction
186
+ });
187
+ ```
188
+
189
+ Each `track()` call emits a `[CLY]_llm_interaction_feedback` event whose `prompt_id` links back to the `[CLY]_llm_interaction` event — powering prompt → feedback funnels and per-model satisfaction breakdowns in Countly. In a real app, store `prompt_id` alongside the rendered message (or return it to your client) and read it back when the user rates the answer. Feedback is batched like interaction events; call `feedback.flush()` to send immediately, or `feedback.shutdown()` on process exit.
190
+
114
191
  ## Full documentation
115
192
 
116
193
  See the [Countly AI SDK repository](https://github.com/Countly/countly-ai-sdk) for the unified data model, observability levels, cost calculation, privacy controls, and Countly plugin integration (Drill, Funnels, Cohorts, APM, Crash Analytics).
package/dist/adapter.d.ts CHANGED
@@ -19,6 +19,14 @@ export interface CountlyMastraExporterConfig extends CountlyAIConfig {
19
19
  * Default: "threadId". Set null to disable.
20
20
  */
21
21
  requestContextThreadIdKey?: string | null;
22
+ /**
23
+ * Key under requestContext for a caller-supplied prompt_id. When set and
24
+ * present on the root span's requestContext, that id is stamped on the
25
+ * interaction event instead of an auto-generated one — letting the host app
26
+ * correlate its own request (and later user feedback via createFeedbackTracker)
27
+ * with the exported interaction. Default: null (always auto-generate).
28
+ */
29
+ requestContextPromptIdKey?: string | null;
22
30
  }
23
31
  /**
24
32
  * TracingEvent mirrors the Mastra v1 ObservabilityExporter event type.
@@ -108,6 +116,7 @@ export declare class CountlyMastraExporter implements ObservabilityExporter {
108
116
  private readonly contextKey;
109
117
  private readonly workflowKey;
110
118
  private readonly threadKey;
119
+ private readonly promptKey;
111
120
  constructor(userConfig: CountlyMastraExporterConfig);
112
121
  exportTracingEvent(event: TracingEvent): Promise<void>;
113
122
  flush(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/adapter.js CHANGED
@@ -37,6 +37,7 @@ export class CountlyMastraExporter {
37
37
  contextKey;
38
38
  workflowKey;
39
39
  threadKey;
40
+ promptKey;
40
41
  constructor(userConfig) {
41
42
  this.config = resolveConfig(userConfig);
42
43
  this.transport = createTransport(this.config);
@@ -49,6 +50,8 @@ export class CountlyMastraExporter {
49
50
  this.threadKey = userConfig.requestContextThreadIdKey === null
50
51
  ? null
51
52
  : (userConfig.requestContextThreadIdKey ?? "threadId");
53
+ // Opt-in only: no default key, so existing users keep auto-generated ids.
54
+ this.promptKey = userConfig.requestContextPromptIdKey ?? null;
52
55
  }
53
56
  async exportTracingEvent(event) {
54
57
  const traceId = event.exportedSpan.traceId;
@@ -83,18 +86,24 @@ export class CountlyMastraExporter {
83
86
  }
84
87
  processTrace(events) {
85
88
  const raw = aggregateSpans(events, { contextKey: this.contextKey, workflowKey: this.workflowKey });
86
- // Extract thread_id from root span's requestContext (mirrors the device/workflow pattern).
87
- let threadId;
88
- if (this.threadKey) {
89
+ // Read thread_id and a caller-supplied prompt_id from the root span's
90
+ // requestContext (mirrors the device/workflow pattern). Resolve the root
91
+ // context once and reuse for both keys.
92
+ let rootContext;
93
+ if (this.threadKey || this.promptKey) {
89
94
  const rootEnded = events.find((e) => e.type === "span_ended" && (e.exportedSpan.isRootSpan === true || !e.exportedSpan.parentSpanId));
90
- const rc = rootEnded?.exportedSpan.requestContext;
91
- const candidate = rc?.[this.threadKey];
92
- if (typeof candidate === "string" && candidate.length > 0) {
93
- threadId = candidate;
94
- }
95
+ rootContext = rootEnded?.exportedSpan.requestContext;
95
96
  }
97
+ const readContextString = (key) => {
98
+ if (!key || !rootContext)
99
+ return undefined;
100
+ const candidate = rootContext[key];
101
+ return typeof candidate === "string" && candidate.length > 0 ? candidate : undefined;
102
+ };
103
+ const threadId = readContextString(this.threadKey);
104
+ const providedPromptId = readContextString(this.promptKey);
96
105
  const context = {
97
- prompt_id: generatePromptId(),
106
+ prompt_id: providedPromptId ?? generatePromptId(),
98
107
  sdk_adapter: "mastra",
99
108
  };
100
109
  if (threadId) {
@@ -105,7 +114,6 @@ export class CountlyMastraExporter {
105
114
  this.transport.enqueue(builtEvents);
106
115
  }
107
116
  this.transport.reportTrace(raw, context);
108
- this.transport.reportUserData(raw);
109
117
  if (raw.status === "error" && raw.error) {
110
118
  this.transport.reportError(raw.error, raw);
111
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { CountlyMastraExporter } from "./adapter";
2
2
  export type { TracingEvent, CountlyMastraExporterConfig } from "./adapter";
3
3
  export { aggregateSpans } from "./span-aggregator";
4
+ export { createFeedbackTracker } from "@countly/ai-sdk-core";
5
+ export type { FeedbackInput, FeedbackTracker, PromptInfo } from "@countly/ai-sdk-core";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,8 @@
1
1
  export { CountlyMastraExporter } from "./adapter";
2
2
  export { aggregateSpans } from "./span-aggregator";
3
+ // Feedback pipeline — re-exported from core so user feedback (thumbs up/down,
4
+ // ratings, comments) can be wired without importing @countly/ai-sdk-core
5
+ // directly. Correlate via the `onPrompt` config callback, which exposes the
6
+ // `prompt_id` stamped on every `[CLY]_llm_interaction` event.
7
+ export { createFeedbackTracker } from "@countly/ai-sdk-core";
3
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,8DAA8D;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"span-aggregator.d.ts","sourceRoot":"","sources":["../src/span-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA8D9C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpE,mBAAmB,CAuLrB"}
1
+ {"version":3,"file":"span-aggregator.d.ts","sourceRoot":"","sources":["../src/span-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAyG9C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpE,mBAAmB,CAiQrB"}
@@ -63,6 +63,50 @@ function extractPreviewText(value) {
63
63
  return undefined;
64
64
  }
65
65
  }
66
+ /**
67
+ * Normalize a Mastra tool_call span's `input` into a flat arguments object so
68
+ * every named parameter becomes its own [CLY]_llm_tool_usage_parameter row.
69
+ *
70
+ * Mastra hands an executing tool its PARSED arguments object (e.g. docs_tool →
71
+ * { input_message }), which already flattens correctly. But for many agent /
72
+ * routing / decision tools (potential_handoff, transfer_to_*, general_knowledge,
73
+ * match_filter_or_*, …) the model's arguments reach the span as a raw JSON
74
+ * STRING — the AI-SDK `function.arguments` shape. Left as a string, core
75
+ * collapses the whole blob into ONE opaque "input" param, which is why every
76
+ * non-docs tool surfaced "TOP ARG = undefined". Parse JSON object/array strings
77
+ * back into structure so each field becomes its own param.
78
+ *
79
+ * Null/undefined fields are pruned (optional handoff args like threadId:null
80
+ * must not emit param rows), while false / 0 / "" are preserved — they are
81
+ * meaningful tool arguments. Non-object results (a plain non-JSON string,
82
+ * an array, or a scalar) pass through unchanged for core to collapse into a
83
+ * single "input" param.
84
+ */
85
+ function normalizeToolArgs(input) {
86
+ if (input == null)
87
+ return undefined;
88
+ let value = input;
89
+ if (typeof value === "string") {
90
+ const trimmed = value.trim();
91
+ if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
92
+ try {
93
+ value = JSON.parse(trimmed);
94
+ }
95
+ catch {
96
+ // Not JSON — leave as the original string; core emits a single "input" param.
97
+ }
98
+ }
99
+ }
100
+ if (value != null && typeof value === "object" && !Array.isArray(value)) {
101
+ const pruned = {};
102
+ for (const [k, v] of Object.entries(value)) {
103
+ if (v !== null && v !== undefined)
104
+ pruned[k] = v;
105
+ }
106
+ return pruned;
107
+ }
108
+ return value;
109
+ }
66
110
  export function aggregateSpans(events, options) {
67
111
  let totalInputTokens = 0;
68
112
  let totalOutputTokens = 0;
@@ -71,7 +115,15 @@ export function aggregateSpans(events, options) {
71
115
  let finishReason;
72
116
  let hasError = false;
73
117
  let errorMessage;
74
- const tools = [];
118
+ // Tool calls keyed by span id so a single call's span_started + span_ended
119
+ // (and any span_updated) lifecycle events collapse into ONE RawToolCall —
120
+ // last write wins, i.e. the ended span's final input/output/status. Distinct
121
+ // invocations carry distinct span ids, so genuine repeat tool calls survive.
122
+ // Without this dedupe every tool, and every one of its arguments, was emitted
123
+ // 2-3x (once per lifecycle event) — inflating tools_used, tool_call_count,
124
+ // [CLY]_llm_tool_used and [CLY]_llm_tool_usage_parameter alike.
125
+ const toolCalls = new Map();
126
+ let toollessSeq = 0;
75
127
  let stepCount = 0;
76
128
  let responseId;
77
129
  let responseModel;
@@ -81,6 +133,19 @@ export function aggregateSpans(events, options) {
81
133
  let providerMetadata;
82
134
  // Extract spans from events
83
135
  const spans = events.map((e) => e.exportedSpan);
136
+ // Ids of workflows that ran as their own `workflow_run` span. A `.then()` /
137
+ // `.branch()` that invokes a NESTED workflow surfaces as a `workflow_step`
138
+ // whose `entityId` is that nested workflow's id — a structural wrapper, not a
139
+ // decision step. Collecting the run-ids here lets the step loop skip those
140
+ // wrappers so only leaf `createStep` nodes (potential-handoff, intent-determine,
141
+ // execute-plugins-agent, …) become tool rows.
142
+ const workflowRunIds = new Set();
143
+ for (const s of spans) {
144
+ const st = s.type ?? s.attributes?.["mastra.span.type"] ?? s.name;
145
+ if (st === "workflow_run" && typeof s.entityName === "string" && s.entityName.length > 0) {
146
+ workflowRunIds.add(s.entityName);
147
+ }
148
+ }
84
149
  // Find the span_ended event for the root span (has both startTime and endTime)
85
150
  const rootEndedEvent = events.find((e) => e.type === "span_ended" && (e.exportedSpan.isRootSpan === true || !e.exportedSpan.parentSpanId));
86
151
  const rootSpan = rootEndedEvent?.exportedSpan ??
@@ -136,13 +201,55 @@ export function aggregateSpans(events, options) {
136
201
  if (spanType === "tool_call" ||
137
202
  spanType === "mcp_tool_call") {
138
203
  const toolType = spanType === "mcp_tool_call" ? "mcp_tool_call" : "function_call";
139
- tools.push({
204
+ // Dedupe lifecycle events by span id; fall back to a unique key when a
205
+ // span somehow lacks an id so distinct tools are never merged together.
206
+ const key = span.id != null ? String(span.id) : `__tool_${toollessSeq++}`;
207
+ const existing = toolCalls.get(key);
208
+ const args = normalizeToolArgs(span.input);
209
+ const built = {
140
210
  name: String(span.entityName ?? span.name ?? "unknown"),
141
211
  type: toolType,
142
- arguments: span.input ?? undefined,
143
212
  status: span.errorInfo != null ? "error" : "success",
144
213
  ...(span.errorInfo && { error: String(span.errorInfo.message) }),
145
- });
214
+ };
215
+ // Prefer this span's args; if it carries none (e.g. a bare span_ended),
216
+ // retain whatever an earlier lifecycle event captured for the same call.
217
+ const finalArgs = args !== undefined ? args : existing?.arguments;
218
+ if (finalArgs !== undefined)
219
+ built.arguments = finalArgs;
220
+ toolCalls.set(key, built);
221
+ }
222
+ // Workflow steps as tool usage. A registered Mastra workflow traces each
223
+ // `createStep` execute as a `workflow_step` span whose `input` is the
224
+ // step's parsed inputData — the same shape a function-tool's arguments
225
+ // take. Emitting them as tool calls is what surfaces the per-step params
226
+ // (handoff_to, user_input, event_name, …) for agents/workflows that route
227
+ // through steps rather than model-invoked tools. Structural wrapper steps
228
+ // (those whose entityId is itself a workflow run) are skipped so only leaf
229
+ // decision steps become rows.
230
+ if (spanType === "workflow_step") {
231
+ const stepId = typeof span.entityId === "string" && span.entityId.length > 0
232
+ ? span.entityId
233
+ : undefined;
234
+ if (stepId && !workflowRunIds.has(stepId)) {
235
+ const key = span.id != null ? String(span.id) : `__wf_${toollessSeq++}`;
236
+ const existing = toolCalls.get(key);
237
+ const args = normalizeToolArgs(span.input);
238
+ const built = {
239
+ // Normalize the hyphenated step id ("potential-handoff") to the
240
+ // underscore convention used by function/MCP tool rows and legacy
241
+ // data ("potential_handoff", "docs_tool"), so a step and its
242
+ // historical tool-era rows aggregate under one name in the UI.
243
+ name: stepId.replace(/-/g, "_"),
244
+ type: "function_call",
245
+ status: span.errorInfo != null ? "error" : "success",
246
+ ...(span.errorInfo && { error: String(span.errorInfo.message) }),
247
+ };
248
+ const finalArgs = args !== undefined ? args : existing?.arguments;
249
+ if (finalArgs !== undefined)
250
+ built.arguments = finalArgs;
251
+ toolCalls.set(key, built);
252
+ }
146
253
  }
147
254
  // Check for error via errorInfo on any span
148
255
  if (span.errorInfo != null) {
@@ -152,6 +259,8 @@ export function aggregateSpans(events, options) {
152
259
  }
153
260
  }
154
261
  }
262
+ // Materialize deduped tool calls (one entry per distinct span id).
263
+ const tools = Array.from(toolCalls.values());
155
264
  // Count model_step span_ended events (multi-step LLM generations).
156
265
  for (const e of events) {
157
266
  if (e.type === "span_ended" && e.exportedSpan.type === "model_step") {
@@ -193,6 +302,14 @@ export function aggregateSpans(events, options) {
193
302
  workflowName = candidate;
194
303
  }
195
304
  }
305
+ // A `workflow_run` root names the interaction directly: when the whole turn
306
+ // is a registered workflow, its root span carries no agent and no model, so
307
+ // without this the interaction would surface as an unlabelled "unknown" row.
308
+ // Falling back to the root workflow's entityName labels it (e.g. "test-workflow")
309
+ // and keeps its `workflow_step` tool rows attributable.
310
+ if (!workflowName && rootSpan && rootSpan.type === "workflow_run" && typeof rootSpan.entityName === "string" && rootSpan.entityName.length > 0) {
311
+ workflowName = rootSpan.entityName;
312
+ }
196
313
  return {
197
314
  model: modelName,
198
315
  provider: modelProvider,
@@ -1 +1 @@
1
- {"version":3,"file":"span-aggregator.js","sourceRoot":"","sources":["../src/span-aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"span-aggregator.js","sourceRoot":"","sources":["../src/span-aggregator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@countly/ai-sdk-mastra",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Countly AI observability adapter for Mastra",
5
5
  "type": "module",
6
6
  "exports": {
@@ -16,7 +16,7 @@
16
16
  "access": "public"
17
17
  },
18
18
  "dependencies": {
19
- "@countly/ai-sdk-core": "0.0.3"
19
+ "@countly/ai-sdk-core": "0.0.4"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "@mastra/core": ">=1.0.0",