@countly/ai-sdk-core 0.0.2 → 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
@@ -59,22 +59,24 @@ transport.enqueue(events);
59
59
 
60
60
  ## Feedback events
61
61
 
62
- Feedback is not auto-collected — wire it from your UI's thumbs-up/down handler:
62
+ Feedback is not auto-collected — wire it from your UI's thumbs-up/down handler. Use `createFeedbackTracker` (also re-exported by every adapter package) with the `prompt_id` captured via the `onPrompt` config callback:
63
63
 
64
64
  ```typescript
65
- import { buildFeedbackEvent, createTransport, resolveConfig } from "@countly/ai-sdk-core";
65
+ import { createFeedbackTracker } from "@countly/ai-sdk-core";
66
66
 
67
- const config = resolveConfig({ appKey: "...", url: "..." });
68
- const transport = createTransport(config);
67
+ const feedback = createFeedbackTracker(
68
+ { appKey: "YOUR_APP_KEY", url: "https://your-countly-server.com" },
69
+ { sdk_adapter: "openai" }, // stamp which adapter produced the rated interaction
70
+ );
69
71
 
70
72
  function onFeedback(promptId: string, rating: string, userId: string) {
71
- const event = buildFeedbackEvent({ prompt_id: promptId, rating });
72
- event.deviceId = userId;
73
- transport.enqueue([event]);
73
+ feedback.track({ prompt_id: promptId, rating, deviceId: userId });
74
74
  }
75
75
  ```
76
76
 
77
- The `prompt_id` links back to the `[CLY]_llm_interaction` event. Store it in your chat UI and read it back when the user clicks feedback.
77
+ The `prompt_id` links back to the `[CLY]_llm_interaction` event. Store it in your chat UI and read it back when the user clicks feedback. The tracker batches like the interaction pipeline (`flushInterval` / `maxBatchSize`); `feedback.flush()` sends immediately, `feedback.shutdown()` flushes and stops.
78
+
79
+ For custom integrations that need full control, the lower-level `buildFeedbackEvent` + `createTransport` primitives remain available.
78
80
 
79
81
  ## Full documentation
80
82
 
package/dist/config.d.ts CHANGED
@@ -1,5 +1,19 @@
1
1
  import type { ObservabilityLevel } from "./types";
2
2
  import type { CostModelOverrides } from "./cost";
3
+ /**
4
+ * Identity of a tracked LLM interaction, delivered to `onPrompt` right after
5
+ * the SDK records it. `prompt_id` is the correlation key for
6
+ * `[CLY]_llm_interaction_feedback` — capture it here to wire feedback back
7
+ * to the interaction it rates.
8
+ */
9
+ export interface PromptInfo {
10
+ prompt_id: string;
11
+ thread_id?: string;
12
+ provider: string;
13
+ model: string;
14
+ status: "success" | "error";
15
+ sdk_adapter: string;
16
+ }
3
17
  export interface CountlyAIConfig {
4
18
  appKey: string;
5
19
  url: string;
@@ -9,8 +23,23 @@ export interface CountlyAIConfig {
9
23
  environment?: string;
10
24
  source?: string;
11
25
  trackAPM?: boolean;
12
- trackUserData?: boolean;
13
26
  trackErrors?: boolean;
27
+ /**
28
+ * Called synchronously after each tracked interaction (success or error)
29
+ * with the generated `prompt_id`. This is the only way to obtain the
30
+ * correlation key needed for `createFeedbackTracker`.
31
+ * Exceptions thrown here are swallowed — they never break tracking.
32
+ */
33
+ onPrompt?: (info: PromptInfo) => void;
34
+ /**
35
+ * Caller-supplied prompt_id source. When provided and it returns a non-empty
36
+ * string, that id is stamped on the interaction (and its tool events) instead
37
+ * of an auto-generated one — letting the host correlate its own request (and
38
+ * later user feedback via createFeedbackTracker) with the emitted event.
39
+ * Called once per interaction; return undefined to fall back to auto-generate.
40
+ * This is the wrapped-client equivalent of the Mastra requestContextPromptIdKey.
41
+ */
42
+ getPromptId?: () => string | undefined;
14
43
  textPreviewLength?: number;
15
44
  flushInterval?: number;
16
45
  maxBatchSize?: number;
@@ -30,8 +59,9 @@ export interface ResolvedConfig {
30
59
  environment: string;
31
60
  source: string;
32
61
  trackAPM: boolean;
33
- trackUserData: boolean;
34
62
  trackErrors: boolean;
63
+ onPrompt: ((info: PromptInfo) => void) | undefined;
64
+ getPromptId: (() => string | undefined) | undefined;
35
65
  textPreviewLength: number;
36
66
  flushInterval: number;
37
67
  maxBatchSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAGZ,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAGxC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAG/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACrD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAoBrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAGZ,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAGxC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAG/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAEtC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAGvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,WAAW,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACrD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CAqBrE"}
package/dist/config.js CHANGED
@@ -8,8 +8,9 @@ export function resolveConfig(config) {
8
8
  environment: config.environment ?? "production",
9
9
  source: config.source ?? "api",
10
10
  trackAPM: config.trackAPM ?? true,
11
- trackUserData: config.trackUserData ?? true,
12
11
  trackErrors: config.trackErrors ?? true,
12
+ onPrompt: config.onPrompt,
13
+ getPromptId: config.getPromptId,
13
14
  textPreviewLength: config.textPreviewLength ?? 200,
14
15
  flushInterval: config.flushInterval ?? 10_000,
15
16
  maxBatchSize: config.maxBatchSize ?? 20,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAwDA,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;QAClD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;QAC3C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;QACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,GAAG;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;QAC7C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAyFA,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC;QAClD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;QACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,GAAG;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM;QAC7C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC"}
package/dist/cost.d.ts CHANGED
@@ -2,6 +2,7 @@ export interface ModelPricing {
2
2
  input_per_mtok: number;
3
3
  output_per_mtok: number;
4
4
  cached_per_mtok?: number;
5
+ cache_write_per_mtok?: number;
5
6
  reason_per_mtok?: number;
6
7
  }
7
8
  export type CostModelOverrides = Record<string, Partial<ModelPricing>>;
@@ -16,6 +17,7 @@ export declare function calculateCost(model: string, tokens: {
16
17
  input: number;
17
18
  output: number;
18
19
  cached?: number;
20
+ cacheWrite?: number;
19
21
  reasoning?: number;
20
22
  }, overrides?: CostModelOverrides): CostResult;
21
23
  //# sourceMappingURL=cost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAEvE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAmDxD,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9E,SAAS,CAAC,EAAE,kBAAkB,GAC7B,UAAU,CAcZ"}
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AASvE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAsDxD,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACnG,SAAS,CAAC,EAAE,kBAAkB,GAC7B,UAAU,CAuCZ"}
package/dist/cost.js CHANGED
@@ -1,66 +1,111 @@
1
+ // Prices are USD per 1M tokens. This table is GENERATED — do not hand-edit.
2
+ // Run `node scripts/generate-pricing.mjs` to refresh it from LiteLLM's
3
+ // model_prices_and_context_window.json, then paste the output below.
4
+ //
5
+ // reason_per_mtok is set ONLY for models the source prices reasoning as a
6
+ // SEPARATE bucket (Gemini thinking models). OpenAI o-series have no separate
7
+ // reasoning price there, so reasoning is billed once at the output rate.
1
8
  export const DEFAULT_PRICING = {
2
- // ── OpenAI: GPT-5.x ──────────────────────────────────────────────
3
- "gpt-5.5": { input_per_mtok: 5, output_per_mtok: 30 },
4
- "gpt-5.5-pro": { input_per_mtok: 30, output_per_mtok: 180 },
5
- "gpt-5.4": { input_per_mtok: 2.5, output_per_mtok: 15 },
6
- "gpt-5.4-mini": { input_per_mtok: 0.75, output_per_mtok: 4.5 },
7
- "gpt-5.4-nano": { input_per_mtok: 0.2, output_per_mtok: 1.25 },
8
- "gpt-5.4-pro": { input_per_mtok: 30, output_per_mtok: 180 },
9
- "gpt-5.3-codex": { input_per_mtok: 3.5, output_per_mtok: 28 },
10
- // ── OpenAI: GPT-4.x ──────────────────────────────────────────────
9
+ // ── OpenAI: GPT-4.x ──
11
10
  "gpt-4o": { input_per_mtok: 2.5, output_per_mtok: 10, cached_per_mtok: 1.25 },
12
11
  "gpt-4o-mini": { input_per_mtok: 0.15, output_per_mtok: 0.6, cached_per_mtok: 0.075 },
13
12
  "gpt-4.1": { input_per_mtok: 2, output_per_mtok: 8, cached_per_mtok: 0.5 },
14
13
  "gpt-4.1-mini": { input_per_mtok: 0.4, output_per_mtok: 1.6, cached_per_mtok: 0.1 },
15
14
  "gpt-4.1-nano": { input_per_mtok: 0.1, output_per_mtok: 0.4, cached_per_mtok: 0.025 },
16
- // ── OpenAI: O-series reasoning ────────────────────────────────────
17
- "o3": { input_per_mtok: 2, output_per_mtok: 8, reason_per_mtok: 8, cached_per_mtok: 0.5 },
18
- "o3-mini": { input_per_mtok: 1.1, output_per_mtok: 4.4, reason_per_mtok: 4.4, cached_per_mtok: 0.275 },
19
- "o3-pro": { input_per_mtok: 20, output_per_mtok: 80, reason_per_mtok: 80 },
20
- "o4-mini": { input_per_mtok: 1.1, output_per_mtok: 4.4, reason_per_mtok: 4.4, cached_per_mtok: 0.275 },
21
- "o1": { input_per_mtok: 15, output_per_mtok: 60, reason_per_mtok: 60, cached_per_mtok: 7.5 },
22
- "o1-mini": { input_per_mtok: 1.1, output_per_mtok: 4.4, reason_per_mtok: 4.4, cached_per_mtok: 0.55 },
23
- // ── Anthropic: Claude 4.x ─────────────────────────────────────────
24
- "claude-opus-4-7": { input_per_mtok: 5, output_per_mtok: 25, cached_per_mtok: 0.5 },
25
- "claude-opus-4-6": { input_per_mtok: 5, output_per_mtok: 25, cached_per_mtok: 0.5 },
26
- "claude-opus-4-5": { input_per_mtok: 5, output_per_mtok: 25, cached_per_mtok: 0.5 },
27
- "claude-sonnet-4-6": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3 },
28
- "claude-sonnet-4-5": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3 },
29
- "claude-sonnet-4-20250514": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3 },
30
- "claude-opus-4-20250514": { input_per_mtok: 15, output_per_mtok: 75, cached_per_mtok: 1.5 },
31
- "claude-haiku-4-5": { input_per_mtok: 1, output_per_mtok: 5, cached_per_mtok: 0.1 },
32
- "claude-haiku-3-5-20241022": { input_per_mtok: 0.8, output_per_mtok: 4, cached_per_mtok: 0.08 },
33
- "claude-haiku-3": { input_per_mtok: 0.25, output_per_mtok: 1.25, cached_per_mtok: 0.03 },
34
- // ── Google: Gemini 3.x ────────────────────────────────────────────
35
- "gemini-3.1-pro": { input_per_mtok: 2, output_per_mtok: 12 },
36
- "gemini-3.1-flash-lite": { input_per_mtok: 0.25, output_per_mtok: 1.5, cached_per_mtok: 0.025 },
37
- "gemini-3-flash": { input_per_mtok: 0.5, output_per_mtok: 3, cached_per_mtok: 0.05 },
38
- // ── Google: Gemini 2.x ────────────────────────────────────────────
39
- "gemini-2.5-pro": { input_per_mtok: 1.25, output_per_mtok: 10, reason_per_mtok: 10, cached_per_mtok: 0.125 },
40
- "gemini-2.5-flash": { input_per_mtok: 0.3, output_per_mtok: 2.5, reason_per_mtok: 2.5, cached_per_mtok: 0.03 },
41
- "gemini-2.5-flash-lite": { input_per_mtok: 0.1, output_per_mtok: 0.4, cached_per_mtok: 0.01 },
15
+ "gpt-4-turbo": { input_per_mtok: 10, output_per_mtok: 30 },
16
+ // ── OpenAI: GPT-5.x ──
17
+ "gpt-5": { input_per_mtok: 1.25, output_per_mtok: 10, cached_per_mtok: 0.125 },
18
+ "gpt-5-mini": { input_per_mtok: 0.25, output_per_mtok: 2, cached_per_mtok: 0.025 },
19
+ "gpt-5-nano": { input_per_mtok: 0.05, output_per_mtok: 0.4, cached_per_mtok: 0.005 },
20
+ "gpt-5-pro": { input_per_mtok: 15, output_per_mtok: 120 },
21
+ "gpt-5.1": { input_per_mtok: 1.25, output_per_mtok: 10, cached_per_mtok: 0.125 },
22
+ "gpt-5.2": { input_per_mtok: 1.75, output_per_mtok: 14, cached_per_mtok: 0.175 },
23
+ "gpt-5.2-pro": { input_per_mtok: 21, output_per_mtok: 168 },
24
+ "gpt-5.4": { input_per_mtok: 2.5, output_per_mtok: 15, cached_per_mtok: 0.25 },
25
+ "gpt-5.4-mini": { input_per_mtok: 0.75, output_per_mtok: 4.5, cached_per_mtok: 0.075 },
26
+ "gpt-5.4-nano": { input_per_mtok: 0.2, output_per_mtok: 1.25, cached_per_mtok: 0.02 },
27
+ "gpt-5.4-pro": { input_per_mtok: 30, output_per_mtok: 180, cached_per_mtok: 3 },
28
+ "gpt-5.5": { input_per_mtok: 5, output_per_mtok: 30, cached_per_mtok: 0.5 },
29
+ "gpt-5.5-pro": { input_per_mtok: 30, output_per_mtok: 180, cached_per_mtok: 3 },
30
+ // ── OpenAI: o-series (reasoning billed as output — no separate reason rate) ──
31
+ "o1": { input_per_mtok: 15, output_per_mtok: 60, cached_per_mtok: 7.5 },
32
+ "o3": { input_per_mtok: 2, output_per_mtok: 8, cached_per_mtok: 0.5 },
33
+ "o3-mini": { input_per_mtok: 1.1, output_per_mtok: 4.4, cached_per_mtok: 0.55 },
34
+ "o3-pro": { input_per_mtok: 20, output_per_mtok: 80 },
35
+ "o4-mini": { input_per_mtok: 1.1, output_per_mtok: 4.4, cached_per_mtok: 0.275 },
36
+ // ── Anthropic: Claude 3.x / 4.x ──
37
+ "claude-3-haiku-20240307": { input_per_mtok: 0.25, output_per_mtok: 1.25, cached_per_mtok: 0.03, cache_write_per_mtok: 0.3 },
38
+ "claude-3-opus-20240229": { input_per_mtok: 15, output_per_mtok: 75, cached_per_mtok: 1.5, cache_write_per_mtok: 18.75 },
39
+ "claude-3-7-sonnet-20250219": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
40
+ "claude-sonnet-4-20250514": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
41
+ "claude-opus-4-20250514": { input_per_mtok: 15, output_per_mtok: 75, cached_per_mtok: 1.5, cache_write_per_mtok: 18.75 },
42
+ "claude-opus-4-1": { input_per_mtok: 15, output_per_mtok: 75, cached_per_mtok: 1.5, cache_write_per_mtok: 18.75 },
43
+ "claude-sonnet-4-5": { input_per_mtok: 3, output_per_mtok: 15, cached_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
44
+ "claude-haiku-4-5": { input_per_mtok: 1, output_per_mtok: 5, cached_per_mtok: 0.1, cache_write_per_mtok: 1.25 },
45
+ // ── Google: Gemini 2.x / 3.x ──
42
46
  "gemini-2.0-flash": { input_per_mtok: 0.1, output_per_mtok: 0.4, cached_per_mtok: 0.025 },
43
- // ── Cohere ────────────────────────────────────────────────────────
47
+ "gemini-2.0-flash-lite": { input_per_mtok: 0.075, output_per_mtok: 0.3, cached_per_mtok: 0.01875 },
48
+ "gemini-2.5-pro": { input_per_mtok: 1.25, output_per_mtok: 10, cached_per_mtok: 0.125 },
49
+ "gemini-2.5-flash": { input_per_mtok: 0.3, output_per_mtok: 2.5, cached_per_mtok: 0.03, reason_per_mtok: 2.5 },
50
+ "gemini-2.5-flash-lite": { input_per_mtok: 0.1, output_per_mtok: 0.4, cached_per_mtok: 0.01, reason_per_mtok: 0.4 },
51
+ "gemini-3-flash-preview": { input_per_mtok: 0.5, output_per_mtok: 3, cached_per_mtok: 0.05, reason_per_mtok: 3 },
52
+ "gemini-3-pro-preview": { input_per_mtok: 2, output_per_mtok: 12, cached_per_mtok: 0.2 },
53
+ "gemini-3.1-flash-lite": { input_per_mtok: 0.25, output_per_mtok: 1.5, cached_per_mtok: 0.025, reason_per_mtok: 1.5 },
54
+ "gemini-3.1-flash-lite-preview": { input_per_mtok: 0.25, output_per_mtok: 1.5, cached_per_mtok: 0.025, reason_per_mtok: 1.5 },
55
+ "gemini-3.1-pro-preview": { input_per_mtok: 2, output_per_mtok: 12, cached_per_mtok: 0.2 },
56
+ "gemini-3.5-flash": { input_per_mtok: 1.5, output_per_mtok: 9, cached_per_mtok: 0.15, reason_per_mtok: 9 },
57
+ // ── Cohere ──
44
58
  "command-r-plus": { input_per_mtok: 2.5, output_per_mtok: 10 },
45
59
  "command-r": { input_per_mtok: 0.15, output_per_mtok: 0.6 },
60
+ "command-r7b-12-2024": { input_per_mtok: 0.0375, output_per_mtok: 0.15 },
61
+ "command-a-03-2025": { input_per_mtok: 2.5, output_per_mtok: 10 },
46
62
  };
47
63
  export function calculateCost(model, tokens, overrides) {
48
64
  const pricing = findPricing(model, overrides);
49
65
  if (!pricing) {
50
66
  return { cost_input: 0, cost_output: 0, cost_reason: 0, cost_total: 0 };
51
67
  }
52
- const cost_input = (tokens.input / 1_000_000) * pricing.input_per_mtok;
53
- const cost_output = (tokens.output / 1_000_000) * pricing.output_per_mtok;
54
- const cost_reason = tokens.reasoning && pricing.reason_per_mtok
55
- ? (tokens.reasoning / 1_000_000) * pricing.reason_per_mtok
68
+ // Coerce token counts and rates to finite numbers so a stray undefined/NaN
69
+ // (from a mis-shaped provider response or a partial override) can never leak
70
+ // NaN into cost_total and, via JSON, corrupt the segmentation aggregation.
71
+ const inputTok = finite(tokens.input);
72
+ const outputTok = finite(tokens.output);
73
+ const reasoningTok = finite(tokens.reasoning);
74
+ const inputRate = finite(pricing.input_per_mtok);
75
+ const outputRate = finite(pricing.output_per_mtok);
76
+ const reasonRate = finite(pricing.reason_per_mtok);
77
+ // Cache accounting. Contract (verified per provider): `input` is the FULL
78
+ // input count INCLUDING cache-read tokens (OpenAI prompt_tokens, Gemini
79
+ // promptTokenCount, and AI SDK inputTokens all include cache-read; the
80
+ // Anthropic adapter normalizes input_tokens + cache_read to match). So the
81
+ // cache-read portion is a subset of input, billed at the discounted rate;
82
+ // the non-cached remainder at the full input rate. `cacheWrite`
83
+ // (cache-creation) is SEPARATE/additive and billed at the write premium.
84
+ const cacheReadTok = Math.min(Math.max(finite(tokens.cached), 0), inputTok);
85
+ const cacheWriteTok = finite(tokens.cacheWrite);
86
+ const cachedRate = pricing.cached_per_mtok != null ? finite(pricing.cached_per_mtok) : inputRate;
87
+ const writeRate = pricing.cache_write_per_mtok != null ? finite(pricing.cache_write_per_mtok) : inputRate;
88
+ const cost_input = ((inputTok - cacheReadTok) / 1_000_000) * inputRate
89
+ + (cacheReadTok / 1_000_000) * cachedRate
90
+ + (cacheWriteTok / 1_000_000) * writeRate;
91
+ const cost_output = (outputTok / 1_000_000) * outputRate;
92
+ const cost_reason = reasoningTok && reasonRate
93
+ ? (reasoningTok / 1_000_000) * reasonRate
56
94
  : 0;
57
95
  const cost_total = cost_input + cost_output + cost_reason;
58
96
  return { cost_input, cost_output, cost_reason, cost_total };
59
97
  }
98
+ /** Coerce a possibly undefined/NaN value to a finite number (0 otherwise). */
99
+ function finite(n) {
100
+ return typeof n === "number" && Number.isFinite(n) ? n : 0;
101
+ }
60
102
  function findPricing(model, overrides) {
61
103
  // Check overrides first
62
104
  if (overrides?.[model]) {
63
- const base = DEFAULT_PRICING[model];
105
+ // Default missing base fields to 0 so a partial override on an UNKNOWN
106
+ // model (no DEFAULT_PRICING entry) can't leave output_per_mtok undefined
107
+ // and produce NaN cost downstream.
108
+ const base = DEFAULT_PRICING[model] ?? { input_per_mtok: 0, output_per_mtok: 0 };
64
109
  return { ...base, ...overrides[model] };
65
110
  }
66
111
  // Exact match
package/dist/cost.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
package/dist/events.d.ts CHANGED
@@ -28,6 +28,10 @@ export declare function buildFeedbackEvent(feedback: {
28
28
  score?: number;
29
29
  category?: string;
30
30
  comment?: string;
31
+ /** Deployment environment, e.g. "production" — lets dashboards slice feedback like interactions. */
32
+ environment?: string;
33
+ /** Adapter that produced the interaction being rated, e.g. "openai". */
34
+ sdk_adapter?: string;
31
35
  deviceId?: string;
32
36
  }): CountlyEvent;
33
37
  export declare function buildAllEvents(raw: RawExtractionResult, config: ResolvedConfig, context: EventContext): CountlyEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAKnD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAKd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiCD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,CAuGd;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CAuBhB;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CA4BhB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,YAAY,CAgBf;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CAQhB"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAe,MAAM,SAAS,CAAC;AAKhE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAKd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyDD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,CA8Gd;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CAuBhB;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CA4ChB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,YAAY,CAkBf;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,YAAY,GACpB,YAAY,EAAE,CA4BhB"}
package/dist/events.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { SDK_VERSION } from "./version";
1
2
  import { normalizeFinishReason } from "./normalize";
2
3
  import { calculateCost } from "./cost";
3
4
  import { truncateText } from "./session";
@@ -9,9 +10,34 @@ function createTimestamp() {
9
10
  dow: now.getDay(),
10
11
  };
11
12
  }
13
+ /**
14
+ * A string that is itself a serialized JSON object/array (e.g. a
15
+ * `[{role,content}]` messages array the adapter already stringified).
16
+ * Such payloads must be preserved WHOLE — the analytics dashboard renders
17
+ * them as a JSON tree, and slicing one mid-structure corrupts the JSON and
18
+ * forces a raw-text fallback. Cheap first-char gate before the parse.
19
+ */
20
+ function isJsonContainerString(s) {
21
+ const first = s[0];
22
+ if (first !== "{" && first !== "[")
23
+ return false;
24
+ try {
25
+ const v = JSON.parse(s);
26
+ return typeof v === "object" && v !== null;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
12
32
  function makePreview(input, maxLength) {
13
- if (typeof input === "string")
33
+ if (typeof input === "string") {
34
+ // Keep serialized JSON prompts intact so they stay parseable; only
35
+ // free-form text is length-capped.
36
+ const trimmed = input.trim();
37
+ if (isJsonContainerString(trimmed))
38
+ return trimmed;
14
39
  return truncateText(input, maxLength);
40
+ }
15
41
  if (!Array.isArray(input))
16
42
  return input ? truncateText(String(input), maxLength) : undefined;
17
43
  // Filter to user/assistant messages only — drop system and tool roles
@@ -38,6 +64,7 @@ export function buildInteractionEvent(raw, config, context) {
38
64
  input: raw.usage_input,
39
65
  output: raw.usage_output,
40
66
  cached: raw.usage_cache_read,
67
+ cacheWrite: raw.usage_cache_write,
41
68
  reasoning: raw.usage_reasoning,
42
69
  }, config.costModel);
43
70
  const seg = {
@@ -66,8 +93,7 @@ export function buildInteractionEvent(raw, config, context) {
66
93
  seg.agent = context.agent;
67
94
  if (context.requests)
68
95
  seg.requests = context.requests;
69
- if (context.sdk_version)
70
- seg.sdk_version = context.sdk_version;
96
+ seg.sdk_version = context.sdk_version ?? SDK_VERSION;
71
97
  // Adapter-emitted structural metadata (Mastra agents/workflows/steps).
72
98
  if (raw.agent_name)
73
99
  seg.agent_name = raw.agent_name;
@@ -121,6 +147,11 @@ export function buildInteractionEvent(raw, config, context) {
121
147
  // Status
122
148
  if (raw.error)
123
149
  seg.error = raw.error;
150
+ // Tool aggregates are part of the interaction event at EVERY level,
151
+ // including level 0: which tools ran and how many times is an aggregate,
152
+ // non-sensitive fact of the call. Observability levels gate the separate
153
+ // events instead — level >=1 unlocks per-tool [CLY]_llm_tool_used rows,
154
+ // level 2 unlocks [CLY]_llm_tool_usage_parameter argument values.
124
155
  const distinct = Array.from(new Set((raw.tools ?? []).map(t => t.name).filter(Boolean)));
125
156
  if (distinct.length > 0) {
126
157
  seg.tools_used = distinct.join(",");
@@ -180,26 +211,41 @@ export function buildToolParameterEvents(raw, config, context) {
180
211
  return [];
181
212
  const ts = createTimestamp();
182
213
  const events = [];
214
+ const makeParamEvent = (tool, param_name, param_value) => {
215
+ const event = {
216
+ key: "[CLY]_llm_tool_usage_parameter",
217
+ count: 1,
218
+ segmentation: {
219
+ prompt_id: context.prompt_id,
220
+ ...(context.thread_id && { thread_id: context.thread_id }),
221
+ ...(raw.agent_name && { agent_name: raw.agent_name }),
222
+ tool_name: tool.name,
223
+ param_name,
224
+ param_value: typeof param_value === "string" ? param_value : JSON.stringify(param_value),
225
+ },
226
+ ...ts,
227
+ };
228
+ if (raw.deviceId)
229
+ event.deviceId = raw.deviceId;
230
+ return event;
231
+ };
183
232
  for (const tool of raw.tools) {
184
- if (!tool.arguments)
233
+ // Typed Record<string,unknown>, but adapters (e.g. Mastra) may assign a raw
234
+ // span.input of any shape at runtime — treat as unknown and guard below.
235
+ const args = tool.arguments;
236
+ if (args == null || args === "")
185
237
  continue;
186
- for (const [param_name, param_value] of Object.entries(tool.arguments)) {
187
- const event = {
188
- key: "[CLY]_llm_tool_usage_parameter",
189
- count: 1,
190
- segmentation: {
191
- prompt_id: context.prompt_id,
192
- ...(context.thread_id && { thread_id: context.thread_id }),
193
- ...(raw.agent_name && { agent_name: raw.agent_name }),
194
- tool_name: tool.name,
195
- param_name,
196
- param_value: typeof param_value === "string" ? param_value : JSON.stringify(param_value),
197
- },
198
- ...ts,
199
- };
200
- if (raw.deviceId)
201
- event.deviceId = raw.deviceId;
202
- events.push(event);
238
+ // Only named-argument objects iterate to one event per parameter. A bare
239
+ // string/array/other (some adapters pass raw span.input) would make
240
+ // Object.entries emit garbage per character/index, so collapse it into a
241
+ // single "input" parameter instead.
242
+ if (typeof args === "object" && !Array.isArray(args)) {
243
+ for (const [param_name, param_value] of Object.entries(args)) {
244
+ events.push(makeParamEvent(tool, param_name, param_value));
245
+ }
246
+ }
247
+ else {
248
+ events.push(makeParamEvent(tool, "input", args));
203
249
  }
204
250
  }
205
251
  return events;
@@ -215,6 +261,8 @@ export function buildFeedbackEvent(feedback) {
215
261
  ...(feedback.score != null && { score: feedback.score }),
216
262
  ...(feedback.category && { category: feedback.category }),
217
263
  ...(feedback.comment && { comment: feedback.comment }),
264
+ ...(feedback.environment && { environment: feedback.environment }),
265
+ ...(feedback.sdk_adapter && { sdk_adapter: feedback.sdk_adapter }),
218
266
  },
219
267
  ...createTimestamp(),
220
268
  };
@@ -225,10 +273,29 @@ export function buildFeedbackEvent(feedback) {
225
273
  export function buildAllEvents(raw, config, context) {
226
274
  if (config.disabled)
227
275
  return [];
228
- return [
276
+ const events = [
229
277
  buildInteractionEvent(raw, config, context),
230
278
  ...buildToolUsedEvents(raw, config, context),
231
279
  ...buildToolParameterEvents(raw, config, context),
232
280
  ];
281
+ // Hand the correlation key to the app. A throwing user callback must never
282
+ // break tracking, so failures are swallowed (logged in debug mode).
283
+ if (config.onPrompt) {
284
+ try {
285
+ config.onPrompt({
286
+ prompt_id: context.prompt_id,
287
+ ...(context.thread_id && { thread_id: context.thread_id }),
288
+ provider: raw.provider,
289
+ model: raw.model,
290
+ status: raw.status,
291
+ sdk_adapter: context.sdk_adapter,
292
+ });
293
+ }
294
+ catch (err) {
295
+ if (config.debug)
296
+ console.error("[countly-ai] onPrompt callback threw:", err);
297
+ }
298
+ }
299
+ return events;
233
300
  }
234
301
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type CountlyAIConfig } from "./config";
2
+ export interface FeedbackInput {
3
+ /** Correlation key of the interaction being rated — capture it via the `onPrompt` config callback. */
4
+ prompt_id: string;
5
+ thread_id?: string;
6
+ rating: "thumbs_up" | "thumbs_down" | string;
7
+ score?: number;
8
+ category?: string;
9
+ comment?: string;
10
+ /** Overrides the tracker-level sdk_adapter for this one feedback. */
11
+ sdk_adapter?: string;
12
+ deviceId?: string;
13
+ }
14
+ export interface FeedbackTracker {
15
+ /** Records one [CLY]_llm_interaction_feedback event (batched; see flushInterval). */
16
+ track(feedback: FeedbackInput): void;
17
+ /** Sends any buffered feedback immediately. */
18
+ flush(): Promise<void>;
19
+ /** Flushes and stops the tracker. */
20
+ shutdown(): Promise<void>;
21
+ }
22
+ /**
23
+ * Standalone feedback pipeline — feedback usually arrives long after the LLM
24
+ * call returned (a user clicks 👍 minutes later), so it gets its own tracker
25
+ * instead of hanging off a wrapped client.
26
+ *
27
+ * `environment` is stamped from config onto every feedback event so
28
+ * dashboards can slice feedback exactly like interactions.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * let lastPromptId: string | undefined;
33
+ * const client = observeOpenAI(new OpenAI(), {
34
+ * appKey, url,
35
+ * onPrompt: ({ prompt_id }) => { lastPromptId = prompt_id; },
36
+ * });
37
+ * const feedback = createFeedbackTracker({ appKey, url }, { sdk_adapter: "openai" });
38
+ * // ...after the user rates the answer:
39
+ * feedback.track({ prompt_id: lastPromptId!, rating: "thumbs_up" });
40
+ * ```
41
+ */
42
+ export declare function createFeedbackTracker(options: CountlyAIConfig, defaults?: {
43
+ sdk_adapter?: string;
44
+ }): FeedbackTracker;
45
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAI/D,MAAM,WAAW,aAAa;IAC5B,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,KAAK,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,+CAA+C;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,qCAAqC;IACrC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC,eAAe,CAgBjB"}
@@ -0,0 +1,40 @@
1
+ import { resolveConfig } from "./config";
2
+ import { buildFeedbackEvent } from "./events";
3
+ import { createTransport } from "./transport";
4
+ /**
5
+ * Standalone feedback pipeline — feedback usually arrives long after the LLM
6
+ * call returned (a user clicks 👍 minutes later), so it gets its own tracker
7
+ * instead of hanging off a wrapped client.
8
+ *
9
+ * `environment` is stamped from config onto every feedback event so
10
+ * dashboards can slice feedback exactly like interactions.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * let lastPromptId: string | undefined;
15
+ * const client = observeOpenAI(new OpenAI(), {
16
+ * appKey, url,
17
+ * onPrompt: ({ prompt_id }) => { lastPromptId = prompt_id; },
18
+ * });
19
+ * const feedback = createFeedbackTracker({ appKey, url }, { sdk_adapter: "openai" });
20
+ * // ...after the user rates the answer:
21
+ * feedback.track({ prompt_id: lastPromptId!, rating: "thumbs_up" });
22
+ * ```
23
+ */
24
+ export function createFeedbackTracker(options, defaults) {
25
+ const config = resolveConfig(options);
26
+ const transport = createTransport(config);
27
+ return {
28
+ track(feedback) {
29
+ const event = buildFeedbackEvent({
30
+ ...feedback,
31
+ environment: config.environment,
32
+ sdk_adapter: feedback.sdk_adapter ?? defaults?.sdk_adapter,
33
+ });
34
+ transport.enqueue([event]);
35
+ },
36
+ flush: () => transport.flush(),
37
+ shutdown: () => transport.shutdown(),
38
+ };
39
+ }
40
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAwB9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAwB,EACxB,QAAmC;IAEnC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,SAAS,GAAc,eAAe,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;QACL,KAAK,CAAC,QAAuB;YAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC;gBAC/B,GAAG,QAAQ;gBACX,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW;aAC3D,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;QAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;KACrC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  export { resolveConfig } from "./config";
2
- export type { CountlyAIConfig, ResolvedConfig } from "./config";
2
+ export type { CountlyAIConfig, ResolvedConfig, PromptInfo } from "./config";
3
3
  export type { ObservabilityLevel, RawExtractionResult, RawToolCall } from "./types";
4
4
  export { buildAllEvents, buildInteractionEvent, buildToolUsedEvents, buildToolParameterEvents, buildFeedbackEvent, } from "./events";
5
5
  export type { CountlyEvent, EventContext } from "./events";
6
- export { normalizeFinishReason } from "./normalize";
6
+ export { normalizeFinishReason, inferProviderFromModel } from "./normalize";
7
7
  export type { NormalizedFinishReason } from "./normalize";
8
8
  export { calculateCost, DEFAULT_PRICING } from "./cost";
9
9
  export type { ModelPricing, CostModelOverrides, CostResult } from "./cost";
10
10
  export { createTransport } from "./transport";
11
11
  export type { Transport } from "./transport";
12
12
  export { generatePromptId, generateThreadId, truncateText } from "./session";
13
+ export { createFeedbackTracker } from "./feedback";
14
+ export type { FeedbackInput, FeedbackTracker } from "./feedback";
15
+ export { SDK_VERSION } from "./version";
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEhE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE5E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export { resolveConfig } from "./config";
2
2
  export { buildAllEvents, buildInteractionEvent, buildToolUsedEvents, buildToolParameterEvents, buildFeedbackEvent, } from "./events";
3
- export { normalizeFinishReason } from "./normalize";
3
+ export { normalizeFinishReason, inferProviderFromModel } from "./normalize";
4
4
  export { calculateCost, DEFAULT_PRICING } from "./cost";
5
5
  export { createTransport } from "./transport";
6
6
  export { generatePromptId, generateThreadId, truncateText } from "./session";
7
+ export { createFeedbackTracker } from "./feedback";
8
+ export { SDK_VERSION } from "./version";
7
9
  //# 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,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -1,3 +1,11 @@
1
1
  export type NormalizedFinishReason = "stop" | "length" | "tool_calls" | "content_filter" | "error" | "other";
2
+ /**
3
+ * Infer the real model VENDOR from a model id. Framework adapters (LangChain,
4
+ * LlamaIndex) don't know the underlying vendor, so they'd otherwise report the
5
+ * framework name as `provider` — making the provider dimension useless and
6
+ * breaking finish_reason normalization. Prefix-match the well-known families.
7
+ * Returns undefined when the vendor can't be determined.
8
+ */
9
+ export declare function inferProviderFromModel(model: string | undefined): string | undefined;
2
10
  export declare function normalizeFinishReason(raw: string | undefined, provider: string): NormalizedFinishReason;
3
11
  //# sourceMappingURL=normalize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,OAAO,GACP,OAAO,CAAC;AA4CZ,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,sBAAsB,CAaxB"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,OAAO,GACP,OAAO,CAAC;AA4CZ;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAapF;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,GACf,sBAAsB,CAqBxB"}
package/dist/normalize.js CHANGED
@@ -39,22 +39,65 @@ const FINISH_REASON_MAP = {
39
39
  other: "other",
40
40
  },
41
41
  };
42
+ /**
43
+ * Infer the real model VENDOR from a model id. Framework adapters (LangChain,
44
+ * LlamaIndex) don't know the underlying vendor, so they'd otherwise report the
45
+ * framework name as `provider` — making the provider dimension useless and
46
+ * breaking finish_reason normalization. Prefix-match the well-known families.
47
+ * Returns undefined when the vendor can't be determined.
48
+ */
49
+ export function inferProviderFromModel(model) {
50
+ if (!model)
51
+ return undefined;
52
+ const m = model.toLowerCase().split("/").pop() ?? "";
53
+ if (/^(gpt-|o1|o3|o4|chatgpt|davinci|babbage|text-embedding|text-davinci)/.test(m))
54
+ return "openai";
55
+ if (m.startsWith("claude"))
56
+ return "anthropic";
57
+ if (m.startsWith("gemini") || m.startsWith("palm") || m.startsWith("text-bison"))
58
+ return "google";
59
+ if (m.startsWith("command") || m.startsWith("cohere") || m.startsWith("rerank"))
60
+ return "cohere";
61
+ if (m.startsWith("mistral") || m.startsWith("mixtral") || m.startsWith("magistral") || m.startsWith("ministral") || m.startsWith("codestral"))
62
+ return "mistral";
63
+ if (m.startsWith("llama") || m.startsWith("meta-llama"))
64
+ return "meta";
65
+ if (m.startsWith("deepseek"))
66
+ return "deepseek";
67
+ if (m.startsWith("grok"))
68
+ return "xai";
69
+ if (m.startsWith("qwen") || m.startsWith("qwq"))
70
+ return "alibaba";
71
+ return undefined;
72
+ }
42
73
  export function normalizeFinishReason(raw, provider) {
43
74
  if (!raw)
44
75
  return "other";
45
76
  // Extract root provider from dotted/slashed strings: "google.generative-ai" → "google"
46
77
  const root = provider.split(".")[0].split("/")[0].toLowerCase();
47
78
  const providerMap = FINISH_REASON_MAP[root];
79
+ // AI SDK (Vercel) emits hyphenated reasons ("tool-calls") but sets provider to
80
+ // the real vendor, whose table is underscored — so also try the underscored
81
+ // variant against the provider map before falling through.
82
+ const underscored = raw.replace(/-/g, "_");
48
83
  if (providerMap) {
49
- const mapped = providerMap[raw];
50
- if (mapped)
51
- return mapped;
84
+ if (providerMap[raw])
85
+ return providerMap[raw];
86
+ if (providerMap[underscored])
87
+ return providerMap[underscored];
52
88
  }
53
- // Fallback: try common values
54
- if (raw === "stop" || raw === "end_turn" || raw === "STOP" || raw === "COMPLETE")
89
+ // Cross-provider fallback on the normalized (underscored, lowercased) form.
90
+ const norm = underscored.toLowerCase();
91
+ if (norm === "stop" || norm === "end_turn" || norm === "complete")
55
92
  return "stop";
56
- if (raw === "length" || raw === "max_tokens" || raw === "MAX_TOKENS")
93
+ if (norm === "length" || norm === "max_tokens")
57
94
  return "length";
95
+ if (norm === "tool_calls" || norm === "tool_call" || norm === "tool_use" || norm === "function_call")
96
+ return "tool_calls";
97
+ if (norm === "content_filter" || norm === "safety")
98
+ return "content_filter";
99
+ if (norm === "error")
100
+ return "error";
58
101
  return "other";
59
102
  }
60
103
  //# sourceMappingURL=normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,MAAM,iBAAiB,GAA2D;IAChF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,YAAY;KAC5B;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,MAAM;KACtB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,gBAAgB;QAC5B,SAAS,EAAE,gBAAgB;QAC3B,kBAAkB,EAAE,gBAAgB;QACpC,IAAI,EAAE,gBAAgB;QACtB,uBAAuB,EAAE,OAAO;QAChC,yBAAyB,EAAE,OAAO;KACnC;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,OAAO;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,YAAY;QAC1B,gBAAgB,EAAE,gBAAgB;QAClC,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACf;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,GAAuB,EACvB,QAAgB;IAEhB,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IACzB,uFAAuF;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IACD,8BAA8B;IAC9B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAChG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IACtF,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,MAAM,iBAAiB,GAA2D;IAChF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,YAAY;KAC5B;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,MAAM;KACtB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,gBAAgB;QAC5B,SAAS,EAAE,gBAAgB;QAC3B,kBAAkB,EAAE,gBAAgB;QACpC,IAAI,EAAE,gBAAgB;QACtB,uBAAuB,EAAE,OAAO;QAChC,yBAAyB,EAAE,OAAO;KACnC;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,OAAO;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,YAAY;QAC1B,gBAAgB,EAAE,gBAAgB;QAClC,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;KACf;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,sEAAsE,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpG,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClG,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjG,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAChK,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC;IACvE,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAChD,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAuB,EACvB,QAAgB;IAEhB,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IACzB,uFAAuF;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,4EAA4E;IAC5E,2DAA2D;IAC3D,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,GAAG,CAAC;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,WAAW,CAAC;YAAE,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IACD,4EAA4E;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACjF,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,YAAY,CAAC;IAC1H,IAAI,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IAC5E,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -7,7 +7,6 @@ export interface Transport {
7
7
  prompt_id: string;
8
8
  }): void;
9
9
  reportError(error: Error | string, raw: RawExtractionResult): void;
10
- reportUserData(raw: RawExtractionResult): void;
11
10
  flush(): Promise<void>;
12
11
  shutdown(): Promise<void>;
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnE,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAgBD,uCAAuC;AACvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAqMrE;AAMD,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQnD;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAQjE"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAeD,uCAAuC;AACvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CA4MrE;AAMD,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQnD;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAQjE"}
package/dist/transport.js CHANGED
@@ -3,7 +3,6 @@ const noopTransport = {
3
3
  enqueue() { },
4
4
  reportTrace() { },
5
5
  reportError() { },
6
- reportUserData() { },
7
6
  async flush() { },
8
7
  async shutdown() { },
9
8
  };
@@ -20,6 +19,13 @@ export function createHttpTransport(config) {
20
19
  const maxDeadLetterSize = 1000;
21
20
  // Per-event device_id storage (WeakMap so GC-friendly)
22
21
  const eventDeviceIds = new WeakMap();
22
+ // In-flight APM/crash requests, tracked so shutdown() can await them instead
23
+ // of losing the final traces/errors when the process exits.
24
+ const pending = new Set();
25
+ function track(p) {
26
+ const wrapped = p.catch(() => { }).finally(() => pending.delete(wrapped));
27
+ pending.add(wrapped);
28
+ }
23
29
  // Process-level UUID, computed once
24
30
  const processUuid = crypto.randomUUID();
25
31
  // Resolve device_id for non-event calls (trace/error)
@@ -169,11 +175,11 @@ export function createHttpTransport(config) {
169
175
  device_id: deviceId,
170
176
  apm: JSON.stringify(trace),
171
177
  });
172
- fetch(`${config.url}/i`, {
178
+ track(fetch(`${config.url}/i`, {
173
179
  method: "POST",
174
180
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
175
181
  body: body.toString(),
176
- }).catch(() => { });
182
+ }));
177
183
  },
178
184
  reportError(error, raw) {
179
185
  if (!config.trackErrors)
@@ -194,14 +200,11 @@ export function createHttpTransport(config) {
194
200
  device_id: deviceId,
195
201
  crash: JSON.stringify(crash),
196
202
  });
197
- fetch(`${config.url}/i`, {
203
+ track(fetch(`${config.url}/i`, {
198
204
  method: "POST",
199
205
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
200
206
  body: body.toString(),
201
- }).catch(() => { });
202
- },
203
- reportUserData() {
204
- // HTTP transport cannot aggregate user data without SDK
207
+ }));
205
208
  },
206
209
  flush,
207
210
  async shutdown() {
@@ -211,6 +214,8 @@ export function createHttpTransport(config) {
211
214
  timer = null;
212
215
  }
213
216
  await flush();
217
+ // Await any in-flight APM/crash requests so the final traces aren't lost.
218
+ await Promise.allSettled([...pending]);
214
219
  },
215
220
  };
216
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** SDK version emitted as `sdk_version` on every interaction event. */
2
+ export declare const SDK_VERSION: string;
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AASA,uEAAuE;AACvE,eAAO,MAAM,WAAW,EAAE,MAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ // The version is read straight from package.json — the single source of
2
+ // truth — instead of being duplicated or code-generated. The self-referencing
3
+ // specifier (rather than a relative "../package.json") keeps the import
4
+ // outside tsc's rootDir so nothing extra is emitted to dist; it resolves at
5
+ // runtime via the "./package.json" entry in the exports map, which works in
6
+ // Node ESM (self-reference) and in bundlers (package.json ships with the
7
+ // published tarball).
8
+ import pkg from "@countly/ai-sdk-core/package.json" with { type: "json" };
9
+ /** SDK version emitted as `sdk_version` on every interaction event. */
10
+ export const SDK_VERSION = pkg.version;
11
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,sBAAsB;AACtB,OAAO,GAAG,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1E,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAW,GAAG,CAAC,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@countly/ai-sdk-core",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Core utilities for Countly AI SDK",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
8
  "import": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts"
10
- }
10
+ },
11
+ "./package.json": "./package.json"
11
12
  },
12
13
  "files": [
13
14
  "dist"