@blyp/core 0.1.21 → 0.1.23

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 (248) hide show
  1. package/README.md +54 -522
  2. package/STABILITY.md +56 -0
  3. package/dist/ai/anthropic/index.d.ts +3 -0
  4. package/dist/ai/anthropic/normalize.d.ts +9 -0
  5. package/dist/ai/anthropic/stream.d.ts +3 -0
  6. package/dist/ai/anthropic/wrap.d.ts +13 -0
  7. package/dist/ai/anthropic.js +701 -0
  8. package/dist/ai/anthropic.mjs +701 -0
  9. package/dist/ai/better-agent/index.d.ts +3 -0
  10. package/dist/ai/better-agent/normalize.d.ts +18 -0
  11. package/dist/ai/better-agent/plugin.d.ts +3 -0
  12. package/dist/ai/better-agent/tracker.d.ts +35 -0
  13. package/dist/ai/better-agent.js +701 -0
  14. package/dist/ai/better-agent.mjs +701 -0
  15. package/dist/ai/fetch.js +701 -0
  16. package/dist/ai/fetch.mjs +701 -0
  17. package/dist/ai/openai/index.d.ts +3 -0
  18. package/dist/ai/openai/normalize.d.ts +10 -0
  19. package/dist/ai/openai/stream.d.ts +3 -0
  20. package/dist/ai/openai/wrap.d.ts +24 -0
  21. package/dist/ai/openai.js +701 -0
  22. package/dist/ai/openai.mjs +701 -0
  23. package/dist/ai/shared/fetch.d.ts +5 -0
  24. package/dist/ai/shared/index.d.ts +2 -0
  25. package/dist/ai/shared/normalize.d.ts +17 -0
  26. package/dist/ai/shared/redaction.d.ts +6 -0
  27. package/dist/ai/shared/stream.d.ts +7 -0
  28. package/dist/ai/shared/trace.d.ts +119 -0
  29. package/dist/ai/shared/types.d.ts +171 -0
  30. package/dist/ai/shared.js +701 -0
  31. package/dist/ai/shared.mjs +701 -0
  32. package/dist/ai/vercel/index.d.ts +3 -0
  33. package/dist/ai/vercel/middleware.d.ts +3 -0
  34. package/dist/ai/vercel/model.d.ts +3 -0
  35. package/dist/ai/vercel.js +701 -0
  36. package/dist/ai/vercel.mjs +701 -0
  37. package/dist/astro.js +618 -4519
  38. package/dist/astro.mjs +618 -4491
  39. package/dist/client.js +1 -1139
  40. package/dist/client.mjs +1 -1132
  41. package/dist/connectors/betterstack.js +9 -1532
  42. package/dist/connectors/betterstack.mjs +9 -1507
  43. package/dist/connectors/databuddy.js +9 -1456
  44. package/dist/connectors/databuddy.mjs +9 -1451
  45. package/dist/connectors/delivery/backoff.d.ts +2 -0
  46. package/dist/connectors/delivery/manager.d.ts +44 -0
  47. package/dist/connectors/delivery/queue-path.d.ts +1 -0
  48. package/dist/connectors/delivery/sqlite-adapter-bun.d.ts +1 -0
  49. package/dist/connectors/delivery/sqlite-adapter-node.d.ts +1 -0
  50. package/dist/connectors/delivery/sqlite-client.d.ts +37 -0
  51. package/dist/connectors/delivery/sqlite-worker.d.ts +1 -0
  52. package/dist/connectors/delivery/studio-queue.d.ts +12 -0
  53. package/dist/connectors/delivery/types.d.ts +98 -0
  54. package/dist/connectors/otlp/index.d.ts +1 -0
  55. package/dist/connectors/otlp.js +9 -1371
  56. package/dist/connectors/otlp.mjs +9 -1368
  57. package/dist/connectors/posthog/properties.d.ts +4 -0
  58. package/dist/connectors/posthog/sender.d.ts +0 -1
  59. package/dist/connectors/posthog.js +10 -1527
  60. package/dist/connectors/posthog.mjs +10 -1522
  61. package/dist/connectors/sentry.js +9 -1380
  62. package/dist/connectors/sentry.mjs +9 -1357
  63. package/dist/core/config.d.ts +7 -2
  64. package/dist/core/log-record.d.ts +5 -4
  65. package/dist/core/logger.d.ts +2 -0
  66. package/dist/core/optional-module.d.ts +1 -0
  67. package/dist/core/pino-pretty-loader.d.ts +4 -0
  68. package/dist/database.js +1 -24
  69. package/dist/database.mjs +1 -21
  70. package/dist/elysia.js +613 -4517
  71. package/dist/elysia.mjs +615 -4491
  72. package/dist/expo.js +1 -726
  73. package/dist/expo.mjs +1 -724
  74. package/dist/express.js +613 -4507
  75. package/dist/express.mjs +615 -4480
  76. package/dist/fastify.js +615 -4526
  77. package/dist/fastify.mjs +617 -4499
  78. package/dist/frameworks/elysia/index.d.ts +1 -1
  79. package/dist/frameworks/elysia/logger.d.ts +2 -35
  80. package/dist/frameworks/nestjs/helpers.d.ts +2 -0
  81. package/dist/frameworks/shared/http.d.ts +3 -2
  82. package/dist/frameworks/shared/index.d.ts +2 -1
  83. package/dist/frameworks/shared/logger.d.ts +2 -0
  84. package/dist/frameworks/shared/request-context.d.ts +2 -0
  85. package/dist/frameworks/shared/trace.d.ts +6 -0
  86. package/dist/hono.js +616 -4496
  87. package/dist/hono.mjs +618 -4470
  88. package/dist/index.d.ts +49 -19
  89. package/dist/index.js +615 -7557
  90. package/dist/index.mjs +618 -7465
  91. package/dist/nestjs.js +626 -4999
  92. package/dist/nestjs.mjs +621 -4966
  93. package/dist/nextjs.js +618 -4525
  94. package/dist/nextjs.mjs +620 -4499
  95. package/dist/nitro.js +617 -4642
  96. package/dist/nitro.mjs +619 -4616
  97. package/dist/nuxt.js +617 -4649
  98. package/dist/nuxt.mjs +619 -4623
  99. package/dist/react-router.js +616 -4559
  100. package/dist/react-router.mjs +618 -4533
  101. package/dist/shared/redaction.d.ts +17 -0
  102. package/dist/standalone.js +606 -3628
  103. package/dist/standalone.mjs +610 -3603
  104. package/dist/sveltekit.js +617 -4523
  105. package/dist/sveltekit.mjs +619 -4497
  106. package/dist/tanstack-start.js +616 -4522
  107. package/dist/tanstack-start.mjs +618 -4496
  108. package/dist/types/core/config.d.ts +57 -0
  109. package/dist/types/core/logger.d.ts +3 -0
  110. package/dist/types/core/structured-log.d.ts +2 -0
  111. package/dist/types/database.d.ts +1 -0
  112. package/dist/types/frameworks/astro.d.ts +1 -0
  113. package/dist/types/frameworks/client.d.ts +2 -0
  114. package/dist/types/frameworks/elysia.d.ts +2 -0
  115. package/dist/types/frameworks/express.d.ts +1 -0
  116. package/dist/types/frameworks/fastify.d.ts +1 -0
  117. package/dist/types/frameworks/hono.d.ts +1 -0
  118. package/dist/types/frameworks/http.d.ts +1 -0
  119. package/dist/types/frameworks/nestjs.d.ts +2 -0
  120. package/dist/types/frameworks/nextjs.d.ts +1 -0
  121. package/dist/types/frameworks/nitro.d.ts +1 -0
  122. package/dist/types/frameworks/react-router.d.ts +2 -0
  123. package/dist/types/frameworks/request-context.d.ts +1 -0
  124. package/dist/types/frameworks/shared.d.ts +4 -1
  125. package/dist/types/frameworks/standalone.d.ts +3 -2
  126. package/dist/types/frameworks/sveltekit.d.ts +1 -0
  127. package/dist/types/frameworks/tanstack-start.d.ts +9 -3
  128. package/dist/types/frameworks/workers.d.ts +3 -0
  129. package/dist/types/shared/client-log.d.ts +1 -0
  130. package/dist/workers.js +2 -626
  131. package/dist/workers.mjs +2 -623
  132. package/package.json +259 -173
  133. package/dist/astro.js.map +0 -1
  134. package/dist/astro.mjs.map +0 -1
  135. package/dist/client.js.map +0 -1
  136. package/dist/client.mjs.map +0 -1
  137. package/dist/connectors/betterstack.js.map +0 -1
  138. package/dist/connectors/betterstack.mjs.map +0 -1
  139. package/dist/connectors/databuddy.js.map +0 -1
  140. package/dist/connectors/databuddy.mjs.map +0 -1
  141. package/dist/connectors/otlp.js.map +0 -1
  142. package/dist/connectors/otlp.mjs.map +0 -1
  143. package/dist/connectors/posthog.js.map +0 -1
  144. package/dist/connectors/posthog.mjs.map +0 -1
  145. package/dist/connectors/sentry.js.map +0 -1
  146. package/dist/connectors/sentry.mjs.map +0 -1
  147. package/dist/database.js.map +0 -1
  148. package/dist/database.mjs.map +0 -1
  149. package/dist/elysia.js.map +0 -1
  150. package/dist/elysia.mjs.map +0 -1
  151. package/dist/expo.js.map +0 -1
  152. package/dist/expo.mjs.map +0 -1
  153. package/dist/express.js.map +0 -1
  154. package/dist/express.mjs.map +0 -1
  155. package/dist/fastify.js.map +0 -1
  156. package/dist/fastify.mjs.map +0 -1
  157. package/dist/hono.js.map +0 -1
  158. package/dist/hono.mjs.map +0 -1
  159. package/dist/index.js.map +0 -1
  160. package/dist/index.mjs.map +0 -1
  161. package/dist/nestjs.js.map +0 -1
  162. package/dist/nestjs.mjs.map +0 -1
  163. package/dist/nextjs.js.map +0 -1
  164. package/dist/nextjs.mjs.map +0 -1
  165. package/dist/nitro.js.map +0 -1
  166. package/dist/nitro.mjs.map +0 -1
  167. package/dist/nuxt.js.map +0 -1
  168. package/dist/nuxt.mjs.map +0 -1
  169. package/dist/react-router.js.map +0 -1
  170. package/dist/react-router.mjs.map +0 -1
  171. package/dist/standalone.js.map +0 -1
  172. package/dist/standalone.mjs.map +0 -1
  173. package/dist/sveltekit.js.map +0 -1
  174. package/dist/sveltekit.mjs.map +0 -1
  175. package/dist/tanstack-start.js.map +0 -1
  176. package/dist/tanstack-start.mjs.map +0 -1
  177. package/dist/workers.js.map +0 -1
  178. package/dist/workers.mjs.map +0 -1
  179. package/exports/client.js +0 -3
  180. package/exports/client.mjs +0 -3
  181. package/exports/connectors/betterstack.js +0 -1
  182. package/exports/connectors/betterstack.mjs +0 -1
  183. package/exports/connectors/databuddy.js +0 -1
  184. package/exports/connectors/databuddy.mjs +0 -1
  185. package/exports/connectors/otlp.js +0 -1
  186. package/exports/connectors/otlp.mjs +0 -1
  187. package/exports/connectors/posthog.js +0 -1
  188. package/exports/connectors/posthog.mjs +0 -1
  189. package/exports/connectors/sentry.js +0 -1
  190. package/exports/connectors/sentry.mjs +0 -1
  191. package/exports/database.js +0 -1
  192. package/exports/database.mjs +0 -1
  193. package/exports/expo.js +0 -1
  194. package/exports/expo.mjs +0 -1
  195. package/exports/frameworks/astro.js +0 -1
  196. package/exports/frameworks/astro.mjs +0 -1
  197. package/exports/frameworks/elysia.js +0 -1
  198. package/exports/frameworks/elysia.mjs +0 -1
  199. package/exports/frameworks/express.js +0 -1
  200. package/exports/frameworks/express.mjs +0 -1
  201. package/exports/frameworks/fastify.js +0 -1
  202. package/exports/frameworks/fastify.mjs +0 -1
  203. package/exports/frameworks/hono.js +0 -1
  204. package/exports/frameworks/hono.mjs +0 -1
  205. package/exports/frameworks/nestjs.js +0 -1
  206. package/exports/frameworks/nestjs.mjs +0 -1
  207. package/exports/frameworks/nextjs.js +0 -1
  208. package/exports/frameworks/nextjs.mjs +0 -1
  209. package/exports/frameworks/nitro.js +0 -1
  210. package/exports/frameworks/nitro.mjs +0 -1
  211. package/exports/frameworks/nuxt.js +0 -1
  212. package/exports/frameworks/nuxt.mjs +0 -1
  213. package/exports/frameworks/react-router.js +0 -1
  214. package/exports/frameworks/react-router.mjs +0 -1
  215. package/exports/frameworks/standalone.js +0 -1
  216. package/exports/frameworks/standalone.mjs +0 -1
  217. package/exports/frameworks/sveltekit.js +0 -1
  218. package/exports/frameworks/sveltekit.mjs +0 -1
  219. package/exports/frameworks/tanstack-start.js +0 -1
  220. package/exports/frameworks/tanstack-start.mjs +0 -1
  221. package/exports/workers.js +0 -1
  222. package/exports/workers.mjs +0 -1
  223. package/types/client.d.ts +0 -34
  224. package/types/connectors/betterstack.d.ts +0 -1
  225. package/types/connectors/databuddy.d.ts +0 -1
  226. package/types/connectors/otlp.d.ts +0 -1
  227. package/types/connectors/posthog.d.ts +0 -1
  228. package/types/connectors/sentry.d.ts +0 -1
  229. package/types/database.d.ts +0 -1
  230. package/types/expo.d.ts +0 -17
  231. package/types/frameworks/astro.d.ts +0 -1
  232. package/types/frameworks/client.d.ts +0 -160
  233. package/types/frameworks/elysia.d.ts +0 -1
  234. package/types/frameworks/expo.d.ts +0 -50
  235. package/types/frameworks/express.d.ts +0 -1
  236. package/types/frameworks/fastify.d.ts +0 -1
  237. package/types/frameworks/hono.d.ts +0 -1
  238. package/types/frameworks/nestjs.d.ts +0 -1
  239. package/types/frameworks/nextjs.d.ts +0 -1
  240. package/types/frameworks/nitro.d.ts +0 -1
  241. package/types/frameworks/nuxt.d.ts +0 -1
  242. package/types/frameworks/react-router.d.ts +0 -1
  243. package/types/frameworks/standalone.d.ts +0 -1
  244. package/types/frameworks/sveltekit.d.ts +0 -1
  245. package/types/frameworks/tanstack-start.d.ts +0 -1
  246. package/types/frameworks/workers.d.ts +0 -115
  247. package/types/index.d.ts +0 -1
  248. package/types/workers.d.ts +0 -13
@@ -0,0 +1,5 @@
1
+ import type { BlypProviderOptions } from './types';
2
+ export type BlypFetchOptions = Pick<BlypProviderOptions, 'logger' | 'metadata' | 'limits' | 'exclude'> & {
3
+ inspectJsonBody?: boolean;
4
+ };
5
+ export declare function blypFetch(fetchImpl: typeof fetch, options?: BlypFetchOptions): typeof fetch;
@@ -0,0 +1,2 @@
1
+ export { blypFetch } from './fetch';
2
+ export type { AIToolCallRecord, BlypAIProvider, BlypAISDK, BlypCaptureOptions, BlypExcludeOptions, BlypLimitOptions, BlypLLMEventPart, BlypLLMTrace, BlypProviderOptions, BlypSDKContext, BlypTraceEvent, } from './types';
@@ -0,0 +1,17 @@
1
+ import type { AIToolCallRecord } from './types';
2
+ export type BlypNormalizedUsage = {
3
+ inputTokens?: number;
4
+ outputTokens?: number;
5
+ totalTokens?: number;
6
+ reasoningTokens?: number;
7
+ cachedInputTokens?: number;
8
+ };
9
+ export declare function normalizeTokenUsage(usage?: Partial<BlypNormalizedUsage>): BlypNormalizedUsage | undefined;
10
+ export declare function normalizeFinishReason(value: unknown): string | undefined;
11
+ export declare function safeJsonParse(value: unknown): unknown;
12
+ export declare function toToolEventData(toolCall: AIToolCallRecord): Record<string, unknown>;
13
+ export declare function safeErrorSummary(error: unknown): {
14
+ errorType?: string;
15
+ errorCode?: string | number;
16
+ };
17
+ export declare function toProviderPayload(value: unknown): unknown;
@@ -0,0 +1,6 @@
1
+ export declare function toLoggableValue(value: unknown, seen?: WeakSet<object>): unknown;
2
+ export declare function omitPaths(value: Record<string, unknown>, paths: string[]): Record<string, unknown>;
3
+ export declare function truncateValue(value: unknown, maxBytes: number): {
4
+ value: unknown;
5
+ truncated: boolean;
6
+ };
@@ -0,0 +1,7 @@
1
+ export type AsyncIterableLike<T> = AsyncIterable<T> | AsyncIterator<T>;
2
+ export declare function isAsyncIterable<T = unknown>(value: unknown): value is AsyncIterable<T>;
3
+ export declare function wrapAsyncIterable<T>(iterable: AsyncIterable<T>, options: {
4
+ onChunk?: (chunk: T) => void | Promise<void>;
5
+ onReturn?: () => void | Promise<void>;
6
+ onError?: (error: unknown) => void | Promise<void>;
7
+ }): AsyncIterable<T>;
@@ -0,0 +1,119 @@
1
+ import type { LanguageModelV3CallOptions, LanguageModelV3GenerateResult, LanguageModelV3StreamPart, LanguageModelV3 } from '@ai-sdk/provider';
2
+ import type { BlypLogger } from '../../core/logger';
3
+ import type { AIToolCallRecord, BlypAIProvider, BlypAISDK, BlypProviderOptions, BlypSDKContext, BlypMiddlewareContext, BlypModelOptions, BlypResolvedModelOptions, BlypTraceEvent } from './types';
4
+ type MutableTrace = {
5
+ traceId: string;
6
+ provider: string;
7
+ model: string;
8
+ callType: 'generate' | 'stream';
9
+ logger: BlypLogger;
10
+ params: LanguageModelV3CallOptions;
11
+ options: BlypResolvedModelOptions;
12
+ operation: string;
13
+ metadata: Record<string, unknown>;
14
+ startedAt: string;
15
+ startedAtMs: number;
16
+ firstChunkAtMs?: number;
17
+ finishReason?: string;
18
+ usage?: BlypMiddlewareContext['usage'];
19
+ outputText?: string;
20
+ streamedText?: string;
21
+ reasoningText?: string;
22
+ toolCalls: AIToolCallRecord[];
23
+ toolCallMap: Map<string, AIToolCallRecord>;
24
+ events: BlypTraceEvent[];
25
+ streamChunks: unknown[];
26
+ truncated: boolean;
27
+ error?: unknown;
28
+ capture: Required<BlypResolvedModelOptions['capture']>;
29
+ input?: unknown;
30
+ output?: unknown;
31
+ reasoning?: unknown;
32
+ };
33
+ export declare function resolveBlypModelOptions(options?: BlypModelOptions): BlypResolvedModelOptions;
34
+ type MutableSDKTrace = {
35
+ traceId: string;
36
+ provider: BlypAIProvider;
37
+ sdk: Exclude<BlypAISDK, 'ai-sdk'>;
38
+ operation: string;
39
+ method: string;
40
+ model: string;
41
+ logger: BlypLogger;
42
+ metadata: Record<string, unknown>;
43
+ request: unknown;
44
+ response?: unknown;
45
+ usage?: BlypSDKContext['usage'];
46
+ finishReason?: string;
47
+ input?: unknown;
48
+ output?: unknown;
49
+ reasoning?: unknown;
50
+ toolCalls: AIToolCallRecord[];
51
+ events: BlypTraceEvent[];
52
+ error?: unknown;
53
+ startedAt: string;
54
+ endedAt?: string;
55
+ startedAtMs: number;
56
+ firstChunkAt?: string;
57
+ firstChunkAtMs?: number;
58
+ options: BlypResolvedModelOptions;
59
+ capture: Required<BlypResolvedModelOptions['capture']>;
60
+ streamed: boolean;
61
+ rawProviderPayload?: unknown;
62
+ emitted?: boolean;
63
+ truncated: boolean;
64
+ };
65
+ export declare function resolveBlypProviderOptions(options?: BlypProviderOptions): BlypResolvedModelOptions;
66
+ export declare function createSDKTraceState(options: {
67
+ provider: BlypAIProvider;
68
+ sdk: Exclude<BlypAISDK, 'ai-sdk'>;
69
+ operation?: string;
70
+ method: string;
71
+ model: string;
72
+ request: unknown;
73
+ streamed: boolean;
74
+ config: BlypResolvedModelOptions;
75
+ }): {
76
+ state: MutableSDKTrace;
77
+ context: BlypSDKContext;
78
+ };
79
+ export declare function recordSDKUsage(state: MutableSDKTrace, usage?: Partial<NonNullable<BlypSDKContext['usage']>>): void;
80
+ export declare function recordSDKFinishReason(state: MutableSDKTrace, reason: unknown): void;
81
+ export declare function setSDKResponse(state: MutableSDKTrace, response: unknown): void;
82
+ export declare function setSDKInput(state: MutableSDKTrace, input: unknown): void;
83
+ export declare function setSDKOutput(state: MutableSDKTrace, output: unknown): void;
84
+ export declare function setSDKReasoning(state: MutableSDKTrace, reasoning: unknown): void;
85
+ export declare function setSDKRawProviderPayload(state: MutableSDKTrace, payload: unknown): void;
86
+ export declare function setSDKStreamed(state: MutableSDKTrace, streamed: boolean): void;
87
+ export declare function markSDKFirstChunk(state: MutableSDKTrace, context: BlypSDKContext): Promise<void>;
88
+ export declare function addSDKChunkEvent(state: MutableSDKTrace, context: BlypSDKContext, data: Record<string, unknown>): Promise<void>;
89
+ export declare function upsertSDKToolCall(state: MutableSDKTrace, toolCall: AIToolCallRecord): void;
90
+ export declare function emitSDKToolStart(state: MutableSDKTrace, context: BlypSDKContext, toolCall: AIToolCallRecord): Promise<void>;
91
+ export declare function emitSDKToolResult(state: MutableSDKTrace, context: BlypSDKContext, toolCall: AIToolCallRecord): Promise<void>;
92
+ export declare function finalizeSDKTrace(state: MutableSDKTrace, context: BlypSDKContext, options?: {
93
+ error?: unknown;
94
+ }): Promise<void>;
95
+ export declare function createTraceState(options: {
96
+ model: LanguageModelV3;
97
+ params: LanguageModelV3CallOptions;
98
+ callType: 'generate' | 'stream';
99
+ config: BlypResolvedModelOptions;
100
+ }): {
101
+ state: MutableTrace;
102
+ context: BlypMiddlewareContext;
103
+ };
104
+ export declare function runHookSafely(hook: ((...args: any[]) => void | Promise<void>) | undefined, args: unknown[]): Promise<void>;
105
+ export declare function addTraceEvent(state: MutableTrace, context: BlypMiddlewareContext, event: Omit<BlypTraceEvent, 'timestamp'> & {
106
+ timestamp?: string;
107
+ }): Promise<void>;
108
+ export declare function captureValue(value: unknown, maxContentBytes: number): {
109
+ value: unknown;
110
+ truncated: boolean;
111
+ };
112
+ export declare function sanitizeInput(params: LanguageModelV3CallOptions, state: MutableTrace): unknown;
113
+ export declare function recordGenerateResult(state: MutableTrace, result: LanguageModelV3GenerateResult): void;
114
+ export declare function upsertToolCall(state: MutableTrace, toolCall: AIToolCallRecord): void;
115
+ export declare function consumeStreamPart(state: MutableTrace, context: BlypMiddlewareContext, part: LanguageModelV3StreamPart): Promise<void>;
116
+ export declare function finalizeTrace(state: MutableTrace, context: BlypMiddlewareContext, options?: {
117
+ error?: unknown;
118
+ }): Promise<void>;
119
+ export {};
@@ -0,0 +1,171 @@
1
+ import type { LanguageModelMiddleware } from 'ai';
2
+ import type { LanguageModelV3 } from '@ai-sdk/provider';
3
+ import type { BlypLogger } from '../../core/logger';
4
+ export type BlypAIProvider = 'openai' | 'anthropic' | 'openrouter' | 'better-agent' | (string & {});
5
+ export type BlypAISDK = 'ai-sdk' | 'openai-sdk' | 'anthropic-sdk' | 'better-agent-sdk';
6
+ export type BlypTraceEvent = {
7
+ type: 'ai.start' | 'ai.first_chunk' | 'ai.chunk' | 'ai.tool_call.start' | 'ai.tool_call.result' | 'ai.finish' | 'ai.error';
8
+ timestamp: string;
9
+ data?: Record<string, unknown>;
10
+ };
11
+ export type AIToolCallRecord = {
12
+ id?: string;
13
+ name: string;
14
+ input?: unknown;
15
+ output?: unknown;
16
+ providerFormat?: unknown;
17
+ startedAt?: string;
18
+ finishedAt?: string;
19
+ durationMs?: number;
20
+ status: 'started' | 'completed' | 'failed';
21
+ error?: unknown;
22
+ };
23
+ export type BlypCaptureOptions = {
24
+ input?: boolean;
25
+ output?: boolean;
26
+ toolInputs?: boolean;
27
+ toolOutputs?: boolean;
28
+ reasoning?: boolean;
29
+ streamEvents?: boolean;
30
+ streamChunks?: boolean;
31
+ rawProviderPayload?: boolean;
32
+ };
33
+ export type BlypExcludeOptions = {
34
+ providerOptions?: boolean;
35
+ requestPaths?: string[];
36
+ responsePaths?: string[];
37
+ metadataPaths?: string[];
38
+ toolNames?: string[];
39
+ };
40
+ export type BlypLimitOptions = {
41
+ maxContentBytes?: number;
42
+ maxEvents?: number;
43
+ maxToolCalls?: number;
44
+ };
45
+ export type BlypMiddlewareContext = {
46
+ traceId: string;
47
+ operation: string;
48
+ provider: string;
49
+ model: string;
50
+ callType: 'generate' | 'stream';
51
+ logger: BlypLogger;
52
+ params: unknown;
53
+ metadata: Record<string, unknown>;
54
+ startedAt: string;
55
+ usage?: {
56
+ inputTokens?: number;
57
+ outputTokens?: number;
58
+ totalTokens?: number;
59
+ reasoningTokens?: number;
60
+ cachedInputTokens?: number;
61
+ };
62
+ finishReason?: string;
63
+ streamedText?: string;
64
+ outputText?: string;
65
+ toolCalls?: AIToolCallRecord[];
66
+ error?: unknown;
67
+ setMetadata(extra: Record<string, unknown>): void;
68
+ disableCapture(field: 'input' | 'output' | 'toolInputs' | 'toolOutputs' | 'reasoning'): void;
69
+ };
70
+ export type BlypProviderOptions = {
71
+ logger?: BlypLogger;
72
+ provider?: BlypAIProvider;
73
+ operation?: string;
74
+ metadata?: Record<string, unknown>;
75
+ capture?: BlypCaptureOptions;
76
+ exclude?: BlypExcludeOptions;
77
+ limits?: BlypLimitOptions;
78
+ hooks?: {
79
+ onStart?: (context: BlypSDKContext) => void | Promise<void>;
80
+ onFinish?: (context: BlypSDKContext) => void | Promise<void>;
81
+ onError?: (context: BlypSDKContext) => void | Promise<void>;
82
+ onEvent?: (event: BlypLLMEventPart, context: BlypSDKContext) => void | Promise<void>;
83
+ };
84
+ };
85
+ export type BlypSDKContext = {
86
+ traceId: string;
87
+ provider: BlypAIProvider;
88
+ sdk: Exclude<BlypAISDK, 'ai-sdk'>;
89
+ operation: string;
90
+ method: string;
91
+ logger: BlypLogger;
92
+ metadata: Record<string, unknown>;
93
+ request: unknown;
94
+ response?: unknown;
95
+ usage?: {
96
+ inputTokens?: number;
97
+ outputTokens?: number;
98
+ totalTokens?: number;
99
+ reasoningTokens?: number;
100
+ cachedInputTokens?: number;
101
+ };
102
+ finishReason?: string;
103
+ input?: unknown;
104
+ output?: unknown;
105
+ reasoning?: unknown;
106
+ toolCalls?: AIToolCallRecord[];
107
+ startedAt: string;
108
+ firstChunkAt?: string;
109
+ endedAt?: string;
110
+ error?: unknown;
111
+ setMetadata(extra: Record<string, unknown>): void;
112
+ disableCapture(field: 'input' | 'output' | 'toolInputs' | 'toolOutputs' | 'reasoning' | 'rawProviderPayload'): void;
113
+ };
114
+ export type BlypLLMTrace = {
115
+ provider: BlypAIProvider;
116
+ sdk: Exclude<BlypAISDK, 'ai-sdk'>;
117
+ model: string;
118
+ operation: string;
119
+ method: string;
120
+ streamed: boolean;
121
+ usage?: {
122
+ inputTokens?: number;
123
+ outputTokens?: number;
124
+ totalTokens?: number;
125
+ reasoningTokens?: number;
126
+ cachedInputTokens?: number;
127
+ };
128
+ finishReason?: string;
129
+ tools?: Array<{
130
+ id?: string;
131
+ name: string;
132
+ input?: unknown;
133
+ output?: unknown;
134
+ providerFormat?: unknown;
135
+ status: 'started' | 'completed' | 'failed';
136
+ }>;
137
+ toolCalls?: Array<{
138
+ id?: string;
139
+ name: string;
140
+ input?: unknown;
141
+ output?: unknown;
142
+ providerFormat?: unknown;
143
+ status: 'started' | 'completed' | 'failed';
144
+ }>;
145
+ input?: unknown;
146
+ output?: unknown;
147
+ reasoning?: unknown;
148
+ timing: {
149
+ startedAt: string;
150
+ firstChunkAt?: string;
151
+ endedAt: string;
152
+ durationMs: number;
153
+ msToFirstChunk?: number;
154
+ };
155
+ metadata?: Record<string, unknown>;
156
+ rawProviderPayload?: unknown;
157
+ };
158
+ export type BlypLLMEventPart = BlypTraceEvent;
159
+ export type BlypModelOptions = BlypProviderOptions;
160
+ export type BlypResolvedModelOptions = {
161
+ logger?: BlypLogger;
162
+ provider?: BlypAIProvider;
163
+ operation?: string;
164
+ metadata: Record<string, unknown>;
165
+ capture: Required<BlypCaptureOptions>;
166
+ exclude: Required<BlypExcludeOptions>;
167
+ limits: Required<BlypLimitOptions>;
168
+ hooks: NonNullable<BlypModelOptions['hooks']>;
169
+ };
170
+ export type BlypLanguageModel = LanguageModelV3;
171
+ export type BlypLanguageModelMiddleware = LanguageModelMiddleware;