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.
- package/README.md +30 -1
- package/dist/adapters/axiom.d.mts +1 -1
- package/dist/adapters/axiom.mjs +2 -2
- package/dist/adapters/better-stack.d.mts +1 -1
- package/dist/adapters/better-stack.mjs +2 -2
- package/dist/adapters/datadog.d.mts +1 -1
- package/dist/adapters/datadog.mjs +2 -2
- package/dist/adapters/fs.d.mts +1 -1
- package/dist/adapters/fs.mjs +1 -1
- package/dist/adapters/hyperdx.d.mts +1 -1
- package/dist/adapters/hyperdx.mjs +1 -1
- package/dist/adapters/memory.d.mts +1 -1
- package/dist/adapters/memory.mjs +1 -1
- package/dist/adapters/otlp.d.mts +1 -1
- package/dist/adapters/otlp.mjs +2 -2
- package/dist/adapters/posthog.d.mts +1 -1
- package/dist/adapters/posthog.mjs +2 -2
- package/dist/adapters/sentry.d.mts +1 -1
- package/dist/adapters/sentry.mjs +2 -2
- package/dist/ai/index.d.mts +27 -10
- package/dist/ai/index.d.mts.map +1 -1
- package/dist/ai/index.mjs +80 -15
- package/dist/ai/index.mjs.map +1 -1
- package/dist/asyncStorageScope-DnF7Xk8l.mjs +81 -0
- package/dist/asyncStorageScope-DnF7Xk8l.mjs.map +1 -0
- package/dist/{audit-BQt8yAHo.mjs → audit-BXCYMjcC.mjs} +31 -93
- package/dist/audit-BXCYMjcC.mjs.map +1 -0
- package/dist/{audit-D7v6JHj0.d.mts → audit-BZrUvjfW.d.mts} +71 -53
- package/dist/audit-BZrUvjfW.d.mts.map +1 -0
- package/dist/audit-action.d.mts +2 -0
- package/dist/audit-action.mjs +74 -0
- package/dist/audit-action.mjs.map +1 -0
- package/dist/audit.d.mts +2 -0
- package/dist/audit.mjs +3 -0
- package/dist/better-auth/index.d.mts +1 -1
- package/dist/browser.d.mts +1 -1
- package/dist/{index-EvnrXvQM.d.mts → catalog-1cQnNxR2.d.mts} +4 -3
- package/dist/catalog-1cQnNxR2.d.mts.map +1 -0
- package/dist/catalog.d.mts +2 -0
- package/dist/catalog.mjs +205 -0
- package/dist/catalog.mjs.map +1 -0
- package/dist/{define-DTQpu4f6.d.mts → define-Ct2QyrE9.d.mts} +3 -3
- package/dist/{define-DTQpu4f6.d.mts.map → define-Ct2QyrE9.d.mts.map} +1 -1
- package/dist/{drain-fDb-eNwz.mjs → drain-Dl2ZJKRA.mjs} +3 -3
- package/dist/{drain-fDb-eNwz.mjs.map → drain-Dl2ZJKRA.mjs.map} +1 -1
- package/dist/elysia/index.d.mts +8 -7
- package/dist/elysia/index.d.mts.map +1 -1
- package/dist/elysia/index.mjs +11 -8
- package/dist/elysia/index.mjs.map +1 -1
- package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs → enrich-error-stack-next.node-KB0Oap7R.mjs} +1 -1
- package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs.map → enrich-error-stack-next.node-KB0Oap7R.mjs.map} +1 -1
- package/dist/{enricher-CBRmQw6e.d.mts → enricher-BOzt2FCi.d.mts} +2 -2
- package/dist/{enricher-CBRmQw6e.d.mts.map → enricher-BOzt2FCi.d.mts.map} +1 -1
- package/dist/enrichers.d.mts +2 -2
- package/dist/{error-CpghjrkY.d.mts → error-BRymuv8U.d.mts} +2 -2
- package/dist/{error-CpghjrkY.d.mts.map → error-BRymuv8U.d.mts.map} +1 -1
- package/dist/error.d.mts +1 -1
- package/dist/{errors-BLU4Tfpe.d.mts → errors-C7qA6CAi.d.mts} +2 -2
- package/dist/{errors-BLU4Tfpe.d.mts.map → errors-C7qA6CAi.d.mts.map} +1 -1
- package/dist/eve/index.d.mts +72 -0
- package/dist/eve/index.d.mts.map +1 -0
- package/dist/eve/index.mjs +593 -0
- package/dist/eve/index.mjs.map +1 -0
- package/dist/express/index.d.mts +4 -4
- package/dist/express/index.d.mts.map +1 -1
- package/dist/express/index.mjs +3 -3
- package/dist/express/index.mjs.map +1 -1
- package/dist/fastify/index.d.mts +4 -4
- package/dist/fastify/index.d.mts.map +1 -1
- package/dist/fastify/index.mjs +4 -2
- package/dist/fastify/index.mjs.map +1 -1
- package/dist/fork-S9gpZmF8.mjs +72 -0
- package/dist/fork-S9gpZmF8.mjs.map +1 -0
- package/dist/hono/index.d.mts +3 -3
- package/dist/hono/index.d.mts.map +1 -1
- package/dist/hono/index.mjs +3 -6
- package/dist/hono/index.mjs.map +1 -1
- package/dist/{http-ChVS9GYc.mjs → http-pKfd8UDu.mjs} +2 -2
- package/dist/{http-ChVS9GYc.mjs.map → http-pKfd8UDu.mjs.map} +1 -1
- package/dist/http.d.mts +1 -1
- package/dist/index.d.mts +9 -9
- package/dist/index.mjs +3 -203
- package/dist/{instrumentation-create-BrjQtSKD.d.mts → instrumentation-create-gSDk0leX.d.mts} +2 -2
- package/dist/{instrumentation-create-BrjQtSKD.d.mts.map → instrumentation-create-gSDk0leX.d.mts.map} +1 -1
- package/dist/{integration-DYp2uw8O.mjs → integration-CeL90DtN.mjs} +3 -2
- package/dist/{integration-DYp2uw8O.mjs.map → integration-CeL90DtN.mjs.map} +1 -1
- package/dist/{logger-mHIWxBhJ.d.mts → logger-CxWz7QJ3.d.mts} +7 -3
- package/dist/logger-CxWz7QJ3.d.mts.map +1 -0
- package/dist/logger.d.mts +2 -2
- package/dist/logger.mjs +2 -2
- package/dist/{fork-CgGlAaHa.mjs → middleware-Cdebyfdt.mjs} +3 -69
- package/dist/middleware-Cdebyfdt.mjs.map +1 -0
- package/dist/{middleware-B_k4Mrzg.d.mts → middleware-fbtEs6bq.d.mts} +3 -3
- package/dist/middleware-fbtEs6bq.d.mts.map +1 -0
- package/dist/nestjs/index.d.mts +5 -5
- package/dist/nestjs/index.d.mts.map +1 -1
- package/dist/nestjs/index.mjs +4 -3
- package/dist/nestjs/index.mjs.map +1 -1
- package/dist/next/client.d.mts +1 -1
- package/dist/next/index.d.mts +5 -5
- package/dist/next/index.d.mts.map +1 -1
- package/dist/next/index.mjs +3 -3
- package/dist/next/index.mjs.map +1 -1
- package/dist/next/instrumentation/create.d.mts +1 -1
- package/dist/next/instrumentation/create.mjs +3 -1
- package/dist/next/instrumentation/create.mjs.map +1 -1
- package/dist/next/instrumentation.d.mts +1 -1
- package/dist/next/stream.d.mts +1 -1
- package/dist/nitro/errorHandler.mjs +9 -4
- package/dist/nitro/errorHandler.mjs.map +1 -1
- package/dist/nitro/module.d.mts +2 -2
- package/dist/nitro/module.mjs +1 -1
- package/dist/nitro/plugin.mjs +2 -2
- package/dist/nitro/v3/errorHandler.d.mts +0 -10
- package/dist/nitro/v3/errorHandler.mjs +13 -3
- package/dist/nitro/v3/errorHandler.mjs.map +1 -1
- package/dist/nitro/v3/index.d.mts +2 -2
- package/dist/nitro/v3/module.d.mts +1 -1
- package/dist/nitro/v3/module.mjs +1 -1
- package/dist/nitro/v3/plugin.mjs +2 -2
- package/dist/nitro/v3/useLogger.d.mts +2 -2
- package/dist/nitro/v3/useLogger.d.mts.map +1 -1
- package/dist/nitro/v3/useLogger.mjs.map +1 -1
- package/dist/{nitro-_Hda8Deo.d.mts → nitro-CcN7HDnr.d.mts} +2 -2
- package/dist/{nitro-_Hda8Deo.d.mts.map → nitro-CcN7HDnr.d.mts.map} +1 -1
- package/dist/{nitro-ClRZLD1g.mjs → nitro-DYFCSlho.mjs} +30 -3
- package/dist/nitro-DYFCSlho.mjs.map +1 -0
- package/dist/{nitroConfigBridge-BkVWnSV3.mjs → nitroConfigBridge-lHPsE5zG.mjs} +8 -6
- package/dist/nitroConfigBridge-lHPsE5zG.mjs.map +1 -0
- package/dist/{nodeResponse-CIEEbrNE.mjs → nodeResponse-Dsl7gZUf.mjs} +1 -1
- package/dist/{nodeResponse-CIEEbrNE.mjs.map → nodeResponse-Dsl7gZUf.mjs.map} +1 -1
- package/dist/nuxt/module.d.mts +1 -1
- package/dist/nuxt/module.mjs +2 -2
- package/dist/orpc/index.d.mts +4 -4
- package/dist/orpc/index.d.mts.map +1 -1
- package/dist/orpc/index.mjs +2 -2
- package/dist/orpc/index.mjs.map +1 -1
- package/dist/{package-CNV_CXs8.mjs → package-Drb3wqqt.mjs} +2 -2
- package/dist/package-Drb3wqqt.mjs.map +1 -0
- package/dist/{parseError-BeBXEd2V.d.mts → parseError-BmoJ7XeF.d.mts} +2 -2
- package/dist/parseError-BmoJ7XeF.d.mts.map +1 -0
- package/dist/react-router/index.d.mts +4 -4
- package/dist/react-router/index.d.mts.map +1 -1
- package/dist/react-router/index.mjs +3 -2
- package/dist/react-router/index.mjs.map +1 -1
- package/dist/register-disk-snippet-B5svlT8-.mjs +21 -0
- package/dist/register-disk-snippet-B5svlT8-.mjs.map +1 -0
- package/dist/runtime/client/log.d.mts +1 -1
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -1
- package/dist/runtime/server/useLogger.d.mts +1 -1
- package/dist/runtime/server/useLogger.mjs.map +1 -1
- package/dist/runtime/utils/parseError.d.mts +2 -2
- package/dist/{storage-7X37OToT.mjs → storage-BeFdoGTI.mjs} +1 -1
- package/dist/storage-BeFdoGTI.mjs.map +1 -0
- package/dist/stream.d.mts +1 -1
- package/dist/stream.d.mts.map +1 -1
- package/dist/stream.mjs +7 -1
- package/dist/stream.mjs.map +1 -1
- package/dist/sveltekit/index.d.mts +3 -4
- package/dist/sveltekit/index.d.mts.map +1 -1
- package/dist/sveltekit/index.mjs +6 -3
- package/dist/sveltekit/index.mjs.map +1 -1
- package/dist/toolkit.d.mts +7 -7
- package/dist/toolkit.d.mts.map +1 -1
- package/dist/toolkit.mjs +7 -6
- package/dist/types.d.mts +1 -1
- package/dist/{useLogger-Cfv8Ck8b.d.mts → useLogger-BupVLO9_.d.mts} +3 -3
- package/dist/useLogger-BupVLO9_.d.mts.map +1 -0
- package/dist/{utils-CJJG0ZYW.d.mts → utils-D_LY-J1k.d.mts} +2 -2
- package/dist/{utils-CJJG0ZYW.d.mts.map → utils-D_LY-J1k.d.mts.map} +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/vite/index.d.mts +1 -1
- package/dist/workers.d.mts +3 -3
- package/dist/workers.d.mts.map +1 -1
- package/dist/workers.mjs +1 -1
- package/dist/workers.mjs.map +1 -1
- package/package.json +25 -2
- package/dist/audit-BQt8yAHo.mjs.map +0 -1
- package/dist/audit-D7v6JHj0.d.mts.map +0 -1
- package/dist/fork-CgGlAaHa.mjs.map +0 -1
- package/dist/index-EvnrXvQM.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/logger-mHIWxBhJ.d.mts.map +0 -1
- package/dist/middleware-B_k4Mrzg.d.mts.map +0 -1
- package/dist/nitro-ClRZLD1g.mjs.map +0 -1
- package/dist/nitroConfigBridge-BkVWnSV3.mjs.map +0 -1
- package/dist/package-CNV_CXs8.mjs.map +0 -1
- package/dist/parseError-BeBXEd2V.d.mts.map +0 -1
- package/dist/storage-7X37OToT.mjs.map +0 -1
- 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.
|
|
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 |
|
package/dist/adapters/axiom.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as httpPost } from "../http-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-
|
|
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 {
|
|
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-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, r as applyDeprecatedAlias } from "../drain-
|
|
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 {
|
|
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-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-
|
|
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
|
{
|
package/dist/adapters/fs.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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` */
|
package/dist/adapters/fs.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as resolveAdapterConfig, t as defineDrain } from "../drain-
|
|
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 { i as formatPublicEnvKeys, o as resolveAdapterConfig, t as defineDrain } from "../drain-
|
|
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
|
/**
|
package/dist/adapters/memory.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as resolveAdapterConfig, t as defineDrain } from "../drain-
|
|
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;
|
package/dist/adapters/otlp.d.mts
CHANGED
package/dist/adapters/otlp.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as httpPost } from "../http-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { r as httpPost } from "../http-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig, t as defineDrain } from "../drain-
|
|
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 = [
|
package/dist/adapters/sentry.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as httpPost } from "../http-
|
|
2
|
-
import { i as formatPublicEnvKeys, n as defineHttpDrain, o as resolveAdapterConfig } from "../drain-
|
|
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 = [
|
package/dist/ai/index.d.mts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { GatewayModelId
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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):
|
|
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
|
package/dist/ai/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ai/index.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ai/index.ts"],"mappings":"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"}
|
package/dist/ai/index.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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
|
-
|
|
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
|
|
558
|
+
return finalizeIntegration(new EvlogIntegration());
|
|
494
559
|
}
|
|
495
560
|
//#endregion
|
|
496
561
|
export { createAILogger, createAIMiddleware, createEvlogIntegration };
|