diff --git a/.changeset/eve-030-event-surface.md b/.changeset/eve-030-event-surface.md deleted file mode 100644 index 82e53a41..00000000 --- a/.changeset/eve-030-event-surface.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"evlog": minor ---- - -Cover the eve 0.30 event surface. **`evlog/eve` now requires eve >= 0.30** — the peer range moves from `>=0.24.3`. The eve integration is still beta and its peer floor moves with it, so this ships as a minor; nothing outside `evlog/eve` is affected. Agents on an older eve keep working on the previous evlog — upgrade eve first. - -The wide event now carries what eve started reporting since 0.24: - -- `eve.runtime` — eve version, agent id, model, and the deployed git sha, branch and date, from `session.started` -- `eve.parent` — parent and root session ids for a subagent run, so a drain can rebuild the delegation tree -- `eve.authorizations` — connection sign-ins with their outcome, reason and duration; a turn parked on one ends as `eve.phase: 'awaiting-authorization'` -- `eve.compaction` — how many compactions ran, on which model, and how full the context was when the first one triggered -- `eve.contextCleared`, `eve.stepFailures` and `eve.failedSteps` — a model call that failed and was retried no longer disappears from a turn that ends up succeeding -- `ai.costUsd` — the cost eve reports, used in place of the `cost` pricing map when available. `ai.model` falls back to the model reported at session start, so `model` is only needed for dynamic-model agents -- subagents record `durationMs` and a `started` status - -`message` replaces `redactMessage` with three modes: `'omit'` (default), `'preview'` (text truncated to `messagePreviewLength`, attachments reduced to their type and media type) and `'full'`. Attachment parts were previously not redacted at all. `redactMessage` still works and is deprecated. - -`sessionEvent: true` adds one wide event per session on top of the per-turn ones, rolling up turns, tokens, cost, tools used, compactions and authorizations — one row per conversation, which is what makes tail sampling useful on an agent. diff --git a/.changeset/eve-close-remaining-gaps.md b/.changeset/eve-close-remaining-gaps.md deleted file mode 100644 index 9319fda2..00000000 --- a/.changeset/eve-close-remaining-gaps.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"evlog": minor ---- - -Close the remaining gaps in the eve integration, and add `defineEvlogInstrumentation()`. - -A wide event and an Agent Runs span describe the same turn, but nothing joined them: you could not jump from a trace in Braintrust, Datadog or the Vercel dashboard to the event in your drain. Export the new definition from `agent/instrumentation.ts` and every model-call span carries `evlog.request_id` and `evlog.session_id`, the values the wide event reports as `requestId` and `eve.sessionId`: - -```ts -// agent/instrumentation.ts -import { defineEvlogInstrumentation } from 'evlog/eve' - -export default defineEvlogInstrumentation() -``` - -Without `setup`, OpenTelemetry export is untouched and eve keeps writing its local traces. `functionId`, `recordInputs`, `recordOutputs` and `traceChannelRequests` pass through to eve. - -Three more of eve's stream events now reach the wide event: - -- `eve.reasoning` — `blocks` and `chars`, the size of the model's thinking. The reasoning text itself is never recorded. -- `message.responseChars`, and `message.response` once `message` is `'preview'` or `'full'` — the agent's answer, following the same rule as the incoming message. -- `eve.result` — the structured result of an agent with an output schema. diff --git a/.changeset/eve-terminate-cancelled-turns.md b/.changeset/eve-terminate-cancelled-turns.md deleted file mode 100644 index ac1f7691..00000000 --- a/.changeset/eve-terminate-cancelled-turns.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"evlog": patch ---- - -Emit a wide event for eve turns that end without `turn.completed` or `turn.failed`. - -A turn cancelled by eve produced no wide event, and its logger, accumulator and session slot stayed in memory for good: LRU eviction skips any session that still has an active turn, so nothing ever reclaimed them. `turn.cancelled` now closes the turn on its own terminal path — status `499`, `eve.phase: 'cancelled'`, level `info`, because cancellation is not a failure in eve's model. - -`session.failed` and `session.completed` flush any turn still open for that session and drop its carried-over context, which also ends the indefinite retention of snapshots for finished sessions. diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 4ae1bf1d..4d5c58b9 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @evlog/cli +## 0.5.1 + +### Patch Changes + +- Updated dependencies [[`16d5323`](https://github.com/HugoRCD/evlog/commit/16d5323efb132fead23643bc002d2411d1f48124), [`f8fb677`](https://github.com/HugoRCD/evlog/commit/f8fb677d5a267d2a25bca52bff2453b5f0c1bdf2), [`8ffba92`](https://github.com/HugoRCD/evlog/commit/8ffba925f5fedb94cce782aa173011cde0245ace)]: + - evlog@2.25.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 5a29c523..6553dcf1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@evlog/cli", - "version": "0.5.0", + "version": "0.5.1", "description": "The official command line for evlog", "author": "HugoRCD ", "homepage": "https://evlog.dev", diff --git a/packages/evlog/CHANGELOG.md b/packages/evlog/CHANGELOG.md index 9568f95c..3301abd8 100644 --- a/packages/evlog/CHANGELOG.md +++ b/packages/evlog/CHANGELOG.md @@ -1,5 +1,50 @@ # evlog +## 2.25.0 + +### Minor Changes + +- [#501](https://github.com/HugoRCD/evlog/pull/501) [`16d5323`](https://github.com/HugoRCD/evlog/commit/16d5323efb132fead23643bc002d2411d1f48124) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Cover the eve 0.30 event surface. **`evlog/eve` now requires eve >= 0.30** — the peer range moves from `>=0.24.3`. The eve integration is still beta and its peer floor moves with it, so this ships as a minor; nothing outside `evlog/eve` is affected. Agents on an older eve keep working on the previous evlog — upgrade eve first. + + The wide event now carries what eve started reporting since 0.24: + - `eve.runtime` — eve version, agent id, model, and the deployed git sha, branch and date, from `session.started` + - `eve.parent` — parent and root session ids for a subagent run, so a drain can rebuild the delegation tree + - `eve.authorizations` — connection sign-ins with their outcome, reason and duration; a turn parked on one ends as `eve.phase: 'awaiting-authorization'` + - `eve.compaction` — how many compactions ran, on which model, and how full the context was when the first one triggered + - `eve.contextCleared`, `eve.stepFailures` and `eve.failedSteps` — a model call that failed and was retried no longer disappears from a turn that ends up succeeding + - `ai.costUsd` — the cost eve reports, used in place of the `cost` pricing map when available. `ai.model` falls back to the model reported at session start, so `model` is only needed for dynamic-model agents + - subagents record `durationMs` and a `started` status + + `message` replaces `redactMessage` with three modes: `'omit'` (default), `'preview'` (text truncated to `messagePreviewLength`, attachments reduced to their type and media type) and `'full'`. Attachment parts were previously not redacted at all. `redactMessage` still works and is deprecated. + + `sessionEvent: true` adds one wide event per session on top of the per-turn ones, rolling up turns, tokens, cost, tools used, compactions and authorizations — one row per conversation, which is what makes tail sampling useful on an agent. + +- [#506](https://github.com/HugoRCD/evlog/pull/506) [`f8fb677`](https://github.com/HugoRCD/evlog/commit/f8fb677d5a267d2a25bca52bff2453b5f0c1bdf2) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Close the remaining gaps in the eve integration, and add `defineEvlogInstrumentation()`. + + A wide event and an Agent Runs span describe the same turn, but nothing joined them: you could not jump from a trace in Braintrust, Datadog or the Vercel dashboard to the event in your drain. Export the new definition from `agent/instrumentation.ts` and every model-call span carries `evlog.request_id` and `evlog.session_id`, the values the wide event reports as `requestId` and `eve.sessionId`: + + ```ts + // agent/instrumentation.ts + import { defineEvlogInstrumentation } from "evlog/eve"; + + export default defineEvlogInstrumentation(); + ``` + + Without `setup`, OpenTelemetry export is untouched and eve keeps writing its local traces. `functionId`, `recordInputs`, `recordOutputs` and `traceChannelRequests` pass through to eve. + + Three more of eve's stream events now reach the wide event: + - `eve.reasoning` — `blocks` and `chars`, the size of the model's thinking. The reasoning text itself is never recorded. + - `message.responseChars`, and `message.response` once `message` is `'preview'` or `'full'` — the agent's answer, following the same rule as the incoming message. + - `eve.result` — the structured result of an agent with an output schema. + +### Patch Changes + +- [#500](https://github.com/HugoRCD/evlog/pull/500) [`8ffba92`](https://github.com/HugoRCD/evlog/commit/8ffba925f5fedb94cce782aa173011cde0245ace) Thanks [@HugoRCD](https://github.com/HugoRCD)! - Emit a wide event for eve turns that end without `turn.completed` or `turn.failed`. + + A turn cancelled by eve produced no wide event, and its logger, accumulator and session slot stayed in memory for good: LRU eviction skips any session that still has an active turn, so nothing ever reclaimed them. `turn.cancelled` now closes the turn on its own terminal path — status `499`, `eve.phase: 'cancelled'`, level `info`, because cancellation is not a failure in eve's model. + + `session.failed` and `session.completed` flush any turn still open for that session and drop its carried-over context, which also ends the indefinite retention of snapshots for finished sessions. + ## 2.24.0 ### Minor Changes diff --git a/packages/evlog/package.json b/packages/evlog/package.json index a03aa24e..09687377 100644 --- a/packages/evlog/package.json +++ b/packages/evlog/package.json @@ -1,6 +1,6 @@ { "name": "evlog", - "version": "2.24.0", + "version": "2.25.0", "description": "Modern TypeScript logger — simple logs, wide events, structured errors. Built for scripts, libraries, jobs, edge, and HTTP. One drain pipeline everywhere.", "author": "HugoRCD ", "homepage": "https://evlog.dev",