@countly/ai-sdk-langchain 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 +55 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +19 -6
- package/dist/adapter.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -64,6 +64,61 @@ await handler.flush(); // send buffered events
|
|
|
64
64
|
await handler.shutdown(); // flush + stop the transport
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
## Caller-supplied prompt_id
|
|
68
|
+
|
|
69
|
+
By default every tracked LLM call gets a freshly generated `prompt_id`. If you already mint your own prompt identifier upstream (e.g. a request-scoped id shared across services), supply it via the `getPromptId` config callback and the adapter will stamp it on every `[CLY]_llm_interaction` event instead:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
73
|
+
|
|
74
|
+
const promptStore = new AsyncLocalStorage<{ promptId: string }>();
|
|
75
|
+
|
|
76
|
+
const handler = new CountlyCallbackHandler({
|
|
77
|
+
appKey: "YOUR_APP_KEY",
|
|
78
|
+
url: "https://your-countly-server.com",
|
|
79
|
+
getPromptId: () => promptStore.getStore()?.promptId, // return undefined to fall back to a generated id
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// Resolved per-call: returning a value pins prompt_id; returning undefined restores default behavior.
|
|
83
|
+
promptStore.run({ promptId: "chat-req-42" }, () =>
|
|
84
|
+
chain.invoke(input, { callbacks: [handler] }),
|
|
85
|
+
);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`getPromptId` is called once per LLM interaction (both success and error paths). Returning `undefined` is identical to not supplying it at all. Because the same `prompt_id` flows through to feedback correlation below, a caller-supplied id lets you link an interaction to feedback without threading the generated id back through your app.
|
|
89
|
+
|
|
90
|
+
## Feedback
|
|
91
|
+
|
|
92
|
+
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):
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { CountlyCallbackHandler, createFeedbackTracker, type PromptInfo } from "@countly/ai-sdk-langchain";
|
|
96
|
+
|
|
97
|
+
const countly = { appKey: "YOUR_APP_KEY", url: "https://your-countly-server.com" };
|
|
98
|
+
|
|
99
|
+
let lastPrompt: PromptInfo | undefined;
|
|
100
|
+
const handler = new CountlyCallbackHandler({
|
|
101
|
+
...countly,
|
|
102
|
+
onPrompt: (info) => { lastPrompt = info; }, // fires after every tracked LLM call
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const feedback = createFeedbackTracker(countly, { sdk_adapter: "langchain" });
|
|
106
|
+
|
|
107
|
+
const result = await chain.invoke(input, { callbacks: [handler] });
|
|
108
|
+
|
|
109
|
+
// ...later, when the user rates the answer:
|
|
110
|
+
feedback.track({
|
|
111
|
+
prompt_id: lastPrompt!.prompt_id,
|
|
112
|
+
rating: "thumbs_up", // or "thumbs_down", or any custom string
|
|
113
|
+
score: 0.9, // optional 0-1 numeric score
|
|
114
|
+
category: "helpful", // optional: hallucination, irrelevant, harmful, ...
|
|
115
|
+
comment: "Great answer", // optional free-form text
|
|
116
|
+
deviceId: user.id, // attribute to the same user as the interaction
|
|
117
|
+
});
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
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.
|
|
121
|
+
|
|
67
122
|
## Full documentation
|
|
68
123
|
|
|
69
124
|
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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,eAAe,EAIrB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,YAAY,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,cAAc,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,eAAe,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,eAAe,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAkBD,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,uBAAuB;IAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;gBAE/C,UAAU,EAAE,eAAe;IAKvC,cAAc,CACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAYP,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,eAAe,EAIrB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,YAAY,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,cAAc,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,eAAe,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,eAAe,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAkBD,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,uBAAuB;IAEpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;gBAE/C,UAAU,EAAE,eAAe;IAKvC,cAAc,CACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IAYP,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA4D9C,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA2B/C,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ9D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASlD,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhD,iCAAiC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,0DAA0D;IACpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
package/dist/adapter.js
CHANGED
|
@@ -26,6 +26,15 @@ export class CountlyCallbackHandler {
|
|
|
26
26
|
const latency = run ? now - run.startTime : 0;
|
|
27
27
|
const tokenUsage = output?.llmOutput?.tokenUsage ?? {};
|
|
28
28
|
const generation = output?.generations?.[0]?.[0];
|
|
29
|
+
// Standardized cross-provider token breakdown. LangChain attaches a
|
|
30
|
+
// `usage_metadata` (UsageMetadata) to the AIMessage with an
|
|
31
|
+
// `input_token_details` breakdown that carries `cache_read`/`cache_creation`
|
|
32
|
+
// — the legacy `llmOutput.tokenUsage` aggregate has no cache detail. Its
|
|
33
|
+
// `input_tokens` is the SUM of all input token types (cache_read included),
|
|
34
|
+
// so cache-read stays a subset of input and the cost contract holds.
|
|
35
|
+
const usageMeta = generation?.message?.usage_metadata;
|
|
36
|
+
const cacheRead = usageMeta?.input_token_details?.cache_read;
|
|
37
|
+
const cacheWrite = usageMeta?.input_token_details?.cache_creation;
|
|
29
38
|
// Provider-specific orphan fields → metadata bag.
|
|
30
39
|
const meta = {};
|
|
31
40
|
if (run?.tags && run.tags.length > 0)
|
|
@@ -44,26 +53,30 @@ export class CountlyCallbackHandler {
|
|
|
44
53
|
// Report the real vendor (openai/anthropic/…) inferred from the model id,
|
|
45
54
|
// falling back to the framework name only when the vendor is unknown.
|
|
46
55
|
provider: inferProviderFromModel(model) ?? "langchain",
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
56
|
+
// Prefer the legacy aggregate (preserves existing behavior); fall back to
|
|
57
|
+
// usage_metadata so vendors that only populate it (e.g. Anthropic via
|
|
58
|
+
// LangChain) still report token counts consistent with the cache detail.
|
|
59
|
+
usage_input: tokenUsage.promptTokens ?? usageMeta?.input_tokens ?? 0,
|
|
60
|
+
usage_output: tokenUsage.completionTokens ?? usageMeta?.output_tokens ?? 0,
|
|
61
|
+
usage_total: tokenUsage.totalTokens ?? usageMeta?.total_tokens ?? 0,
|
|
50
62
|
finish_reason: generation?.generationInfo?.finish_reason,
|
|
51
63
|
text_input: run?.input,
|
|
52
64
|
text_output: generation?.text,
|
|
53
65
|
latency_total: latency,
|
|
54
66
|
status: "success",
|
|
67
|
+
...(cacheRead != null && { usage_cache_read: cacheRead }),
|
|
68
|
+
...(cacheWrite != null && { usage_cache_write: cacheWrite }),
|
|
55
69
|
// Trace identity: LangChain runId is the per-call trace identifier; parentRunId hierarchies into agent chains.
|
|
56
70
|
trace_id: runId,
|
|
57
71
|
span_id: runId,
|
|
58
72
|
...(run?.parentRunId && { parent_span_id: run.parentRunId }),
|
|
59
73
|
...(Object.keys(meta).length > 0 && { provider_metadata: meta }),
|
|
60
74
|
};
|
|
61
|
-
const promptId = generatePromptId();
|
|
75
|
+
const promptId = this.config.getPromptId?.() ?? generatePromptId();
|
|
62
76
|
const context = { prompt_id: promptId, sdk_adapter: "langchain" };
|
|
63
77
|
const events = buildAllEvents(raw, this.config, context);
|
|
64
78
|
this.transport.enqueue(events);
|
|
65
79
|
this.transport.reportTrace(raw, context);
|
|
66
|
-
this.transport.reportUserData(raw);
|
|
67
80
|
this.llmRuns.delete(runId);
|
|
68
81
|
}
|
|
69
82
|
handleLLMError(err, runId) {
|
|
@@ -82,7 +95,7 @@ export class CountlyCallbackHandler {
|
|
|
82
95
|
status: "error",
|
|
83
96
|
error: err.message,
|
|
84
97
|
};
|
|
85
|
-
const promptId = generatePromptId();
|
|
98
|
+
const promptId = this.config.getPromptId?.() ?? generatePromptId();
|
|
86
99
|
const context = { prompt_id: promptId, sdk_adapter: "langchain" };
|
|
87
100
|
const events = buildAllEvents(raw, this.config, context);
|
|
88
101
|
this.transport.enqueue(events);
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,sBAAsB,GAKvB,MAAM,sBAAsB,CAAC;AAgC9B,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,mBAAmB,CAAC;IAEnB,MAAM,CAAiB;IACvB,SAAS,CAAY;IACrB,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE3D,YAAY,UAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,cAAc,CACZ,GAAQ,EACR,OAAiB,EACjB,KAAa,EACb,WAAoB,EACpB,YAAsC,EACtC,IAAe,EACf,QAAkC,EAClC,OAAgB;QAEhB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,SAAS;YAC7D,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACnB,WAAW;YACX,IAAI;YACJ,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAAW,EAAE,KAAa;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,MAAM,EAAE,SAAS,EAAE,UAAU,IAAI,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjD,kDAAkD;QAClD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3D,IAAI,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QACxF,IAAI,GAAG,EAAE,OAAO;YAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QAC9C,IAAI,UAAU,EAAE,cAAc;YAAE,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC;QACjF,IAAI,MAAM,EAAE,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtG,MAAM,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,GAAG,EAAE,KAAK,IAAI,SAAS,CAAC;QACtE,MAAM,GAAG,GAAwB;YAC/B,KAAK;YACL,0EAA0E;YAC1E,sEAAsE;YACtE,QAAQ,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAAI,WAAW;YACtD,WAAW,EAAE,UAAU,CAAC,YAAY,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,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,2 +1,7 @@
|
|
|
1
1
|
export { CountlyCallbackHandler } from "./adapter";
|
|
2
|
+
// Feedback pipeline — re-exported from core so user feedback (thumbs up/down,
|
|
3
|
+
// ratings, comments) can be wired without importing @countly/ai-sdk-core
|
|
4
|
+
// directly. Correlate via the `onPrompt` config callback, which exposes the
|
|
5
|
+
// `prompt_id` stamped on every `[CLY]_llm_interaction` event.
|
|
6
|
+
export { createFeedbackTracker } from "@countly/ai-sdk-core";
|
|
2
7
|
//# 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,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,8DAA8D;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@countly/ai-sdk-langchain",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Countly AI observability adapter for LangChain",
|
|
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.
|
|
19
|
+
"@countly/ai-sdk-core": "0.0.4"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@langchain/core": ">=0.3.0"
|