eve 0.34.0 → 0.35.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 (261) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +3 -3
  3. package/dist/src/chunks/{use-eve-agent-BNdcle_M.js → use-eve-agent-COmP-H8R.js} +6 -3
  4. package/dist/src/chunks/{use-eve-agent-FJkEMXYk.js → use-eve-agent-CnppTEFk.js} +6 -3
  5. package/dist/src/cli/commands/info.js +1 -1
  6. package/dist/src/cli/commands/trace-detail.d.ts +3 -2
  7. package/dist/src/cli/commands/trace-detail.js +1 -1
  8. package/dist/src/cli/dev/tui/traces/trace-conversation.d.ts +4 -6
  9. package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -2
  10. package/dist/src/client/agent-info-schema.d.ts +12 -4
  11. package/dist/src/client/agent-info-schema.js +1 -1
  12. package/dist/src/client/index.d.ts +1 -1
  13. package/dist/src/compiled/.vendor-stamp.json +3 -3
  14. package/dist/src/compiled/@chat-adapter/slack/index.js +1 -1
  15. package/dist/src/compiled/@workflow/core/index.js +1 -1
  16. package/dist/src/compiled/@workflow/core/runtime.js +3 -3
  17. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  18. package/dist/src/compiled/@workflow/world/env-config.d.ts +1 -0
  19. package/dist/src/compiled/@workflow/world/events.d.ts +92 -35
  20. package/dist/src/compiled/@workflow/world/index.d.ts +3 -2
  21. package/dist/src/compiled/@workflow/world/interfaces.d.ts +25 -23
  22. package/dist/src/compiled/@workflow/world/queue.d.ts +4 -0
  23. package/dist/src/compiled/@workflow/world/runs.d.ts +4 -0
  24. package/dist/src/compiled/@workflow/world/slot-identity.d.ts +53 -0
  25. package/dist/src/compiled/@workflow/world/spec-version.d.ts +36 -1
  26. package/dist/src/compiled/@workflow/world/steps.d.ts +4 -0
  27. package/dist/src/compiled/@workflow/world/ulid.d.ts +6 -0
  28. package/dist/src/compiled/@workflow/world-local/index.js +4 -4
  29. package/dist/src/compiled/@workflow/world-vercel/index.js +13 -17
  30. package/dist/src/compiled/_chunks/workflow/{attribute-changes-6OqdYdi4.js → attribute-changes-BoH7JsWp.js} +3 -3
  31. package/dist/src/compiled/_chunks/workflow/dist-DlFv0aHY.js +40 -0
  32. package/dist/src/compiled/_chunks/workflow/env-config-DxamfI7T.js +1 -0
  33. package/dist/src/compiled/_chunks/workflow/frames-CTpeJYEQ.js +3 -0
  34. package/dist/src/compiled/_chunks/workflow/{functions-CXb61C6h.js → functions-CeeNvKsq.js} +1 -1
  35. package/dist/src/compiled/_chunks/workflow/resume-hook-BPQHjeY5.js +1 -0
  36. package/dist/src/compiled/_chunks/workflow/run-DQ5dOyjm.js +1 -0
  37. package/dist/src/compiled/_chunks/workflow/run-id-BdE0MZz9.js +1 -0
  38. package/dist/src/compiled/_chunks/workflow/sleep-CzdoBiqy.js +1 -0
  39. package/dist/src/compiled/_chunks/workflow/spec-version-DBUVfF_R.js +1 -0
  40. package/dist/src/compiled/_chunks/workflow/undici-CUIybhQ2.js +95 -0
  41. package/dist/src/compiled/_chunks/workflow/wait-until-DK2lnH6U.js +15 -0
  42. package/dist/src/compiled/_chunks/workflow/{wrapper-CDq65xJV.js → wrapper-CMGju7QA.js} +1 -1
  43. package/dist/src/compiled/_chunks/workflow/ws-transport-Csi6Cydc.js +1 -0
  44. package/dist/src/compiler/extension-compatibility.d.ts +10 -10
  45. package/dist/src/compiler/extension-compatibility.js +1 -1
  46. package/dist/src/compiler/manifest.d.ts +8 -8
  47. package/dist/src/compiler/manifest.js +1 -1
  48. package/dist/src/compiler/normalize-extension.d.ts +3 -3
  49. package/dist/src/compiler/normalize-extension.js +1 -1
  50. package/dist/src/compiler/normalize-instructions.d.ts +1 -1
  51. package/dist/src/compiler/normalize-instructions.js +1 -1
  52. package/dist/src/compiler/normalize-manifest.js +1 -3
  53. package/dist/src/context/dynamic-instruction-lifecycle.d.ts +5 -1
  54. package/dist/src/context/dynamic-instruction-lifecycle.js +1 -1
  55. package/dist/src/context/keys.d.ts +6 -2
  56. package/dist/src/context/keys.js +1 -1
  57. package/dist/src/discover/manifest.d.ts +1 -1
  58. package/dist/src/discover/manifest.js +1 -1
  59. package/dist/src/evals/index.d.ts +2 -2
  60. package/dist/src/evals/reporters/index.d.ts +1 -1
  61. package/dist/src/evals/runner/artifacts.js +1 -1
  62. package/dist/src/evals/runner/execute-eval.d.ts +5 -0
  63. package/dist/src/evals/runner/execute-eval.js +1 -1
  64. package/dist/src/evals/runner/execute-task.d.ts +3 -0
  65. package/dist/src/evals/runner/execute-task.js +1 -1
  66. package/dist/src/evals/runner/reporters/braintrust.js +1 -1
  67. package/dist/src/evals/runner/reporters/types.d.ts +28 -2
  68. package/dist/src/evals/runner/run-evals.js +1 -1
  69. package/dist/src/evals/session.d.ts +11 -2
  70. package/dist/src/evals/session.js +1 -1
  71. package/dist/src/evals/target.js +1 -1
  72. package/dist/src/evals/types.d.ts +10 -1
  73. package/dist/src/execution/node-step.js +1 -1
  74. package/dist/src/execution/session.js +1 -1
  75. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  76. package/dist/src/execution/workflow-steps.js +1 -1
  77. package/dist/src/execution/workflow-trace-context.d.ts +11 -0
  78. package/dist/src/execution/workflow-trace-context.js +1 -0
  79. package/dist/src/harness/ai-sdk-hook-bridge.d.ts +1 -1
  80. package/dist/src/harness/ai-sdk-hook-bridge.js +1 -1
  81. package/dist/src/harness/channel-delivery-instrumentation.d.ts +1 -1
  82. package/dist/src/harness/channel-delivery-instrumentation.js +1 -1
  83. package/dist/src/harness/emission.d.ts +2 -2
  84. package/dist/src/harness/emission.js +1 -1
  85. package/dist/src/harness/instrumentation/config.js +1 -0
  86. package/dist/src/harness/{instrumentation-content.d.ts → instrumentation/content.d.ts} +1 -1
  87. package/dist/src/harness/{instrumentation-dispatch.d.ts → instrumentation/dispatch.d.ts} +1 -1
  88. package/dist/src/harness/{instrumentation-dispatch.js → instrumentation/dispatch.js} +1 -1
  89. package/dist/src/harness/{instrumentation-lifecycle.d.ts → instrumentation/lifecycle.d.ts} +3 -6
  90. package/dist/src/harness/{instrumentation-lifecycle.js → instrumentation/lifecycle.js} +1 -1
  91. package/dist/src/harness/{instrumentation-native-events.d.ts → instrumentation/native-events.d.ts} +1 -1
  92. package/dist/src/harness/{instrumentation-native-events.js → instrumentation/native-events.js} +1 -1
  93. package/dist/src/harness/{instrumentation-providers.d.ts → instrumentation/providers.d.ts} +1 -1
  94. package/dist/src/harness/{instrumentation-providers.js → instrumentation/providers.js} +1 -1
  95. package/dist/src/harness/{instrumentation-runtime.d.ts → instrumentation/runtime.d.ts} +4 -2
  96. package/dist/src/harness/{instrumentation-state.d.ts → instrumentation/state.d.ts} +1 -1
  97. package/dist/src/harness/parent-lineage.d.ts +1 -1
  98. package/dist/src/harness/prepare-trace-context.d.ts +16 -0
  99. package/dist/src/harness/prepare-trace-context.js +1 -0
  100. package/dist/src/harness/tool-loop.js +2 -2
  101. package/dist/src/harness/types.d.ts +1 -1
  102. package/dist/src/internal/application/compiled-artifacts.js +2 -2
  103. package/dist/src/internal/application/package.js +1 -1
  104. package/dist/src/internal/authored-definition/core.d.ts +3 -3
  105. package/dist/src/internal/authored-definition/core.js +1 -1
  106. package/dist/src/internal/authored-package-boundary.js +1 -1
  107. package/dist/src/internal/helpers/markdown.js +1 -1
  108. package/dist/src/internal/instrumentation.d.ts +1 -1
  109. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  110. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
  111. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +4 -3
  112. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  113. package/dist/src/internal/nitro/routes/channel-request-instrumentation.js +1 -1
  114. package/dist/src/internal/vercel/project-link.d.ts +1 -1
  115. package/dist/src/internal/vercel/project-link.js +1 -1
  116. package/dist/src/internal/vercel-agent-summary.d.ts +10 -9
  117. package/dist/src/internal/vercel-agent-summary.js +1 -1
  118. package/dist/src/internal/workflow/development-world-client.js +1 -1
  119. package/dist/src/protocol/message.d.ts +15 -1
  120. package/dist/src/protocol/message.js +1 -1
  121. package/dist/src/public/channels/github/auth.d.ts +30 -0
  122. package/dist/src/public/channels/github/auth.js +2 -2
  123. package/dist/src/public/channels/github/defaults.d.ts +4 -4
  124. package/dist/src/public/channels/github/defaults.js +1 -1
  125. package/dist/src/public/channels/github/dispatch.d.ts +3 -2
  126. package/dist/src/public/channels/github/dispatch.js +1 -1
  127. package/dist/src/public/channels/github/githubChannel.d.ts +7 -2
  128. package/dist/src/public/channels/github/githubChannel.js +1 -1
  129. package/dist/src/public/channels/github/index.d.ts +1 -1
  130. package/dist/src/public/definitions/instructions.d.ts +14 -4
  131. package/dist/src/public/definitions/instructions.js +1 -1
  132. package/dist/src/public/definitions/tool.d.ts +5 -8
  133. package/dist/src/public/instructions/index.d.ts +1 -2
  134. package/dist/src/public/instructions/index.js +1 -1
  135. package/dist/src/public/instrumentation/index.d.ts +4 -3
  136. package/dist/src/public/instrumentation/otel.d.ts +5 -4
  137. package/dist/src/public/instrumentation/provider.d.ts +2 -2
  138. package/dist/src/runtime/agent/bootstrap.d.ts +2 -0
  139. package/dist/src/runtime/agent/bootstrap.js +1 -1
  140. package/dist/src/runtime/prompt/compose.d.ts +1 -1
  141. package/dist/src/runtime/prompt/compose.js +3 -1
  142. package/dist/src/runtime/resolve-agent.js +1 -1
  143. package/dist/src/runtime/types.d.ts +4 -3
  144. package/dist/src/setup/project-resolution.d.ts +3 -3
  145. package/dist/src/setup/scaffold/create/project.js +1 -1
  146. package/dist/src/setup/slack-connect-lifecycle.d.ts +0 -9
  147. package/dist/src/setup/slack-connect-lifecycle.js +1 -1
  148. package/dist/src/setup/slackbot.d.ts +2 -1
  149. package/dist/src/setup/slackbot.js +1 -1
  150. package/dist/src/shared/dynamic-tool-definition.d.ts +3 -4
  151. package/dist/src/shared/instructions-definition.d.ts +15 -11
  152. package/dist/src/svelte/index.js +1 -1
  153. package/dist/src/svelte/use-eve-agent.js +1 -1
  154. package/dist/src/tracing/agent-action-instrumentation.d.ts +1 -1
  155. package/dist/src/tracing/agent-action-instrumentation.js +1 -1
  156. package/dist/src/tracing/agent-approval-instrumentation.d.ts +1 -1
  157. package/dist/src/tracing/agent-channel-delivery-instrumentation.d.ts +1 -1
  158. package/dist/src/tracing/agent-channel-delivery-instrumentation.js +1 -1
  159. package/dist/src/tracing/agent-otel-provider.d.ts +4 -2
  160. package/dist/src/tracing/agent-otel-provider.js +2 -2
  161. package/dist/src/tracing/agent-otel-session-context.d.ts +17 -0
  162. package/dist/src/tracing/agent-otel-session-context.js +1 -0
  163. package/dist/src/tracing/agent-otel-usage.d.ts +1 -1
  164. package/dist/src/tracing/agent-tool-instrumentation.d.ts +1 -1
  165. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  166. package/dist/src/tracing/agent-trace-state.d.ts +1 -1
  167. package/dist/src/tracing/install-instrumentation-runtime.d.ts +2 -2
  168. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  169. package/dist/src/tracing/local-instrumentation-runtime.d.ts +1 -1
  170. package/dist/src/tracing/local-instrumentation-runtime.js +1 -1
  171. package/dist/src/tracing/local-traces.d.ts +3 -3
  172. package/dist/src/tracing/local-traces.js +1 -1
  173. package/dist/src/tracing/otel-declaration.d.ts +2 -2
  174. package/dist/src/tracing/otel-declaration.js +1 -1
  175. package/dist/src/vue/index.js +1 -1
  176. package/dist/src/vue/use-eve-agent.js +1 -1
  177. package/docs/README.md +18 -20
  178. package/docs/agent-config.md +5 -5
  179. package/docs/channels/eve.mdx +10 -56
  180. package/docs/channels/github.mdx +1 -1
  181. package/docs/channels/meta.json +1 -0
  182. package/docs/concepts/context-control.md +32 -56
  183. package/docs/concepts/default-harness.md +2 -2
  184. package/docs/concepts/execution-model-and-durability.mdx +4 -4
  185. package/docs/concepts/meta.json +3 -1
  186. package/docs/concepts/sessions-runs-and-streaming.md +22 -10
  187. package/docs/{guides → concepts}/state.md +3 -3
  188. package/docs/connections/mcp.mdx +6 -89
  189. package/docs/connections/meta.json +1 -0
  190. package/docs/connections/openapi.mdx +5 -69
  191. package/docs/connections/overview.mdx +29 -3
  192. package/docs/evals/meta.json +1 -0
  193. package/docs/evals/reporters.mdx +14 -4
  194. package/docs/extensions.md +1 -1
  195. package/docs/getting-started.mdx +175 -13
  196. package/docs/guides/auth-and-route-protection.md +3 -18
  197. package/docs/guides/client/meta.json +2 -1
  198. package/docs/guides/client/output-schema.mdx +2 -2
  199. package/docs/guides/client/overview.mdx +1 -1
  200. package/docs/guides/deployment/meta.json +1 -0
  201. package/docs/guides/deployment/overview.md +1 -1
  202. package/docs/guides/deployment/self-hosting.md +3 -3
  203. package/docs/guides/deployment/vercel.mdx +1 -1
  204. package/docs/guides/dev-tui.md +3 -13
  205. package/docs/guides/dynamic-capabilities.md +26 -4
  206. package/docs/guides/frontend/meta.json +2 -1
  207. package/docs/guides/frontend/nextjs.mdx +1 -10
  208. package/docs/guides/frontend/nuxt.mdx +1 -10
  209. package/docs/guides/frontend/overview.mdx +12 -3
  210. package/docs/guides/frontend/sveltekit.mdx +1 -10
  211. package/docs/guides/frontend/use-eve-agent-svelte.mdx +39 -126
  212. package/docs/guides/frontend/use-eve-agent-vue.mdx +40 -139
  213. package/docs/guides/instrumentation.md +15 -15
  214. package/docs/guides/meta.json +1 -5
  215. package/docs/guides/remote-agents.md +9 -9
  216. package/docs/guides/session-context.md +34 -103
  217. package/docs/install-integrations.mdx +1 -1
  218. package/docs/instructions.mdx +45 -12
  219. package/docs/meta.json +24 -13
  220. package/docs/patterns/dynamic-scheduling.md +1 -1
  221. package/docs/patterns/meta.json +1 -0
  222. package/docs/patterns/multi-tenant-approvals.md +1 -1
  223. package/docs/patterns/multi-tenant-auth.md +1 -1
  224. package/docs/patterns/multi-tenant-memory.md +4 -3
  225. package/docs/{guides → protocols}/acp.md +1 -1
  226. package/docs/protocols/meta.json +5 -0
  227. package/docs/reference/cli.md +34 -34
  228. package/docs/reference/meta.json +1 -1
  229. package/docs/reference/typescript-api.md +4 -2
  230. package/docs/{subagents.mdx → subagents/index.mdx} +2 -2
  231. package/docs/subagents/meta.json +5 -0
  232. package/docs/{guides/dynamic-workflows.md → subagents/workflow-tool.md} +6 -6
  233. package/docs/tools/human-in-the-loop.md +1 -1
  234. package/docs/tools/meta.json +1 -0
  235. package/docs/tools/overview.mdx +1 -1
  236. package/docs/tutorial/connect-a-warehouse.mdx +1 -1
  237. package/docs/tutorial/meta.json +1 -0
  238. package/docs/tutorial/remember-definitions.mdx +2 -2
  239. package/docs/tutorial/ship-it.mdx +2 -2
  240. package/package.json +4 -4
  241. package/dist/src/compiled/_chunks/workflow/dist-C8PhDW9B.js +0 -1
  242. package/dist/src/compiled/_chunks/workflow/functions-xMPAeWFr.js +0 -1
  243. package/dist/src/compiled/_chunks/workflow/node-Smb57EnG.js +0 -40
  244. package/dist/src/compiled/_chunks/workflow/resume-hook-BrduAuFX.js +0 -1
  245. package/dist/src/compiled/_chunks/workflow/run-CX7_sJnW.js +0 -1
  246. package/dist/src/compiled/_chunks/workflow/sleep-tsb2HjWK.js +0 -1
  247. package/dist/src/compiled/_chunks/workflow/undici-BNc_0O4m.js +0 -95
  248. package/dist/src/compiled/_chunks/workflow/wait-until-BYKVqrwc.js +0 -15
  249. package/dist/src/harness/instrumentation-config.js +0 -1
  250. package/docs/installation.mdx +0 -66
  251. package/docs/project-structure.mdx +0 -53
  252. package/docs/reference/project-layout.md +0 -123
  253. /package/dist/src/harness/{instrumentation-config.d.ts → instrumentation/config.d.ts} +0 -0
  254. /package/dist/src/harness/{instrumentation-content.js → instrumentation/content.js} +0 -0
  255. /package/dist/src/harness/{instrumentation-runtime-context.d.ts → instrumentation/runtime-context.d.ts} +0 -0
  256. /package/dist/src/harness/{instrumentation-runtime-context.js → instrumentation/runtime-context.js} +0 -0
  257. /package/dist/src/harness/{instrumentation-runtime.js → instrumentation/runtime.js} +0 -0
  258. /package/dist/src/harness/{instrumentation-setup-context.d.ts → instrumentation/setup-context.d.ts} +0 -0
  259. /package/dist/src/harness/{instrumentation-setup-context.js → instrumentation/setup-context.js} +0 -0
  260. /package/dist/src/harness/{instrumentation-state.js → instrumentation/state.js} +0 -0
  261. /package/docs/{guides → protocols}/ucp.mdx +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # eve
2
2
 
3
+ ## 0.35.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3f92f7d: Instrumentation now records trace metadata without model or tool inputs and outputs by default. Set `recordInputs` or `recordOutputs` to `true`, or use `EVE_TRACES_CONTENT=on` for the automatic local trace spool, to opt into content capture.
8
+
9
+ ### Patch Changes
10
+
11
+ - 9a07754: Recognize repository-style Vercel link metadata during guided setup, so Vercel Connect integrations can continue after Vercel CLI links a repository-backed project.
12
+ - 1cd563b: A model step that requests a tool approval (or question) and a subagent or remote-agent call in the same response no longer drops the approval. The harness now parks on both: the input request surfaces immediately, the delegation runs, and when its result arrives the turn re-parks on the still-pending approval instead of calling the model with a dangling tool call (`AI_MissingToolResultsError`).
13
+ - 02b7b7e: `githubChannel({ botName })` now also accepts a lazy resolver function, resolved on first use inside request handling, cached on success, and retried after a failure, so resolvers that depend on request-scoped credentials work in production. When `botName` is omitted, the channel falls back to the new `appSlug` field on `GitHubChannelCredentials`, then to `GITHUB_APP_SLUG`.
14
+ - 77eb819: Traced session and turn start events now carry portable trace context. Eval reporters can observe individual eval and traced-session starts, correlate completed results across every session trace, and read those contexts from artifacts and Braintrust metadata.
15
+ - df0804e: Instructions now accept `content` with an optional `system` or `user` role, and dynamic instruction resolvers have a lifecycle-specific typed API. User-role instructions enter durable conversation history at their static, session, or turn boundary; the legacy `markdown` form remains available as a deprecated system-role definition.
16
+ - a19c743: The local trace viewer now reads user messages and runtime actions from durable channel delivery and action spans, avoiding duplicate SDK tool details in `eve traces` output.
17
+ - 23c7354: Organize the internal harness instrumentation modules under a dedicated directory without changing runtime behavior.
18
+ - 891aed8: Fix authored-module evaluation on Windows when configured external dependencies resolve to absolute paths.
19
+ - df398a9: Update eve's bundled Workflow SDK packages to the latest 5.0.0 beta releases, aligning the worlds with the `@workflow/core` beta already pinned.
20
+
3
21
  ## 0.34.0
4
22
 
5
23
  ### Minor Changes
package/README.md CHANGED
@@ -75,7 +75,7 @@ Runtime accessors live on the subpath that owns the concern:
75
75
  - `getSkill(identifier)` — handle for a named skill visible to the current agent (`eve/skills`)
76
76
  - `getContext(key)`, `requireContext(key)`, `hasContext(key)`, `setContext(key)`, `ensureContext(key, factory)` — unified context helpers (`eve/context`)
77
77
 
78
- The complete API reference, including types and lower-level runtime primitives, is in the [TypeScript API documentation](https://eve.dev/docs/reference/typescript-api).
78
+ The complete API reference, including types and lower-level runtime primitives, is in the [TypeScript API Reference](https://eve.dev/docs/reference/typescript-api).
79
79
 
80
80
  ## Tiny Example
81
81
 
@@ -152,9 +152,9 @@ These files ship inside the installed package at `node_modules/eve/docs/`:
152
152
 
153
153
  - [Full docs index](https://eve.dev/docs) — recommended entry point
154
154
  - [Getting Started](https://eve.dev/docs/getting-started) — install, scaffold, and run locally
155
- - [Project Layout](https://eve.dev/docs/reference/project-layout) — every authored directory in depth
155
+ - [Project Layout](https://eve.dev/docs/getting-started#project-layout) — every authored directory in depth
156
156
  - [`agent.ts`](https://eve.dev/docs/agent-config) — agent config reference
157
- - [TypeScript API](https://eve.dev/docs/reference/typescript-api) — complete `define*` and runtime helper reference
157
+ - [TypeScript API Reference](https://eve.dev/docs/reference/typescript-api) — complete `define*` and runtime helper reference
158
158
  - [Vercel Deployment](https://eve.dev/docs/guides/deployment/overview) — deploy to production
159
159
 
160
160
  By authoring concern: [Tools](https://eve.dev/docs/tools) · [Channels](https://eve.dev/docs/channels/overview) · [Hooks](https://eve.dev/docs/guides/hooks) · [Skills](https://eve.dev/docs/skills) · [Sandbox](https://eve.dev/docs/sandbox) · [Connections](https://eve.dev/docs/connections) · [Subagents](https://eve.dev/docs/subagents) · [Schedules](https://eve.dev/docs/schedules) · [Evals](https://eve.dev/docs/evals/overview)
@@ -149,7 +149,10 @@ const skill = entry.extend({
149
149
  markdown: z.string(),
150
150
  metadata: z.record(z.string(), z.string()).optional()
151
151
  });
152
- const instructions = entry.extend({ markdown: z.string() });
152
+ const instructions = entry.extend({
153
+ content: z.string(),
154
+ role: z.enum(["system", "user"])
155
+ });
153
156
  const schedule = entry.extend({
154
157
  cron: z.string(),
155
158
  hasRun: z.boolean(),
@@ -232,7 +235,7 @@ const AgentInfoResultSchema = z.object({
232
235
  hooks: z.array(hook),
233
236
  instructions: z.object({
234
237
  dynamic: z.array(dynamicResolver),
235
- static: instructions.nullable()
238
+ static: z.array(instructions)
236
239
  }),
237
240
  kind: z.literal("eve-agent-info"),
238
241
  mode: z.enum(["development", "production"]),
@@ -254,7 +257,7 @@ const AgentInfoResultSchema = z.object({
254
257
  framework: z.array(frameworkTool),
255
258
  reserved: z.array(z.string())
256
259
  }),
257
- version: z.literal(1),
260
+ version: z.literal(2),
258
261
  workflow: z.object({
259
262
  enabled: z.boolean(),
260
263
  toolName: z.string()
@@ -149,7 +149,10 @@ const skill = entry.extend({
149
149
  markdown: z.string(),
150
150
  metadata: z.record(z.string(), z.string()).optional()
151
151
  });
152
- const instructions = entry.extend({ markdown: z.string() });
152
+ const instructions = entry.extend({
153
+ content: z.string(),
154
+ role: z.enum(["system", "user"])
155
+ });
153
156
  const schedule = entry.extend({
154
157
  cron: z.string(),
155
158
  hasRun: z.boolean(),
@@ -232,7 +235,7 @@ const AgentInfoResultSchema = z.object({
232
235
  hooks: z.array(hook),
233
236
  instructions: z.object({
234
237
  dynamic: z.array(dynamicResolver),
235
- static: instructions.nullable()
238
+ static: z.array(instructions)
236
239
  }),
237
240
  kind: z.literal("eve-agent-info"),
238
241
  mode: z.enum(["development", "production"]),
@@ -254,7 +257,7 @@ const AgentInfoResultSchema = z.object({
254
257
  framework: z.array(frameworkTool),
255
258
  reserved: z.array(z.string())
256
259
  }),
257
- version: z.literal(1),
260
+ version: z.literal(2),
258
261
  workflow: z.object({
259
262
  enabled: z.boolean(),
260
263
  toolName: z.string()
@@ -1,2 +1,2 @@
1
- import{createCliTheme,renderCliBanner,renderCliSection}from"#cli/ui/output.js";import{inspectApplication}from"#services/inspect-application.js";function buildApplicationInfoJson(e){let{application:t,compiledState:n,messaging:r}=e;return{appRoot:t.appRoot,agentRoot:n?.project.agentRoot??null,layout:n?.project.layout??null,status:n?.metadata.status??`unavailable`,diagnostics:n?{errors:n.metadata.discovery.summary.errors,warnings:n.metadata.discovery.summary.warnings}:null,model:n?.manifest.config.model?.id??null,instructions:n?.manifest.instructions?.logicalPath??null,skills:(n?.manifest.skills??[]).map(e=>e.name),tools:(n?.manifest.tools??[]).map(e=>e.name),subagents:(n?.manifest.subagents??[]).map(e=>e.name),schedules:(n?.manifest.schedules??[]).map(e=>e.name),channels:(n?.manifest.channels??[]).map(e=>e.kind===`channel`?{name:e.name,kind:e.adapterKind??null,method:e.method,urlPath:e.urlPath}:{name:e.name,kind:`disabled`,method:null,urlPath:null}),messaging:{create:r.createSessionRoutePath,messages:r.sessionMessagesRoutePattern,stream:r.streamRoutePattern},artifacts:n?{compiledManifest:n.paths.compiledManifestPath,discoveryManifest:n.paths.discoveryManifestPath,diagnostics:n.paths.diagnosticsPath,moduleMap:n.paths.moduleMapPath,metadata:n.paths.compileMetadataPath}:null}}function pluralize(e,t){return`${e} ${t}${e===1?``:`s`}`}function formatDiscoverySummary(e,t){return`${pluralize(e,`error`)}, ${pluralize(t,`warning`)}`}function resolveCompileTone(e){switch(e){case`ready`:return`success`;case`failed`:return`danger`;default:return`warning`}}async function printApplicationInfo(i,a,o={}){let s=await inspectApplication(a);if(o.json){i.log(JSON.stringify(buildApplicationInfoJson(s),null,2));return}let c=s.compiledState,l=s.application,u=createCliTheme(),d=[{label:`App Root`,value:l.appRoot}],f=[{label:`Workflow Build`,value:l.workflowBuildDir},{label:`Output`,value:l.outputDir}],p=[];c===null?d.push({label:`Compile`,tone:`warning`,value:`unavailable`}):(d.push({label:`Agent Root`,value:c.project.agentRoot},{label:`Layout`,value:c.project.layout},{label:`Compile`,tone:resolveCompileTone(c.metadata.status),value:c.metadata.status},{label:`Diagnostics`,tone:c.metadata.discovery.summary.errors>0?`danger`:c.metadata.discovery.summary.warnings>0?`warning`:`success`,value:formatDiscoverySummary(c.metadata.discovery.summary.errors,c.metadata.discovery.summary.warnings)},{label:`Instructions`,value:c.manifest.instructions?.logicalPath??`none`},{label:`Skills`,value:pluralize(c.manifest.skills.length,`skill`)},{label:`Tools`,value:pluralize(c.manifest.tools.length,`tool`)},{label:`Subagents`,value:pluralize(c.manifest.subagents.length,`subagent`)},{label:`Schedules`,value:pluralize(c.manifest.schedules.length,`schedule`)}),f.unshift({label:`Compiled Manifest`,value:c.paths.compiledManifestPath},{label:`Discovery Manifest`,value:c.paths.discoveryManifestPath},{label:`Diagnostics`,value:c.paths.diagnosticsPath},{label:`Module Map`,value:c.paths.moduleMapPath},{label:`Metadata`,value:c.paths.compileMetadataPath}),p.push(c.manifest.instructions===void 0?{label:`Instructions`,value:`No instructions prompt discovered.`}:{label:`Instructions`,value:c.manifest.instructions.logicalPath})),i.log([renderCliBanner(u,{subtitle:`Resolved application paths and the active message contract.`,title:`eve Info`}),``,renderCliSection(u,{rows:d,title:`Application`}),``,renderCliSection(u,{rows:f,title:`Artifacts`}),...c===null?[]:[``,renderCliSection(u,{rows:p,title:`Instructions`})],``,renderCliSection(u,{rows:[{label:`Workflow ID`,value:l.workflowId},{label:`Source Dir`,value:l.workflowSourceDir},{label:`Create`,tone:`info`,value:`POST ${s.messaging.createSessionRoutePath}`},{label:`Messages`,tone:`info`,value:`POST ${s.messaging.sessionMessagesRoutePattern}`},{label:`Stream`,tone:`info`,value:`GET ${s.messaging.streamRoutePattern}`}],title:`Messaging`})].join(`
1
+ import{createCliTheme,renderCliBanner,renderCliSection}from"#cli/ui/output.js";import{inspectApplication}from"#services/inspect-application.js";function formatInstructions(e){return e.map(e=>`${e.logicalPath} (${e.role})`).join(`, `)}function buildApplicationInfoJson(e){let{application:t,compiledState:n,messaging:r}=e;return{appRoot:t.appRoot,agentRoot:n?.project.agentRoot??null,layout:n?.project.layout??null,status:n?.metadata.status??`unavailable`,diagnostics:n?{errors:n.metadata.discovery.summary.errors,warnings:n.metadata.discovery.summary.warnings}:null,model:n?.manifest.config.model?.id??null,instructions:n===null||n.manifest.instructions.length===0?null:formatInstructions(n.manifest.instructions),skills:(n?.manifest.skills??[]).map(e=>e.name),tools:(n?.manifest.tools??[]).map(e=>e.name),subagents:(n?.manifest.subagents??[]).map(e=>e.name),schedules:(n?.manifest.schedules??[]).map(e=>e.name),channels:(n?.manifest.channels??[]).map(e=>e.kind===`channel`?{name:e.name,kind:e.adapterKind??null,method:e.method,urlPath:e.urlPath}:{name:e.name,kind:`disabled`,method:null,urlPath:null}),messaging:{create:r.createSessionRoutePath,messages:r.sessionMessagesRoutePattern,stream:r.streamRoutePattern},artifacts:n?{compiledManifest:n.paths.compiledManifestPath,discoveryManifest:n.paths.discoveryManifestPath,diagnostics:n.paths.diagnosticsPath,moduleMap:n.paths.moduleMapPath,metadata:n.paths.compileMetadataPath}:null}}function pluralize(e,t){return`${e} ${t}${e===1?``:`s`}`}function formatDiscoverySummary(e,t){return`${pluralize(e,`error`)}, ${pluralize(t,`warning`)}`}function resolveCompileTone(e){switch(e){case`ready`:return`success`;case`failed`:return`danger`;default:return`warning`}}async function printApplicationInfo(i,a,o={}){let s=await inspectApplication(a);if(o.json){i.log(JSON.stringify(buildApplicationInfoJson(s),null,2));return}let c=s.compiledState,l=s.application,u=createCliTheme(),d=[{label:`App Root`,value:l.appRoot}],f=[{label:`Workflow Build`,value:l.workflowBuildDir},{label:`Output`,value:l.outputDir}],p=[];c===null?d.push({label:`Compile`,tone:`warning`,value:`unavailable`}):(d.push({label:`Agent Root`,value:c.project.agentRoot},{label:`Layout`,value:c.project.layout},{label:`Compile`,tone:resolveCompileTone(c.metadata.status),value:c.metadata.status},{label:`Diagnostics`,tone:c.metadata.discovery.summary.errors>0?`danger`:c.metadata.discovery.summary.warnings>0?`warning`:`success`,value:formatDiscoverySummary(c.metadata.discovery.summary.errors,c.metadata.discovery.summary.warnings)},{label:`Instructions`,value:c.manifest.instructions.length===0?`none`:formatInstructions(c.manifest.instructions)},{label:`Skills`,value:pluralize(c.manifest.skills.length,`skill`)},{label:`Tools`,value:pluralize(c.manifest.tools.length,`tool`)},{label:`Subagents`,value:pluralize(c.manifest.subagents.length,`subagent`)},{label:`Schedules`,value:pluralize(c.manifest.schedules.length,`schedule`)}),f.unshift({label:`Compiled Manifest`,value:c.paths.compiledManifestPath},{label:`Discovery Manifest`,value:c.paths.discoveryManifestPath},{label:`Diagnostics`,value:c.paths.diagnosticsPath},{label:`Module Map`,value:c.paths.moduleMapPath},{label:`Metadata`,value:c.paths.compileMetadataPath}),p.push(c.manifest.instructions.length===0?{label:`Instructions`,value:`No instructions prompt discovered.`}:{label:`Instructions`,value:formatInstructions(c.manifest.instructions)})),i.log([renderCliBanner(u,{subtitle:`Resolved application paths and the active message contract.`,title:`eve Info`}),``,renderCliSection(u,{rows:d,title:`Application`}),``,renderCliSection(u,{rows:f,title:`Artifacts`}),...c===null?[]:[``,renderCliSection(u,{rows:p,title:`Instructions`})],``,renderCliSection(u,{rows:[{label:`Workflow ID`,value:l.workflowId},{label:`Source Dir`,value:l.workflowSourceDir},{label:`Create`,tone:`info`,value:`POST ${s.messaging.createSessionRoutePath}`},{label:`Messages`,tone:`info`,value:`POST ${s.messaging.sessionMessagesRoutePattern}`},{label:`Stream`,tone:`info`,value:`GET ${s.messaging.streamRoutePattern}`}],title:`Messaging`})].join(`
2
2
  `))}export{buildApplicationInfoJson,printApplicationInfo};
@@ -20,8 +20,9 @@ export interface LocalTraceSummary {
20
20
  }
21
21
  /**
22
22
  * Compact metrics for one tree row: token chips (`↑1.4K`/`↓213`), cost
23
- * (`$0.0031`), and the tool name for `ai.toolCall` spans. Only chips whose
24
- * attributes the span actually carries — rows without usage stay clean.
23
+ * (`$0.0031`). Only chips whose attributes the span actually carries — rows
24
+ * without usage stay clean. Tool names belong to eve's durable `agent.action`
25
+ * label instead of the AI SDK's child span.
25
26
  * Raw values: callers sanitize for their output surface.
26
27
  */
27
28
  export declare function spanMetricChips(span: LocalTraceSpan): string[];
@@ -1 +1 @@
1
- import{sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{formatCompactTokenCount}from"#cli/dev/tui/stream-format.js";import{formatAttributeContent}from"#cli/dev/tui/traces/trace-content.js";function spanMetricChips(e){let t=[],r=numberAttribute(e,`agent.usage.input_tokens`),i=numberAttribute(e,`agent.usage.output_tokens`);r!==void 0&&t.push(`↑${formatCompactTokenCount(r)}`),i!==void 0&&t.push(`↓${formatCompactTokenCount(i)}`);let a=spanCostUsd(e);if(a!==void 0&&t.push(formatCostUsd(a)),e.name===`ai.toolCall`){let n=e.attributes[`gen_ai.tool.name`];typeof n==`string`&&n.length>0&&t.push(n)}return t}function summarizeLocalTrace(e){let t=[],n=0,r=0,i,a=0,o=0,s=0;for(let c of e){let e=stringAttribute(c,`agent.model.id`)??stringAttribute(c,`gen_ai.request.model`);if(e!==void 0&&!t.includes(e)&&t.push(e),c.statusCode===2&&(a+=1),c.name!==`agent.step`)continue;o+=numberAttribute(c,`agent.usage.input_tokens`)??0,s+=numberAttribute(c,`agent.usage.output_tokens`)??0,n+=numberAttribute(c,`gen_ai.usage.cache_read.input_tokens`)??0,r+=numberAttribute(c,`gen_ai.usage.cache_creation.input_tokens`)??0;let l=spanCostUsd(c);l!==void 0&&(i=(i??0)+l)}return{cacheReadTokens:n,cacheWriteTokens:r,costUsd:i,errorCount:a,inputTokens:o,models:t,outputTokens:s}}function formatTokenSummary(e){let t=[`↑${formatCompactTokenCount(e.inputTokens)} in`,`↓${formatCompactTokenCount(e.outputTokens)} out`];return e.cacheReadTokens>0&&t.push(`${formatCompactTokenCount(e.cacheReadTokens)} cached`),e.cacheWriteTokens>0&&t.push(`${formatCompactTokenCount(e.cacheWriteTokens)} cache write`),t.join(` · `)}function formatCostUsd(e){return e>=1?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function renderSpanDetailTree(e,t){let n=spanDetailEntries(e,t.width-t.margin.length-3),r=[];return n.forEach((e,r)=>{let i=r===n.length-1&&!t.childrenFollow;emit(e,t.margin,i?`└─ `:`├─ `)}),r;function emit(e,n,i){r.push(t.mute(`${n}${i}${e.head}`));let a=`${n}${i===`└─ `?` `:`│ `}`;for(let n of e.lines)r.push(t.mute(`${a} ${n}`));e.entries.forEach((t,n)=>{emit(t,a,n===e.entries.length-1?`└─ `:`├─ `)})}}function spanDetailEntries(n,i){let dim=e=>e,a=Math.max(40,i),o=[],push=(e,t=[],n=[])=>{o.push({entries:n,head:e,lines:t})},s=n.statusCode===2;push(`status: ${s&&n.statusMessage!==void 0?`ERROR — ${sanitizeForTerminal(n.statusMessage)}`:s?`ERROR`:`ok`}`),push(`duration: ${formatElapsed(durationMs(n.startTimeNs,n.endTimeNs))}`),push(`started: ${new Date(Number(n.startTimeNs/1000000n)).toISOString()}`),push(`span: ${n.spanId}`),n.parentSpanId!==void 0&&push(`parent: ${n.parentSpanId}`),n.scope!==void 0&&push(`scope: ${sanitizeForTerminal(n.scope)}`),n.kind!==void 0&&n.kind!==1&&push(`kind: ${spanKind(n.kind)}`);for(let t of Object.keys(n.attributes).sort()){let i=formatAttributeContent(t,n.attributes[t],dim,a-2),o=sanitizeForTerminal(t);i.length===1?push(`${o}: ${i[0]}`):push(`${o}:`,i)}return n.events.length>0&&push(`events:`,[],n.events.map(i=>{let o=Math.max(0,durationMs(n.startTimeNs,i.timeNs)),s=[];for(let t of Object.keys(i.attributes).sort()){let n=formatAttributeContent(t,i.attributes[t],dim,a-6),o=sanitizeForTerminal(t);n.length===1?s.push(`${o}: ${n[0]}`):s.push(`${o}:`,...n.map(e=>` ${e}`))}return{entries:[],head:`${sanitizeForTerminal(i.name)} +${formatElapsed(o)}`,lines:s}})),o}function spanCostUsd(e){return numberAttribute(e,`gen_ai.usage.gateway_cost`)??numberAttribute(e,`gen_ai.usage.cost`)}function spanKind(e){switch(e){case 2:return`server`;case 3:return`client`;case 4:return`producer`;case 5:return`consumer`;default:return`unknown (${e})`}}function numberAttribute(e,t){let n=e.attributes[t];if(typeof n==`number`)return n;if(typeof n==`string`&&n!==``){let e=Number(n);return Number.isFinite(e)?e:void 0}}function stringAttribute(e,t){let n=e.attributes[t];return typeof n==`string`&&n.length>0?n:void 0}function durationMs(e,t){return Number(t-e)/1e6}export{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips,summarizeLocalTrace};
1
+ import{sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{formatCompactTokenCount}from"#cli/dev/tui/stream-format.js";import{formatAttributeContent}from"#cli/dev/tui/traces/trace-content.js";function spanMetricChips(e){let t=[],r=numberAttribute(e,`agent.usage.input_tokens`),i=numberAttribute(e,`agent.usage.output_tokens`);r!==void 0&&t.push(`↑${formatCompactTokenCount(r)}`),i!==void 0&&t.push(`↓${formatCompactTokenCount(i)}`);let a=spanCostUsd(e);return a!==void 0&&t.push(formatCostUsd(a)),t}function summarizeLocalTrace(e){let t=[],n=0,r=0,i,a=0,o=0,s=0;for(let c of e){let e=stringAttribute(c,`agent.model.id`)??stringAttribute(c,`gen_ai.request.model`);if(e!==void 0&&!t.includes(e)&&t.push(e),c.statusCode===2&&(a+=1),c.name!==`agent.step`)continue;o+=numberAttribute(c,`agent.usage.input_tokens`)??0,s+=numberAttribute(c,`agent.usage.output_tokens`)??0,n+=numberAttribute(c,`gen_ai.usage.cache_read.input_tokens`)??0,r+=numberAttribute(c,`gen_ai.usage.cache_creation.input_tokens`)??0;let l=spanCostUsd(c);l!==void 0&&(i=(i??0)+l)}return{cacheReadTokens:n,cacheWriteTokens:r,costUsd:i,errorCount:a,inputTokens:o,models:t,outputTokens:s}}function formatTokenSummary(e){let t=[`↑${formatCompactTokenCount(e.inputTokens)} in`,`↓${formatCompactTokenCount(e.outputTokens)} out`];return e.cacheReadTokens>0&&t.push(`${formatCompactTokenCount(e.cacheReadTokens)} cached`),e.cacheWriteTokens>0&&t.push(`${formatCompactTokenCount(e.cacheWriteTokens)} cache write`),t.join(` · `)}function formatCostUsd(e){return e>=1?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function renderSpanDetailTree(e,t){let n=spanDetailEntries(e,t.width-t.margin.length-3),r=[];return n.forEach((e,r)=>{let i=r===n.length-1&&!t.childrenFollow;emit(e,t.margin,i?`└─ `:`├─ `)}),r;function emit(e,n,i){r.push(t.mute(`${n}${i}${e.head}`));let a=`${n}${i===`└─ `?` `:`│ `}`;for(let n of e.lines)r.push(t.mute(`${a} ${n}`));e.entries.forEach((t,n)=>{emit(t,a,n===e.entries.length-1?`└─ `:`├─ `)})}}function spanDetailEntries(n,i){let dim=e=>e,a=Math.max(40,i),o=[],push=(e,t=[],n=[])=>{o.push({entries:n,head:e,lines:t})},s=n.statusCode===2;push(`status: ${s&&n.statusMessage!==void 0?`ERROR — ${sanitizeForTerminal(n.statusMessage)}`:s?`ERROR`:`ok`}`),push(`duration: ${formatElapsed(durationMs(n.startTimeNs,n.endTimeNs))}`),push(`started: ${new Date(Number(n.startTimeNs/1000000n)).toISOString()}`),push(`span: ${n.spanId}`),n.parentSpanId!==void 0&&push(`parent: ${n.parentSpanId}`),n.scope!==void 0&&push(`scope: ${sanitizeForTerminal(n.scope)}`),n.kind!==void 0&&n.kind!==1&&push(`kind: ${spanKind(n.kind)}`);for(let t of Object.keys(n.attributes).sort()){let i=formatAttributeContent(t,n.attributes[t],dim,a-2),o=sanitizeForTerminal(t);i.length===1?push(`${o}: ${i[0]}`):push(`${o}:`,i)}return n.events.length>0&&push(`events:`,[],n.events.map(i=>{let o=Math.max(0,durationMs(n.startTimeNs,i.timeNs)),s=[];for(let t of Object.keys(i.attributes).sort()){let n=formatAttributeContent(t,i.attributes[t],dim,a-6),o=sanitizeForTerminal(t);n.length===1?s.push(`${o}: ${n[0]}`):s.push(`${o}:`,...n.map(e=>` ${e}`))}return{entries:[],head:`${sanitizeForTerminal(i.name)} +${formatElapsed(o)}`,lines:s}})),o}function spanCostUsd(e){return numberAttribute(e,`gen_ai.usage.gateway_cost`)??numberAttribute(e,`gen_ai.usage.cost`)}function spanKind(e){switch(e){case 2:return`server`;case 3:return`client`;case 4:return`producer`;case 5:return`consumer`;default:return`unknown (${e})`}}function numberAttribute(e,t){let n=e.attributes[t];if(typeof n==`number`)return n;if(typeof n==`string`&&n!==``){let e=Number(n);return Number.isFinite(e)?e:void 0}}function stringAttribute(e,t){let n=e.attributes[t];return typeof n==`string`&&n.length>0?n:void 0}function durationMs(e,t){return Number(t-e)/1e6}export{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips,summarizeLocalTrace};
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * Conversation view for the `/traces` viewer: the same trace, re-told as a
3
3
  * flow of user messages, assistant replies, and tool calls instead of a
4
- * latency waterfall. Items are built from the span tree (turns in order,
5
- * subtrees in time order) with text pulled from the content attributes —
6
- * the user's message from the turn's first model prompt, replies and tool
7
- * calls from response/tool spans.
4
+ * latency waterfall. Durable delivery and action spans provide the user and
5
+ * tool cards directly; model response spans provide assistant cards.
8
6
  */
9
7
  import type { LocalTrace, LocalTraceSpan } from "#tracing/local-trace-reader.js";
10
8
  import type { Theme } from "../theme.js";
11
9
  import type { TraceViewerSurfaces } from "./trace-surfaces.js";
12
10
  export interface ConversationItem {
13
11
  readonly kind: "system" | "user" | "assistant" | "tool";
14
- /** Detail-drawer source for this item (the turn span for users). */
12
+ /** Detail-drawer source for this item. */
15
13
  readonly span: LocalTraceSpan;
16
14
  /** Tool name for tool items. */
17
15
  readonly name?: string;
@@ -44,7 +42,7 @@ export interface ConversationSubagent {
44
42
  /** Tool call id of the dispatch, when recorded. */
45
43
  readonly parentCallId?: string;
46
44
  }
47
- /** Builds the conversation flow for a trace, one item per message/action. */
45
+ /** Builds the conversation flow from eve's durable delivery, model, and action spans. */
48
46
  export declare function buildConversationItems(trace: LocalTrace): ConversationItem[];
49
47
  /**
50
48
  * Renders one conversation card, width-clipped: a title row (bold kind plus
@@ -1,2 +1 @@
1
- import{formatCompactTokenCount}from"../stream-format.js";import{formatPayloadContent,wrapPlainText}from"./trace-content.js";import{SURFACE_CLOSE}from"./trace-surfaces.js";import{formatElapsed}from"#cli/format-elapsed.js";import{clipVisible,stripTerminalControls,visibleLength}from"#cli/ui/terminal-text.js";import{compareLocalTraceSpans}from"#tracing/local-trace-reader.js";function buildConversationItems(e){let t=new Map(e.spans.map(e=>[e.spanId,e])),n=new Map;for(let t of e.spans){if(t.parentSpanId===void 0)continue;let e=n.get(t.parentSpanId)??[];e.push(t),n.set(t.parentSpanId,e)}for(let e of n.values())e.sort(compareLocalTraceSpans);let r=e.spans.filter(e=>e.name===`agent.turn`);r.sort(compareLocalTraceSpans);let i=[];for(let e of r){let r=turnSubagent(e),a=[],walk=e=>{a.push(e);for(let t of n.get(e.spanId)??[])walk(t)};if(walk(e),a.sort(compareLocalTraceSpans),i.length===0){let e=a.find(e=>isModelSpan(e)&&typeof e.attributes[`ai.prompt.system`]==`string`),t=e?.attributes[`ai.prompt.system`];e!==void 0&&typeof t==`string`&&t.length>0&&i.push({item:{kind:`system`,durationMs:0,error:!1,span:e,subagent:r,text:t},order:0n})}let s=extractUserText(a.find(isModelSpan));s!==void 0&&i.push({item:{kind:`user`,durationMs:0,error:!1,span:e,subagent:r,text:s},order:e.startTimeNs});for(let e of a)if(isModelSpan(e)){let n=stringAttribute(e,`ai.response.text`),a=stringAttribute(e,`ai.response.reasoning`),s=numberAttribute(e,`agent.usage.input_tokens`)!==void 0||numberAttribute(e,`agent.usage.output_tokens`)!==void 0,c=e.attributes[`ai.response.tool_calls`]!==void 0;if((n===void 0||n.trim().length===0)&&(a===void 0||a.trim().length===0)&&!s&&!c&&e.statusCode!==2)continue;i.push({item:{kind:`assistant`,costUsd:stepCostUsd(e,t),durationMs:spanDurationMs(e),error:e.statusCode===2,inputTokens:numberAttribute(e,`agent.usage.input_tokens`),model:stringAttribute(e,`gen_ai.request.model`),outputTokens:numberAttribute(e,`agent.usage.output_tokens`),reasoning:a,span:e,subagent:r,text:n,toolCallNames:c?parseToolCallNames(stringAttribute(e,`ai.response.tool_calls`)):void 0},order:e.startTimeNs});for(let t of parseProviderToolResults(stringAttribute(e,`ai.response.tool_results`)))i.push({item:{kind:`tool`,args:t.args,durationMs:0,error:t.error,name:stripTerminalControls(t.name),result:t.result,span:e,subagent:r},order:e.startTimeNs})}else e.name===`ai.toolCall`&&i.push({item:{kind:`tool`,args:stringAttribute(e,`gen_ai.tool.call.arguments`),durationMs:spanDurationMs(e),error:e.statusCode===2,name:stripTerminalControls(stringAttribute(e,`gen_ai.tool.name`)??`tool`),result:unwrapJsonString(stringAttribute(e,`gen_ai.tool.call.result`)),span:e,subagent:r},order:e.startTimeNs})}return i.sort((e,t)=>e.order===t.order?0:e.order<t.order?-1:1).map(e=>e.item)}function turnSubagent(e){let t=stringAttribute(e,`agent.parent.turn.id`);if(t===void 0)return;let n=stringAttribute(e,`agent.subagent.name`);return{name:n===void 0?void 0:stripTerminalControls(n),parentCallId:stringAttribute(e,`agent.parent.call_id`),parentTurnId:t}}function renderConversationItem(r,a,s,c,l,u){let{colors:d,glyph:f}=s,p=Math.max(8,a-8),m=conversationItemExpandable(r,a),h=s.color?u:void 0,g=h?.primaryText??d.white,_,v,y=[];if(r.kind===`tool`){let e=d.bold(g(r.name??`tool`));_=`${foldMarker(l,m,s)}${e}`,v=r.durationMs>0?d.dim(formatElapsed(r.durationMs)):``;let n=r.args===void 0?[]:formatPayloadContent(r.args,p),a=r.result===void 0?[]:formatPayloadContent(r.result,p),o=l?n:capLines(n,p),c=l?a:capLines(a,p);o.length>0&&y.push(``,d.dim(`Input:`),``,...o),c.length>0&&y.push(``,d.dim(`Output:`),``,...c)}else if(r.kind===`system`){_=`${foldMarker(l,m,s)}${d.bold(g(`system`))}`,v=d.dim(`~${formatCompactTokenCount(estimateTokens(r.text??``))} tokens`);let t=wrapPlainText(r.text??``,p);y.push(...l?t:capLines(t,p))}else if(r.kind===`assistant`){_=`${foldMarker(l,m,s)}${d.bold(g(`assistant`))}${r.model===void 0?``:d.dim(` · ${stripTerminalControls(r.model)}`)}`,v=assistantMetrics(r,f,d);let e=r.reasoning===void 0||r.reasoning.trim().length===0?[]:wrapPlainText(r.reasoning,p),t=r.text===void 0||r.text.trim().length===0?[]:wrapPlainText(r.text,p),i=(l?e:capLines(e,p)).map(e=>d.dim(e)),a=l?t:capLines(t,p);if(i.length>0&&(y.push(d.dim(`Thought:`),``,...i),a.length>0&&y.push(``)),y.push(...a),(r.text===void 0||r.text.trim().length===0)&&r.toolCallNames!==void 0&&r.toolCallNames.length>0){i.length>0&&y.push(``);for(let e of r.toolCallNames)y.push(d.dim(`→ ${e}`))}}else{let e=r.kind===`user`&&r.subagent!==void 0?`task`:r.kind;_=`${foldMarker(l,m,s)}${d.bold(g(e))}`,v=``;let t=r.text===void 0||r.text.trim().length===0?[]:wrapPlainText(r.text,p);y.push(...l?t:capLines(t,p))}if(r.subagent!==void 0){let e=r.subagent.name===void 0?`subagent`:`subagent:${r.subagent.name}`;_+=d.dim(` · ${e}`)}r.error&&(_+=` ${d.red(f.error)}`),!l&&m?y.push(`…`,``,d.dim(`Click to expand`)):l&&m&&y.push(``,d.dim(`Click to collapse`));let b=h===void 0?void 0:r.error?h.errorHeader:h.header,x=h===void 0?void 0:r.error?h.errorBody:h.body,S=railCell(s,c,r.error,h);return[cardRow(``,a,s,S,b),cardSplitRow(_,v,a,s,S,b),cardRow(``,a,s,S,b),cardRow(``,a,s,S,x),...y.map(e=>cardRow(e,a,s,S,x)),cardRow(``,a,s,S,x)]}function cardRow(e,t,n,i,o){let c=clipVisible(e,Math.max(1,t-8)),l=` `.repeat(Math.max(0,t-8-visibleLength(c)));return o===void 0||!n.color?` ${i} ${c}${l} `:` ${i}${o} ${c.replaceAll(`\x1B[0m`,`\x1b[0m${o}`)}\x1b[0m${o}${l} ${SURFACE_CLOSE} `}function railCell(e,t,n,r){let{colors:i,glyph:a}=e;if(t){let t=e.unicode?`▌`:a.rule;return r===void 0?i.white(t):r.primaryText(t)}return r===void 0?n?i.red(a.rule):i.dim(a.rule):` `}function cardSplitRow(e,t,n,r,i,o){if(visibleLength(t)===0)return cardRow(e,n,r,i,o);let c=Math.max(1,n-8),l=visibleLength(t),u=clipVisible(e,Math.max(1,c-l-2));return cardRow(`${u}${` `.repeat(Math.max(2,c-visibleLength(u)-l))}${t}`,n,r,i,o)}function assistantMetrics(t,n,r){let a=[];return t.durationMs>0&&a.push(formatElapsed(t.durationMs)),t.inputTokens!==void 0&&a.push(`${n.arrowUp}${formatCompactTokenCount(t.inputTokens)}`),t.outputTokens!==void 0&&a.push(`${n.arrowDown}${formatCompactTokenCount(t.outputTokens)}`),t.costUsd!==void 0&&a.push(formatCost(t.costUsd)),a.length===0?``:r.dim(a.join(` · `))}function formatCost(e){return e>=.01?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function stepCostUsd(e,t){let n=e;for(;n.parentSpanId!==void 0;){if(n=t.get(n.parentSpanId),n===void 0)return;if(n.name===`agent.step`)return numberAttribute(n,`gen_ai.usage.cost`)}}function foldMarker(e,t,n){return e?`${n.colors.dim(`▾`)} `:t?`${n.colors.dim(`▸`)} `:``}function capLines(e,t){return e.length<=3?[...e]:[...e.slice(0,2),clipVisible(e[2],Math.max(1,t))]}function conversationItemLineCount(e,t,n,r){return renderConversationItem(e,t,n,!1,r).length}function conversationItemExpandable(e,r){let i=Math.max(8,r-8);if(e.kind===`tool`){let n=e.args===void 0?0:formatPayloadContent(e.args,i-2).length,r=e.result===void 0?0:formatPayloadContent(e.result,i-2).length;return n>3||r>3}if(e.kind===`system`)return wrapPlainText(e.text??``,i).length>3;if(e.kind===`user`)return(e.text===void 0||e.text.trim().length===0?0:wrapPlainText(e.text,i).length)>3;let a=e.reasoning===void 0||e.reasoning.trim().length===0?0:wrapPlainText(e.reasoning,i).length,o=e.text===void 0||e.text.trim().length===0?0:wrapPlainText(e.text,i).length;return a>3||o>3}function estimateTokens(e){return Math.ceil(e.length/4)}function extractUserText(e){if(e===void 0)return;let t=e.attributes[`ai.prompt.messages`];if(typeof t!=`string`)return;let n;try{n=JSON.parse(t)}catch{return}if(Array.isArray(n))for(let e=n.length-1;e>=0;--e){let t=n[e];if(!isRecord(t)||t.role!==`user`)continue;let r=contentText(t.content).trim();if(r.length>0)return r}}function contentText(e){return typeof e==`string`?e:Array.isArray(e)?e.filter(e=>isRecord(e)&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
2
- `):``}function unwrapJsonString(e){if(e!==void 0)try{let t=JSON.parse(e);return typeof t==`string`?t:e}catch{return e}}function isModelSpan(e){return e.name.startsWith(`ai.`)&&e.name.includes(`do`)||e.attributes[`gen_ai.operation.name`]===`chat`}function parseToolCallNames(e){if(e!==void 0)try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>isRecord(e)&&typeof e.toolName==`string`).map(e=>e.toolName):void 0}catch{return}}function parseProviderToolResults(e){if(e===void 0)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let asText=e=>typeof e==`string`?e:e===void 0?void 0:JSON.stringify(e);return t.filter(isRecord).map(e=>{let t=`error`in e;return{args:asText(e.input),error:t,name:typeof e.toolName==`string`?e.toolName:`tool`,result:asText(t?e.error:e.output)}})}catch{return[]}}function stringAttribute(e,t){let n=e.attributes[t];return typeof n==`string`?n:void 0}function numberAttribute(e,t){let n=e.attributes[t];return typeof n==`number`?n:void 0}function spanDurationMs(e){return Math.max(0,Number(e.endTimeNs-e.startTimeNs)/1e6)}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{buildConversationItems,conversationItemExpandable,conversationItemLineCount,renderConversationItem};
1
+ import{formatCompactTokenCount}from"../stream-format.js";import{formatPayloadContent,wrapPlainText}from"./trace-content.js";import{SURFACE_CLOSE}from"./trace-surfaces.js";import{formatElapsed}from"#cli/format-elapsed.js";import{clipVisible,stripTerminalControls,visibleLength}from"#cli/ui/terminal-text.js";import{compareLocalTraceSpans}from"#tracing/local-trace-reader.js";function buildConversationItems(e){let t=new Map(e.spans.map(e=>[e.spanId,e])),n=new Map;for(let t of e.spans){if(t.name!==`agent.turn`)continue;let e=stringAttribute(t,`agent.turn.id`),r=turnSubagent(t);e!==void 0&&r!==void 0&&n.set(e,r)}let r=[],i=[...e.spans].sort(compareLocalTraceSpans).find(e=>isModelSpan(e)&&typeof e.attributes[`ai.prompt.system`]==`string`),a=i?.attributes[`ai.prompt.system`];i!==void 0&&typeof a==`string`&&a.length>0&&r.push({item:{kind:`system`,durationMs:0,error:!1,span:i,subagent:subagentFor(i,n,t),text:a},order:0n});for(let i of e.spans){let e=subagentFor(i,n,t);if(i.name===`agent.channel.delivery`){let t=deliveryText(stringAttribute(i,`agent.channel.delivery.input`));if(t===void 0)continue;r.push({item:{kind:`user`,durationMs:spanDurationMs(i),error:i.statusCode===2,span:i,subagent:e,text:t},order:i.startTimeNs});continue}if(isModelSpan(i)){let n=stringAttribute(i,`ai.response.text`),a=stringAttribute(i,`ai.response.reasoning`),s=numberAttribute(i,`agent.usage.input_tokens`)!==void 0||numberAttribute(i,`agent.usage.output_tokens`)!==void 0,c=i.attributes[`ai.response.tool_calls`]!==void 0;if((n===void 0||n.trim().length===0)&&(a===void 0||a.trim().length===0)&&!s&&!c&&i.statusCode!==2)continue;r.push({item:{kind:`assistant`,costUsd:stepCostUsd(i,t),durationMs:spanDurationMs(i),error:i.statusCode===2,inputTokens:numberAttribute(i,`agent.usage.input_tokens`),model:stringAttribute(i,`gen_ai.request.model`),outputTokens:numberAttribute(i,`agent.usage.output_tokens`),reasoning:a,span:i,subagent:e,text:n,toolCallNames:c?parseToolCallNames(stringAttribute(i,`ai.response.tool_calls`)):void 0},order:i.startTimeNs});for(let t of parseProviderToolResults(stringAttribute(i,`ai.response.tool_results`)))r.push({item:{kind:`tool`,args:t.args,durationMs:0,error:t.error,name:stripTerminalControls(t.name),result:t.result,span:i,subagent:e},order:i.startTimeNs});continue}i.name===`agent.action`&&r.push({item:{kind:`tool`,args:stringAttribute(i,`gen_ai.tool.call.arguments`),durationMs:spanDurationMs(i),error:i.statusCode===2,name:stripTerminalControls(stringAttribute(i,`agent.action.name`)??`action`),result:unwrapJsonString(stringAttribute(i,`gen_ai.tool.call.result`)),span:i,subagent:e},order:i.startTimeNs})}return r.sort((e,t)=>e.order===t.order?0:e.order<t.order?-1:1).map(e=>e.item)}function subagentFor(e,t,n){let r=e;for(;r!==void 0;){let e=stringAttribute(r,`agent.turn.id`);if(e!==void 0)return t.get(e);r=r.parentSpanId===void 0?void 0:n.get(r.parentSpanId)}}function turnSubagent(e){let t=stringAttribute(e,`agent.parent.turn.id`);if(t===void 0)return;let n=stringAttribute(e,`agent.subagent.name`);return{name:n===void 0?void 0:stripTerminalControls(n),parentCallId:stringAttribute(e,`agent.parent.call_id`),parentTurnId:t}}function renderConversationItem(r,a,s,c,l,u){let{colors:d,glyph:f}=s,p=Math.max(8,a-8),m=conversationItemExpandable(r,a),h=s.color?u:void 0,g=h?.primaryText??d.white,_,v,y=[];if(r.kind===`tool`){let e=d.bold(g(r.name??`tool`));_=`${foldMarker(l,m,s)}${e}`,v=r.durationMs>0?d.dim(formatElapsed(r.durationMs)):``;let n=r.args===void 0?[]:formatPayloadContent(r.args,p),a=r.result===void 0?[]:formatPayloadContent(r.result,p),o=l?n:capLines(n,p),c=l?a:capLines(a,p);o.length>0&&y.push(``,d.dim(`Input:`),``,...o),c.length>0&&y.push(``,d.dim(`Output:`),``,...c)}else if(r.kind===`system`){_=`${foldMarker(l,m,s)}${d.bold(g(`system`))}`,v=d.dim(`~${formatCompactTokenCount(estimateTokens(r.text??``))} tokens`);let t=wrapPlainText(r.text??``,p);y.push(...l?t:capLines(t,p))}else if(r.kind===`assistant`){_=`${foldMarker(l,m,s)}${d.bold(g(`assistant`))}${r.model===void 0?``:d.dim(` · ${stripTerminalControls(r.model)}`)}`,v=assistantMetrics(r,f,d);let e=r.reasoning===void 0||r.reasoning.trim().length===0?[]:wrapPlainText(r.reasoning,p),t=r.text===void 0||r.text.trim().length===0?[]:wrapPlainText(r.text,p),i=(l?e:capLines(e,p)).map(e=>d.dim(e)),a=l?t:capLines(t,p);if(i.length>0&&(y.push(d.dim(`Thought:`),``,...i),a.length>0&&y.push(``)),y.push(...a),(r.text===void 0||r.text.trim().length===0)&&r.toolCallNames!==void 0&&r.toolCallNames.length>0){i.length>0&&y.push(``);for(let e of r.toolCallNames)y.push(d.dim(`→ ${e}`))}}else{let e=r.kind===`user`&&r.subagent!==void 0?`task`:r.kind;_=`${foldMarker(l,m,s)}${d.bold(g(e))}`,v=``;let t=r.text===void 0||r.text.trim().length===0?[]:wrapPlainText(r.text,p);y.push(...l?t:capLines(t,p))}if(r.subagent!==void 0){let e=r.subagent.name===void 0?`subagent`:`subagent:${r.subagent.name}`;_+=d.dim(` · ${e}`)}r.error&&(_+=` ${d.red(f.error)}`),!l&&m?y.push(`…`,``,d.dim(`Click to expand`)):l&&m&&y.push(``,d.dim(`Click to collapse`));let b=h===void 0?void 0:r.error?h.errorHeader:h.header,x=h===void 0?void 0:r.error?h.errorBody:h.body,S=railCell(s,c,r.error,h);return[cardRow(``,a,s,S,b),cardSplitRow(_,v,a,s,S,b),cardRow(``,a,s,S,b),cardRow(``,a,s,S,x),...y.map(e=>cardRow(e,a,s,S,x)),cardRow(``,a,s,S,x)]}function cardRow(e,t,n,i,o){let c=clipVisible(e,Math.max(1,t-8)),l=` `.repeat(Math.max(0,t-8-visibleLength(c)));return o===void 0||!n.color?` ${i} ${c}${l} `:` ${i}${o} ${c.replaceAll(`\x1B[0m`,`\x1b[0m${o}`)}\x1b[0m${o}${l} ${SURFACE_CLOSE} `}function railCell(e,t,n,r){let{colors:i,glyph:a}=e;if(t){let t=e.unicode?`▌`:a.rule;return r===void 0?i.white(t):r.primaryText(t)}return r===void 0?n?i.red(a.rule):i.dim(a.rule):` `}function cardSplitRow(e,t,n,r,i,o){if(visibleLength(t)===0)return cardRow(e,n,r,i,o);let c=Math.max(1,n-8),l=visibleLength(t),u=clipVisible(e,Math.max(1,c-l-2));return cardRow(`${u}${` `.repeat(Math.max(2,c-visibleLength(u)-l))}${t}`,n,r,i,o)}function assistantMetrics(t,n,r){let a=[];return t.durationMs>0&&a.push(formatElapsed(t.durationMs)),t.inputTokens!==void 0&&a.push(`${n.arrowUp}${formatCompactTokenCount(t.inputTokens)}`),t.outputTokens!==void 0&&a.push(`${n.arrowDown}${formatCompactTokenCount(t.outputTokens)}`),t.costUsd!==void 0&&a.push(formatCost(t.costUsd)),a.length===0?``:r.dim(a.join(` · `))}function formatCost(e){return e>=.01?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function stepCostUsd(e,t){let n=e;for(;n.parentSpanId!==void 0;){if(n=t.get(n.parentSpanId),n===void 0)return;if(n.name===`agent.step`)return numberAttribute(n,`gen_ai.usage.cost`)}}function foldMarker(e,t,n){return e?`${n.colors.dim(`▾`)} `:t?`${n.colors.dim(`▸`)} `:``}function capLines(e,t){return e.length<=3?[...e]:[...e.slice(0,2),clipVisible(e[2],Math.max(1,t))]}function conversationItemLineCount(e,t,n,r){return renderConversationItem(e,t,n,!1,r).length}function conversationItemExpandable(e,r){let i=Math.max(8,r-8);if(e.kind===`tool`){let n=e.args===void 0?0:formatPayloadContent(e.args,i-2).length,r=e.result===void 0?0:formatPayloadContent(e.result,i-2).length;return n>3||r>3}if(e.kind===`system`)return wrapPlainText(e.text??``,i).length>3;if(e.kind===`user`)return(e.text===void 0||e.text.trim().length===0?0:wrapPlainText(e.text,i).length)>3;let a=e.reasoning===void 0||e.reasoning.trim().length===0?0:wrapPlainText(e.reasoning,i).length,o=e.text===void 0||e.text.trim().length===0?0:wrapPlainText(e.text,i).length;return a>3||o>3}function estimateTokens(e){return Math.ceil(e.length/4)}function deliveryText(e){if(e!==void 0)try{let t=JSON.parse(e);return isRecord(t)&&typeof t.message==`string`?t.message:void 0}catch{return e}}function unwrapJsonString(e){if(e!==void 0)try{let t=JSON.parse(e);return typeof t==`string`?t:e}catch{return e}}function isModelSpan(e){return e.name.startsWith(`ai.`)&&e.name.includes(`do`)||e.attributes[`gen_ai.operation.name`]===`chat`}function parseToolCallNames(e){if(e!==void 0)try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>isRecord(e)&&typeof e.toolName==`string`).map(e=>e.toolName):void 0}catch{return}}function parseProviderToolResults(e){if(e===void 0)return[];try{let t=JSON.parse(e);if(!Array.isArray(t))return[];let asText=e=>typeof e==`string`?e:e===void 0?void 0:JSON.stringify(e);return t.filter(isRecord).map(e=>{let t=`error`in e;return{args:asText(e.input),error:t,name:typeof e.toolName==`string`?e.toolName:`tool`,result:asText(t?e.error:e.output)}})}catch{return[]}}function stringAttribute(e,t){let n=e.attributes[t];return typeof n==`string`?n:void 0}function numberAttribute(e,t){let n=e.attributes[t];return typeof n==`number`?n:void 0}function spanDurationMs(e){return Math.max(0,Number(e.endTimeNs-e.startTimeNs)/1e6)}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{buildConversationItems,conversationItemExpandable,conversationItemLineCount,renderConversationItem};
@@ -88,7 +88,11 @@ declare const instructions: z.ZodObject<{
88
88
  sourceId: z.ZodOptional<z.ZodString>;
89
89
  sourceKind: z.ZodString;
90
90
  name: z.ZodString;
91
- markdown: z.ZodString;
91
+ content: z.ZodString;
92
+ role: z.ZodEnum<{
93
+ system: "system";
94
+ user: "user";
95
+ }>;
92
96
  }, z.core.$strip>;
93
97
  declare const schedule: z.ZodObject<{
94
98
  exportName: z.ZodOptional<z.ZodString>;
@@ -363,13 +367,17 @@ export declare const AgentInfoResultSchema: z.ZodObject<{
363
367
  }>;
364
368
  slug: z.ZodString;
365
369
  }, z.core.$strip>>;
366
- static: z.ZodNullable<z.ZodObject<{
370
+ static: z.ZodArray<z.ZodObject<{
367
371
  exportName: z.ZodOptional<z.ZodString>;
368
372
  logicalPath: z.ZodString;
369
373
  sourceId: z.ZodOptional<z.ZodString>;
370
374
  sourceKind: z.ZodString;
371
375
  name: z.ZodString;
372
- markdown: z.ZodString;
376
+ content: z.ZodString;
377
+ role: z.ZodEnum<{
378
+ system: "system";
379
+ user: "user";
380
+ }>;
373
381
  }, z.core.$strip>>;
374
382
  }, z.core.$strip>;
375
383
  kind: z.ZodLiteral<"eve-agent-info">;
@@ -530,7 +538,7 @@ export declare const AgentInfoResultSchema: z.ZodObject<{
530
538
  }, z.core.$strip>>;
531
539
  reserved: z.ZodArray<z.ZodString>;
532
540
  }, z.core.$strip>;
533
- version: z.ZodLiteral<1>;
541
+ version: z.ZodLiteral<2>;
534
542
  workflow: z.ZodObject<{
535
543
  enabled: z.ZodBoolean;
536
544
  toolName: z.ZodString;
@@ -1 +1 @@
1
- import{z}from"#compiled/zod/index.js";const source=z.object({exportName:z.string().optional(),logicalPath:z.string(),sourceId:z.string().optional(),sourceKind:z.string()}),entry=source.extend({name:z.string()}),modelRouting=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}),z.object({kind:z.literal(`external`),provider:z.string()})]),modelEndpoint=z.union([z.object({kind:z.literal(`external`),provider:z.string()}),z.object({kind:z.literal(`gateway`),connected:z.literal(!0),credential:z.enum([`api-key`,`oidc`])}),z.object({kind:z.literal(`gateway`),connected:z.literal(!1)})]),agentModelBaseFields={contextWindowTokens:z.number().optional(),providerOptions:z.unknown().optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional().catch(void 0),source:source.optional()},agentModel=z.union([z.object({...agentModelBaseFields,id:z.string(),routing:modelRouting,endpoint:modelEndpoint.optional()}).strict(),z.object({...agentModelBaseFields,endpoint:z.never().optional(),id:z.never().optional(),routing:z.object({kind:z.literal(`dynamic`)}).strict()}).strict()]),tool=entry.extend({description:z.string(),hasAuth:z.boolean(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),hasOutputSchema:z.boolean(),inputSchema:z.unknown(),origin:z.enum([`authored`,`framework`]),outputSchema:z.unknown().optional(),replacesFrameworkTool:z.boolean(),requiresApproval:z.boolean()}),frameworkTool=tool.extend({disabledByAuthor:z.boolean(),replacedByAuthoredTool:z.boolean(),status:z.enum([`active`,`disabled`,`replaced`])}),dynamicResolver=source.extend({eventNames:z.array(z.string()),origin:z.enum([`authored`,`framework`]),slug:z.string()}),skill=entry.extend({description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional()}),instructions=entry.extend({markdown:z.string()}),schedule=entry.extend({cron:z.string(),hasRun:z.boolean(),markdown:z.string().optional()}),subagent=entry.extend({description:z.string().optional(),entryPath:z.string(),nodeId:z.string(),rootPath:z.string(),summary:z.object({channels:z.number(),connections:z.number(),hooks:z.number(),instructions:z.boolean(),schedules:z.number(),skills:z.number(),tools:z.number()})}),channel=entry.extend({adapterKind:z.string().optional(),method:z.string(),origin:z.enum([`authored`,`framework`]),urlPath:z.string()}),frameworkChannel=channel.extend({disabledByAuthor:z.boolean(),replacedByAuthoredChannel:z.boolean(),status:z.enum([`active`,`disabled`,`replaced`])}),connection=source.extend({connectionName:z.string(),description:z.string(),hasApproval:z.boolean(),hasAuthorization:z.boolean(),hasHeaders:z.boolean(),protocol:z.string(),toolFilter:z.unknown().optional(),url:z.string()}),hook=source.extend({eventNames:z.array(z.string()),slug:z.string()}),sandbox=source.extend({backendKind:z.string().optional(),description:z.string().optional(),hasBootstrap:z.boolean(),hasOnSession:z.boolean(),revalidationKey:z.string().optional(),sourceHash:z.string().optional()}),AgentInfoResultSchema=z.object({agent:z.object({agentRoot:z.string(),appRoot:z.string(),configSource:source.optional(),description:z.string().optional(),model:agentModel,name:z.string(),outputSchema:z.unknown().optional()}),capabilities:z.object({devRoutes:z.boolean()}),channels:z.object({authored:z.array(channel),available:z.array(channel),disabledFramework:z.array(z.string()),framework:z.array(frameworkChannel)}),connections:z.array(connection),diagnostics:z.object({discoveryErrors:z.number(),discoveryWarnings:z.number()}),hooks:z.array(hook),instructions:z.object({dynamic:z.array(dynamicResolver),static:instructions.nullable()}),kind:z.literal(`eve-agent-info`),mode:z.enum([`development`,`production`]),sandbox:sandbox.nullable(),schedules:z.array(schedule),skills:z.object({dynamic:z.array(dynamicResolver),static:z.array(skill)}),subagents:z.object({local:z.array(subagent),total:z.number()}),tools:z.object({authored:z.array(tool),available:z.array(tool),disabledFramework:z.array(z.string()),dynamic:z.array(dynamicResolver),framework:z.array(frameworkTool),reserved:z.array(z.string())}),version:z.literal(1),workflow:z.object({enabled:z.boolean(),toolName:z.string()}),workspace:z.object({resourceRoot:z.unknown(),rootEntries:z.array(z.string())})});export{AgentInfoResultSchema};
1
+ import{z}from"#compiled/zod/index.js";const source=z.object({exportName:z.string().optional(),logicalPath:z.string(),sourceId:z.string().optional(),sourceKind:z.string()}),entry=source.extend({name:z.string()}),modelRouting=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}),z.object({kind:z.literal(`external`),provider:z.string()})]),modelEndpoint=z.union([z.object({kind:z.literal(`external`),provider:z.string()}),z.object({kind:z.literal(`gateway`),connected:z.literal(!0),credential:z.enum([`api-key`,`oidc`])}),z.object({kind:z.literal(`gateway`),connected:z.literal(!1)})]),agentModelBaseFields={contextWindowTokens:z.number().optional(),providerOptions:z.unknown().optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional().catch(void 0),source:source.optional()},agentModel=z.union([z.object({...agentModelBaseFields,id:z.string(),routing:modelRouting,endpoint:modelEndpoint.optional()}).strict(),z.object({...agentModelBaseFields,endpoint:z.never().optional(),id:z.never().optional(),routing:z.object({kind:z.literal(`dynamic`)}).strict()}).strict()]),tool=entry.extend({description:z.string(),hasAuth:z.boolean(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),hasOutputSchema:z.boolean(),inputSchema:z.unknown(),origin:z.enum([`authored`,`framework`]),outputSchema:z.unknown().optional(),replacesFrameworkTool:z.boolean(),requiresApproval:z.boolean()}),frameworkTool=tool.extend({disabledByAuthor:z.boolean(),replacedByAuthoredTool:z.boolean(),status:z.enum([`active`,`disabled`,`replaced`])}),dynamicResolver=source.extend({eventNames:z.array(z.string()),origin:z.enum([`authored`,`framework`]),slug:z.string()}),skill=entry.extend({description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional()}),instructions=entry.extend({content:z.string(),role:z.enum([`system`,`user`])}),schedule=entry.extend({cron:z.string(),hasRun:z.boolean(),markdown:z.string().optional()}),subagent=entry.extend({description:z.string().optional(),entryPath:z.string(),nodeId:z.string(),rootPath:z.string(),summary:z.object({channels:z.number(),connections:z.number(),hooks:z.number(),instructions:z.boolean(),schedules:z.number(),skills:z.number(),tools:z.number()})}),channel=entry.extend({adapterKind:z.string().optional(),method:z.string(),origin:z.enum([`authored`,`framework`]),urlPath:z.string()}),frameworkChannel=channel.extend({disabledByAuthor:z.boolean(),replacedByAuthoredChannel:z.boolean(),status:z.enum([`active`,`disabled`,`replaced`])}),connection=source.extend({connectionName:z.string(),description:z.string(),hasApproval:z.boolean(),hasAuthorization:z.boolean(),hasHeaders:z.boolean(),protocol:z.string(),toolFilter:z.unknown().optional(),url:z.string()}),hook=source.extend({eventNames:z.array(z.string()),slug:z.string()}),sandbox=source.extend({backendKind:z.string().optional(),description:z.string().optional(),hasBootstrap:z.boolean(),hasOnSession:z.boolean(),revalidationKey:z.string().optional(),sourceHash:z.string().optional()}),AgentInfoResultSchema=z.object({agent:z.object({agentRoot:z.string(),appRoot:z.string(),configSource:source.optional(),description:z.string().optional(),model:agentModel,name:z.string(),outputSchema:z.unknown().optional()}),capabilities:z.object({devRoutes:z.boolean()}),channels:z.object({authored:z.array(channel),available:z.array(channel),disabledFramework:z.array(z.string()),framework:z.array(frameworkChannel)}),connections:z.array(connection),diagnostics:z.object({discoveryErrors:z.number(),discoveryWarnings:z.number()}),hooks:z.array(hook),instructions:z.object({dynamic:z.array(dynamicResolver),static:z.array(instructions)}),kind:z.literal(`eve-agent-info`),mode:z.enum([`development`,`production`]),sandbox:sandbox.nullable(),schedules:z.array(schedule),skills:z.object({dynamic:z.array(dynamicResolver),static:z.array(skill)}),subagents:z.object({local:z.array(subagent),total:z.number()}),tools:z.object({authored:z.array(tool),available:z.array(tool),disabledFramework:z.array(z.string()),dynamic:z.array(dynamicResolver),framework:z.array(frameworkTool),reserved:z.array(z.string())}),version:z.literal(2),workflow:z.object({enabled:z.boolean(),toolName:z.string()}),workspace:z.object({resourceRoot:z.unknown(),rootEntries:z.array(z.string())})});export{AgentInfoResultSchema};
@@ -11,7 +11,7 @@ export type { EveAgentStoreCallbacks, EveAgentStoreInit, EveAgentStoreSnapshot,
11
11
  export type { AgentInfoEntry, AgentInfoChannelEntry, AgentInfoChannels, AgentInfoConnectionEntry, AgentInfoDynamicResolverEntry, AgentInfoFrameworkChannelEntry, AgentInfoFrameworkToolEntry, AgentInfoHookEntry, AgentInfoInstructions, AgentInfoInstructionsEntry, AgentInfoResult, AgentInfoSandboxEntry, AgentInfoScheduleEntry, AgentInfoSkillEntry, AgentInfoSource, AgentInfoSubagentEntry, AgentInfoToolEntry, AgentInfoTools, CancelSessionResult, ClearResult, CompactResult, ClientAuth, ClientOptions, ClientRedirectPolicy, HeadersValue, HealthResult, MessageResult, RespondTurnOptions, ResetResult, ResolvedStreamReconnectPolicy, SendTurnInput, SendTurnOptions, SessionSnapshot, ClientSessionState, StreamOptions, StreamReconnectPolicy, StreamReconnectRetryPolicy, TokenValue, } from "#client/types.js";
12
12
  export type { EveAgentReducer, EveAgentReducerEvent, ClientInputRespondedEvent, ClientMessageFailedEvent, ClientMessageSubmittedEvent, } from "#client/reducer.js";
13
13
  export type { EveAuthorizationChallenge, EveAuthorizationOutcome, EveAuthorizationPart, EveMessageData, EveDynamicToolPart, EveMessageInputRequest, EveMessage, EveMessageMetadata, EveMessagePart, EveMessageToolMetadata, } from "#client/message-reducer.js";
14
- export type { ActionPartialStreamEvent, ActionResultStreamEvent, ActionsRequestedStreamEvent, AssistantStepFinishReason, AuthorizationOutcome, CompactionCompletedStreamEvent, CompactionRequestedStreamEvent, AuthorizationCompletedStreamEvent, ConnectionAuthorizationOutcome, AuthorizationRequiredStreamEvent, HandleMessageStreamEvent, MessageStreamEventMeta, InputRequestedStreamEvent, MessageAppendedStreamEvent, MessageCompletedStreamEvent, MessageReceivedPart, MessageReceivedStreamEvent, ReasoningAppendedStreamEvent, ReasoningCompletedStreamEvent, ResultCompletedStreamEvent, SessionCompletedStreamEvent, SessionFailedStreamEvent, SessionStartedStreamEvent, SessionWaitingStreamEvent, MessageStreamEvent, StepCompletedStreamEvent, StepFailedStreamEvent, StepStartedStreamEvent, SubagentCalledStreamEvent, SubagentChildEventStreamEvent, SubagentCompletedStreamEvent, SubagentStartedStreamEvent, TurnCancelledStreamEvent, TurnCompletedStreamEvent, TurnFailedStreamEvent, TurnStartedStreamEvent, TurnFailureStreamEvent, } from "#protocol/message.js";
14
+ export type { ActionPartialStreamEvent, ActionResultStreamEvent, ActionsRequestedStreamEvent, AssistantStepFinishReason, AuthorizationOutcome, CompactionCompletedStreamEvent, CompactionRequestedStreamEvent, AuthorizationCompletedStreamEvent, ConnectionAuthorizationOutcome, AuthorizationRequiredStreamEvent, HandleMessageStreamEvent, MessageStreamEventMeta, InputRequestedStreamEvent, MessageAppendedStreamEvent, MessageCompletedStreamEvent, MessageReceivedPart, MessageReceivedStreamEvent, ReasoningAppendedStreamEvent, ReasoningCompletedStreamEvent, ResultCompletedStreamEvent, RuntimeTraceContext, SessionCompletedStreamEvent, SessionFailedStreamEvent, SessionStartedStreamEvent, SessionWaitingStreamEvent, MessageStreamEvent, StepCompletedStreamEvent, StepFailedStreamEvent, StepStartedStreamEvent, SubagentCalledStreamEvent, SubagentChildEventStreamEvent, SubagentCompletedStreamEvent, SubagentStartedStreamEvent, TurnCancelledStreamEvent, TurnCompletedStreamEvent, TurnFailedStreamEvent, TurnStartedStreamEvent, TurnFailureStreamEvent, } from "#protocol/message.js";
15
15
  export { isCurrentTurnBoundaryEvent, isTurnFailureEvent } from "#protocol/message.js";
16
16
  export type { InputOption, InputRequest, InputRequestKind, InputResponse, } from "#runtime/input/types.js";
17
17
  export { inputOptionSchema, inputRequestKindSchema, inputRequestSchema, inputResponseSchema, isInputRequest, isInputResponse, } from "#runtime/input/types.js";
@@ -37,9 +37,9 @@
37
37
  "@workflow/core": "5.0.0-beta.41",
38
38
  "@workflow/errors": "5.0.0-beta.16",
39
39
  "@workflow/serde": "5.0.0-beta.2",
40
- "@workflow/world": "5.0.0-beta.25",
41
- "@workflow/world-local": "5.0.0-beta.34",
42
- "@workflow/world-vercel": "5.0.0-beta.36",
40
+ "@workflow/world": "5.0.0-beta.26",
41
+ "@workflow/world-local": "5.0.0-beta.35",
42
+ "@workflow/world-vercel": "5.0.0-beta.37",
43
43
  "zod": "4.4.3",
44
44
  "zod-validation-error": "5.0.0"
45
45
  },