eve 0.66.2 → 0.67.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/CHANGELOG.md +38 -0
- package/dist/src/channel/channel-address.d.ts +0 -2
- package/dist/src/channel/channel-address.js +1 -1
- package/dist/src/channel/channel-operations.d.ts +0 -5
- package/dist/src/channel/channel-operations.js +1 -1
- package/dist/src/channel/compiled-channel.d.ts +8 -0
- package/dist/src/channel/compiled-channel.js +2 -2
- package/dist/src/channel/conversation-context.js +1 -1
- package/dist/src/channel/routes.d.ts +1 -2
- package/dist/src/channel/schedule.d.ts +2 -2
- package/dist/src/channel/schedule.js +1 -1
- package/dist/src/channel/types.d.ts +8 -13
- package/dist/src/chunks/{use-eve-agent-PbSMyJ6e.js → use-eve-agent-DzdyI97Z.js} +0 -5
- package/dist/src/chunks/{use-eve-agent-Di1u2zKu.js → use-eve-agent-OCHP4s0z.js} +0 -5
- package/dist/src/cli/acp/command.js +3 -3
- package/dist/src/cli/commands/logs.d.ts +3 -3
- package/dist/src/cli/commands/logs.js +1 -1
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/cli/commands/registry-declared-setups.d.ts +0 -1
- package/dist/src/cli/commands/registry-declared-setups.js +1 -1
- package/dist/src/cli/commands/registry.d.ts +5 -1
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/trace.js +1 -1
- package/dist/src/cli/dev/command.d.ts +9 -5
- package/dist/src/cli/dev/command.js +1 -3
- package/dist/src/cli/dev/run-interactive-ui.d.ts +0 -1
- package/dist/src/cli/dev/run-interactive-ui.js +1 -1
- package/dist/src/cli/dev/tui/argument-typeahead.d.ts +1 -2
- package/dist/src/cli/dev/tui/argument-typeahead.js +2 -2
- package/dist/src/cli/dev/tui/blocks.d.ts +5 -1
- package/dist/src/cli/dev/tui/blocks.js +4 -4
- package/dist/src/cli/dev/tui/flow-drawer.d.ts +11 -0
- package/dist/src/cli/dev/tui/flow-drawer.js +1 -0
- package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +199 -0
- package/dist/src/cli/dev/tui/prompt-commands.js +2 -2
- package/dist/src/cli/dev/tui/question-panel.d.ts +4 -4
- package/dist/src/cli/dev/tui/question-panel.js +1 -1
- package/dist/src/cli/dev/tui/registry-result-message.d.ts +15 -4
- package/dist/src/cli/dev/tui/registry-result-message.js +4 -4
- package/dist/src/cli/dev/tui/runner.d.ts +18 -6
- package/dist/src/cli/dev/tui/runner.js +3 -2
- package/dist/src/cli/dev/tui/setup-commands.d.ts +5 -22
- package/dist/src/cli/dev/tui/setup-commands.js +2 -1
- package/dist/src/cli/dev/tui/setup-flow.d.ts +2 -10
- package/dist/src/cli/dev/tui/setup-panel.d.ts +4 -23
- package/dist/src/cli/dev/tui/setup-panel.js +3 -3
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +11 -7
- package/dist/src/cli/dev/tui/terminal-renderer.js +11 -11
- package/dist/src/cli/dev/tui/theme.d.ts +1 -1
- package/dist/src/cli/dev/tui/tui-prompter.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/url-target.js +1 -1
- package/dist/src/cli/invoke/command.d.ts +2 -5
- package/dist/src/cli/invoke/command.js +1 -1
- package/dist/src/cli/invoke/invoke.d.ts +2 -2
- package/dist/src/cli/invoke/invoke.js +1 -1
- package/dist/src/cli/invoke/result.d.ts +14 -194
- package/dist/src/cli/invoke/result.js +1 -1
- package/dist/src/cli/run.d.ts +0 -4
- package/dist/src/cli/run.js +2 -2
- package/dist/src/cli/telemetry/index.js +1 -1
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +6 -6
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +38 -1
- package/dist/src/compiled/@workflow/core/global.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +9 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/hook-wake.d.ts +89 -0
- package/dist/src/compiled/@workflow/core/runtime/open-hook-wait-state.d.ts +55 -0
- package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +8 -1
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/serialization/types.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/serialization.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +23 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +34 -0
- package/dist/src/compiled/@workflow/world/hooks.d.ts +27 -0
- package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +24 -0
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +32 -11
- package/dist/src/compiled/@workflow/world-local/index.js +3 -3
- package/dist/src/compiled/@workflow/world-vercel/index.js +17 -17
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-89Nwz7XW.js → attribute-changes-DzJovO_f.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-BQSf8Hax.js +1 -0
- package/dist/src/compiled/_chunks/workflow/dist-BfMqXLK3.js +3 -0
- package/dist/src/compiled/_chunks/workflow/frames-qKc30rjg.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{global-DIlFoH2w.js → global-BQnKzRXo.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{helpers-k3zcudWr.js → helpers-CNMO7zB1.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{logger-Bzc8jWWj.js → logger-BCEj9caG.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-QS_cMwHn.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-CA5wWV2S.js +1 -0
- package/dist/src/compiled/_chunks/workflow/serialization-CJ265vSe.js +3 -0
- package/dist/src/compiled/_chunks/workflow/sleep-CBn94Ayv.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{wait-until-DXLZx3tU.js → wait-until-Bo2U6ON9.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{ws-transport-BSM_Cl7a.js → ws-transport-BrsMYqJg.js} +1 -1
- package/dist/src/compiler/compile-from-memory.d.ts +0 -1
- package/dist/src/compiler/compile-from-memory.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +25 -18
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +48 -14
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-channel.js +1 -1
- package/dist/src/compiler/normalize-connection.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +0 -2
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +0 -2
- package/dist/src/compiler/remote-agent-node.js +1 -1
- package/dist/src/compiler/workspace-resources.js +1 -1
- package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +0 -3
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/memory-lifecycle.d.ts +1 -0
- package/dist/src/context/memory-lifecycle.js +1 -1
- package/dist/src/discover/project.js +1 -1
- package/dist/src/eve-channel/create-request.d.ts +0 -3
- package/dist/src/eve-channel/create-request.js +1 -1
- package/dist/src/eve-channel/index.js +1 -1
- package/dist/src/eve-channel/request.js +1 -1
- package/dist/src/eve-channel/types.d.ts +1 -1
- package/dist/src/execution/delegated-session-context.d.ts +2 -0
- package/dist/src/execution/delegated-session-context.js +1 -0
- package/dist/src/execution/dynamic-connections.d.ts +4 -1
- package/dist/src/execution/dynamic-connections.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/effective-agent-config.js +1 -1
- package/dist/src/execution/legacy-session/input.d.ts +0 -2
- package/dist/src/execution/legacy-session/input.js +1 -1
- package/dist/src/execution/legacy-session/prepare-step.d.ts +0 -1
- package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
- package/dist/src/execution/node-step.d.ts +4 -2
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/proxied-deliver-step.js +1 -1
- package/dist/src/execution/publish-channel-event.d.ts +23 -0
- package/dist/src/execution/publish-channel-event.js +1 -0
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/session/entry-input.d.ts +4 -0
- package/dist/src/execution/session/entry-input.js +1 -1
- package/dist/src/execution/session/entry.js +1 -1
- package/dist/src/execution/session/event-sink.d.ts +1 -1
- package/dist/src/execution/session/event-sink.js +1 -1
- package/dist/src/execution/session/finalization.d.ts +1 -4
- package/dist/src/execution/session/finalization.js +1 -1
- package/dist/src/execution/session/handoff.d.ts +1 -3
- package/dist/src/execution/session/handoff.js +1 -1
- package/dist/src/execution/session/input-queue.d.ts +0 -1
- package/dist/src/execution/session/input-queue.js +1 -1
- package/dist/src/execution/session/next-input.d.ts +0 -1
- package/dist/src/execution/session/next-input.js +1 -1
- package/dist/src/execution/session/program.d.ts +0 -3
- package/dist/src/execution/session/program.js +1 -1
- package/dist/src/execution/session/turn-step-result.d.ts +1 -2
- package/dist/src/execution/session/turn-step-result.js +1 -1
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +2 -2
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/agent-router.d.ts +0 -2
- package/dist/src/execution/tools/agent-router.js +1 -1
- package/dist/src/execution/tools/ask-question-workflow.js +1 -1
- package/dist/src/execution/tools/connection-search.d.ts +1 -0
- package/dist/src/execution/tools/connection-search.js +1 -1
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -1
- package/dist/src/extensions/code/extension/lib/github-shell.js +1 -1
- package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/approval-delivery-coordinator.d.ts +3 -13
- package/dist/src/harness/approval-delivery-coordinator.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -3
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/input-request-resolution.d.ts +2 -0
- package/dist/src/harness/input-request-resolution.js +1 -1
- package/dist/src/harness/input-requests.d.ts +3 -3
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +3 -3
- package/dist/src/harness/pending-input-batches.js +1 -1
- package/dist/src/harness/proxy-input-requests.d.ts +2 -0
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/session-limit-enforcement.d.ts +2 -3
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/types.d.ts +11 -13
- package/dist/src/instrumentation/session-context.js +1 -1
- package/dist/src/instrumentation/session-init.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-module-loader.js +1 -2
- package/dist/src/internal/authored-package-boundary.d.ts +0 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
- package/dist/src/internal/external-resources-snapshot.d.ts +46 -0
- package/dist/src/internal/external-resources-snapshot.js +1 -0
- package/dist/src/internal/external-resources.d.ts +20 -0
- package/dist/src/internal/external-resources.js +1 -0
- package/dist/src/internal/invocation/workflow-execution.d.ts +0 -2
- package/dist/src/internal/invocation/workflow-execution.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/instrumentation-entry.d.ts +3 -0
- package/dist/src/internal/nitro/host/instrumentation-entry.js +2 -0
- package/dist/src/internal/nitro/host/start-development-server.d.ts +0 -8
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host.d.ts +1 -1
- package/dist/src/internal/nitro/host.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/index.js +72 -3
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_cli-config@0.2.7 → @vercel_cli-config@0.3.0}/node_modules/@vercel/cli-config/dist/index.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/authorization.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/connector.js +1 -0
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/installation.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/token.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-util.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/version.js +1 -1
- package/dist/src/protocol/message.d.ts +4 -0
- package/dist/src/protocol/message.js +1 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +0 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
- package/dist/src/public/channels/mcp.js +1 -1
- package/dist/src/public/channels/slack/activity-plan.d.ts +2 -1
- package/dist/src/public/channels/slack/activity-plan.js +1 -1
- package/dist/src/public/channels/slack/activity.d.ts +2 -0
- package/dist/src/public/channels/slack/activity.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +7 -0
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/app-manifest.d.ts +9 -0
- package/dist/src/public/channels/slack/app-manifest.js +1 -0
- package/dist/src/public/channels/slack/attachments.d.ts +5 -2
- package/dist/src/public/channels/slack/attachments.js +1 -1
- package/dist/src/public/channels/slack/inbound-content.js +6 -3
- package/dist/src/public/channels/slack/index.d.ts +1 -0
- package/dist/src/public/channels/slack/input-response.d.ts +2 -0
- package/dist/src/public/channels/slack/input-response.js +1 -1
- package/dist/src/public/channels/slack/interaction-cards.js +1 -1
- package/dist/src/public/channels/slack/interactions.d.ts +2 -0
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +7 -1
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/slack/slash-command.d.ts +5 -1
- package/dist/src/public/channels/slack/slash-command.js +1 -1
- package/dist/src/public/channels/slack/transport.d.ts +76 -0
- package/dist/src/public/channels/slack/transport.js +1 -0
- package/dist/src/public/definitions/remote-agent.d.ts +0 -9
- package/dist/src/public/definitions/workspace-agent.d.ts +0 -3
- package/dist/src/public/definitions/workspace-agent.js +1 -1
- package/dist/src/runtime/agent/bootstrap.d.ts +0 -1
- package/dist/src/runtime/agent/bootstrap.js +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/mcp-tracing.d.ts +27 -0
- package/dist/src/runtime/connections/mcp-tracing.js +1 -0
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +0 -2
- package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +0 -2
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
- package/dist/src/runtime/types.d.ts +1 -2
- package/dist/src/services/dev-client/vercel-auth-error.d.ts +1 -1
- package/dist/src/setup/cli/channel-setup-prompter.d.ts +2 -9
- package/dist/src/setup/cli/channel-setup-prompter.js +1 -1
- package/dist/src/setup/cli/index.d.ts +1 -1
- package/dist/src/setup/connection-connector.js +1 -1
- package/dist/src/setup/flows/model-login-connection.d.ts +0 -16
- package/dist/src/setup/flows/model-login-connection.js +1 -1
- package/dist/src/setup/flows/model-login-options.d.ts +59 -0
- package/dist/src/setup/flows/model-login-options.js +1 -0
- package/dist/src/setup/flows/model-login.js +1 -1
- package/dist/src/setup/flows/model-source-change.d.ts +0 -2
- package/dist/src/setup/flows/model-source-change.js +1 -1
- package/dist/src/setup/flows/registry-session.d.ts +15 -13
- package/dist/src/setup/flows/registry-session.js +1 -1
- package/dist/src/setup/flows/registry.js +1 -1
- package/dist/src/setup/flows/vercel-model-login.js +1 -1
- package/dist/src/setup/integrations/photon/setup-flow.js +1 -1
- package/dist/src/setup/prompter.d.ts +2 -2
- package/dist/src/setup/registry-setup-client.js +1 -1
- package/dist/src/setup/registry-setup-protocol.d.ts +0 -4
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/verified-remote-agent.d.ts +1 -0
- package/dist/src/setup/verified-remote-agent.js +1 -1
- package/dist/src/shared/action-types.d.ts +2 -2
- package/dist/src/shared/agent-definition.d.ts +0 -9
- package/dist/src/shared/agent-turn-outcome.d.ts +1 -1
- package/dist/src/shared/channel-definition.d.ts +2 -2
- package/dist/src/shared/conversation-context.d.ts +0 -4
- package/dist/src/shared/conversation-context.js +1 -1
- package/dist/src/shared/validate-authorization.js +1 -1
- package/dist/src/shared/vercel-connect-metadata.d.ts +12 -0
- package/dist/src/shared/vercel-connect-metadata.js +1 -0
- package/dist/src/subagents/agent-handle-errors.d.ts +0 -4
- package/dist/src/subagents/agent-handle-errors.js +1 -1
- package/dist/src/subagents/callback-route.js +1 -1
- package/dist/src/subagents/callback-step.d.ts +0 -22
- package/dist/src/subagents/callback-step.js +1 -1
- package/dist/src/subagents/event-proxy-step.js +1 -1
- package/dist/src/subagents/hitl-proxy.d.ts +3 -5
- package/dist/src/subagents/hitl-proxy.js +1 -1
- package/dist/src/subagents/invocation.d.ts +5 -6
- package/dist/src/subagents/parent-notification.d.ts +1 -18
- package/dist/src/subagents/parent-notification.js +1 -1
- package/dist/src/subagents/remote-dispatch.js +1 -1
- package/dist/src/subagents/tool.d.ts +0 -3
- package/dist/src/subagents/tool.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/framework/agent-contract.d.ts +0 -2
- package/dist/src/tools/framework/agent-contract.js +1 -1
- package/dist/src/tracing/agent-action-instrumentation.js +1 -1
- package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
- package/dist/src/tracing/agent-memory-instrumentation.js +1 -1
- package/dist/src/tracing/agent-otel-provider.js +2 -2
- package/dist/src/tracing/agent-otel-session-context.js +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
- package/dist/src/tracing/agent-tool-span-context.d.ts +15 -0
- package/dist/src/tracing/agent-tool-span-context.js +1 -0
- package/dist/src/tracing/otel-declaration.d.ts +4 -9
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +12 -13
- package/docs/channels/chat-sdk.mdx +1 -1
- package/docs/channels/custom.mdx +1 -1
- package/docs/channels/eve.mdx +4 -4
- package/docs/channels/mcp.mdx +10 -10
- package/docs/channels/slack.mdx +32 -3
- package/docs/concepts/sessions-runs-and-streaming.md +5 -6
- package/docs/connections/overview.mdx +22 -0
- package/docs/guides/deployment/overview.md +1 -1
- package/docs/guides/deployment/self-hosting.md +1 -1
- package/docs/guides/deployment/vercel.mdx +2 -2
- package/docs/guides/dev-tui.md +7 -7
- package/docs/guides/dynamic-capabilities.md +2 -2
- package/docs/guides/frontend/overview.mdx +5 -3
- package/docs/guides/hooks.md +4 -2
- package/docs/guides/instrumentation/agent-runs.mdx +7 -7
- package/docs/guides/instrumentation/instrumentation.mdx +22 -5
- package/docs/guides/instrumentation/otel.mdx +30 -0
- package/docs/guides/remote-agents.md +3 -4
- package/docs/guides/self-modification.md +1 -1
- package/docs/memory/custom-provider.md +1 -1
- package/docs/protocols/acp.md +1 -1
- package/docs/reference/cli.md +91 -97
- package/docs/schedules.mdx +4 -5
- package/docs/subagents/index.mdx +5 -7
- package/docs/tools/human-in-the-loop.md +4 -0
- package/docs/tools/overview.mdx +2 -0
- package/docs/tools/workflows.mdx +1 -1
- package/docs/tutorial/remember-definitions.mdx +1 -1
- package/docs/tutorial/ship-it.mdx +1 -1
- package/package.json +8 -7
- package/dist/src/cli/commands/channels.d.ts +0 -9
- package/dist/src/cli/commands/channels.js +0 -1
- package/dist/src/compiled/_chunks/workflow/dist-CNT2vjZ4.js +0 -1
- package/dist/src/compiled/_chunks/workflow/dist-DtXwQbZr.js +0 -3
- package/dist/src/compiled/_chunks/workflow/frames-DnrfSd1P.js +0 -3
- package/dist/src/compiled/_chunks/workflow/resume-hook-BmJ263ZR.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-NLvREued.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-HCDeQWcR.js +0 -3
- package/dist/src/compiled/_chunks/workflow/sleep-Bi508qmg.js +0 -1
- package/dist/src/execution/effective-output-schema.d.ts +0 -22
- package/dist/src/execution/effective-output-schema.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/connector.js +0 -1
- package/dist/src/public/channels/slack/api-errors.d.ts +0 -33
- package/dist/src/public/channels/slack/api-errors.js +0 -1
- package/dist/src/shared/run-mode.d.ts +0 -7
- package/dist/src/shared/run-mode.js +0 -1
- package/dist/src/subagents/parent-result.d.ts +0 -14
- package/dist/src/subagents/parent-result.js +0 -1
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/base-url.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/default-scopes.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/env.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/url-validation.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/auth-errors.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-context.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/oauth.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-error.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-io.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -0
package/docs/agent-config.md
CHANGED
|
@@ -18,7 +18,7 @@ export default defineAgent({
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
For a static AI Gateway model ID, you can make the same source change from the
|
|
21
|
-
project root with `eve set
|
|
21
|
+
project root with `eve set model anthropic/claude-opus-5.5` or from the local
|
|
22
22
|
dev TUI with `/model anthropic/claude-opus-5.5`.
|
|
23
23
|
|
|
24
24
|
The root `agent.ts` can be omitted when no runtime config is needed. eve then selects its default `agent.ts` source at the same slot, configured with `spacexai/grok-4.7`; authoring the file replaces that source.
|
|
@@ -133,7 +133,7 @@ A dynamic model selection can return `reasoning` alongside `model` to override
|
|
|
133
133
|
the agent-level setting for that selection. Omitting it inherits the agent setting;
|
|
134
134
|
`"provider-default"` explicitly uses the provider's default.
|
|
135
135
|
|
|
136
|
-
Run `eve set --reasoning high` to update this field from the command line.
|
|
136
|
+
Run `eve set model --reasoning high` to update this field from the command line.
|
|
137
137
|
|
|
138
138
|
## Compaction
|
|
139
139
|
|
|
@@ -191,8 +191,8 @@ could retry against a fresh quota share. A reply that answers neither option
|
|
|
191
191
|
is queued while the existing prompt stays pending; eve does not raise another
|
|
192
192
|
copy. The reply is processed once the budget is granted.
|
|
193
193
|
|
|
194
|
-
Sessions that cannot
|
|
195
|
-
delegated runs without input proxying
|
|
194
|
+
Sessions that cannot request input from a human, such as markdown schedules and
|
|
195
|
+
delegated runs without input proxying, skip the prompt and fail the next model
|
|
196
196
|
call with `SESSION_TOKEN_LIMIT_REACHED` for token budgets or
|
|
197
197
|
`SESSION_TOKEN_COST_LIMIT_REACHED` for model token cost. A delegated task with
|
|
198
198
|
no inherited quota also fails instead of raising a continuation prompt that
|
|
@@ -328,15 +328,14 @@ it falls back to the World's default retention period.
|
|
|
328
328
|
|
|
329
329
|
`defineAgent` takes a few more fields, all optional. For the exported types, see the [TypeScript API Reference](./reference/typescript-api).
|
|
330
330
|
|
|
331
|
-
| Field | Type
|
|
332
|
-
| -------------- |
|
|
333
|
-
| `reasoning` | `AgentReasoningDefinition`
|
|
334
|
-
| `modelOptions` | `AgentModelOptionsDefinition`
|
|
335
|
-
| `limits` | `AgentLimitsDefinition`
|
|
336
|
-
| `experimental` | `AgentExperimentalDefinition`
|
|
337
|
-
| `
|
|
338
|
-
| `
|
|
339
|
-
| `tool` | `boolean` | `true` | Exposes this agent to its parent model as a tool. On the root agent, controls the built-in `agent` tool. A subagent with `tool: false` remains callable from authored workflow tools through `ctx.agent()`. |
|
|
331
|
+
| Field | Type | Default | Description |
|
|
332
|
+
| -------------- | ------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
333
|
+
| `reasoning` | `AgentReasoningDefinition` | provider default | Provider-agnostic reasoning effort forwarded to the agent's turn model calls. |
|
|
334
|
+
| `modelOptions` | `AgentModelOptionsDefinition` | none | Provider option overrides forwarded to the model call. |
|
|
335
|
+
| `limits` | `AgentLimitsDefinition` | field-specific | Framework-owned runtime limits. Sessions complete after 30 days by default; usage-limit defaults and inheritance are described above. Set a limit to `false` to disable it. |
|
|
336
|
+
| `experimental` | `AgentExperimentalDefinition` | unset | Unstable opt-ins. `workflow.world` selects the Workflow world package on the root agent; `workflow.modelCallsPerStep` batches sequential model calls into a wider replay unit; `workflow.retention` controls how long the durable runtime keeps run data. |
|
|
337
|
+
| `build` | `{ externalDependencies?: string[] }` | none | Hosted-build packaging controls. `externalDependencies` keeps listed packages external while eve compiles authored modules such as tools and channels, and traces those packages into the hosted output. |
|
|
338
|
+
| `tool` | `boolean` | `true` | Exposes this agent to its parent model as a tool. On the root agent, controls the built-in `agent` tool. A subagent with `tool: false` remains callable from authored workflow tools through `ctx.agent()`. |
|
|
340
339
|
|
|
341
340
|
`externalDependencies` is a packaging control only. It keeps selected packages as runtime dependencies in the hosted output; it does not authorize, configure, or review any third-party service those packages may call.
|
|
342
341
|
|
|
@@ -104,7 +104,7 @@ bot.onNewMention(async (thread, message) => {
|
|
|
104
104
|
});
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
`options` accepts `{ thread, auth?, title?,
|
|
107
|
+
`options` accepts `{ thread, auth?, title?, callback?, adapterName?, turnPolicy? }`. `title` sets the eve session's display title without changing the model message; `auth` attaches an authenticated principal to the turn.
|
|
108
108
|
|
|
109
109
|
### Steering
|
|
110
110
|
|
package/docs/channels/custom.mdx
CHANGED
|
@@ -334,7 +334,7 @@ export default defineChannel({
|
|
|
334
334
|
});
|
|
335
335
|
```
|
|
336
336
|
|
|
337
|
-
The input contains the channel's `state`, `caller`, `channel`,
|
|
337
|
+
The input contains the channel's `state`, `caller`, `channel`, and `environment`. A principal caller omits `principalId`, `issuer`, and `subject`, but its `attributes` come from route auth and can still contain identifying values. Return `"public"`, `"private"`, or `"unknown"`. Return `"unknown"` when the channel does not have enough evidence to classify confidently; consumers treat it as non-public. A missing, throwing, asynchronous, or malformed classifier also fails closed to `"unknown"`.
|
|
338
338
|
|
|
339
339
|
When you explicitly annotate a callback, use `AudienceContext<TState>`. `AudienceInput<TState>` remains supported for existing callbacks while you migrate.
|
|
340
340
|
|
package/docs/channels/eve.mdx
CHANGED
|
@@ -49,8 +49,8 @@ See [Start a session](../concepts/sessions-runs-and-streaming#start-a-session) f
|
|
|
49
49
|
initialization boundary, first-turn identity, readiness response, and retry behavior.
|
|
50
50
|
|
|
51
51
|
The create request still requires route auth. Session audience and the timeout are selected
|
|
52
|
-
at creation; they do not change when the first message arrives.
|
|
53
|
-
|
|
52
|
+
at creation; they do not change when the first message arrives. Turn-scoped fields such as
|
|
53
|
+
`clientContext` and `outputSchema` require a message on the create request.
|
|
54
54
|
|
|
55
55
|
Include an initial message to create the session and start its first turn in one request:
|
|
56
56
|
|
|
@@ -200,8 +200,8 @@ call the endpoint. `auth` still controls access. For a classification that
|
|
|
200
200
|
depends on channel state or application-specific verified data, use a [custom
|
|
201
201
|
channel audience](./custom#conversation-audience).
|
|
202
202
|
|
|
203
|
-
You can also pass a function that receives `caller`, channel,
|
|
204
|
-
|
|
203
|
+
You can also pass a function that receives `caller`, channel, and deployment
|
|
204
|
+
environment. Classification is fixed at session creation, so a later
|
|
205
205
|
turn from a different caller does not reclassify the session.
|
|
206
206
|
|
|
207
207
|
For a remote agent, a trusted dispatch can forward the original audience and
|
package/docs/channels/mcp.mdx
CHANGED
|
@@ -168,7 +168,7 @@ MCP clients receive four tools:
|
|
|
168
168
|
|
|
169
169
|
| Tool | Input | Purpose |
|
|
170
170
|
| -------------- | ----------------------------- | ----------------------------------------------------------- |
|
|
171
|
-
| `agent_start` | `{ message
|
|
171
|
+
| `agent_start` | `{ message }` | Start durable work and immediately return an invocation ID. |
|
|
172
172
|
| `agent_get` | `{ invocationId }` | Read the invocation's complete current state. |
|
|
173
173
|
| `agent_update` | `{ invocationId, responses }` | Answer the complete pending human-input batch. |
|
|
174
174
|
| `agent_cancel` | `{ invocationId }` | Request cooperative cancellation of non-terminal work. |
|
|
@@ -177,7 +177,7 @@ The server also returns `instructions` from `initialize` and `server/discover` t
|
|
|
177
177
|
protocol for the connecting model, so a hosted client does not have to infer it from the tool
|
|
178
178
|
schemas alone.
|
|
179
179
|
|
|
180
|
-
`agent_start` creates one
|
|
180
|
+
`agent_start` creates one eve session and returns after durable acceptance without
|
|
181
181
|
waiting for the session continuation hook to become readable. Keep its `invocationId`, then call
|
|
182
182
|
`agent_get` until the invocation reaches a terminal state. While the status is `working`, wait at
|
|
183
183
|
least `pollAfterMs` before polling again.
|
|
@@ -187,22 +187,22 @@ The invocation response is discriminated by `status`:
|
|
|
187
187
|
- `working`: work is active; continue polling according to `pollAfterMs`.
|
|
188
188
|
- `input_required`: present `inputRequests`, then send the complete answer batch through `agent_update`. A successful update returns the current invocation state.
|
|
189
189
|
- `authorization_required`: present the returned sign-in URL, user code, or instructions. The connection callback resumes the invocation automatically; continue polling.
|
|
190
|
-
- `completed`:
|
|
190
|
+
- `completed`: the agent's turn settled. Consume the optional `result`: the final assistant message.
|
|
191
191
|
- `failed`: inspect the structured `error`.
|
|
192
192
|
- `cancelled`: cancellation reached a terminal state.
|
|
193
193
|
|
|
194
194
|
A tool result with `isError: true` means the call itself was rejected. A `failed` status means the call succeeded and the task itself failed. Handle them differently: correct the call in the first case, report the task failure in the second. Rejected calls carry `structuredContent.error` with a stable `code`, a short `message`, and `retryable`:
|
|
195
195
|
|
|
196
|
-
| `code` | Meaning
|
|
197
|
-
| --------------- |
|
|
198
|
-
| `invalid_input` | An argument was rejected, for example an oversized
|
|
199
|
-
| `not_found` | The invocation does not exist, has expired, or belongs to another caller.
|
|
200
|
-
| `conflict` | The invocation is not in the expected state; read it with `agent_get` first.
|
|
201
|
-
| `internal` | eve failed; `errorId` correlates with server logs. No details are exposed.
|
|
196
|
+
| `code` | Meaning | `retryable` |
|
|
197
|
+
| --------------- | ---------------------------------------------------------------------------- | ----------- |
|
|
198
|
+
| `invalid_input` | An argument was rejected, for example an oversized `message`. | `false` |
|
|
199
|
+
| `not_found` | The invocation does not exist, has expired, or belongs to another caller. | `false` |
|
|
200
|
+
| `conflict` | The invocation is not in the expected state; read it with `agent_get` first. | `true` |
|
|
201
|
+
| `internal` | eve failed; `errorId` correlates with server logs. No details are exposed. | `false` |
|
|
202
202
|
|
|
203
203
|
Cancellation is cooperative, so call `agent_get` after `agent_cancel` until the state becomes terminal.
|
|
204
204
|
|
|
205
|
-
Requests are bounded: the whole MCP request body is limited to 1 MiB, `message` to 64 KiB, each input-response `text` to 16 KiB (both measured as UTF-8 bytes, not characters), and one `agent_update` to 64 responses.
|
|
205
|
+
Requests are bounded: the whole MCP request body is limited to 1 MiB, `message` to 64 KiB, each input-response `text` to 16 KiB (both measured as UTF-8 bytes, not characters), and one `agent_update` to 64 responses. Oversized bodies receive a JSON-RPC `413`; oversized fields fail input validation before any work starts.
|
|
206
206
|
|
|
207
207
|
### Durability guarantees
|
|
208
208
|
|
package/docs/channels/slack.mdx
CHANGED
|
@@ -187,7 +187,7 @@ export default slackChannel({
|
|
|
187
187
|
|
|
188
188
|
The model-visible `<slack_message>` includes `sender_id`, `bot_user_id` when available, and the `is_mentioned` value from `ctx.isBotMentioned()`. Its `<content>` keeps `<@USER_ID>` intact while converting other mrkdwn to Markdown; routing is unchanged.
|
|
189
189
|
|
|
190
|
-
When a Slack message
|
|
190
|
+
When a Slack message includes a link preview, eve includes its attachment text in `<content>` alongside the sender's message, including when the link has words around it. Shared Slack messages work the same way: eve extracts the forwarded message body from Slack's message-unfurl attachment and keeps any top-level comment.
|
|
191
191
|
|
|
192
192
|
#### Restrict who can invoke the agent
|
|
193
193
|
|
|
@@ -407,6 +407,7 @@ import { connectSlackCredentials } from "@vercel/connect/eve";
|
|
|
407
407
|
|
|
408
408
|
const { botToken } = connectSlackCredentials("slack/my-agent");
|
|
409
409
|
const response = await callSlackApi({
|
|
410
|
+
api: { apiBaseUrl: process.env.SLACK_API_BASE_URL },
|
|
410
411
|
botToken,
|
|
411
412
|
context: { teamId: "T0123456789" },
|
|
412
413
|
operation: "reactions.get",
|
|
@@ -418,8 +419,34 @@ if (!response.ok) throw new Error(String(response.error));
|
|
|
418
419
|
`callSlackApi` resolves function-form tokens (secret managers, Connect
|
|
419
420
|
rotation) with the supplied `context` at call time and form-encodes the body — the only safe default,
|
|
420
421
|
since Slack's JSON support is partial (`conversations.replies` rejects
|
|
421
|
-
JSON).
|
|
422
|
-
|
|
422
|
+
JSON). It takes the same
|
|
423
|
+
[`api`](#point-the-channel-at-a-different-slack-api-host) the channel takes, checked and
|
|
424
|
+
confined the same way, so a call made without a channel carries the same guarantees. An
|
|
425
|
+
`apiBaseUrl` of `undefined` keeps Slack's own host.
|
|
426
|
+
|
|
427
|
+
`resolveSlackBotToken` materializes a `SlackBotToken` to a string when you need the
|
|
428
|
+
bearer token itself.
|
|
429
|
+
|
|
430
|
+
### Point the channel at a different Slack API host
|
|
431
|
+
|
|
432
|
+
```ts
|
|
433
|
+
slackChannel({
|
|
434
|
+
api: {
|
|
435
|
+
apiBaseUrl: "https://slack-simulator.example/api/slack",
|
|
436
|
+
fetch: (input, init) => {
|
|
437
|
+
const headers = new Headers(init?.headers);
|
|
438
|
+
headers.set("x-vercel-protection-bypass", process.env.SLACK_SIMULATOR_BYPASS_SECRET ?? "");
|
|
439
|
+
return fetch(input, { ...init, headers });
|
|
440
|
+
},
|
|
441
|
+
fileBaseUrl: "https://slack-simulator.example/files",
|
|
442
|
+
},
|
|
443
|
+
credentials: { botToken: process.env.SLACK_BOT_TOKEN },
|
|
444
|
+
});
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
The bases say where a call may go. `apiBaseUrl` is the base Slack Web API method names resolve against, and defaults to `https://slack.com/api/`. `fileBaseUrl` adds a base for attachment downloads and falls back to `apiBaseUrl`: a download URL under it is fetched with the bot token, in addition to `files.slack.com` and Enterprise Grid file URLs. Every other URL passes through to the model provider unchanged. Both bases must be absolute `http:` or `https:` URLs carrying no query string or fragment; `slackChannel()` throws on one that is not, naming the option. A missing trailing slash is added, so `https://sim.example/api` sends `chat.postMessage` to `https://sim.example/api/chat.postMessage`.
|
|
448
|
+
|
|
449
|
+
`api.fetch` says how the traffic travels. It replaces the global `fetch` for calls to the configured bases — use it to attach the per-call header a host behind an authenticating proxy requires, as the example does for a simulator behind Vercel Deployment Protection. eve confines it to those bases' origins, so that header reaches the simulator alone: `files.slack.com`, and any other host Slack names in a response or an inbound payload, keep the global `fetch`. A wrapper therefore attaches its credential unconditionally. With no base configured every call already goes to Slack's own hosts, and `api.fetch` carries all of them, which is what observes or stubs the traffic in a test.
|
|
423
450
|
|
|
424
451
|
### Delivery
|
|
425
452
|
|
|
@@ -521,6 +548,8 @@ Inbound files behind authenticated Slack URLs are staged with `fetchFile`. See [
|
|
|
521
548
|
|
|
522
549
|
Private file downloads resolve credentials from the session's app installation workspace and require the Slack bot token's `files:read` scope. Add the scope and reinstall the Slack app before sending attachments.
|
|
523
550
|
|
|
551
|
+
Downloads cover Slack's own file hosts plus URLs under a configured [`api.fileBaseUrl`](#point-the-channel-at-a-different-slack-api-host), and travel on `api.fetch` when one is configured.
|
|
552
|
+
|
|
524
553
|
Staged files live in the session sandbox under `/workspace/attachments`. Session history keeps a reference to that path, not a second copy of the Slack file. If the backend can no longer reattach the original sandbox, eve cannot restore the attachment bytes from history; later turns receive a missing-file result. Store files outside the sandbox when the agent must retain them independently of sandbox availability.
|
|
525
554
|
|
|
526
555
|
## What to read next
|
|
@@ -41,8 +41,8 @@ curl -X POST http://127.0.0.1:2000/eve/v1/session
|
|
|
41
41
|
|
|
42
42
|
eve starts the durable workflow, establishes its inbox, and waits for the first message before
|
|
43
43
|
running session-scoped initialization or emitting `session.started`. The first message sent to the returned
|
|
44
|
-
`sessionId` remains `turn_0`. Message-free creation
|
|
45
|
-
|
|
44
|
+
`sessionId` remains `turn_0`. Message-free creation does not accept turn-scoped `clientContext`,
|
|
45
|
+
`outputSchema`, callbacks, or activity observers.
|
|
46
46
|
|
|
47
47
|
To create the session and start its first turn in one request, include the message:
|
|
48
48
|
|
|
@@ -86,8 +86,8 @@ The stream is newline-delimited JSON (NDJSON), one event per line:
|
|
|
86
86
|
| `message.appended` | An assistant text delta. |
|
|
87
87
|
| `message.completed` | A finalized assistant text block. |
|
|
88
88
|
| `result.completed` | The finalized structured result for a turn that requested an output schema; carries `result`. |
|
|
89
|
-
| `compaction.requested` | Context-window compaction began; carries `modelId`, `sessionId`, `turnId`, `usageInputTokens`.
|
|
90
|
-
| `compaction.completed` | A compaction checkpoint was written to durable history.
|
|
89
|
+
| `compaction.requested` | Context-window compaction began; carries `modelId`, `sessionId`, `turnId`, `stepIndex`, and `usageInputTokens`. |
|
|
90
|
+
| `compaction.completed` | A compaction checkpoint was written to durable history; carries the same model, session, turn, and step identity. |
|
|
91
91
|
| `authorization.required` | A connection needs OAuth; carries `name`, `description`, and an `authorization` challenge. |
|
|
92
92
|
| `authorization.completed` | A connection's authorization resolved; carries `outcome`. |
|
|
93
93
|
| `step.completed` | A model step finished; carries `finishReason` and usage. |
|
|
@@ -128,8 +128,7 @@ A provider response ending with `content-filter` fails with `MODEL_CALL_FAILED`,
|
|
|
128
128
|
`details.finishReason: "content-filter"`. Details also include the Gateway
|
|
129
129
|
`generationId` when available. eve does not retry the filtered response or emit
|
|
130
130
|
`message.completed` for its partial text; deltas already streamed remain visible.
|
|
131
|
-
|
|
132
|
-
a failed result.
|
|
131
|
+
The session then waits for another user message.
|
|
133
132
|
|
|
134
133
|
## The event envelope
|
|
135
134
|
|
|
@@ -58,6 +58,28 @@ must also set `instanceKey` to a stable, non-secret account or tenant identifier
|
|
|
58
58
|
See [Dynamic capabilities](/docs/guides/dynamic-capabilities#dynamic-connections)
|
|
59
59
|
for event scope, naming, conflicts, and durable recovery behavior.
|
|
60
60
|
|
|
61
|
+
Tools from a `turn.started` connection can require approval, including an
|
|
62
|
+
`approval.response` policy. When an approval resumes between turns, eve rebuilds
|
|
63
|
+
the connection callbacks before checking the response policy, even in a fresh
|
|
64
|
+
process. This restoration uses the pending request's turn coordinates and the
|
|
65
|
+
current authenticated session context; it does not emit another public
|
|
66
|
+
`turn.started` event. The response policy still receives the authenticated
|
|
67
|
+
responder separately. When one delivery answers requests from different turns,
|
|
68
|
+
eve restores each candidate's originating connection scope before its policy
|
|
69
|
+
check, then prepares the complete batch selected for tool replay. Keep connection
|
|
70
|
+
resolvers idempotent because restoration can run them again.
|
|
71
|
+
|
|
72
|
+
Restoration uses current resolver results, not a historical connection snapshot.
|
|
73
|
+
If the tool is absent from the persisted tool metadata, or its required response
|
|
74
|
+
policy is unavailable, eve refuses the response and leaves the request pending.
|
|
75
|
+
eve does not reconstruct missing tool metadata from earlier turns. Before replay, eve checks that the
|
|
76
|
+
approved tool is still available and that its connection identity has not
|
|
77
|
+
changed since the call requested approval. A missing or changed connection
|
|
78
|
+
fails the replay rather than sending the call to a replacement destination.
|
|
79
|
+
Request a new tool call and approval after correcting the connection. Identity
|
|
80
|
+
includes the endpoint and `instanceKey`; use a distinct `instanceKey` for each
|
|
81
|
+
account or tenant even when they share an endpoint.
|
|
82
|
+
|
|
61
83
|
## Static-token auth
|
|
62
84
|
|
|
63
85
|
`getToken` returns a `TokenResult` (`{ token, expiresAt? }`), and eve sends it as `Authorization: Bearer <token>` on every request. Because it runs on each connection attempt, you can mint a fresh token from wherever you keep secrets, including an env var, a secrets manager, an internal vault, or your own OAuth exchange:
|
|
@@ -47,7 +47,7 @@ curl https://your_agent.example.com/eve/v1/health
|
|
|
47
47
|
Then connect the development terminal user interface (TUI) to the deployment and send a real message:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
eve
|
|
50
|
+
eve remote connect --url https://your_agent.example.com
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Set `VERCEL_AUTOMATION_BYPASS_SECRET` locally first if a Vercel deployment uses Deployment Protection.
|
|
@@ -116,7 +116,7 @@ curl https://your_agent.example.com/eve/v1/health
|
|
|
116
116
|
Then connect the development TUI and complete a real turn:
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
|
-
eve
|
|
119
|
+
eve remote connect --url https://your_agent.example.com
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
## Continue configuring production
|
|
@@ -143,14 +143,14 @@ For a single unnamed agent, check the health route and connect the development T
|
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
145
|
curl https://your_agent.vercel.app/eve/v1/health
|
|
146
|
-
eve
|
|
146
|
+
eve remote connect --url https://your_agent.vercel.app
|
|
147
147
|
```
|
|
148
148
|
|
|
149
149
|
For a workspace agent, include its public `/eve/<name>` mount. For example:
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
152
|
curl https://your_agent.vercel.app/eve/support/v1/health
|
|
153
|
-
eve
|
|
153
|
+
eve remote connect --url https://your_agent.vercel.app/eve/support
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Set `VERCEL_AUTOMATION_BYPASS_SECRET` locally before connecting if the deployment uses Deployment Protection.
|
package/docs/guides/dev-tui.md
CHANGED
|
@@ -31,7 +31,7 @@ The transcript remains in your terminal scrollback after you exit. Run `/help` i
|
|
|
31
31
|
| `/help` | List available commands. |
|
|
32
32
|
| `/exit` | Quit the UI. |
|
|
33
33
|
|
|
34
|
-
`/login`, `/model`, `/add`, `/deploy`, `/info`, and `/traces` are available when `eve dev` runs locally. They are unavailable when the UI connects
|
|
34
|
+
`/login`, `/model`, `/add`, `/deploy`, `/info`, and `/traces` are available when `eve dev` runs locally. They are unavailable when the UI connects through `eve remote connect`.
|
|
35
35
|
|
|
36
36
|
## Set up a new agent
|
|
37
37
|
|
|
@@ -86,7 +86,7 @@ Pass an item address to install it directly:
|
|
|
86
86
|
/add @acme/analytics
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
Required authorization or deployment setup still runs for the selected item. Press `Esc` to cancel setup; files already installed remain in the project.
|
|
89
|
+
Required authorization or deployment setup still runs for the selected item. Press `Esc` to cancel setup; files already installed remain in the project. If dependency installation fails, retry the `eve add` command in a terminal for details; raw installer output is not captured in the TUI.
|
|
90
90
|
|
|
91
91
|
## Work with the agent
|
|
92
92
|
|
|
@@ -131,19 +131,19 @@ Use `--host` and `--port` to bind the local server, or `--no-ui` to run without
|
|
|
131
131
|
Pass a URL to use the terminal UI with an existing eve server instead of starting one locally:
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
|
-
eve
|
|
134
|
+
eve remote connect --url https://your-app.vercel.app
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
Use `eve remote connect` for an existing agent. To send credentials or custom request headers, use a URL with HTTP Basic credentials or repeat `-H, --header`:
|
|
138
138
|
|
|
139
139
|
```bash
|
|
140
|
-
eve
|
|
141
|
-
eve
|
|
140
|
+
eve remote connect --url https://user:pass@your-app.example.com
|
|
141
|
+
eve remote connect --url https://your-app.example.com -H 'Authorization: Bearer your_token_here'
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
Remote Vercel sessions reuse an existing authorized CLI session. They do not open an account login flow or modify the local project's Vercel link or `.env.local`.
|
|
145
145
|
|
|
146
|
-
When Deployment Protection blocks startup, eve verifies the target project and asks before adding a Trusted Sources rule for development access to that deployment's environment. After approval, eve applies the rule and checks access again before returning to chat. Cancelling preserves your draft; restart `eve
|
|
146
|
+
When Deployment Protection blocks startup, eve verifies the target project and asks before adding a Trusted Sources rule for development access to that deployment's environment. After approval, eve applies the rule and checks access again before returning to chat. Cancelling preserves your draft; restart `eve remote connect --url <url>` to try again. If you cannot change the project's policy, provide `VERCEL_AUTOMATION_BYPASS_SECRET` or ask a project administrator to configure access in Deployment Protection settings.
|
|
147
147
|
|
|
148
148
|
## What to read next
|
|
149
149
|
|
|
@@ -126,8 +126,8 @@ export default defineDynamic({
|
|
|
126
126
|
});
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
The returned remote definition can change its URL, path, headers, auth,
|
|
130
|
-
principal forwarding
|
|
129
|
+
The returned remote definition can change its URL, path, headers, auth, and
|
|
130
|
+
principal forwarding. Function-valued URLs resolve when the
|
|
131
131
|
dynamic event runs. Auth and headers remain lazy and resolve before each
|
|
132
132
|
outbound request without entering durable workflow state.
|
|
133
133
|
|
|
@@ -229,8 +229,10 @@ const pendingRequests = agent.data.messages
|
|
|
229
229
|
return request ? [request] : [];
|
|
230
230
|
});
|
|
231
231
|
|
|
232
|
+
const inputDisabled = ["submitted", "streaming", "resuming"].includes(agent.status);
|
|
233
|
+
|
|
232
234
|
return pendingRequests.map((request) => (
|
|
233
|
-
<fieldset key={request.requestId}>
|
|
235
|
+
<fieldset disabled={inputDisabled} key={request.requestId}>
|
|
234
236
|
<legend>
|
|
235
237
|
{request.kind === "tool-approval"
|
|
236
238
|
? "Approval required"
|
|
@@ -252,7 +254,7 @@ return pendingRequests.map((request) => (
|
|
|
252
254
|
));
|
|
253
255
|
```
|
|
254
256
|
|
|
255
|
-
For a question with `allowFreeform`, render a text input and send `{ requestId, text }`. The default reducer
|
|
257
|
+
For a question with `allowFreeform`, render a text input and send `{ requestId, text }`. The default reducer keeps each request pending until the server confirms its resolution through `input.resolved` or `approval.settled`. Disable input controls while the response is being processed; a refused approval attempt leaves the request answerable. Approved tools update again when eve streams their result.
|
|
256
258
|
|
|
257
259
|
## Authorization prompts
|
|
258
260
|
|
|
@@ -348,7 +350,7 @@ const agent = useEveAgent({ reducer: toolCounter });
|
|
|
348
350
|
// agent.data is ToolLog
|
|
349
351
|
```
|
|
350
352
|
|
|
351
|
-
`reduce(data, event)` receives both authoritative eve stream events and client projection events (`client.message.submitted`, `client.message.failed`, `client.input.responded`). `client.input.responded`
|
|
353
|
+
`reduce(data, event)` receives both authoritative eve stream events and client projection events (`client.message.submitted`, `client.message.failed`, `client.input.responded`). `client.input.responded` notifies custom reducers that an answer was submitted, not that it was accepted. The default reducer waits for server settlement; the durable `input.resolved` event records the server-accepted outcome and lets replayed history rebuild the same HITL state. Return `data` unchanged for events your reducer does not handle.
|
|
352
354
|
|
|
353
355
|
## Resumable sessions
|
|
354
356
|
|
package/docs/guides/hooks.md
CHANGED
|
@@ -181,14 +181,16 @@ Hooks always run after the event is durably recorded, so if a hook throws, the s
|
|
|
181
181
|
|
|
182
182
|
## What happens when a hook throws
|
|
183
183
|
|
|
184
|
-
A thrown handler during a model turn propagates through turn execution and surfaces as `turn.failed`.
|
|
184
|
+
A thrown handler during a model turn propagates through turn execution and surfaces as `turn.failed`. This includes handlers for `turn.started` and the first `step.started` of a model call: the failed turn ends with `session.waiting`, and the next message can start another turn. If a hook subscribed to a failure-cascade event also throws, it escalates to `session.failed`. For belt-and-suspenders semantics inside a hook, wrap the body in `try`/`catch`. eve treats a thrown hook as a real failure.
|
|
185
185
|
|
|
186
|
-
For `subagent.called
|
|
186
|
+
For `subagent.called`, `subagent.completed`, and events proxied from a child, a thrown handler fails the publishing step and follows the workflow runtime's step retry policy. A retry can publish the event again before rerunning its hooks. Parent execution waits for the publishing step to finish or exhaust its retries. Exhausting retries fails the session.
|
|
187
187
|
|
|
188
188
|
## Subagent isolation
|
|
189
189
|
|
|
190
190
|
Subagents may carry their own `agent/hooks/` directory. Subagent hooks fire only inside the subagent scope. Parent-agent hooks do not fire for subagent turns, and subagent hooks see only the subagent's own context.
|
|
191
191
|
|
|
192
|
+
Interactive events such as `input.requested` and `authorization.required` are also published on the parent stream. Parent hooks observe these events after the parent channel handler and stream write, with the parent's session, agent, and channel context. The event retains the child's turn coordinates, so `event.data.turnId` can differ from `ctx.session.turn.id`. The accompanying parent `turn.completed` and `session.waiting` events also invoke parent hooks; they do not resolve pending input requests.
|
|
193
|
+
|
|
192
194
|
## Hook vs tool vs provider
|
|
193
195
|
|
|
194
196
|
| Need | Use |
|
|
@@ -19,13 +19,6 @@ Agent Runs usage is billed at
|
|
|
19
19
|
[Always-on Tracing rates](https://vercel.com/docs/tracing/always-on-tracing#usage-and-pricing)
|
|
20
20
|
during beta. All plans include 30-day Agent Runs retention during beta.
|
|
21
21
|
|
|
22
|
-
## Configure Agent Runs
|
|
23
|
-
|
|
24
|
-
Preview and production deployments export to Vercel Agent Runs by default.
|
|
25
|
-
Omitting `agent/instrumentation/agent-runs.ts` preserves that default. Export
|
|
26
|
-
`agentRuns(...)` from that file to reconfigure it, or export
|
|
27
|
-
`disableInstrumentation()` to disable it.
|
|
28
|
-
|
|
29
22
|
## Enable tracing on Vercel
|
|
30
23
|
|
|
31
24
|
When `eve deploy` creates a new Vercel project, it configures 100% trace
|
|
@@ -47,6 +40,13 @@ Tracing starts as soon as you save the rule. You can also manage sampling
|
|
|
47
40
|
rules with [`vercel traces config`](https://vercel.com/docs/cli/traces#manage-trace-sampling-rules).
|
|
48
41
|
The CLI accepts rates from 1 to 100%; add a 0% rule from the dashboard.
|
|
49
42
|
|
|
43
|
+
## Configure Agent Runs
|
|
44
|
+
|
|
45
|
+
Preview and production deployments export to Vercel Agent Runs by default.
|
|
46
|
+
Omit `agent/instrumentation/agent-runs.ts` to keep that default. To change it,
|
|
47
|
+
default-export `agentRuns(...)` from that file, or default-export
|
|
48
|
+
`disableInstrumentation()` to turn off Agent Runs export.
|
|
49
|
+
|
|
50
50
|
## Filter Agent Runs exports
|
|
51
51
|
|
|
52
52
|
`agentRuns()` accepts one `exportPolicy` object or an array applied in order.
|
|
@@ -51,6 +51,11 @@ export default defineInstrumentation({
|
|
|
51
51
|
`ctx.state` is JSON storage scoped to this file and operation. It survives
|
|
52
52
|
durable suspension and is released after the terminal event.
|
|
53
53
|
|
|
54
|
+
Use `setup` for asynchronous initialization. In `eve dev` and built servers,
|
|
55
|
+
eve awaits every provider's setup before loading the server entry. A setup
|
|
56
|
+
failure stops startup. Modules imported by an instrumentation file load before
|
|
57
|
+
setup, so keep dependencies that need initialization out of those imports.
|
|
58
|
+
|
|
54
59
|
## Control inputs and outputs
|
|
55
60
|
|
|
56
61
|
Each lifecycle file created with `defineInstrumentation(...)` has an
|
|
@@ -78,8 +83,8 @@ export default defineInstrumentation({
|
|
|
78
83
|
});
|
|
79
84
|
```
|
|
80
85
|
|
|
81
|
-
The function receives `agentName`, `channel`, `audience`, `
|
|
82
|
-
`
|
|
86
|
+
The function receives `agentName`, `channel`, `audience`, `environment`, and
|
|
87
|
+
`principalType`. `audience` is `"public"`, `"private"`, or
|
|
83
88
|
`"unknown"`; `environment` is `"development"`, `"preview"`, or
|
|
84
89
|
`"production"`.
|
|
85
90
|
|
|
@@ -146,9 +151,21 @@ Prefer `recordInputs: false` or `recordOutputs: false` when the destination does
|
|
|
146
151
|
|
|
147
152
|
## Lifecycle events
|
|
148
153
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
`defineInstrumentation({ events })` supports the following event names. A
|
|
155
|
+
start and its terminal event share an `idempotencyKey`; use it as a stable
|
|
156
|
+
operation key when upserting records across replays.
|
|
157
|
+
|
|
158
|
+
| Lifecycle | Events | Meaning |
|
|
159
|
+
| ---------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
160
|
+
| Session | `session.started`, `session.waiting`, `session.completed`, `session.failed` | Track a session from creation through suspension or termination. `session.waiting` is resumable; `session.completed` and `session.failed` are terminal. |
|
|
161
|
+
| Turn | `turn.started`, `turn.completed`, `turn.cancelled`, `turn.failed` | Track one turn. Cancellation is not a failure and commonly leaves the session waiting for another turn. |
|
|
162
|
+
| Channel delivery | `channel.delivery.started`, `channel.delivery.completed`, `channel.delivery.cancelled`, `channel.delivery.failed` | Track an inbound channel delivery while eve processes its turn. These events are emitted when the channel provides delivery metadata. |
|
|
163
|
+
| Step attempt | `step.attempt.started`, `step.attempt.completed`, `step.attempt.failed`, `step.attempt.metadata` | Track each model-step attempt; retries have separate attempts. `step.attempt.metadata` is emitted after a step only when the AI SDK supplies provider metadata. |
|
|
164
|
+
| Model call | `model.call.started`, `model.call.completed`, `model.call.failed` | Track an individual call to the model provider. Completion includes usage and finish reason; content fields follow the trace policy. |
|
|
165
|
+
| Action | `action.started`, `action.completed`, `action.failed` | Track eve's durable dispatch of a tool, skill load, local subagent, or remote agent. A failed event's `outcome` distinguishes failure, rejection, cancellation, and abandonment. |
|
|
166
|
+
| Tool call | `tool.call.started`, `tool.call.completed`, `tool.call.failed` | Track the AI SDK's in-process tool execution boundary, including its input and result when allowed by the trace policy. |
|
|
167
|
+
| User input | `input.requested`, `input.resolved` | Track a question, tool approval, or session-limit request and its resolution. The resolution includes an outcome such as `answered`, `approved`, `denied`, or `cancelled`. |
|
|
168
|
+
| Memory operation | `memory.operation.started`, `memory.operation.completed`, `memory.operation.failed` | Track a memory-store search or write. Events include the operation name, phase, and memory slot; completion may include a record count and records. |
|
|
152
169
|
|
|
153
170
|
An ordinary tool emits both `action.*` and `tool.call.*` events. Use `action.*` for eve's durable dispatch lifecycle, including tools, skills, subagents, and remote agents. Use `tool.call.*` only when you need the AI SDK's in-process tool execution boundary.
|
|
154
171
|
|
|
@@ -38,6 +38,36 @@ does not affect lifecycle instrumentation created with `defineInstrumentation()`
|
|
|
38
38
|
See [Audience](../channels/overview#audience) for how channels classify the
|
|
39
39
|
conversation passed to this policy.
|
|
40
40
|
|
|
41
|
+
## Instrument Node.js dependencies
|
|
42
|
+
|
|
43
|
+
Pass OpenTelemetry instrumentation instances to `otel({ instrumentations })`.
|
|
44
|
+
For example, install the PostgreSQL instrumentation alongside `pg`:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pnpm add pg @opentelemetry/instrumentation-pg
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```ts title="agent/instrumentation/otel.ts"
|
|
51
|
+
import { PgInstrumentation } from "@opentelemetry/instrumentation-pg";
|
|
52
|
+
import { otel } from "eve/instrumentation/otel";
|
|
53
|
+
|
|
54
|
+
export default otel({
|
|
55
|
+
instrumentations: [new PgInstrumentation()],
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Keep the instrumented package external so Node.js module hooks can intercept
|
|
60
|
+
it. Add `pg` to your agent's [build configuration](/docs/agent-config#other-defineagent-fields):
|
|
61
|
+
|
|
62
|
+
```ts title="agent/agent.ts"
|
|
63
|
+
import { defineAgent } from "eve";
|
|
64
|
+
|
|
65
|
+
export default defineAgent({
|
|
66
|
+
model: "openai/gpt-5.4-mini",
|
|
67
|
+
build: { externalDependencies: ["pg"] },
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
41
71
|
## Add an OpenTelemetry destination
|
|
42
72
|
|
|
43
73
|
Use this section when sending traces to a third-party destination. Install
|
|
@@ -28,7 +28,6 @@ export default defineRemoteAgent({
|
|
|
28
28
|
| `forwardPrincipal` | `boolean` | No | `false` | Forward the dispatching turn's session principal to the remote deployment (see [Forwarding the caller identity](#forwarding-the-caller-identity)). |
|
|
29
29
|
| `headers` | `HeadersValue` | No | none | Static or lazily resolved request headers. |
|
|
30
30
|
| `path` | `string` | No | `/eve/v1/session` | Route appended to `url` for the create-session request. |
|
|
31
|
-
| `outputSchema` | `StandardSchema \| JSON Schema` | No | none | Structured return type for the first turn of each fresh remote session. A continuation may provide its own per-call schema. |
|
|
32
31
|
| `tool` | `boolean` | No | `true` | Expose the remote agent as a tool to the parent model. Set `false` to allow only `ctx.agent()` calls from authored workflow tools. |
|
|
33
32
|
|
|
34
33
|
## Dynamic remote agents
|
|
@@ -81,9 +80,9 @@ The function may be async and must return a non-empty string. `auth` and `header
|
|
|
81
80
|
|
|
82
81
|
## Calling a remote agent
|
|
83
82
|
|
|
84
|
-
By default, a remote agent is another subagent tool to the model. The model calls it the same way it calls a local subagent, with a `message` and an optional `
|
|
83
|
+
By default, a remote agent is another subagent tool to the model. The model calls it the same way it calls a local subagent, with a `message` and an optional `agentId`. Set `tool: false` when an authored workflow tool should be the only model-facing routing surface; the workflow can still call the remote agent by its path-derived name through `ctx.agent()`. The message must carry the full task, including any context the remote agent needs, because it never receives the parent's conversation history.
|
|
85
84
|
|
|
86
|
-
To require structured output,
|
|
85
|
+
To require structured output, call the remote agent from an authored workflow tool with `ctx.agent(name, { message, outputSchema })`. The schema applies to that turn, the structured value is the call's result, and the remote child remains available for follow-up messages. See [Subagents](../subagents) for continuation behavior.
|
|
87
86
|
|
|
88
87
|
## Outbound auth
|
|
89
88
|
|
|
@@ -200,7 +199,7 @@ You can also steer a running remote background child by calling its subagent too
|
|
|
200
199
|
|
|
201
200
|
When the parent session ends, eve sends an authenticated `POST /eve/v1/session/:childSessionId/reset` for each remote child. Reset retires the parked remote session and recursively cleans up its descendants. The request uses freshly resolved `headers` and `auth`; failures are logged so an unreachable remote cannot block parent finalization.
|
|
202
201
|
|
|
203
|
-
A failed _start_ rejects admission before a task receipt is returned. After a remote starts, a terminal failure callback fails the task and notifies the parent with the remote's error
|
|
202
|
+
A failed _start_ rejects admission before a task receipt is returned. After a remote starts, a terminal failure callback fails the task and notifies the parent with the remote's error. Terminal callback delivery runs as a durable step on the underlying workflow engine (see [Execution model & durability](../concepts/execution-model-and-durability)). A failed callback POST is rethrown rather than marking the task complete, so the engine retries it.
|
|
204
203
|
|
|
205
204
|
## What to read next
|
|
206
205
|
|
|
@@ -3,7 +3,7 @@ title: "Self-Modification"
|
|
|
3
3
|
description: "Ask your agent to update its own instructions, tools, skills, and other authored files during local development."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
When `eve dev` starts a local server, it mounts the bundled self-modification extension by default. Ask your agent to change its instructions, tools, skills, or other files under `agent/`; eve delegates the source work to the `self-modification__agent` subagent. Connecting to an existing server with `eve
|
|
6
|
+
When `eve dev` starts a local server, it mounts the bundled self-modification extension by default. Ask your agent to change its instructions, tools, skills, or other files under `agent/`; eve delegates the source work to the `self-modification__agent` subagent. Connecting to an existing server with `eve remote connect --url <url>` does not add the bundled extension to that server.
|
|
7
7
|
|
|
8
8
|
The bundled extension is for local development and is not included in production builds.
|
|
9
9
|
|
|
@@ -95,7 +95,7 @@ Every handler receives a `MemoryOperationContext`:
|
|
|
95
95
|
| `memory.scope.value` | The resolved scope string or tuple |
|
|
96
96
|
| `memory.slot` | The path-derived slot name |
|
|
97
97
|
| `messages` | Projected conversation history for this phase |
|
|
98
|
-
| `operationId` | Stable per session,
|
|
98
|
+
| `operationId` | Stable per session, turn, step, phase, and slot. Use it as an idempotency key. |
|
|
99
99
|
| `abortSignal` | Cancellation for the operation |
|
|
100
100
|
| `session` | Session ID, authentication, and other `SessionContext` fields |
|
|
101
101
|
|