evlog 2.19.1 → 2.20.0

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 (190) hide show
  1. package/README.md +30 -1
  2. package/dist/adapters/axiom.d.mts +1 -1
  3. package/dist/adapters/axiom.mjs +2 -2
  4. package/dist/adapters/better-stack.d.mts +1 -1
  5. package/dist/adapters/better-stack.mjs +2 -2
  6. package/dist/adapters/datadog.d.mts +1 -1
  7. package/dist/adapters/datadog.mjs +2 -2
  8. package/dist/adapters/fs.d.mts +1 -1
  9. package/dist/adapters/fs.mjs +1 -1
  10. package/dist/adapters/hyperdx.d.mts +1 -1
  11. package/dist/adapters/hyperdx.mjs +1 -1
  12. package/dist/adapters/memory.d.mts +1 -1
  13. package/dist/adapters/memory.mjs +1 -1
  14. package/dist/adapters/otlp.d.mts +1 -1
  15. package/dist/adapters/otlp.mjs +2 -2
  16. package/dist/adapters/posthog.d.mts +1 -1
  17. package/dist/adapters/posthog.mjs +2 -2
  18. package/dist/adapters/sentry.d.mts +1 -1
  19. package/dist/adapters/sentry.mjs +2 -2
  20. package/dist/ai/index.d.mts +27 -10
  21. package/dist/ai/index.d.mts.map +1 -1
  22. package/dist/ai/index.mjs +80 -15
  23. package/dist/ai/index.mjs.map +1 -1
  24. package/dist/asyncStorageScope-DnF7Xk8l.mjs +81 -0
  25. package/dist/asyncStorageScope-DnF7Xk8l.mjs.map +1 -0
  26. package/dist/{audit-BQt8yAHo.mjs → audit-BXCYMjcC.mjs} +31 -93
  27. package/dist/audit-BXCYMjcC.mjs.map +1 -0
  28. package/dist/{audit-D7v6JHj0.d.mts → audit-BZrUvjfW.d.mts} +71 -53
  29. package/dist/audit-BZrUvjfW.d.mts.map +1 -0
  30. package/dist/audit-action.d.mts +2 -0
  31. package/dist/audit-action.mjs +74 -0
  32. package/dist/audit-action.mjs.map +1 -0
  33. package/dist/audit.d.mts +2 -0
  34. package/dist/audit.mjs +3 -0
  35. package/dist/better-auth/index.d.mts +1 -1
  36. package/dist/browser.d.mts +1 -1
  37. package/dist/{index-EvnrXvQM.d.mts → catalog-1cQnNxR2.d.mts} +4 -3
  38. package/dist/catalog-1cQnNxR2.d.mts.map +1 -0
  39. package/dist/catalog.d.mts +2 -0
  40. package/dist/catalog.mjs +205 -0
  41. package/dist/catalog.mjs.map +1 -0
  42. package/dist/{define-DTQpu4f6.d.mts → define-Ct2QyrE9.d.mts} +3 -3
  43. package/dist/{define-DTQpu4f6.d.mts.map → define-Ct2QyrE9.d.mts.map} +1 -1
  44. package/dist/{drain-fDb-eNwz.mjs → drain-Dl2ZJKRA.mjs} +3 -3
  45. package/dist/{drain-fDb-eNwz.mjs.map → drain-Dl2ZJKRA.mjs.map} +1 -1
  46. package/dist/elysia/index.d.mts +8 -7
  47. package/dist/elysia/index.d.mts.map +1 -1
  48. package/dist/elysia/index.mjs +11 -8
  49. package/dist/elysia/index.mjs.map +1 -1
  50. package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs → enrich-error-stack-next.node-KB0Oap7R.mjs} +1 -1
  51. package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs.map → enrich-error-stack-next.node-KB0Oap7R.mjs.map} +1 -1
  52. package/dist/{enricher-CBRmQw6e.d.mts → enricher-BOzt2FCi.d.mts} +2 -2
  53. package/dist/{enricher-CBRmQw6e.d.mts.map → enricher-BOzt2FCi.d.mts.map} +1 -1
  54. package/dist/enrichers.d.mts +2 -2
  55. package/dist/{error-CpghjrkY.d.mts → error-BRymuv8U.d.mts} +2 -2
  56. package/dist/{error-CpghjrkY.d.mts.map → error-BRymuv8U.d.mts.map} +1 -1
  57. package/dist/error.d.mts +1 -1
  58. package/dist/{errors-BLU4Tfpe.d.mts → errors-C7qA6CAi.d.mts} +2 -2
  59. package/dist/{errors-BLU4Tfpe.d.mts.map → errors-C7qA6CAi.d.mts.map} +1 -1
  60. package/dist/eve/index.d.mts +72 -0
  61. package/dist/eve/index.d.mts.map +1 -0
  62. package/dist/eve/index.mjs +593 -0
  63. package/dist/eve/index.mjs.map +1 -0
  64. package/dist/express/index.d.mts +4 -4
  65. package/dist/express/index.d.mts.map +1 -1
  66. package/dist/express/index.mjs +3 -3
  67. package/dist/express/index.mjs.map +1 -1
  68. package/dist/fastify/index.d.mts +4 -4
  69. package/dist/fastify/index.d.mts.map +1 -1
  70. package/dist/fastify/index.mjs +4 -2
  71. package/dist/fastify/index.mjs.map +1 -1
  72. package/dist/fork-S9gpZmF8.mjs +72 -0
  73. package/dist/fork-S9gpZmF8.mjs.map +1 -0
  74. package/dist/hono/index.d.mts +3 -3
  75. package/dist/hono/index.d.mts.map +1 -1
  76. package/dist/hono/index.mjs +3 -6
  77. package/dist/hono/index.mjs.map +1 -1
  78. package/dist/{http-ChVS9GYc.mjs → http-pKfd8UDu.mjs} +2 -2
  79. package/dist/{http-ChVS9GYc.mjs.map → http-pKfd8UDu.mjs.map} +1 -1
  80. package/dist/http.d.mts +1 -1
  81. package/dist/index.d.mts +9 -9
  82. package/dist/index.mjs +3 -203
  83. package/dist/{instrumentation-create-BrjQtSKD.d.mts → instrumentation-create-gSDk0leX.d.mts} +2 -2
  84. package/dist/{instrumentation-create-BrjQtSKD.d.mts.map → instrumentation-create-gSDk0leX.d.mts.map} +1 -1
  85. package/dist/{integration-DYp2uw8O.mjs → integration-CeL90DtN.mjs} +3 -2
  86. package/dist/{integration-DYp2uw8O.mjs.map → integration-CeL90DtN.mjs.map} +1 -1
  87. package/dist/{logger-mHIWxBhJ.d.mts → logger-CxWz7QJ3.d.mts} +7 -3
  88. package/dist/logger-CxWz7QJ3.d.mts.map +1 -0
  89. package/dist/logger.d.mts +2 -2
  90. package/dist/logger.mjs +2 -2
  91. package/dist/{fork-CgGlAaHa.mjs → middleware-Cdebyfdt.mjs} +3 -69
  92. package/dist/middleware-Cdebyfdt.mjs.map +1 -0
  93. package/dist/{middleware-B_k4Mrzg.d.mts → middleware-fbtEs6bq.d.mts} +3 -3
  94. package/dist/middleware-fbtEs6bq.d.mts.map +1 -0
  95. package/dist/nestjs/index.d.mts +5 -5
  96. package/dist/nestjs/index.d.mts.map +1 -1
  97. package/dist/nestjs/index.mjs +4 -3
  98. package/dist/nestjs/index.mjs.map +1 -1
  99. package/dist/next/client.d.mts +1 -1
  100. package/dist/next/index.d.mts +5 -5
  101. package/dist/next/index.d.mts.map +1 -1
  102. package/dist/next/index.mjs +3 -3
  103. package/dist/next/index.mjs.map +1 -1
  104. package/dist/next/instrumentation/create.d.mts +1 -1
  105. package/dist/next/instrumentation/create.mjs +3 -1
  106. package/dist/next/instrumentation/create.mjs.map +1 -1
  107. package/dist/next/instrumentation.d.mts +1 -1
  108. package/dist/next/stream.d.mts +1 -1
  109. package/dist/nitro/errorHandler.mjs +9 -4
  110. package/dist/nitro/errorHandler.mjs.map +1 -1
  111. package/dist/nitro/module.d.mts +2 -2
  112. package/dist/nitro/module.mjs +1 -1
  113. package/dist/nitro/plugin.mjs +2 -2
  114. package/dist/nitro/v3/errorHandler.d.mts +0 -10
  115. package/dist/nitro/v3/errorHandler.mjs +13 -3
  116. package/dist/nitro/v3/errorHandler.mjs.map +1 -1
  117. package/dist/nitro/v3/index.d.mts +2 -2
  118. package/dist/nitro/v3/module.d.mts +1 -1
  119. package/dist/nitro/v3/module.mjs +1 -1
  120. package/dist/nitro/v3/plugin.mjs +2 -2
  121. package/dist/nitro/v3/useLogger.d.mts +2 -2
  122. package/dist/nitro/v3/useLogger.d.mts.map +1 -1
  123. package/dist/nitro/v3/useLogger.mjs.map +1 -1
  124. package/dist/{nitro-_Hda8Deo.d.mts → nitro-CcN7HDnr.d.mts} +2 -2
  125. package/dist/{nitro-_Hda8Deo.d.mts.map → nitro-CcN7HDnr.d.mts.map} +1 -1
  126. package/dist/{nitro-ClRZLD1g.mjs → nitro-DYFCSlho.mjs} +30 -3
  127. package/dist/nitro-DYFCSlho.mjs.map +1 -0
  128. package/dist/{nitroConfigBridge-BkVWnSV3.mjs → nitroConfigBridge-lHPsE5zG.mjs} +8 -6
  129. package/dist/nitroConfigBridge-lHPsE5zG.mjs.map +1 -0
  130. package/dist/{nodeResponse-CIEEbrNE.mjs → nodeResponse-Dsl7gZUf.mjs} +1 -1
  131. package/dist/{nodeResponse-CIEEbrNE.mjs.map → nodeResponse-Dsl7gZUf.mjs.map} +1 -1
  132. package/dist/nuxt/module.d.mts +1 -1
  133. package/dist/nuxt/module.mjs +2 -2
  134. package/dist/orpc/index.d.mts +4 -4
  135. package/dist/orpc/index.d.mts.map +1 -1
  136. package/dist/orpc/index.mjs +2 -2
  137. package/dist/orpc/index.mjs.map +1 -1
  138. package/dist/{package-CNV_CXs8.mjs → package-Drb3wqqt.mjs} +2 -2
  139. package/dist/package-Drb3wqqt.mjs.map +1 -0
  140. package/dist/{parseError-BeBXEd2V.d.mts → parseError-BmoJ7XeF.d.mts} +2 -2
  141. package/dist/parseError-BmoJ7XeF.d.mts.map +1 -0
  142. package/dist/react-router/index.d.mts +4 -4
  143. package/dist/react-router/index.d.mts.map +1 -1
  144. package/dist/react-router/index.mjs +3 -2
  145. package/dist/react-router/index.mjs.map +1 -1
  146. package/dist/register-disk-snippet-B5svlT8-.mjs +21 -0
  147. package/dist/register-disk-snippet-B5svlT8-.mjs.map +1 -0
  148. package/dist/runtime/client/log.d.mts +1 -1
  149. package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -1
  150. package/dist/runtime/server/useLogger.d.mts +1 -1
  151. package/dist/runtime/server/useLogger.mjs.map +1 -1
  152. package/dist/runtime/utils/parseError.d.mts +2 -2
  153. package/dist/{storage-7X37OToT.mjs → storage-BeFdoGTI.mjs} +1 -1
  154. package/dist/storage-BeFdoGTI.mjs.map +1 -0
  155. package/dist/stream.d.mts +1 -1
  156. package/dist/stream.d.mts.map +1 -1
  157. package/dist/stream.mjs +7 -1
  158. package/dist/stream.mjs.map +1 -1
  159. package/dist/sveltekit/index.d.mts +3 -4
  160. package/dist/sveltekit/index.d.mts.map +1 -1
  161. package/dist/sveltekit/index.mjs +6 -3
  162. package/dist/sveltekit/index.mjs.map +1 -1
  163. package/dist/toolkit.d.mts +7 -7
  164. package/dist/toolkit.d.mts.map +1 -1
  165. package/dist/toolkit.mjs +7 -6
  166. package/dist/types.d.mts +1 -1
  167. package/dist/{useLogger-Cfv8Ck8b.d.mts → useLogger-BupVLO9_.d.mts} +3 -3
  168. package/dist/useLogger-BupVLO9_.d.mts.map +1 -0
  169. package/dist/{utils-CJJG0ZYW.d.mts → utils-D_LY-J1k.d.mts} +2 -2
  170. package/dist/{utils-CJJG0ZYW.d.mts.map → utils-D_LY-J1k.d.mts.map} +1 -1
  171. package/dist/utils.d.mts +1 -1
  172. package/dist/vite/index.d.mts +1 -1
  173. package/dist/workers.d.mts +3 -3
  174. package/dist/workers.d.mts.map +1 -1
  175. package/dist/workers.mjs +1 -1
  176. package/dist/workers.mjs.map +1 -1
  177. package/package.json +25 -2
  178. package/dist/audit-BQt8yAHo.mjs.map +0 -1
  179. package/dist/audit-D7v6JHj0.d.mts.map +0 -1
  180. package/dist/fork-CgGlAaHa.mjs.map +0 -1
  181. package/dist/index-EvnrXvQM.d.mts.map +0 -1
  182. package/dist/index.mjs.map +0 -1
  183. package/dist/logger-mHIWxBhJ.d.mts.map +0 -1
  184. package/dist/middleware-B_k4Mrzg.d.mts.map +0 -1
  185. package/dist/nitro-ClRZLD1g.mjs.map +0 -1
  186. package/dist/nitroConfigBridge-BkVWnSV3.mjs.map +0 -1
  187. package/dist/package-CNV_CXs8.mjs.map +0 -1
  188. package/dist/parseError-BeBXEd2V.d.mts.map +0 -1
  189. package/dist/storage-7X37OToT.mjs.map +0 -1
  190. package/dist/useLogger-Cfv8Ck8b.d.mts.map +0 -1
package/README.md CHANGED
@@ -560,6 +560,32 @@ export default async function fetch(request: Request) {
560
560
 
561
561
  See the full [orpc example](https://github.com/HugoRCD/evlog/tree/main/examples/orpc) for a complete working project.
562
562
 
563
+ ## eve
564
+
565
+ ```typescript
566
+ // agent/hooks/evlog.ts
567
+ import { defineEvlogHook } from 'evlog/eve'
568
+ import { createAxiomDrain } from 'evlog/axiom'
569
+
570
+ export default defineEvlogHook({
571
+ init: { env: { service: 'my-agent' } },
572
+ drain: createAxiomDrain(),
573
+ maxSessions: 256,
574
+ })
575
+ ```
576
+
577
+ ```typescript
578
+ // agent/tools/my_tool.ts — inside execute()
579
+ import { useLogger } from 'evlog/eve'
580
+
581
+ const log = useLogger()
582
+ log.set({ order: { id: input.orderId } })
583
+ ```
584
+
585
+ `defineEvlogHook()` maps eve turn lifecycle events to one wide event per turn. Call `useLogger()` in tools — the logger is bound via AsyncLocalStorage on `turn.started`. Pass `ctx` only when ALS is unavailable (`useLogger(ctx)`). Pretty-printing follows `isDev()` by default (tree locally, JSON in production); set `init.pretty: false` explicitly if you need to override. Complements eve Agent Runs and OpenTelemetry — see the [eve use case](https://evlog.dev/use-cases/eve).
586
+
587
+ See the full [eve example](https://github.com/HugoRCD/evlog/tree/main/examples/eve) for a complete agent layout.
588
+
563
589
  ## Browser
564
590
 
565
591
  Use the `log` API on the client side for structured browser logging:
@@ -794,7 +820,9 @@ See [the Audit Logs guide](https://evlog.dev/use-cases/audit/overview) for compl
794
820
 
795
821
  ## AI SDK Integration
796
822
 
797
- Capture token usage, tool calls, model info, and streaming metrics from the [Vercel AI SDK](https://ai-sdk.dev) into wide events. Requires `ai >= 6.0.0`.
823
+ Capture token usage, tool calls, model info, and streaming metrics from the [Vercel AI SDK](https://ai-sdk.dev) into wide events. Compatible with AI SDK v6 and v7 (`ai >= 6.0.168`). AI SDK v7 requires Node.js 22+.
824
+
825
+ For tool execution timing, abort tracking, and auto embed capture, pass `createEvlogIntegration(ai)` to `telemetry.integrations` (v7) or `experimental_telemetry.integrations` (v6).
798
826
 
799
827
  ```typescript
800
828
  import { streamText } from 'ai'
@@ -1388,6 +1416,7 @@ try {
1388
1416
  | **Fastify** | `app.register(evlog)` with `import { evlog } from 'evlog/fastify'` ([example](./examples/fastify)) |
1389
1417
  | **Elysia** | `.use(evlog())` with `import { evlog } from 'evlog/elysia'` ([example](./examples/elysia)) |
1390
1418
  | **oRPC** | `withEvlog(handler)` + `os.use(evlog())` with `import { evlog, withEvlog } from 'evlog/orpc'` ([example](./examples/orpc)) |
1419
+ | **eve** | `defineEvlogHook()` in `agent/hooks/evlog.ts` with `import { defineEvlogHook, useLogger } from 'evlog/eve'` ([example](./examples/eve)) |
1391
1420
  | **Cloudflare Workers** | Manual setup with `import { initWorkersLogger, createWorkersLogger } from 'evlog/workers'` ([example](./examples/workers)) |
1392
1421
  | **Custom** | Build your own with `import { createMiddlewareLogger } from 'evlog/toolkit'` ([guide](https://evlog.dev/extend/custom-framework)) |
1393
1422
  | **Analog** | Nitro v2 module setup |
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/axiom.d.ts
3
3
  interface BaseAxiomConfig {
4
4
  /** Axiom dataset name. */
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-Dl2ZJKRA.mjs";
3
3
  //#region src/adapters/axiom.ts
4
4
  const AXIOM_FIELDS = [
5
5
  {
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/better-stack.d.ts
3
3
  interface BetterStackConfig {
4
4
  /** Better Stack API key (replaces deprecated `sourceToken`). */
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-Dl2ZJKRA.mjs";
3
3
  //#region src/adapters/better-stack.ts
4
4
  const BETTER_STACK_FIELDS = [
5
5
  {
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/datadog.d.ts
3
3
  interface DatadogConfig {
4
4
  /** Datadog API key with Logs intake permission */
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-Dl2ZJKRA.mjs";
3
3
  //#region src/adapters/datadog.ts
4
4
  const DATADOG_FIELDS = [
5
5
  {
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, X as LogLevel, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { $ as LogLevel, U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/fs.d.ts
3
3
  interface FsConfig {
4
4
  /** Directory for log files. Default: `.evlog/logs` */
@@ -1,4 +1,4 @@
1
- import { o as resolveAdapterConfig, t as defineDrain } from "../drain-fDb-eNwz.mjs";
1
+ import { o as resolveAdapterConfig, t as defineDrain } from "../drain-Dl2ZJKRA.mjs";
2
2
  import { join, sep } from "node:path";
3
3
  import { createReadStream } from "node:fs";
4
4
  import { appendFile, mkdir, open, readdir, stat, unlink, writeFile } from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  import { OTLPConfig } from "./otlp.mjs";
3
3
 
4
4
  //#region src/adapters/hyperdx.d.ts
@@ -1,4 +1,4 @@
1
- import { i as formatPublicEnvKeys, o as resolveAdapterConfig, t as defineDrain } from "../drain-fDb-eNwz.mjs";
1
+ import { i as formatPublicEnvKeys, o as resolveAdapterConfig, t as defineDrain } from "../drain-Dl2ZJKRA.mjs";
2
2
  import { sendBatchToOTLP } from "./otlp.mjs";
3
3
  //#region src/adapters/hyperdx.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, X as LogLevel, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { $ as LogLevel, U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/memory.d.ts
3
3
  /**
4
4
  * Configuration for the in-memory drain.
@@ -1,4 +1,4 @@
1
- import { o as resolveAdapterConfig, t as defineDrain } from "../drain-fDb-eNwz.mjs";
1
+ import { o as resolveAdapterConfig, t as defineDrain } from "../drain-Dl2ZJKRA.mjs";
2
2
  //#region src/adapters/memory.ts
3
3
  const DEFAULT_STORE = "default";
4
4
  const DEFAULT_MAX_EVENTS = 1e3;
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/otlp.d.ts
3
3
  interface OTLPConfig {
4
4
  /** OTLP HTTP endpoint (e.g., http://localhost:4318) */
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-Dl2ZJKRA.mjs";
3
3
  import { n as toOtlpAttributeValue } from "../event-qwAv-7AZ.mjs";
4
4
  import { n as OTEL_SEVERITY_TEXT, t as OTEL_SEVERITY_NUMBER } from "../severity-CwXUSHt3.mjs";
5
5
  //#region src/adapters/otlp.ts
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/posthog.d.ts
3
3
  /**
4
4
  * Mode for {@link createPostHogDrain}.
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, t as defineDrain } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, t as defineDrain } from "../drain-Dl2ZJKRA.mjs";
3
3
  import { sendBatchToOTLP } from "./otlp.mjs";
4
4
  //#region src/adapters/posthog.ts
5
5
  const POSTHOG_FIELDS = [
@@ -1,4 +1,4 @@
1
- import { B as DrainContext, ft as WideEvent } from "../audit-D7v6JHj0.mjs";
1
+ import { U as DrainContext, ht as WideEvent } from "../audit-BZrUvjfW.mjs";
2
2
  //#region src/adapters/sentry.d.ts
3
3
  interface SentryConfig {
4
4
  /** Sentry DSN */
@@ -1,5 +1,5 @@
1
- import { r as httpPost } from "../http-ChVS9GYc.mjs";
2
- import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-fDb-eNwz.mjs";
1
+ import { r as httpPost } from "../http-pKfd8UDu.mjs";
2
+ import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-Dl2ZJKRA.mjs";
3
3
  import { t as OTEL_SEVERITY_NUMBER } from "../severity-CwXUSHt3.mjs";
4
4
  //#region src/adapters/sentry.ts
5
5
  const SENTRY_FIELDS = [
@@ -1,8 +1,23 @@
1
- import { rt as RequestLogger } from "../audit-D7v6JHj0.mjs";
2
- import { GatewayModelId, TelemetryIntegration } from "ai";
1
+ import { ot as RequestLogger } from "../audit-BZrUvjfW.mjs";
2
+ import { GatewayModelId } from "ai";
3
3
  import { LanguageModelV3, LanguageModelV3Middleware } from "@ai-sdk/provider";
4
4
 
5
5
  //#region src/ai/index.d.ts
6
+ /**
7
+ * Telemetry integration returned by {@link createEvlogIntegration}.
8
+ * Implements hooks for AI SDK v6 (`onToolCallFinish`, `onFinish`) and v7
9
+ * (`onToolExecutionEnd`, `onEnd`, `onEmbedEnd`, `onAbort`, `onError`).
10
+ */
11
+ type EvlogTelemetry = {
12
+ onStart?: (event: unknown) => void | PromiseLike<void>; /** AI SDK v6 — superseded by `onToolExecutionEnd` in v7. */
13
+ onToolCallFinish?: (event: unknown) => void | PromiseLike<void>;
14
+ onToolExecutionEnd?: (event: unknown) => void | PromiseLike<void>; /** AI SDK v6 — superseded by `onEnd` in v7. */
15
+ onFinish?: (event: unknown) => void | PromiseLike<void>;
16
+ onEnd?: (event: unknown) => void | PromiseLike<void>;
17
+ onEmbedEnd?: (event: unknown) => void | PromiseLike<void>;
18
+ onAbort?: (event: unknown) => void | PromiseLike<void>;
19
+ onError?: (event: unknown) => void | PromiseLike<void>;
20
+ };
6
21
  /**
7
22
  * Fine-grained control over tool call input capture.
8
23
  */
@@ -68,7 +83,7 @@ interface AIStepUsage {
68
83
  toolCalls?: string[];
69
84
  }
70
85
  /**
71
- * Tool execution detail captured via `TelemetryIntegration`.
86
+ * Tool execution detail captured via telemetry integration hooks.
72
87
  */
73
88
  interface AIToolExecution {
74
89
  name: string;
@@ -371,9 +386,13 @@ interface AccumulatorState {
371
386
  _log?: RequestLogger;
372
387
  }
373
388
  /**
374
- * Create an AI SDK `TelemetryIntegration` that captures tool execution
389
+ * Create an AI SDK telemetry integration that captures tool execution
375
390
  * timing, errors, and total generation wall time into the wide event.
376
391
  *
392
+ * Compatible with AI SDK v6 (`TelemetryIntegration`) and v7 (`Telemetry`).
393
+ * On v7, also captures embeddings via `onEmbedEnd`, aborts via `onAbort`,
394
+ * and unrecoverable errors via `onError`.
395
+ *
377
396
  * Complements the middleware-based `createAILogger`: the middleware captures
378
397
  * token usage and streaming metrics at the model level, while the integration
379
398
  * captures application-level lifecycle events (tool execution, total duration).
@@ -391,8 +410,7 @@ interface AccumulatorState {
391
410
  * const result = await generateText({
392
411
  * model: ai.wrap('anthropic/claude-sonnet-4.6'),
393
412
  * tools: { getWeather },
394
- * experimental_telemetry: {
395
- * isEnabled: true,
413
+ * telemetry: {
396
414
  * integrations: [createEvlogIntegration(ai)],
397
415
  * },
398
416
  * })
@@ -406,14 +424,13 @@ interface AccumulatorState {
406
424
  *
407
425
  * const result = await generateText({
408
426
  * model: openai('gpt-4o'),
409
- * experimental_telemetry: {
410
- * isEnabled: true,
427
+ * telemetry: {
411
428
  * integrations: [integration],
412
429
  * },
413
430
  * })
414
431
  * ```
415
432
  */
416
- declare function createEvlogIntegration(logOrAi: RequestLogger | AILogger, options?: AILoggerOptions): TelemetryIntegration;
433
+ declare function createEvlogIntegration(logOrAi: RequestLogger | AILogger, options?: AILoggerOptions): EvlogTelemetry;
417
434
  //#endregion
418
- export { AIEmbeddingData, AIEventData, AILogger, AILoggerOptions, AIMetadata, AIMetadataListener, AIStepUsage, AIToolExecution, ModelCost, ToolInputsOptions, createAILogger, createAIMiddleware, createEvlogIntegration };
435
+ export { AIEmbeddingData, AIEventData, AILogger, AILoggerOptions, AIMetadata, AIMetadataListener, AIStepUsage, AIToolExecution, EvlogTelemetry, ModelCost, ToolInputsOptions, createAILogger, createAIMiddleware, createEvlogIntegration };
419
436
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ai/index.ts"],"mappings":";;;;;;;AAQA;UAAiB,iBAAA;;;;;EAKf,SAAA;EAM6B;;;AAM/B;;EANE,SAAA,IAAa,KAAA,WAAgB,QAAA;AAAA;;AAc/B;;UARiB,SAAA;EACf,KAAA;EACA,MAAA;AAAA;;;;UAMe,eAAA;EA2Bf;;;;;AAMF;;;EAxBE,UAAA,aAAuB,iBAAA;EAyBvB;;;;;;AASF;;;;;;;;;;AAUA;EA1BE,IAAA,GAAO,MAAA,SAAe,SAAA;AAAA;;;;UAMP,WAAA;EACf,KAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;AAAA;;;;UAMe,eAAA;EACf,IAAA;EACA,UAAA;EACA,OAAA;EACA,KAAA;AAAA;;;;UAMe,eAAA;EACf,KAAA;EACA,MAAA;EACA,UAAA;EACA,KAAA;AAAA;;;;;;;;;UAWe,WAAA;EACf,KAAA;EACA,KAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,YAAA;EACA,SAAA,cAAuB,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;EAC7C,UAAA;EACA,KAAA;EACA,UAAA,GAAa,WAAA;EACb,cAAA;EACA,UAAA;EACA,eAAA;EACA,KAAA;EACA,KAAA,GAAQ,eAAA;EACR,eAAA;EACA,SAAA,GAAY,eAAA;EACZ,aAAA;AAAA;;;;;;;KASU,UAAA,GAAa,WAAA;;;;;KAMb,kBAAA,IAAsB,QAAA,EAAU,UAAA;AAAA,UAE3B,QAAA;EA0Cb;;;;;;;;;;;;;;AAgGH;;;;;;EArHC,IAAA,GAAO,KAAA,EAAO,eAAA,GAAkB,cAAA,KAAmB,eAAA;EA2HnD;;;;AA0DF;;;;;;;;;;;;;EAlKE,YAAA,GAAe,MAAA;IACb,KAAA;MAAS,MAAA;IAAA;IACT,KAAA;IACA,UAAA;IACA,KAAA;EAAA;EA4LmF;;;;;;;;;AAyCtF;;;;;;;;;;;;AAYY;;;;;;;;;;;;EA7MX,WAAA,QAAmB,UAAA;EA2OT;;;;;;;;;;;;;;;;;;;EAtNV,gBAAA;EA2MA;;;;;;;;;;;;;;;;;;;;;;;AAsbF;;;;;EAnmBE,QAAA,GAAW,QAAA,EAAU,kBAAA;EAsmBpB;;;;EAhmBD,MAAA,EAAQ,gBAAA;AAAA;AAAA,UAGA,gBAAA;EACR,WAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;iBAyDc,kBAAA,CAAmB,GAAA,EAAK,aAAA,EAAe,OAAA,GAAU,eAAA,GAAkB,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BnE,cAAA,CAAe,GAAA,EAAK,aAAA,EAAe,OAAA,GAAU,eAAA,GAAkB,QAAA;;;;;;UAgDrE,UAAA;EACR,SAAA;EACA,cAAA;EACA,UAAA;EACA,cAAA;EACA,MAAA,EAAQ,GAAA;AAAA;AAAA,UAOA,gBAAA;EACR,KAAA;EACA,KAAA;EACA,KAAA,EAAO,gBAAA;EACP,MAAA;EACA,YAAA;EACA,YAAA;EACA,iBAAA,EAAmB,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;EACzC,UAAA,EAAY,WAAA;EACZ,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA,EAAmB,iBAAA;EACnB,cAAA,EAAgB,eAAA;EAChB,mBAAA;EACA,eAAA;EACA,SAAA,EAAW,eAAA;EACX,OAAA,EAAS,MAAA,SAAe,SAAA;EACxB,WAAA,EAAa,GAAA,CAAI,kBAAA;;EAEjB,QAAA,EAAU,UAAA;;EAEV,IAAA,GAAO,aAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyaO,sBAAA,CACd,OAAA,EAAS,aAAA,GAAgB,QAAA,EACzB,OAAA,GAAU,eAAA,GACT,oBAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ai/index.ts"],"mappings":";;;;;;;AAsCA;;;KAAY,cAAA;EACV,OAAA,IAAW,KAAA,qBAA0B,WAAA,QAGW;EADhD,gBAAA,IAAoB,KAAA,qBAA0B,WAAA;EAC9C,kBAAA,IAAsB,KAAA,qBAA0B,WAAA,QAIR;EAFxC,QAAA,IAAY,KAAA,qBAA0B,WAAA;EACtC,KAAA,IAAS,KAAA,qBAA0B,WAAA;EACnC,UAAA,IAAc,KAAA,qBAA0B,WAAA;EACxC,OAAA,IAAW,KAAA,qBAA0B,WAAA;EACrC,OAAA,IAAW,KAAA,qBAA0B,WAAA;AAAA;;;;UAStB,iBAAA;EAff;;;;EAoBA,SAAA;EAlBsC;;;;;EAwBtC,SAAA,IAAa,KAAA,WAAgB,QAAA;AAAA;;;;UAMd,SAAA;EACf,KAAA;EACA,MAAA;AAAA;;AAnBF;;UAyBiB,eAAA;EAzBiB;;;;;;;AAiBlC;EAiBE,UAAA,aAAuB,iBAAA;;;;AATzB;;;;;;;;;;;;;;EA2BE,IAAA,GAAO,MAAA,SAAe,SAAA;AAAA;;;;UAMP,WAAA;EACf,KAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;AAAA;AAMF;;;AAAA,UAAiB,eAAA;EACf,IAAA;EACA,UAAA;EACA,OAAA;EACA,KAAA;AAAA;;AAMF;;UAAiB,eAAA;EACf,KAAA;EACA,MAAA;EACA,UAAA;EACA,KAAA;AAAA;;;AAWF;;;;;;UAAiB,WAAA;EACf,KAAA;EACA,KAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;EACA,YAAA;EACA,SAAA,cAAuB,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;EAC7C,UAAA;EACA,KAAA;EACA,UAAA,GAAa,WAAA;EACb,cAAA;EACA,UAAA;EACA,eAAA;EACA,KAAA;EACA,KAAA,GAAQ,eAAA;EACR,eAAA;EACA,SAAA,GAAY,eAAA;EACZ,aAAA;AAAA;;;;;;;KASU,UAAA,GAAa,WAAA;;;;;KAMb,kBAAA,IAAsB,QAAA,EAAU,UAAA;AAAA,UAE3B,QAAA;;;;AAAjB;;;;;;;;;;;;;;;;;EAqBE,IAAA,GAAO,KAAA,EAAO,eAAA,GAAkB,cAAA,KAAmB,eAAA;EAoBxC;;;;;;;;;;;;;;;AAiGZ;;EAlGC,YAAA,GAAe,MAAA;IACb,KAAA;MAAS,MAAA;IAAA;IACT,KAAA;IACA,UAAA;IACA,KAAA;EAAA;EAqGa;AAyDjB;;;;;;;;;;;;;;;AA8BA;;;;;;;;;;;;;;;AAyCC;;EAjMC,WAAA,QAAmB,UAAA;EA6MR;;;;;;;;;AAAA;;;;;;;;;;EAxLX,gBAAA;EAoNiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAtLjB,QAAA,GAAW,QAAA,EAAU,kBAAA;EAkLrB;;;;EA5KA,MAAA,EAAQ,gBAAA;AAAA;AAAA,UAGA,gBAAA;EACR,WAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,eAAA;AAAA;;;;AA8pBF;;;;;;;;;;;;;;;;;;;;;iBArmBgB,kBAAA,CAAmB,GAAA,EAAK,aAAA,EAAe,OAAA,GAAU,eAAA,GAAkB,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BnE,cAAA,CAAe,GAAA,EAAK,aAAA,EAAe,OAAA,GAAU,eAAA,GAAkB,QAAA;;;;;;UAgDrE,UAAA;EACR,SAAA;EACA,cAAA;EACA,UAAA;EACA,cAAA;EACA,MAAA,EAAQ,GAAA;AAAA;AAAA,UAOA,gBAAA;EACR,KAAA;EACA,KAAA;EACA,KAAA,EAAO,gBAAA;EACP,MAAA;EACA,YAAA;EACA,YAAA;EACA,iBAAA,EAAmB,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;EACzC,UAAA,EAAY,WAAA;EACZ,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA,EAAmB,iBAAA;EACnB,cAAA,EAAgB,eAAA;EAChB,mBAAA;EACA,eAAA;EACA,SAAA,EAAW,eAAA;EACX,OAAA,EAAS,MAAA,SAAe,SAAA;EACxB,WAAA,EAAa,GAAA,CAAI,kBAAA;;EAEjB,QAAA,EAAU,UAAA;;EAEV,IAAA,GAAO,aAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkfO,sBAAA,CACd,OAAA,EAAS,aAAA,GAAgB,QAAA,EACzB,OAAA,GAAU,eAAA,GACT,cAAA"}
package/dist/ai/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
- import { bindTelemetryIntegration, gateway, wrapLanguageModel } from "ai";
1
+ import * as aiModule from "ai";
2
+ import { gateway, wrapLanguageModel } from "ai";
2
3
  //#region src/ai/index.ts
4
+ const { bindTelemetryIntegration } = aiModule;
3
5
  function addUsage(acc, usage) {
4
6
  acc.inputTokens += usage.inputTokens.total ?? 0;
5
7
  acc.outputTokens += usage.outputTokens.total ?? 0;
@@ -418,10 +420,63 @@ function buildMiddlewareFromState(log, state) {
418
420
  }
419
421
  };
420
422
  }
423
+ function formatTelemetryError(error) {
424
+ return error instanceof Error ? error.message : String(error);
425
+ }
426
+ function recordToolExecution(state, input) {
427
+ const execution = {
428
+ name: input.name,
429
+ durationMs: input.durationMs,
430
+ success: input.success
431
+ };
432
+ if (input.error) execution.error = input.error;
433
+ state.toolExecutions.push(execution);
434
+ }
435
+ function adaptV6ToolEvent(event) {
436
+ return {
437
+ name: event.toolCall.toolName,
438
+ durationMs: event.durationMs,
439
+ success: event.success,
440
+ error: !event.success && event.error !== void 0 ? formatTelemetryError(event.error) : void 0
441
+ };
442
+ }
443
+ function adaptV7ToolEvent(event) {
444
+ const success = event.toolOutput.type === "tool-result";
445
+ return {
446
+ name: event.toolCall.toolName,
447
+ durationMs: event.toolExecutionMs,
448
+ success,
449
+ error: !success && event.toolOutput.type === "tool-error" ? formatTelemetryError(event.toolOutput.error) : void 0
450
+ };
451
+ }
452
+ function recordGenerationEnd(state, log) {
453
+ if (state.generationStartTime !== void 0) state.totalDurationMs = Date.now() - state.generationStartTime;
454
+ flushState(log, state);
455
+ }
456
+ function recordEmbedEnd(state, log, event) {
457
+ state.calls++;
458
+ state.usage.inputTokens += event.usage.tokens;
459
+ const dimensions = event.embeddings[0]?.length;
460
+ state.embedding = {
461
+ tokens: (state.embedding?.tokens ?? 0) + event.usage.tokens,
462
+ model: event.modelId,
463
+ ...dimensions !== void 0 ? { dimensions } : state.embedding?.dimensions ? { dimensions: state.embedding.dimensions } : {},
464
+ count: (state.embedding?.count ?? 0) + event.values.length
465
+ };
466
+ flushState(log, state);
467
+ }
468
+ function finalizeIntegration(integration) {
469
+ if (typeof bindTelemetryIntegration === "function") return bindTelemetryIntegration(integration);
470
+ return integration;
471
+ }
421
472
  /**
422
- * Create an AI SDK `TelemetryIntegration` that captures tool execution
473
+ * Create an AI SDK telemetry integration that captures tool execution
423
474
  * timing, errors, and total generation wall time into the wide event.
424
475
  *
476
+ * Compatible with AI SDK v6 (`TelemetryIntegration`) and v7 (`Telemetry`).
477
+ * On v7, also captures embeddings via `onEmbedEnd`, aborts via `onAbort`,
478
+ * and unrecoverable errors via `onError`.
479
+ *
425
480
  * Complements the middleware-based `createAILogger`: the middleware captures
426
481
  * token usage and streaming metrics at the model level, while the integration
427
482
  * captures application-level lifecycle events (tool execution, total duration).
@@ -439,8 +494,7 @@ function buildMiddlewareFromState(log, state) {
439
494
  * const result = await generateText({
440
495
  * model: ai.wrap('anthropic/claude-sonnet-4.6'),
441
496
  * tools: { getWeather },
442
- * experimental_telemetry: {
443
- * isEnabled: true,
497
+ * telemetry: {
444
498
  * integrations: [createEvlogIntegration(ai)],
445
499
  * },
446
500
  * })
@@ -454,8 +508,7 @@ function buildMiddlewareFromState(log, state) {
454
508
  *
455
509
  * const result = await generateText({
456
510
  * model: openai('gpt-4o'),
457
- * experimental_telemetry: {
458
- * isEnabled: true,
511
+ * telemetry: {
459
512
  * integrations: [integration],
460
513
  * },
461
514
  * })
@@ -477,20 +530,32 @@ function createEvlogIntegration(logOrAi, options) {
477
530
  state.generationStartTime = Date.now();
478
531
  }
479
532
  onToolCallFinish(event) {
480
- const execution = {
481
- name: event.toolCall.toolName,
482
- durationMs: event.durationMs,
483
- success: event.success
484
- };
485
- if (!event.success && event.error) execution.error = event.error instanceof Error ? event.error.message : String(event.error);
486
- state.toolExecutions.push(execution);
533
+ recordToolExecution(state, adaptV6ToolEvent(event));
534
+ }
535
+ onToolExecutionEnd(event) {
536
+ recordToolExecution(state, adaptV7ToolEvent(event));
487
537
  }
488
538
  onFinish(_event) {
489
- if (state.generationStartTime) state.totalDurationMs = Date.now() - state.generationStartTime;
539
+ recordGenerationEnd(state, log);
540
+ }
541
+ onEnd(_event) {
542
+ recordGenerationEnd(state, log);
543
+ }
544
+ onEmbedEnd(event) {
545
+ recordEmbedEnd(state, log, event);
546
+ }
547
+ onAbort(event) {
548
+ state.lastFinishReason = "abort";
549
+ const { reason } = event;
550
+ if (reason !== void 0) state.lastError = formatTelemetryError(reason);
551
+ recordGenerationEnd(state, log);
552
+ }
553
+ onError(error) {
554
+ state.lastError = formatTelemetryError(error);
490
555
  flushState(log, state);
491
556
  }
492
557
  }
493
- return bindTelemetryIntegration(new EvlogIntegration());
558
+ return finalizeIntegration(new EvlogIntegration());
494
559
  }
495
560
  //#endregion
496
561
  export { createAILogger, createAIMiddleware, createEvlogIntegration };