@aui-x/prism 0.0.1

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.
Files changed (47) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +195 -0
  3. package/dist/client-B9WXHjpz.cjs +192 -0
  4. package/dist/client-B9WXHjpz.cjs.map +1 -0
  5. package/dist/client-BSsSpkZY.d.cts +157 -0
  6. package/dist/client-BSsSpkZY.d.cts.map +1 -0
  7. package/dist/client-BrZstMQX.d.ts +157 -0
  8. package/dist/client-BrZstMQX.d.ts.map +1 -0
  9. package/dist/client-C7RiAn7a.js +174 -0
  10. package/dist/client-C7RiAn7a.js.map +1 -0
  11. package/dist/core.cjs +6 -0
  12. package/dist/core.d.cts +2 -0
  13. package/dist/core.d.ts +2 -0
  14. package/dist/core.js +3 -0
  15. package/dist/index.cjs +12 -0
  16. package/dist/index.d.cts +5 -0
  17. package/dist/index.d.ts +5 -0
  18. package/dist/index.js +6 -0
  19. package/dist/integrations/ai-sdk.cjs +26 -0
  20. package/dist/integrations/ai-sdk.cjs.map +1 -0
  21. package/dist/integrations/ai-sdk.d.cts +18 -0
  22. package/dist/integrations/ai-sdk.d.cts.map +1 -0
  23. package/dist/integrations/ai-sdk.d.ts +18 -0
  24. package/dist/integrations/ai-sdk.d.ts.map +1 -0
  25. package/dist/integrations/ai-sdk.js +25 -0
  26. package/dist/integrations/ai-sdk.js.map +1 -0
  27. package/dist/integrations/anthropic.cjs +226 -0
  28. package/dist/integrations/anthropic.cjs.map +1 -0
  29. package/dist/integrations/anthropic.d.cts +20 -0
  30. package/dist/integrations/anthropic.d.cts.map +1 -0
  31. package/dist/integrations/anthropic.d.ts +20 -0
  32. package/dist/integrations/anthropic.d.ts.map +1 -0
  33. package/dist/integrations/anthropic.js +224 -0
  34. package/dist/integrations/anthropic.js.map +1 -0
  35. package/dist/integrations/openai.cjs +227 -0
  36. package/dist/integrations/openai.cjs.map +1 -0
  37. package/dist/integrations/openai.d.cts +20 -0
  38. package/dist/integrations/openai.d.cts.map +1 -0
  39. package/dist/integrations/openai.d.ts +20 -0
  40. package/dist/integrations/openai.d.ts.map +1 -0
  41. package/dist/integrations/openai.js +225 -0
  42. package/dist/integrations/openai.js.map +1 -0
  43. package/dist/wrapper-7jRyp54U.js +242 -0
  44. package/dist/wrapper-7jRyp54U.js.map +1 -0
  45. package/dist/wrapper-ByspXfxS.cjs +247 -0
  46. package/dist/wrapper-ByspXfxS.cjs.map +1 -0
  47. package/package.json +103 -0
package/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ Copyright (c) 2026 auix
2
+
3
+ All rights reserved.
4
+
5
+ This software is proprietary and confidential. Use of this package is
6
+ permitted only in conjunction with the auix platform (https://auix.dev)
7
+ under a valid subscription or agreement.
8
+
9
+ Redistribution, modification, reverse engineering, or use outside of
10
+ the auix platform is strictly prohibited without prior written consent
11
+ from auix.
package/README.md ADDED
@@ -0,0 +1,195 @@
1
+ # @auix/prism
2
+
3
+ LLM tracing SDK for [auix](https://auix.dev) — collect LLM traces with zero friction.
4
+
5
+ Supports [Vercel AI SDK](https://sdk.vercel.ai), [OpenAI](https://github.com/openai/openai-node), [Anthropic](https://github.com/anthropics/anthropic-sdk-typescript), and manual tracing.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @auix/prism
11
+ ```
12
+
13
+ Peer dependencies (install only what you use):
14
+
15
+ - `ai` (>=6.0.0) + `@ai-sdk/provider` (>=2.0.0) — for AI SDK integration
16
+ - `openai` (>=4.0.0) — for OpenAI integration
17
+ - `@anthropic-ai/sdk` (>=0.30.0) — for Anthropic integration
18
+
19
+ ## Quick Start
20
+
21
+ ### AI SDK (recommended)
22
+
23
+ `prismAISDK` wraps any AI SDK model and automatically captures traces, token usage, latency, and tool calls. It creates a root trace internally and returns `{ model, end }`:
24
+
25
+ ```ts
26
+ import { AuixPrism, prismAISDK } from "@auix/prism";
27
+ import { openai } from "@ai-sdk/openai";
28
+ import { generateText } from "ai";
29
+
30
+ const tracer = new AuixPrism({ apiKey: "your-api-key" });
31
+
32
+ const traced = prismAISDK(tracer, openai("gpt-4o"), {
33
+ name: "my-chat",
34
+ tags: ["production"],
35
+ endUserId: "user@example.com",
36
+ metadata: { threadId: "t_123" },
37
+ });
38
+
39
+ const { text, usage } = await generateText({
40
+ model: traced.model,
41
+ prompt: "Hello!",
42
+ });
43
+
44
+ await traced.end({
45
+ output: text,
46
+ totalTokens: usage.totalTokens,
47
+ promptTokens: usage.inputTokens,
48
+ completionTokens: usage.outputTokens,
49
+ });
50
+ ```
51
+
52
+ Multi-step tool use is handled correctly — each LLM call becomes a child span under the root trace:
53
+
54
+ ```ts
55
+ import { streamText, stepCountIs } from "ai";
56
+
57
+ const traced = prismAISDK(tracer, openai("gpt-4o"), {
58
+ name: "agent",
59
+ tags: ["chat"],
60
+ });
61
+
62
+ const result = streamText({
63
+ model: traced.model,
64
+ prompt: "What's the weather?",
65
+ tools: { /* ... */ },
66
+ stopWhen: stepCountIs(6),
67
+ });
68
+
69
+ for await (const chunk of result.textStream) {
70
+ process.stdout.write(chunk);
71
+ }
72
+
73
+ const usage = await result.usage;
74
+ await traced.end({
75
+ output: await result.text,
76
+ totalTokens: usage.totalTokens,
77
+ promptTokens: usage.inputTokens,
78
+ completionTokens: usage.outputTokens,
79
+ });
80
+ ```
81
+
82
+ ### OpenAI
83
+
84
+ `prismOpenAI` returns a proxied client that traces `chat.completions.create` calls:
85
+
86
+ ```ts
87
+ import { AuixPrism, prismOpenAI } from "@auix/prism";
88
+ import OpenAI from "openai";
89
+
90
+ const tracer = new AuixPrism({ apiKey: "your-api-key" });
91
+ const client = prismOpenAI(tracer, new OpenAI(), {
92
+ name: "my-chat",
93
+ tags: ["production"],
94
+ });
95
+
96
+ const response = await client.chat.completions.create({
97
+ model: "gpt-4o",
98
+ messages: [{ role: "user", content: "Hello!" }],
99
+ });
100
+ ```
101
+
102
+ ### Anthropic
103
+
104
+ `prismAnthropic` returns a proxied client that traces `messages.create` calls:
105
+
106
+ ```ts
107
+ import { AuixPrism, prismAnthropic } from "@auix/prism";
108
+ import Anthropic from "@anthropic-ai/sdk";
109
+
110
+ const tracer = new AuixPrism({ apiKey: "your-api-key" });
111
+ const client = prismAnthropic(tracer, new Anthropic(), {
112
+ name: "my-chat",
113
+ tags: ["production"],
114
+ });
115
+
116
+ const response = await client.messages.create({
117
+ model: "claude-sonnet-4-20250514",
118
+ max_tokens: 1024,
119
+ messages: [{ role: "user", content: "Hello!" }],
120
+ });
121
+ ```
122
+
123
+ ### Manual Tracing
124
+
125
+ For full control over trace structure:
126
+
127
+ ```ts
128
+ import { AuixPrism } from "@auix/prism";
129
+
130
+ const tracer = new AuixPrism({ apiKey: "your-api-key" });
131
+
132
+ const trace = tracer.startTrace({
133
+ name: "rag-pipeline",
134
+ metadata: { userId: "u_123" },
135
+ });
136
+
137
+ const span = trace.startSpan({
138
+ name: "vector-search",
139
+ type: "retrieval",
140
+ input: { query: "How do I reset my password?" },
141
+ });
142
+
143
+ span.end({ output: { results: 5 }, status: "completed" });
144
+
145
+ trace.end({ output: "Here's how to reset...", status: "completed" });
146
+
147
+ await tracer.destroy();
148
+ ```
149
+
150
+ ## API
151
+
152
+ ### `new AuixPrism(config)`
153
+
154
+ | Option | Type | Default | Description |
155
+ |--------|------|---------|-------------|
156
+ | `apiKey` | `string` | *required* | Your auix API key |
157
+ | `baseUrl` | `string` | `"https://api.auix.dev"` | API endpoint |
158
+ | `sessionId` | `string` | — | Group traces under a session |
159
+ | `transport` | `(events) => Promise<void>` | — | Custom transport (bypasses HTTP) |
160
+ | `onFlushError` | `(error) => void` | — | Called when flush fails after retry |
161
+
162
+ ### `prismAISDK(tracer, model, options?)`
163
+
164
+ Returns `{ model, end }`. The `model` is a wrapped AI SDK model. Call `end(opts?)` after the generation completes to finalize the root trace.
165
+
166
+ | Option | Type | Description |
167
+ |--------|------|-------------|
168
+ | `name` | `string` | Trace name (defaults to model ID) |
169
+ | `tags` | `string[]` | Tags for filtering |
170
+ | `metadata` | `Record<string, unknown>` | Arbitrary metadata |
171
+ | `endUserId` | `string` | End user identifier |
172
+
173
+ ### `prismOpenAI(tracer, client, options?)`
174
+
175
+ Returns a proxied OpenAI client. Same options as `prismAISDK` plus `parentTraceId` for nesting under an existing trace.
176
+
177
+ ### `prismAnthropic(tracer, client, options?)`
178
+
179
+ Returns a proxied Anthropic client. Same options as `prismOpenAI`.
180
+
181
+ ### `tracer.startTrace(options)`
182
+
183
+ Returns a `TraceHandle` for manual tracing.
184
+
185
+ ### `trace.startSpan(options)`
186
+
187
+ Creates a child span. `type` can be `"llm"`, `"tool"`, `"retrieval"`, or `"custom"`.
188
+
189
+ ### `tracer.destroy()`
190
+
191
+ Flushes pending events and stops the background timer. Call this when done tracing.
192
+
193
+ ## License
194
+
195
+ Proprietary — see [LICENSE](./LICENSE).
@@ -0,0 +1,192 @@
1
+
2
+ //#region src/utils.ts
3
+ const CHARS = "0123456789abcdefghjkmnpqrstvwxyz";
4
+ function ulid() {
5
+ const ts = Date.now().toString(36);
6
+ let rand = "";
7
+ for (let i = 0; i < 16; i++) rand += CHARS[Math.floor(Math.random() * 32)];
8
+ return ts + rand;
9
+ }
10
+ function nowISO() {
11
+ return (/* @__PURE__ */ new Date()).toISOString();
12
+ }
13
+
14
+ //#endregion
15
+ //#region src/client.ts
16
+ const FLUSH_INTERVAL_MS = 1e3;
17
+ const FLUSH_BATCH_SIZE = 10;
18
+ var AuixPrism = class {
19
+ constructor(config) {
20
+ this.events = [];
21
+ this._flushChain = Promise.resolve();
22
+ this.apiKey = config.apiKey;
23
+ this.baseUrl = config.baseUrl ?? "https://api.auix.dev";
24
+ this.project = config.project;
25
+ this.sessionId = config.sessionId;
26
+ this.transport = config.transport;
27
+ this.onFlushError = config.onFlushError;
28
+ this.timer = setInterval(() => this.flush(), FLUSH_INTERVAL_MS);
29
+ }
30
+ enqueue(event) {
31
+ this.events.push(event);
32
+ if (this.events.length >= FLUSH_BATCH_SIZE) this.flush();
33
+ }
34
+ flush() {
35
+ if (this.events.length === 0) return this._flushChain;
36
+ const batch = this.events.splice(0);
37
+ const send = () => {
38
+ if (this.transport) return this.transport(batch);
39
+ return fetch(`${this.baseUrl}/v1/prism/ingest`, {
40
+ method: "POST",
41
+ headers: {
42
+ "Content-Type": "application/json",
43
+ Authorization: `Bearer ${this.apiKey}`
44
+ },
45
+ body: JSON.stringify({ events: batch })
46
+ }).then(() => {});
47
+ };
48
+ this._flushChain = this._flushChain.then(() => send().catch(() => send().catch((err) => {
49
+ console.warn("[@auix/prism] flush failed after retry", err);
50
+ this.onFlushError?.(err);
51
+ })));
52
+ return this._flushChain;
53
+ }
54
+ startTrace(opts) {
55
+ const traceId = ulid();
56
+ const startedAt = nowISO();
57
+ this.enqueue({
58
+ type: "trace.start",
59
+ traceId,
60
+ name: opts.name,
61
+ input: opts.input,
62
+ model: opts.model,
63
+ provider: opts.provider,
64
+ endUserId: opts.endUserId,
65
+ metadata: opts.metadata,
66
+ tags: opts.tags,
67
+ project: this.project,
68
+ sessionId: this.sessionId,
69
+ startedAt
70
+ });
71
+ return new TraceHandle(this, traceId, startedAt);
72
+ }
73
+ startSpanOnTrace(traceId, opts) {
74
+ const spanId = ulid();
75
+ const startedAt = nowISO();
76
+ this.enqueue({
77
+ type: "span.start",
78
+ traceId,
79
+ spanId,
80
+ parentSpanId: opts.parentSpanId,
81
+ name: opts.name,
82
+ spanType: opts.type,
83
+ input: opts.input,
84
+ model: opts.model,
85
+ provider: opts.provider,
86
+ metadata: opts.metadata,
87
+ startedAt
88
+ });
89
+ return new SpanHandle(this, traceId, spanId, startedAt);
90
+ }
91
+ trace(opts) {
92
+ const traceHandle = this.startTrace(opts);
93
+ const finish = async (endOpts) => {
94
+ traceHandle.end(endOpts);
95
+ await this.destroy();
96
+ };
97
+ return {
98
+ trace: traceHandle,
99
+ finish
100
+ };
101
+ }
102
+ destroy() {
103
+ clearInterval(this.timer);
104
+ return this.flush();
105
+ }
106
+ };
107
+ var TraceHandle = class {
108
+ constructor(tracer, traceId, startedAt) {
109
+ this.tracer = tracer;
110
+ this.traceId = traceId;
111
+ this.startedAt = startedAt;
112
+ }
113
+ startSpan(opts) {
114
+ const spanId = ulid();
115
+ const startedAt = nowISO();
116
+ this.tracer.enqueue({
117
+ type: "span.start",
118
+ traceId: this.traceId,
119
+ spanId,
120
+ name: opts.name,
121
+ spanType: opts.type,
122
+ input: opts.input,
123
+ model: opts.model,
124
+ startedAt
125
+ });
126
+ return new SpanHandle(this.tracer, this.traceId, spanId, startedAt);
127
+ }
128
+ end(opts) {
129
+ const endedAt = nowISO();
130
+ const latencyMs = new Date(endedAt).getTime() - new Date(this.startedAt).getTime();
131
+ this.tracer.enqueue({
132
+ type: "trace.end",
133
+ traceId: this.traceId,
134
+ output: opts?.output,
135
+ status: opts?.status ?? "completed",
136
+ error: opts?.error,
137
+ totalTokens: opts?.totalTokens,
138
+ promptTokens: opts?.promptTokens,
139
+ completionTokens: opts?.completionTokens,
140
+ ttftMs: opts?.ttftMs,
141
+ latencyMs,
142
+ endedAt
143
+ });
144
+ }
145
+ };
146
+ var SpanHandle = class {
147
+ constructor(tracer, traceId, spanId, startedAt) {
148
+ this.tracer = tracer;
149
+ this.traceId = traceId;
150
+ this.spanId = spanId;
151
+ this.startedAt = startedAt;
152
+ }
153
+ end(opts) {
154
+ const endedAt = nowISO();
155
+ const latencyMs = new Date(endedAt).getTime() - new Date(this.startedAt).getTime();
156
+ this.tracer.enqueue({
157
+ type: "span.end",
158
+ traceId: this.traceId,
159
+ spanId: this.spanId,
160
+ output: opts?.output,
161
+ status: opts?.status ?? "completed",
162
+ error: opts?.error,
163
+ totalTokens: opts?.totalTokens,
164
+ promptTokens: opts?.promptTokens,
165
+ completionTokens: opts?.completionTokens,
166
+ ttftMs: opts?.ttftMs,
167
+ latencyMs,
168
+ endedAt
169
+ });
170
+ }
171
+ };
172
+
173
+ //#endregion
174
+ Object.defineProperty(exports, 'AuixPrism', {
175
+ enumerable: true,
176
+ get: function () {
177
+ return AuixPrism;
178
+ }
179
+ });
180
+ Object.defineProperty(exports, 'SpanHandle', {
181
+ enumerable: true,
182
+ get: function () {
183
+ return SpanHandle;
184
+ }
185
+ });
186
+ Object.defineProperty(exports, 'TraceHandle', {
187
+ enumerable: true,
188
+ get: function () {
189
+ return TraceHandle;
190
+ }
191
+ });
192
+ //# sourceMappingURL=client-B9WXHjpz.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-B9WXHjpz.cjs","names":[],"sources":["../src/utils.ts","../src/client.ts"],"sourcesContent":["const CHARS = \"0123456789abcdefghjkmnpqrstvwxyz\";\n\nexport function ulid(): string {\n const ts = Date.now().toString(36);\n let rand = \"\";\n for (let i = 0; i < 16; i++) {\n rand += CHARS[Math.floor(Math.random() * CHARS.length)];\n }\n return ts + rand;\n}\n\nexport function nowISO(): string {\n return new Date().toISOString();\n}\n","import type {\n AuixPrismConfig,\n TraceEndOptions,\n TraceEvent,\n TraceOptions,\n TraceResult,\n} from \"./types\";\nimport { nowISO, ulid } from \"./utils\";\n\nconst FLUSH_INTERVAL_MS = 1000;\nconst FLUSH_BATCH_SIZE = 10;\n\nexport class AuixPrism {\n private apiKey: string;\n private baseUrl: string;\n private project?: string;\n private sessionId?: string;\n private transport?: (events: TraceEvent[]) => Promise<void>;\n private onFlushError?: (error: unknown) => void;\n private events: TraceEvent[] = [];\n private timer: ReturnType<typeof setInterval>;\n private _flushChain: Promise<void> = Promise.resolve();\n\n constructor(config: AuixPrismConfig) {\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl ?? \"https://api.auix.dev\";\n this.project = config.project;\n this.sessionId = config.sessionId;\n this.transport = config.transport;\n this.onFlushError = config.onFlushError;\n this.timer = setInterval(() => this.flush(), FLUSH_INTERVAL_MS);\n }\n\n enqueue(event: TraceEvent): void {\n this.events.push(event);\n if (this.events.length >= FLUSH_BATCH_SIZE) {\n this.flush();\n }\n }\n\n flush(): Promise<void> {\n if (this.events.length === 0) return this._flushChain;\n\n const batch = this.events.splice(0);\n const send = () => {\n if (this.transport) return this.transport(batch);\n return fetch(`${this.baseUrl}/v1/prism/ingest`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({ events: batch }),\n }).then(() => {});\n };\n\n this._flushChain = this._flushChain.then(() =>\n send().catch(() =>\n send().catch((err) => {\n console.warn(\"[@auix/prism] flush failed after retry\", err);\n this.onFlushError?.(err);\n }),\n ),\n );\n return this._flushChain;\n }\n\n startTrace(opts: {\n name?: string;\n input?: unknown;\n model?: string;\n provider?: string;\n endUserId?: string;\n metadata?: Record<string, unknown>;\n tags?: string[];\n }): TraceHandle {\n const traceId = ulid();\n const startedAt = nowISO();\n\n this.enqueue({\n type: \"trace.start\",\n traceId,\n name: opts.name,\n input: opts.input,\n model: opts.model,\n provider: opts.provider,\n endUserId: opts.endUserId,\n metadata: opts.metadata,\n tags: opts.tags,\n project: this.project,\n sessionId: this.sessionId,\n startedAt,\n });\n\n return new TraceHandle(this, traceId, startedAt);\n }\n\n startSpanOnTrace(\n traceId: string,\n opts: {\n name: string;\n type: \"llm\" | \"tool\" | \"retrieval\" | \"custom\";\n input?: unknown;\n model?: string;\n provider?: string;\n parentSpanId?: string;\n metadata?: Record<string, unknown>;\n },\n ): SpanHandle {\n const spanId = ulid();\n const startedAt = nowISO();\n\n this.enqueue({\n type: \"span.start\",\n traceId,\n spanId,\n parentSpanId: opts.parentSpanId,\n name: opts.name,\n spanType: opts.type,\n input: opts.input,\n model: opts.model,\n provider: opts.provider,\n metadata: opts.metadata,\n startedAt,\n });\n\n return new SpanHandle(this, traceId, spanId, startedAt);\n }\n\n trace(opts: TraceOptions): TraceResult {\n const traceHandle = this.startTrace(opts);\n const finish = async (endOpts?: TraceEndOptions) => {\n traceHandle.end(endOpts);\n await this.destroy();\n };\n return { trace: traceHandle, finish };\n }\n\n destroy(): Promise<void> {\n clearInterval(this.timer);\n return this.flush();\n }\n}\n\nexport class TraceHandle {\n constructor(\n private tracer: AuixPrism,\n readonly traceId: string,\n private startedAt: string,\n ) {}\n\n startSpan(opts: {\n name: string;\n type: \"llm\" | \"tool\" | \"retrieval\" | \"custom\";\n input?: unknown;\n model?: string;\n }): SpanHandle {\n const spanId = ulid();\n const startedAt = nowISO();\n\n this.tracer.enqueue({\n type: \"span.start\",\n traceId: this.traceId,\n spanId,\n name: opts.name,\n spanType: opts.type,\n input: opts.input,\n model: opts.model,\n startedAt,\n });\n\n return new SpanHandle(this.tracer, this.traceId, spanId, startedAt);\n }\n\n end(opts?: {\n output?: unknown;\n status?: \"completed\" | \"error\";\n error?: string;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n ttftMs?: number;\n }): void {\n const endedAt = nowISO();\n const latencyMs =\n new Date(endedAt).getTime() - new Date(this.startedAt).getTime();\n\n this.tracer.enqueue({\n type: \"trace.end\",\n traceId: this.traceId,\n output: opts?.output,\n status: opts?.status ?? \"completed\",\n error: opts?.error,\n totalTokens: opts?.totalTokens,\n promptTokens: opts?.promptTokens,\n completionTokens: opts?.completionTokens,\n ttftMs: opts?.ttftMs,\n latencyMs,\n endedAt,\n });\n }\n}\n\nexport class SpanHandle {\n constructor(\n private tracer: AuixPrism,\n private traceId: string,\n readonly spanId: string,\n private startedAt: string,\n ) {}\n\n end(opts?: {\n output?: unknown;\n status?: \"completed\" | \"error\";\n error?: string;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n ttftMs?: number;\n }): void {\n const endedAt = nowISO();\n const latencyMs =\n new Date(endedAt).getTime() - new Date(this.startedAt).getTime();\n\n this.tracer.enqueue({\n type: \"span.end\",\n traceId: this.traceId,\n spanId: this.spanId,\n output: opts?.output,\n status: opts?.status ?? \"completed\",\n error: opts?.error,\n totalTokens: opts?.totalTokens,\n promptTokens: opts?.promptTokens,\n completionTokens: opts?.completionTokens,\n ttftMs: opts?.ttftMs,\n latencyMs,\n endedAt,\n });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ //#region src/types.d.ts
2
+ interface AuixPrismConfig {
3
+ apiKey: string;
4
+ baseUrl?: string;
5
+ project?: string;
6
+ sessionId?: string;
7
+ /** Custom transport — bypasses HTTP when provided. */
8
+ transport?: (events: TraceEvent[]) => Promise<void>;
9
+ /** Called when a flush fails after retry. */
10
+ onFlushError?: (error: unknown) => void;
11
+ }
12
+ interface TraceOptions {
13
+ name: string;
14
+ model?: string;
15
+ provider?: string;
16
+ endUserId?: string;
17
+ tags?: string[];
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ interface TraceResult {
21
+ trace: TraceHandle;
22
+ finish: (opts?: TraceEndOptions) => Promise<void>;
23
+ }
24
+ interface TraceEndOptions {
25
+ output?: string;
26
+ status?: "completed" | "error";
27
+ totalTokens?: number;
28
+ promptTokens?: number;
29
+ completionTokens?: number;
30
+ }
31
+ type TraceEvent = {
32
+ type: "trace.start";
33
+ traceId: string;
34
+ name?: string;
35
+ input?: unknown;
36
+ model?: string;
37
+ provider?: string;
38
+ endUserId?: string;
39
+ metadata?: Record<string, unknown>;
40
+ tags?: string[];
41
+ project?: string;
42
+ sessionId?: string;
43
+ startedAt: string;
44
+ } | {
45
+ type: "trace.end";
46
+ traceId: string;
47
+ output?: unknown;
48
+ status: "completed" | "error";
49
+ error?: string;
50
+ totalTokens?: number;
51
+ promptTokens?: number;
52
+ completionTokens?: number;
53
+ ttftMs?: number;
54
+ latencyMs?: number;
55
+ endedAt: string;
56
+ } | {
57
+ type: "span.start";
58
+ traceId: string;
59
+ spanId: string;
60
+ parentSpanId?: string;
61
+ name: string;
62
+ spanType: "llm" | "tool" | "retrieval" | "custom";
63
+ input?: unknown;
64
+ model?: string;
65
+ provider?: string;
66
+ metadata?: Record<string, unknown>;
67
+ startedAt: string;
68
+ } | {
69
+ type: "span.end";
70
+ traceId: string;
71
+ spanId: string;
72
+ output?: unknown;
73
+ status: "completed" | "error";
74
+ error?: string;
75
+ totalTokens?: number;
76
+ promptTokens?: number;
77
+ completionTokens?: number;
78
+ ttftMs?: number;
79
+ latencyMs?: number;
80
+ endedAt: string;
81
+ };
82
+ //#endregion
83
+ //#region src/client.d.ts
84
+ declare class AuixPrism {
85
+ private apiKey;
86
+ private baseUrl;
87
+ private project?;
88
+ private sessionId?;
89
+ private transport?;
90
+ private onFlushError?;
91
+ private events;
92
+ private timer;
93
+ private _flushChain;
94
+ constructor(config: AuixPrismConfig);
95
+ enqueue(event: TraceEvent): void;
96
+ flush(): Promise<void>;
97
+ startTrace(opts: {
98
+ name?: string;
99
+ input?: unknown;
100
+ model?: string;
101
+ provider?: string;
102
+ endUserId?: string;
103
+ metadata?: Record<string, unknown>;
104
+ tags?: string[];
105
+ }): TraceHandle;
106
+ startSpanOnTrace(traceId: string, opts: {
107
+ name: string;
108
+ type: "llm" | "tool" | "retrieval" | "custom";
109
+ input?: unknown;
110
+ model?: string;
111
+ provider?: string;
112
+ parentSpanId?: string;
113
+ metadata?: Record<string, unknown>;
114
+ }): SpanHandle;
115
+ trace(opts: TraceOptions): TraceResult;
116
+ destroy(): Promise<void>;
117
+ }
118
+ declare class TraceHandle {
119
+ private tracer;
120
+ readonly traceId: string;
121
+ private startedAt;
122
+ constructor(tracer: AuixPrism, traceId: string, startedAt: string);
123
+ startSpan(opts: {
124
+ name: string;
125
+ type: "llm" | "tool" | "retrieval" | "custom";
126
+ input?: unknown;
127
+ model?: string;
128
+ }): SpanHandle;
129
+ end(opts?: {
130
+ output?: unknown;
131
+ status?: "completed" | "error";
132
+ error?: string;
133
+ totalTokens?: number;
134
+ promptTokens?: number;
135
+ completionTokens?: number;
136
+ ttftMs?: number;
137
+ }): void;
138
+ }
139
+ declare class SpanHandle {
140
+ private tracer;
141
+ private traceId;
142
+ readonly spanId: string;
143
+ private startedAt;
144
+ constructor(tracer: AuixPrism, traceId: string, spanId: string, startedAt: string);
145
+ end(opts?: {
146
+ output?: unknown;
147
+ status?: "completed" | "error";
148
+ error?: string;
149
+ totalTokens?: number;
150
+ promptTokens?: number;
151
+ completionTokens?: number;
152
+ ttftMs?: number;
153
+ }): void;
154
+ }
155
+ //#endregion
156
+ export { TraceEndOptions as a, TraceResult as c, AuixPrismConfig as i, SpanHandle as n, TraceEvent as o, TraceHandle as r, TraceOptions as s, AuixPrism as t };
157
+ //# sourceMappingURL=client-BSsSpkZY.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-BSsSpkZY.d.cts","names":[],"sources":["../src/types.ts","../src/client.ts"],"mappings":";UAAiB,eAAA;EACf,MAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA;EAHA;EAKA,SAAA,IAAa,MAAA,EAAQ,UAAA,OAAiB,OAAA;EAHtC;EAKA,YAAA,IAAgB,KAAA;AAAA;AAAA,UAGD,YAAA;EACf,IAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,WAAA;EACf,KAAA,EAD0B,WAAA;EAE1B,MAAA,GAAS,IAAA,GAAO,eAAA,KAAoB,OAAA;AAAA;AAAA,UAGrB,eAAA;EACf,MAAA;EACA,MAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;AAAA;AAAA,KAGU,UAAA;EAEN,IAAA;EACA,OAAA;EACA,IAAA;EACA,KAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;EACA,QAAA,GAAW,MAAA;EACX,IAAA;EACA,OAAA;EACA,SAAA;EACA,SAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,MAAA;EACA,MAAA;EACA,KAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,MAAA;EACA,YAAA;EACA,IAAA;EACA,QAAA;EACA,KAAA;EACA,KAAA;EACA,QAAA;EACA,QAAA,GAAW,MAAA;EACX,SAAA;AAAA;EAGA,IAAA;EACA,OAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,KAAA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;AAAA;;;cC1EO,SAAA;EAAA,QACH,MAAA;EAAA,QACA,OAAA;EAAA,QACA,OAAA;EAAA,QACA,SAAA;EAAA,QACA,SAAA;EAAA,QACA,YAAA;EAAA,QACA,MAAA;EAAA,QACA,KAAA;EAAA,QACA,WAAA;cAEI,MAAA,EAAQ,eAAA;EAUpB,OAAA,CAAQ,KAAA,EAAO,UAAA;EAOf,KAAA,CAAA,GAAS,OAAA;EA2BT,UAAA,CAAW,IAAA;IACT,IAAA;IACA,KAAA;IACA,KAAA;IACA,QAAA;IACA,SAAA;IACA,QAAA,GAAW,MAAA;IACX,IAAA;EAAA,IACE,WAAA;EAsBJ,gBAAA,CACE,OAAA,UACA,IAAA;IACE,IAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;IACA,QAAA;IACA,YAAA;IACA,QAAA,GAAW,MAAA;EAAA,IAEZ,UAAA;EAqBH,KAAA,CAAM,IAAA,EAAM,YAAA,GAAe,WAAA;EAS3B,OAAA,CAAA,GAAW,OAAA;AAAA;AAAA,cAMA,WAAA;EAAA,QAED,MAAA;EAAA,SACC,OAAA;EAAA,QACD,SAAA;cAFA,MAAA,EAAQ,SAAA,EACP,OAAA,UACD,SAAA;EAGV,SAAA,CAAU,IAAA;IACR,IAAA;IACA,IAAA;IACA,KAAA;IACA,KAAA;EAAA,IACE,UAAA;EAkBJ,GAAA,CAAI,IAAA;IACF,MAAA;IACA,MAAA;IACA,KAAA;IACA,WAAA;IACA,YAAA;IACA,gBAAA;IACA,MAAA;EAAA;AAAA;AAAA,cAsBS,UAAA;EAAA,QAED,MAAA;EAAA,QACA,OAAA;EAAA,SACC,MAAA;EAAA,QACD,SAAA;cAHA,MAAA,EAAQ,SAAA,EACR,OAAA,UACC,MAAA,UACD,SAAA;EAGV,GAAA,CAAI,IAAA;IACF,MAAA;IACA,MAAA;IACA,KAAA;IACA,WAAA;IACA,YAAA;IACA,gBAAA;IACA,MAAA;EAAA;AAAA"}