@countly/ai-sdk-cohere 0.0.3

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 ADDED
@@ -0,0 +1,71 @@
1
+ # @countly/ai-sdk-cohere
2
+
3
+ > Countly AI observability adapter for the [Cohere TypeScript SDK](https://github.com/cohere-ai/cohere-typescript).
4
+
5
+ Part of the [Countly AI SDK](https://github.com/Countly/countly-ai-sdk) — provider-agnostic LLM observability for every AI stack.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @countly/ai-sdk-cohere
11
+ ```
12
+
13
+ `@countly/ai-sdk-core` is pulled in automatically.
14
+
15
+ ## Peer dependency
16
+
17
+ ```
18
+ cohere-ai >= 7.0.0
19
+ ```
20
+
21
+ ## Quick Start (v2 API)
22
+
23
+ ```typescript
24
+ import { CohereClient } from "cohere-ai";
25
+ import { observeCohere } from "@countly/ai-sdk-cohere";
26
+ import { AsyncLocalStorage } from "node:async_hooks";
27
+
28
+ const userStore = new AsyncLocalStorage<{ userId: string }>();
29
+
30
+ app.use((req, res, next) => {
31
+ userStore.run({ userId: req.user.id }, next);
32
+ });
33
+
34
+ const cohere = observeCohere(new CohereClient({ token: "..." }), {
35
+ appKey: "YOUR_APP_KEY",
36
+ url: "https://your-countly-server.com",
37
+ getDeviceId: () => userStore.getStore()?.userId,
38
+ });
39
+
40
+ const response = await cohere.v2.chat({
41
+ model: "command-r-plus",
42
+ messages: [{ role: "user", content: "Hello" }],
43
+ });
44
+ ```
45
+
46
+ ## v1 API
47
+
48
+ ```typescript
49
+ const response = await cohere.chat({
50
+ model: "command-r",
51
+ message: "Hello",
52
+ });
53
+ ```
54
+
55
+ ## What's captured
56
+
57
+ - Token usage (`input_tokens`, `output_tokens`) — handles both v1 (`meta.tokens`) and v2 (`usage.tokens`) response shapes
58
+ - Cost (computed from model pricing)
59
+ - Latency
60
+ - Finish reason normalized from `COMPLETE`, `MAX_TOKENS`, `STOP_SEQUENCE`, `TOOL_CALL`, `ERROR`
61
+ - Tool call extraction (function and legacy formats)
62
+ - Error tracking with categorization
63
+ - APM traces, per-user aggregation
64
+
65
+ ## Full documentation
66
+
67
+ 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).
68
+
69
+ ## License
70
+
71
+ MIT
@@ -0,0 +1,5 @@
1
+ import { type CountlyAIConfig } from "@countly/ai-sdk-core";
2
+ export interface CountlyCohereOptions extends CountlyAIConfig {
3
+ }
4
+ export declare function observeCohere<T>(client: T, options: CountlyAIConfig): T;
5
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AA6LhE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,CAqBvE"}
@@ -0,0 +1,180 @@
1
+ import { resolveConfig, createTransport, buildAllEvents, generatePromptId, } from "@countly/ai-sdk-core";
2
+ function extractTextInput(requestParams) {
3
+ // V2: requestParams.messages (array of {role, content})
4
+ const messages = requestParams?.messages;
5
+ if (Array.isArray(messages)) {
6
+ for (let i = messages.length - 1; i >= 0; i--) {
7
+ const msg = messages[i];
8
+ if (msg?.role === "system" || msg?.role === "tool")
9
+ continue;
10
+ if (typeof msg?.content === "string")
11
+ return msg.content;
12
+ }
13
+ return undefined;
14
+ }
15
+ // V1: requestParams.message (string)
16
+ if (typeof requestParams?.message === "string")
17
+ return requestParams.message;
18
+ return undefined;
19
+ }
20
+ function extractFromResponse(response, requestParams, latency) {
21
+ const model = requestParams?.model ?? "command";
22
+ const usage = response?.usage;
23
+ // V2: response.usage.tokens | V1: response.meta.tokens
24
+ const v2Tokens = usage?.tokens;
25
+ const v1Tokens = response?.meta?.tokens;
26
+ const tokens = v2Tokens ?? v1Tokens;
27
+ const tokenInput = tokens?.inputTokens ?? 0;
28
+ const tokenOutput = tokens?.outputTokens ?? 0;
29
+ const tokenTotal = tokenInput + tokenOutput;
30
+ const finishReason = response?.finishReason;
31
+ // Extract tool calls — V2: response.message.toolCalls | V1: response.toolCalls
32
+ const tools = [];
33
+ const rawToolCalls = response?.message?.toolCalls ?? response?.toolCalls;
34
+ if (rawToolCalls) {
35
+ for (const toolCall of rawToolCalls) {
36
+ tools.push({
37
+ name: toolCall.function?.name ?? toolCall.name ?? "unknown",
38
+ type: "function_call",
39
+ arguments: toolCall.function?.arguments
40
+ ? typeof toolCall.function.arguments === "string"
41
+ ? JSON.parse(toolCall.function.arguments)
42
+ : toolCall.function.arguments
43
+ : toolCall.parameters,
44
+ });
45
+ }
46
+ }
47
+ // Extract text output — V2: response.message.content[] | V1: response.text
48
+ let textOutput;
49
+ if (response?.message?.content) {
50
+ const content = response.message.content;
51
+ if (Array.isArray(content) && content.length > 0 && content[0]?.text) {
52
+ textOutput = content[0].text;
53
+ }
54
+ else if (typeof content === "string") {
55
+ textOutput = content;
56
+ }
57
+ }
58
+ else if (typeof response?.text === "string") {
59
+ textOutput = response.text;
60
+ }
61
+ // Extract config params from request (Cohere SDK uses camelCase)
62
+ const configTemperature = requestParams?.temperature;
63
+ const configTopP = requestParams?.p;
64
+ const configMaxTokens = requestParams?.maxTokens ?? requestParams?.max_tokens;
65
+ const configFrequencyPenalty = requestParams?.frequencyPenalty ?? requestParams?.frequency_penalty;
66
+ const configPresencePenalty = requestParams?.presencePenalty ?? requestParams?.presence_penalty;
67
+ // Provider-specific orphan fields → metadata bag.
68
+ const meta = {};
69
+ const r = response;
70
+ if (r?.toolPlan ?? r?.tool_plan)
71
+ meta.tool_plan = r.toolPlan ?? r.tool_plan;
72
+ if (r?.citations)
73
+ meta.citations = r.citations;
74
+ if (r?.documents)
75
+ meta.documents = r.documents;
76
+ if (r?.searchQueries)
77
+ meta.search_queries = r.searchQueries;
78
+ if (r?.searchResults)
79
+ meta.search_results = r.searchResults;
80
+ if (r?.isSearchRequired != null)
81
+ meta.is_search_required = r.isSearchRequired;
82
+ if (response?.meta?.billedUnits)
83
+ meta.billed_units = response.meta.billedUnits;
84
+ if (response?.meta?.apiVersion)
85
+ meta.api_version = response.meta.apiVersion;
86
+ const responseId = r?.id ?? r?.responseId ?? r?.generationId ?? r?.message?.id;
87
+ return {
88
+ model: model,
89
+ model_requested: requestParams?.model,
90
+ provider: "cohere",
91
+ usage_input: tokenInput,
92
+ usage_output: tokenOutput,
93
+ usage_total: tokenTotal,
94
+ ...(finishReason && { finish_reason: finishReason }),
95
+ ...(tools.length > 0 && { tools }),
96
+ ...(textOutput && { text_output: textOutput }),
97
+ latency_total: latency,
98
+ ...(configTemperature != null && { config_temperature: configTemperature }),
99
+ ...(configTopP != null && { config_top_p: configTopP }),
100
+ ...(configMaxTokens != null && { config_max_tokens: configMaxTokens }),
101
+ ...(configFrequencyPenalty != null && { config_frequency_penalty: configFrequencyPenalty }),
102
+ ...(configPresencePenalty != null && { config_presence_penalty: configPresencePenalty }),
103
+ status: "success",
104
+ ...(responseId && { response_id: String(responseId) }),
105
+ ...(Object.keys(meta).length > 0 && { provider_metadata: meta }),
106
+ };
107
+ }
108
+ function createChatProxy(chatFn, config, transport, defaultModel) {
109
+ return async function (...args) {
110
+ const requestParams = args[0];
111
+ const promptId = generatePromptId();
112
+ const eventContext = { prompt_id: promptId, sdk_adapter: "cohere" };
113
+ const start = performance.now();
114
+ const textInput = extractTextInput(requestParams);
115
+ try {
116
+ const response = await chatFn.apply(this, args);
117
+ const latency = performance.now() - start;
118
+ const raw = extractFromResponse(response, { ...requestParams, model: requestParams?.model ?? defaultModel }, latency);
119
+ if (config.observabilityLevel === 2 && textInput) {
120
+ raw.text_input = textInput;
121
+ }
122
+ const events = buildAllEvents(raw, config, eventContext);
123
+ transport.enqueue(events);
124
+ transport.reportTrace(raw, eventContext);
125
+ transport.reportUserData(raw);
126
+ return response;
127
+ }
128
+ catch (err) {
129
+ const latency = performance.now() - start;
130
+ const errorRaw = {
131
+ model: requestParams?.model ?? defaultModel,
132
+ model_requested: requestParams?.model,
133
+ provider: "cohere",
134
+ usage_input: 0,
135
+ usage_output: 0,
136
+ usage_total: 0,
137
+ latency_total: latency,
138
+ status: "error",
139
+ error: err instanceof Error ? err.message : String(err),
140
+ };
141
+ if (config.observabilityLevel === 2 && textInput) {
142
+ errorRaw.text_input = textInput;
143
+ }
144
+ const events = buildAllEvents(errorRaw, config, eventContext);
145
+ transport.enqueue(events);
146
+ transport.reportError(err instanceof Error ? err : String(err), errorRaw);
147
+ throw err;
148
+ }
149
+ };
150
+ }
151
+ function createV2Proxy(v2, config, transport) {
152
+ return new Proxy(v2, {
153
+ get(target, prop, receiver) {
154
+ const value = Reflect.get(target, prop, receiver);
155
+ if (prop === "chat" && typeof value === "function") {
156
+ return createChatProxy(value, config, transport, "command");
157
+ }
158
+ return value;
159
+ },
160
+ });
161
+ }
162
+ export function observeCohere(client, options) {
163
+ const config = resolveConfig(options);
164
+ const transport = createTransport(config);
165
+ if (config.disabled)
166
+ return client;
167
+ return new Proxy(client, {
168
+ get(target, prop, receiver) {
169
+ const value = Reflect.get(target, prop, receiver);
170
+ if (prop === "chat" && typeof value === "function") {
171
+ return createChatProxy(value, config, transport, "command");
172
+ }
173
+ if (prop === "v2" && value != null && typeof value === "object") {
174
+ return createV2Proxy(value, config, transport);
175
+ }
176
+ return value;
177
+ },
178
+ });
179
+ }
180
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { observeCohere } from "./adapter";
2
+ export type { CountlyCohereOptions } from "./adapter";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { observeCohere } from "./adapter";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@countly/ai-sdk-cohere",
3
+ "version": "0.0.3",
4
+ "description": "Countly AI observability adapter for Cohere SDK",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js",
9
+ "types": "./dist/index.d.ts"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "dependencies": {
19
+ "@countly/ai-sdk-core": "0.0.3"
20
+ },
21
+ "peerDependencies": {
22
+ "cohere-ai": ">=7.0.0"
23
+ },
24
+ "peerDependenciesMeta": {
25
+ "cohere-ai": {
26
+ "optional": false
27
+ }
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^5.8.3",
31
+ "@countly/ai-sdk-tsconfig": "0.0.0"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc --project tsconfig.build.json",
35
+ "dev": "tsc --project tsconfig.build.json --watch",
36
+ "lint": "tsc --noEmit",
37
+ "test": "vitest run"
38
+ }
39
+ }