@countly/ai-sdk-llamaindex 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 +69 -0
- package/dist/adapter.d.ts +80 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +212 -0
- package/dist/adapter.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @countly/ai-sdk-llamaindex
|
|
2
|
+
|
|
3
|
+
> Countly AI observability adapter for [LlamaIndex.TS](https://github.com/run-llama/LlamaIndexTS).
|
|
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-llamaindex
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`@countly/ai-sdk-core` is pulled in automatically.
|
|
14
|
+
|
|
15
|
+
## Peer dependency
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
llamaindex >= 0.8.0
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { Settings } from "llamaindex";
|
|
25
|
+
import { CountlyLlamaIndexTracer } from "@countly/ai-sdk-llamaindex";
|
|
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 tracer = new CountlyLlamaIndexTracer({
|
|
35
|
+
appKey: "YOUR_APP_KEY",
|
|
36
|
+
url: "https://your-countly-server.com",
|
|
37
|
+
getDeviceId: () => userStore.getStore()?.userId,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Attach to LlamaIndex's callback manager
|
|
41
|
+
tracer.register(Settings.callbackManager);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The tracer listens to `llm-start`, `llm-end`, `llm-tool-call`, and `llm-tool-result` events on the dispatcher.
|
|
45
|
+
|
|
46
|
+
## What's captured
|
|
47
|
+
|
|
48
|
+
- LLM start/end lifecycle (latency, tokens, model) — supports both snake_case and camelCase token fields
|
|
49
|
+
- Tool call lifecycle (name, arguments, status, latency)
|
|
50
|
+
- Multiple event format support across LlamaIndex versions
|
|
51
|
+
- Concurrent call tracking
|
|
52
|
+
- Error tracking with categorization
|
|
53
|
+
- Per-user aggregation
|
|
54
|
+
|
|
55
|
+
## Flush before shutdown
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
await tracer.flush(); // send buffered events
|
|
59
|
+
await tracer.shutdown(); // flush + stop the transport
|
|
60
|
+
tracer.unregister(Settings.callbackManager); // detach handlers
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Full documentation
|
|
64
|
+
|
|
65
|
+
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).
|
|
66
|
+
|
|
67
|
+
## License
|
|
68
|
+
|
|
69
|
+
MIT
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type CountlyAIConfig } from "@countly/ai-sdk-core";
|
|
2
|
+
/**
|
|
3
|
+
* Mirrors `LlamaIndexCustomEvent<T>` — a CustomEvent whose payload
|
|
4
|
+
* lives in `.detail`.
|
|
5
|
+
*/
|
|
6
|
+
interface LlamaIndexCustomEvent<T = unknown> {
|
|
7
|
+
type: string;
|
|
8
|
+
detail: T;
|
|
9
|
+
reason?: unknown;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Minimal CallbackManager interface (subset of the real one).
|
|
13
|
+
*/
|
|
14
|
+
interface CallbackManager {
|
|
15
|
+
on(event: string, handler: (event: LlamaIndexCustomEvent<any>) => void): CallbackManager;
|
|
16
|
+
off(event: string, handler: (event: LlamaIndexCustomEvent<any>) => void): CallbackManager;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Countly AI observability integration for LlamaIndex.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { Settings } from "llamaindex";
|
|
24
|
+
* import { CountlyLlamaIndexTracer } from "@countly/ai-sdk-llamaindex";
|
|
25
|
+
*
|
|
26
|
+
* const tracer = new CountlyLlamaIndexTracer({ appKey: "…", url: "…" });
|
|
27
|
+
* tracer.register(Settings.callbackManager);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class CountlyLlamaIndexTracer {
|
|
31
|
+
private readonly config;
|
|
32
|
+
private readonly transport;
|
|
33
|
+
/** Maps LLM call id → start info for latency tracking */
|
|
34
|
+
private readonly llmCalls;
|
|
35
|
+
/** Accumulates tool calls between llm-start and llm-end */
|
|
36
|
+
private readonly pendingTools;
|
|
37
|
+
private readonly completedTools;
|
|
38
|
+
readonly handleLLMStart: (event: LlamaIndexCustomEvent<any>) => void;
|
|
39
|
+
readonly handleLLMEnd: (event: LlamaIndexCustomEvent<any>) => void;
|
|
40
|
+
readonly handleToolCall: (event: LlamaIndexCustomEvent<any>) => void;
|
|
41
|
+
readonly handleToolResult: (event: LlamaIndexCustomEvent<any>) => void;
|
|
42
|
+
constructor(userConfig: CountlyAIConfig);
|
|
43
|
+
/**
|
|
44
|
+
* Register all handlers on the given CallbackManager.
|
|
45
|
+
* Typically: `tracer.register(Settings.callbackManager)`
|
|
46
|
+
*/
|
|
47
|
+
register(callbackManager: CallbackManager): void;
|
|
48
|
+
/**
|
|
49
|
+
* Unregister all handlers from the given CallbackManager.
|
|
50
|
+
*/
|
|
51
|
+
unregister(callbackManager: CallbackManager): void;
|
|
52
|
+
/** Flush any buffered events. */
|
|
53
|
+
flush(): Promise<void>;
|
|
54
|
+
/** Shut down the transport, flushing remaining events. */
|
|
55
|
+
shutdown(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* llm-start: { id: UUID, messages: ChatMessage[] }
|
|
58
|
+
*/
|
|
59
|
+
private _onLLMStart;
|
|
60
|
+
/**
|
|
61
|
+
* llm-end: { id: UUID, response: ChatResponse }
|
|
62
|
+
* ChatResponse = { message: ChatMessage, raw: object | null }
|
|
63
|
+
* Tokens live in raw.usage (provider-specific).
|
|
64
|
+
*/
|
|
65
|
+
private _onLLMEnd;
|
|
66
|
+
/**
|
|
67
|
+
* llm-tool-call: { toolCall: ToolCall }
|
|
68
|
+
* ToolCall = { name: string, input: JSONObject, id: string }
|
|
69
|
+
*/
|
|
70
|
+
private _onToolCall;
|
|
71
|
+
/**
|
|
72
|
+
* llm-tool-result: { toolCall: ToolCall, toolResult: ToolOutput }
|
|
73
|
+
* ToolOutput = { tool, input, output, isError }
|
|
74
|
+
*/
|
|
75
|
+
private _onToolResult;
|
|
76
|
+
}
|
|
77
|
+
/** @deprecated Use `CountlyLlamaIndexTracer` instead */
|
|
78
|
+
export declare const CountlyEventHandler: typeof CountlyLlamaIndexTracer;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAQ9B;;;GAGG;AACH,UAAU,qBAAqB,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,eAAe,CAAC;IACzF,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,eAAe,CAAC;CAC3F;AAsBD;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAE3D,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IAGpD,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;gBAE3D,UAAU,EAAE,eAAe;IAavC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAOhD;;OAEG;IACH,UAAU,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAOlD,iCAAiC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,0DAA0D;IACpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA0EjB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACH,OAAO,CAAC,aAAa;CAqBtB;AAGD,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,gCAA0B,CAAC"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { resolveConfig, createTransport, buildAllEvents, generatePromptId, inferProviderFromModel, } from "@countly/ai-sdk-core";
|
|
2
|
+
/* ------------------------------------------------------------------ */
|
|
3
|
+
/* CountlyLlamaIndexTracer */
|
|
4
|
+
/* ------------------------------------------------------------------ */
|
|
5
|
+
/**
|
|
6
|
+
* Countly AI observability integration for LlamaIndex.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { Settings } from "llamaindex";
|
|
11
|
+
* import { CountlyLlamaIndexTracer } from "@countly/ai-sdk-llamaindex";
|
|
12
|
+
*
|
|
13
|
+
* const tracer = new CountlyLlamaIndexTracer({ appKey: "…", url: "…" });
|
|
14
|
+
* tracer.register(Settings.callbackManager);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class CountlyLlamaIndexTracer {
|
|
18
|
+
config;
|
|
19
|
+
transport;
|
|
20
|
+
/** Maps LLM call id → start info for latency tracking */
|
|
21
|
+
llmCalls = new Map();
|
|
22
|
+
/** Accumulates tool calls between llm-start and llm-end */
|
|
23
|
+
pendingTools = new Map();
|
|
24
|
+
completedTools = [];
|
|
25
|
+
/* Bound handler references (needed for off()) */
|
|
26
|
+
handleLLMStart;
|
|
27
|
+
handleLLMEnd;
|
|
28
|
+
handleToolCall;
|
|
29
|
+
handleToolResult;
|
|
30
|
+
constructor(userConfig) {
|
|
31
|
+
this.config = resolveConfig(userConfig);
|
|
32
|
+
this.transport = createTransport(this.config);
|
|
33
|
+
// Bind handlers so they can be passed to on()/off()
|
|
34
|
+
this.handleLLMStart = this._onLLMStart.bind(this);
|
|
35
|
+
this.handleLLMEnd = this._onLLMEnd.bind(this);
|
|
36
|
+
this.handleToolCall = this._onToolCall.bind(this);
|
|
37
|
+
this.handleToolResult = this._onToolResult.bind(this);
|
|
38
|
+
}
|
|
39
|
+
/* ── Public API ─────────────────────────────────────────────────── */
|
|
40
|
+
/**
|
|
41
|
+
* Register all handlers on the given CallbackManager.
|
|
42
|
+
* Typically: `tracer.register(Settings.callbackManager)`
|
|
43
|
+
*/
|
|
44
|
+
register(callbackManager) {
|
|
45
|
+
callbackManager.on("llm-start", this.handleLLMStart);
|
|
46
|
+
callbackManager.on("llm-end", this.handleLLMEnd);
|
|
47
|
+
callbackManager.on("llm-tool-call", this.handleToolCall);
|
|
48
|
+
callbackManager.on("llm-tool-result", this.handleToolResult);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Unregister all handlers from the given CallbackManager.
|
|
52
|
+
*/
|
|
53
|
+
unregister(callbackManager) {
|
|
54
|
+
callbackManager.off("llm-start", this.handleLLMStart);
|
|
55
|
+
callbackManager.off("llm-end", this.handleLLMEnd);
|
|
56
|
+
callbackManager.off("llm-tool-call", this.handleToolCall);
|
|
57
|
+
callbackManager.off("llm-tool-result", this.handleToolResult);
|
|
58
|
+
}
|
|
59
|
+
/** Flush any buffered events. */
|
|
60
|
+
async flush() {
|
|
61
|
+
await this.transport.flush();
|
|
62
|
+
}
|
|
63
|
+
/** Shut down the transport, flushing remaining events. */
|
|
64
|
+
async shutdown() {
|
|
65
|
+
await this.transport.shutdown();
|
|
66
|
+
}
|
|
67
|
+
/* ── Event handlers ─────────────────────────────────────────────── */
|
|
68
|
+
/**
|
|
69
|
+
* llm-start: { id: UUID, messages: ChatMessage[] }
|
|
70
|
+
*/
|
|
71
|
+
_onLLMStart(event) {
|
|
72
|
+
const detail = event?.detail;
|
|
73
|
+
if (!detail)
|
|
74
|
+
return;
|
|
75
|
+
const id = detail.id ?? generatePromptId();
|
|
76
|
+
const messages = detail.messages ?? [];
|
|
77
|
+
// Capture last user/assistant message as input text (skip system/tool roles)
|
|
78
|
+
let input;
|
|
79
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
80
|
+
const role = messages[i]?.role;
|
|
81
|
+
if (role === "system" || role === "tool")
|
|
82
|
+
continue;
|
|
83
|
+
const content = messages[i]?.content;
|
|
84
|
+
if (typeof content === "string") {
|
|
85
|
+
input = content;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.llmCalls.set(id, {
|
|
90
|
+
startTime: Date.now(),
|
|
91
|
+
input,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* llm-end: { id: UUID, response: ChatResponse }
|
|
96
|
+
* ChatResponse = { message: ChatMessage, raw: object | null }
|
|
97
|
+
* Tokens live in raw.usage (provider-specific).
|
|
98
|
+
*/
|
|
99
|
+
_onLLMEnd(event) {
|
|
100
|
+
const detail = event?.detail;
|
|
101
|
+
if (!detail)
|
|
102
|
+
return;
|
|
103
|
+
const id = detail.id ?? "";
|
|
104
|
+
const call = this.llmCalls.get(id);
|
|
105
|
+
const now = Date.now();
|
|
106
|
+
const latency = call ? now - call.startTime : 0;
|
|
107
|
+
const response = detail.response ?? {};
|
|
108
|
+
const raw = response.raw ?? {};
|
|
109
|
+
const usage = raw.usage ?? {};
|
|
110
|
+
// Text output from ChatResponse.message.content
|
|
111
|
+
const messageContent = response.message?.content;
|
|
112
|
+
const textOutput = typeof messageContent === "string"
|
|
113
|
+
? messageContent
|
|
114
|
+
: undefined;
|
|
115
|
+
// Model from raw (provider-specific, e.g. OpenAI returns raw.model)
|
|
116
|
+
const model = raw.model ?? "unknown";
|
|
117
|
+
// Token extraction — handle both snake_case and camelCase
|
|
118
|
+
const usageInput = usage.prompt_tokens ?? usage.promptTokens ?? usage.input_tokens ?? usage.inputTokens ?? 0;
|
|
119
|
+
const usageOutput = usage.completion_tokens ?? usage.completionTokens ?? usage.output_tokens ?? usage.outputTokens ?? 0;
|
|
120
|
+
const usageTotal = usage.total_tokens ?? usage.totalTokens ?? (usageInput + usageOutput);
|
|
121
|
+
// Collect completed tools
|
|
122
|
+
const tools = this.completedTools.splice(0);
|
|
123
|
+
// Provider-specific orphan fields → metadata bag.
|
|
124
|
+
const meta = {};
|
|
125
|
+
const sourceNodes = response?.sourceNodes;
|
|
126
|
+
if (Array.isArray(sourceNodes) && sourceNodes.length > 0) {
|
|
127
|
+
meta.source_nodes = sourceNodes.map((n) => ({
|
|
128
|
+
score: n?.score,
|
|
129
|
+
node_id: n?.node?.id_ ?? n?.node?.nodeId ?? n?.node?.id,
|
|
130
|
+
metadata: n?.node?.metadata,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
if (raw?.system_fingerprint)
|
|
134
|
+
meta.system_fingerprint = raw.system_fingerprint;
|
|
135
|
+
if (raw?.service_tier)
|
|
136
|
+
meta.service_tier = raw.service_tier;
|
|
137
|
+
const extraction = {
|
|
138
|
+
model,
|
|
139
|
+
// Report the real vendor inferred from the model id; fall back to the
|
|
140
|
+
// framework name only when the vendor can't be determined.
|
|
141
|
+
provider: inferProviderFromModel(model) ?? "llamaindex",
|
|
142
|
+
usage_input: usageInput,
|
|
143
|
+
usage_output: usageOutput,
|
|
144
|
+
usage_total: usageTotal,
|
|
145
|
+
finish_reason: raw.choices?.[0]?.finish_reason,
|
|
146
|
+
text_input: call?.input,
|
|
147
|
+
text_output: textOutput,
|
|
148
|
+
latency_total: latency,
|
|
149
|
+
status: "success",
|
|
150
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
151
|
+
// Trace identity: LlamaIndex callbacks expose an `id` per LLM call.
|
|
152
|
+
...(id && { trace_id: String(id), span_id: String(id) }),
|
|
153
|
+
...(raw?.id && { response_id: String(raw.id) }),
|
|
154
|
+
...(raw?.model && { response_model: String(raw.model) }),
|
|
155
|
+
...(Object.keys(meta).length > 0 && { provider_metadata: meta }),
|
|
156
|
+
};
|
|
157
|
+
const promptId = generatePromptId();
|
|
158
|
+
const context = { prompt_id: promptId, sdk_adapter: "llamaindex" };
|
|
159
|
+
const events = buildAllEvents(extraction, this.config, context);
|
|
160
|
+
this.transport.enqueue(events);
|
|
161
|
+
this.transport.reportTrace(extraction, context);
|
|
162
|
+
this.transport.reportUserData(extraction);
|
|
163
|
+
this.llmCalls.delete(id);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* llm-tool-call: { toolCall: ToolCall }
|
|
167
|
+
* ToolCall = { name: string, input: JSONObject, id: string }
|
|
168
|
+
*/
|
|
169
|
+
_onToolCall(event) {
|
|
170
|
+
const detail = event?.detail;
|
|
171
|
+
if (!detail)
|
|
172
|
+
return;
|
|
173
|
+
const toolCall = detail.toolCall;
|
|
174
|
+
if (!toolCall)
|
|
175
|
+
return;
|
|
176
|
+
const toolId = toolCall.id ?? generatePromptId();
|
|
177
|
+
this.pendingTools.set(toolId, {
|
|
178
|
+
startTime: Date.now(),
|
|
179
|
+
name: toolCall.name ?? "unknown_tool",
|
|
180
|
+
input: typeof toolCall.input === "string"
|
|
181
|
+
? toolCall.input
|
|
182
|
+
: JSON.stringify(toolCall.input),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* llm-tool-result: { toolCall: ToolCall, toolResult: ToolOutput }
|
|
187
|
+
* ToolOutput = { tool, input, output, isError }
|
|
188
|
+
*/
|
|
189
|
+
_onToolResult(event) {
|
|
190
|
+
const detail = event?.detail;
|
|
191
|
+
if (!detail)
|
|
192
|
+
return;
|
|
193
|
+
const toolCall = detail.toolCall;
|
|
194
|
+
const toolResult = detail.toolResult;
|
|
195
|
+
const toolId = toolCall?.id ?? "";
|
|
196
|
+
const pending = this.pendingTools.get(toolId);
|
|
197
|
+
const latency = pending ? Date.now() - pending.startTime : 0;
|
|
198
|
+
this.completedTools.push({
|
|
199
|
+
name: pending?.name ?? toolCall?.name ?? "unknown_tool",
|
|
200
|
+
type: "function_call",
|
|
201
|
+
arguments: typeof toolCall?.input === "object" ? toolCall.input : undefined,
|
|
202
|
+
status: toolResult?.isError ? "error" : "success",
|
|
203
|
+
error: toolResult?.isError ? String(toolResult.output) : undefined,
|
|
204
|
+
latency,
|
|
205
|
+
});
|
|
206
|
+
this.pendingTools.delete(toolId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/* ── Backward-compat alias ──────────────────────────────────────────── */
|
|
210
|
+
/** @deprecated Use `CountlyLlamaIndexTracer` instead */
|
|
211
|
+
export const CountlyEventHandler = CountlyLlamaIndexTracer;
|
|
212
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@countly/ai-sdk-llamaindex",
|
|
3
|
+
"version": "0.0.3",
|
|
4
|
+
"description": "Countly AI observability adapter for LlamaIndex",
|
|
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
|
+
"llamaindex": ">=0.8.0"
|
|
23
|
+
},
|
|
24
|
+
"peerDependenciesMeta": {
|
|
25
|
+
"llamaindex": {
|
|
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
|
+
}
|