eve 0.29.3 → 0.29.5
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 +31 -0
- package/dist/src/acp/adapter.d.ts +43 -0
- package/dist/src/acp/adapter.js +1 -0
- package/dist/src/acp/line-limit.d.ts +3 -0
- package/dist/src/acp/line-limit.js +1 -0
- package/dist/src/acp/server.d.ts +24 -0
- package/dist/src/acp/server.js +1 -0
- package/dist/src/channel/clear-session.d.ts +4 -0
- package/dist/src/channel/clear-session.js +1 -0
- package/dist/src/channel/compact-session.d.ts +4 -0
- package/dist/src/channel/compact-session.js +1 -0
- package/dist/src/channel/routes.d.ts +34 -6
- package/dist/src/channel/types.d.ts +61 -9
- package/dist/src/chunks/{use-eve-agent-DaH3cf8K.js → use-eve-agent-BXMIf5fR.js} +130 -11
- package/dist/src/chunks/{use-eve-agent-CyDt3Lny.js → use-eve-agent-k-XHfrJT.js} +130 -11
- package/dist/src/cli/acp/command.d.ts +22 -0
- package/dist/src/cli/acp/command.js +4 -0
- package/dist/src/cli/commands/agent-prompt/build-and-verify.md +4 -0
- package/dist/src/cli/commands/extension-init.js +1 -1
- package/dist/src/cli/commands/init-git.js +1 -1
- package/dist/src/cli/commands/init-repl.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/logs.js +2 -2
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/cli/commands/register-registry-commands.js +1 -1
- package/dist/src/cli/commands/registry-project.js +1 -1
- package/dist/src/cli/commands/registry-setup-command.js +1 -1
- package/dist/src/cli/commands/registry.d.ts +14 -2
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/trace.d.ts +2 -2
- package/dist/src/cli/dev/command-options.d.ts +22 -0
- package/dist/src/cli/dev/command-options.js +1 -0
- package/dist/src/cli/dev/diagnostic-dump.js +1 -1
- package/dist/src/cli/dev/diagnostic-sink.js +1 -1
- package/dist/src/cli/dev/local-server-cleanup.js +1 -1
- package/dist/src/cli/dev/local-server-process.js +1 -1
- package/dist/src/cli/dev/tui/command-typeahead.js +1 -1
- package/dist/src/cli/dev/tui/message-queue.d.ts +9 -13
- package/dist/src/cli/dev/tui/message-queue.js +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +13 -5
- package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
- package/dist/src/cli/dev/tui/remote-auth.d.ts +6 -3
- package/dist/src/cli/dev/tui/remote-connection-probe.js +1 -1
- package/dist/src/cli/dev/tui/runner.d.ts +7 -7
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/stream-format.d.ts +14 -0
- package/dist/src/cli/dev/tui/stream-format.js +2 -2
- package/dist/src/cli/dev/tui/subagent-pump.d.ts +5 -5
- package/dist/src/cli/dev/tui/terminal-background.d.ts +23 -0
- package/dist/src/cli/dev/tui/terminal-background.js +1 -0
- package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
- package/dist/src/cli/dev/tui/traces/trace-content.d.ts +7 -0
- package/dist/src/cli/dev/tui/traces/trace-content.js +2 -2
- package/dist/src/cli/dev/tui/traces/trace-conversation.d.ts +10 -5
- package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-store.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-surfaces.d.ts +40 -0
- package/dist/src/cli/dev/tui/traces/trace-surfaces.js +1 -0
- package/dist/src/cli/dev/tui/traces/trace-view.d.ts +8 -1
- package/dist/src/cli/dev/tui/traces/trace-view.js +2 -2
- package/dist/src/cli/dev/tui/traces/trace-viewer-session.d.ts +13 -0
- package/dist/src/cli/dev/tui/traces/trace-viewer-session.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/invoke/invoke.js +1 -1
- package/dist/src/cli/invoke/result.js +1 -1
- package/dist/src/cli/run.d.ts +3 -0
- package/dist/src/cli/run.js +3 -3
- package/dist/src/cli/ui/terminal-text.d.ts +0 -3
- package/dist/src/cli/ui/terminal-text.js +1 -1
- package/dist/src/client/agent-info-schema.d.ts +2 -2
- package/dist/src/client/agent-info-schema.js +1 -1
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session.d.ts +29 -1
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +29 -0
- package/dist/src/compiled/.vendor-stamp.json +2 -1
- package/dist/src/compiled/@agentclientprotocol/sdk/LICENSE +191 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/index.d.ts +1835 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/index.js +65 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/jsonrpc.d.ts +603 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/schema/guards.gen.d.ts +199 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/schema/index.d.ts +51 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/schema/types.gen.d.ts +6118 -0
- package/dist/src/compiled/@agentclientprotocol/sdk/stream.d.ts +35 -0
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +8 -8
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +11 -22
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/model-catalog.js +1 -1
- package/dist/src/compiler/normalize-agent-config.d.ts +3 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-sandbox.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +1 -0
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +3 -0
- package/dist/src/compiler/workspace-resources.js +1 -1
- package/dist/src/context/dynamic-subagent-lifecycle.d.ts +22 -0
- package/dist/src/context/dynamic-subagent-lifecycle.js +1 -0
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +13 -2
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/run-step.js +1 -1
- package/dist/src/discover/project-source.js +1 -1
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/evals/loaders/json.js +1 -1
- package/dist/src/evals/loaders/yaml.js +1 -1
- package/dist/src/evals/runner/artifacts.js +1 -1
- package/dist/src/evals/runner/discover.js +1 -1
- package/dist/src/evals/runner/reporters/junit.js +1 -1
- package/dist/src/evals/session.js +1 -1
- package/dist/src/execution/create-session-step.d.ts +2 -0
- package/dist/src/execution/create-session-step.js +1 -1
- package/dist/src/execution/delegation-tool.d.ts +3 -0
- package/dist/src/execution/delegation-tool.js +1 -0
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +1 -1
- package/dist/src/execution/effective-agent-config.d.ts +12 -0
- package/dist/src/execution/effective-agent-config.js +1 -0
- package/dist/src/execution/node-step.d.ts +4 -0
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/runtime-context.d.ts +2 -0
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker-cli.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
- package/dist/src/execution/sandbox/bindings/local-backend-utils.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-metadata.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-platform.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
- package/dist/src/execution/sandbox/development-cleanup.js +1 -1
- package/dist/src/execution/sandbox/template-prewarm-lock.js +1 -1
- package/dist/src/execution/session-callback-request.d.ts +5 -0
- package/dist/src/execution/session-callback-request.js +1 -0
- package/dist/src/execution/session-delivery-hook.d.ts +1 -0
- package/dist/src/execution/session-delivery-hook.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/subagent-event-proxy-step.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-runtime.d.ts +2 -0
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/agent-handles.d.ts +238 -0
- package/dist/src/harness/agent-handles.js +2 -0
- package/dist/src/harness/attachment-staging.js +1 -1
- package/dist/src/harness/compaction.d.ts +1 -1
- package/dist/src/harness/compaction.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/types.d.ts +16 -0
- package/dist/src/internal/application/build-profile.js +1 -1
- package/dist/src/internal/application/build-workspace.js +1 -1
- package/dist/src/internal/application/cache-metadata.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +8 -8
- package/dist/src/internal/application/optional-package-install.js +2 -2
- package/dist/src/internal/application/output-publication-artifacts.js +1 -1
- package/dist/src/internal/application/output-publication-journal.js +1 -1
- package/dist/src/internal/application/output-publication-lock.js +1 -1
- package/dist/src/internal/application/output-publication.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/application/production-compiler-artifacts.js +1 -1
- package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
- package/dist/src/internal/authored-asset-import-plugin.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-module-loader.js +3 -3
- package/dist/src/internal/authored-package-tsconfig-paths.js +1 -1
- package/dist/src/internal/materialized-authored-modules.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot-copy.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/build-extension.js +1 -1
- package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -3
- package/dist/src/internal/nitro/host/copy-host-middleware.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/cron-handler-route.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-workspace.js +1 -1
- package/dist/src/internal/nitro/host/dev-server-http.js +1 -1
- package/dist/src/internal/nitro/host/dev-server-state.js +1 -1
- package/dist/src/internal/nitro/host/dev-workspace-extensions.js +1 -1
- package/dist/src/internal/nitro/host/extension-build-config.js +1 -1
- package/dist/src/internal/nitro/host/extension-declarations.js +2 -2
- package/dist/src/internal/nitro/host/extension-distribution.js +3 -3
- package/dist/src/internal/nitro/host/extension-state-usage.js +1 -1
- package/dist/src/internal/nitro/host/normalize-vercel-service-crons.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host/start-production-server.js +2 -2
- package/dist/src/internal/nitro/host/types.d.ts +2 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/vercel/project-link.js +1 -1
- package/dist/src/internal/vercel-agent-summary.d.ts +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/internal/workflow-bundle/builder-support.js +6 -6
- package/dist/src/internal/workflow-bundle/builder.js +3 -3
- package/dist/src/internal/workflow-bundle/nitro-step-entry.js +2 -2
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/protocol/clear-session.d.ts +14 -0
- package/dist/src/protocol/clear-session.js +1 -0
- package/dist/src/protocol/compact-session.d.ts +14 -0
- package/dist/src/protocol/compact-session.js +1 -0
- package/dist/src/protocol/message.d.ts +19 -1
- package/dist/src/protocol/message.js +1 -1
- package/dist/src/protocol/routes.d.ts +10 -0
- package/dist/src/protocol/routes.js +1 -1
- package/dist/src/public/channels/discord/discordChannel.js +1 -1
- package/dist/src/public/channels/discord/verify.js +1 -1
- package/dist/src/public/channels/eve.js +1 -1
- package/dist/src/public/channels/github/auth.js +2 -2
- package/dist/src/public/channels/github/githubChannel.js +1 -1
- package/dist/src/public/channels/github/verify.js +1 -1
- package/dist/src/public/channels/index.d.ts +1 -1
- package/dist/src/public/channels/linear/inbound.js +2 -2
- package/dist/src/public/channels/linear/linearChannel.js +1 -1
- package/dist/src/public/channels/linear/verify.js +1 -1
- package/dist/src/public/channels/teams/teamsChannel.js +1 -1
- package/dist/src/public/channels/telegram/verify.js +1 -1
- package/dist/src/public/channels/twilio/twilioChannel.js +1 -1
- package/dist/src/public/definitions/agent.d.ts +32 -1
- package/dist/src/public/definitions/agent.js +1 -1
- package/dist/src/public/definitions/channel.d.ts +5 -2
- package/dist/src/public/definitions/channel.js +1 -1
- package/dist/src/public/definitions/hook.d.ts +1 -0
- package/dist/src/public/definitions/tool.d.ts +4 -1
- package/dist/src/public/index.d.ts +1 -2
- package/dist/src/public/index.js +1 -1
- package/dist/src/public/models/openai/chatgpt/auth.js +1 -1
- package/dist/src/public/next/server.js +2 -2
- package/dist/src/public/next/vercel-output-config.js +1 -1
- package/dist/src/public/nuxt/dev-server.js +1 -1
- package/dist/src/public/nuxt/vercel-services.js +1 -1
- package/dist/src/public/sveltekit/dev-server.js +1 -1
- package/dist/src/public/sveltekit/vercel-json.js +1 -1
- package/dist/src/runtime/framework-tools/connection-search-dynamic.d.ts +2 -18
- package/dist/src/runtime/framework-tools/connection-search-dynamic.js +2 -2
- package/dist/src/runtime/framework-tools/file-state.js +1 -1
- package/dist/src/runtime/framework-tools/index.d.ts +7 -2
- package/dist/src/runtime/framework-tools/index.js +1 -1
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-dynamic-subagent.d.ts +12 -0
- package/dist/src/runtime/resolve-dynamic-subagent.js +1 -0
- package/dist/src/runtime/resolve-dynamic-tool.d.ts +15 -0
- package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
- package/dist/src/runtime/sandbox/keys.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +22 -0
- package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -0
- package/dist/src/runtime/subagents/registry.d.ts +10 -2
- package/dist/src/runtime/subagents/registry.js +1 -1
- package/dist/src/runtime/types.d.ts +11 -2
- package/dist/src/runtime/workspace/seed-files.js +1 -1
- package/dist/src/setup/boxes/detect-ai-gateway.js +1 -1
- package/dist/src/setup/flows/registry.js +1 -1
- package/dist/src/setup/index.d.ts +1 -0
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/integrations/discord/api.d.ts +15 -0
- package/dist/src/setup/integrations/discord/api.js +1 -0
- package/dist/src/setup/integrations/discord/connect.d.ts +24 -0
- package/dist/src/setup/integrations/discord/connect.js +1 -0
- package/dist/src/setup/integrations/discord/setup.d.ts +19 -0
- package/dist/src/setup/integrations/discord/setup.js +8 -0
- package/dist/src/setup/integrations/registry.js +1 -1
- package/dist/src/setup/package-manager.js +1 -1
- package/dist/src/setup/primitives/pm/pnpm.js +3 -3
- package/dist/src/setup/project-resolution.js +1 -1
- package/dist/src/setup/prompter.js +1 -1
- package/dist/src/setup/registry-setup-client.d.ts +6 -2
- package/dist/src/setup/registry-setup-client.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
- package/dist/src/setup/scaffold/create/extension.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +2 -9
- package/dist/src/setup/scaffold/files.js +1 -1
- package/dist/src/setup/scaffold/update/channels.js +2 -2
- package/dist/src/setup/scaffold/update/connections.js +1 -1
- package/dist/src/setup/scaffold/workspace-root.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/vercel-project-framework.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +7 -0
- package/dist/src/shared/agent-turn-outcome.d.ts +47 -0
- package/dist/src/shared/agent-turn-outcome.js +1 -0
- package/dist/src/shared/dynamic-tool-definition.d.ts +1 -5
- package/dist/src/shared/dynamic-tool-definition.js +1 -1
- package/dist/src/shared/guards.d.ts +2 -0
- package/dist/src/shared/guards.js +1 -1
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/skill-paths.d.ts +4 -4
- package/dist/src/shared/skill-paths.js +2 -2
- package/dist/src/shared/vercel-output-directory.js +1 -1
- package/dist/src/source-change/static-source-change.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tracing/local-instrumentation-runtime.js +1 -1
- package/dist/src/tracing/local-trace-reader.d.ts +22 -5
- package/dist/src/tracing/local-trace-reader.js +1 -1
- package/dist/src/tracing/local-trace-retention.js +1 -1
- package/dist/src/tracing/local-trace-span-processor.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/custom.mdx +41 -1
- package/docs/channels/discord.mdx +30 -14
- package/docs/channels/eve.mdx +26 -1
- package/docs/concepts/default-harness.md +4 -0
- package/docs/guides/acp.md +91 -0
- package/docs/guides/client/streaming.mdx +38 -0
- package/docs/guides/dev-tui.md +10 -7
- package/docs/guides/dynamic-capabilities.md +49 -6
- package/docs/guides/meta.json +1 -0
- package/docs/reference/cli.md +3 -0
- package/docs/reference/project-layout.md +1 -1
- package/docs/reference/typescript-api.md +48 -48
- package/docs/subagents.mdx +32 -2
- package/package.json +3 -2
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Use eve through ACP"
|
|
3
|
+
description: "Use local or deployed eve agents from Agent Client Protocol clients."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Agent Client Protocol (ACP) clients can launch an authored eve application as a local subprocess. eve serves stable ACP v1 over stdio while its normal development server remains the execution runtime.
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
eve acp
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Without a URL, the client starts one process from the eve application root. It supervises a local development server, and closing the ACP connection stops that owned server. To bridge ACP to a deployed eve agent, pass its URL:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
eve acp https://agent.example.com
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
For a recognized Vercel deployment, eve verifies the exact origin and resolves a short-lived project-scoped OIDC token from the local Vercel session. If login or a Trusted Sources change is required, run `eve dev <url>` and complete `/vc:login` before launching ACP. `VERCEL_AUTOMATION_BYPASS_SECRET` remains available for deployments configured with a Protection Bypass for Automation token.
|
|
19
|
+
|
|
20
|
+
## Configure Zed
|
|
21
|
+
|
|
22
|
+
Open the eve application root as the Zed workspace. In **Agent Settings → External Agents**, add a custom agent:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"agent_servers": {
|
|
27
|
+
"eve-local": {
|
|
28
|
+
"type": "custom",
|
|
29
|
+
"command": "pnpm",
|
|
30
|
+
"args": ["exec", "eve", "acp"],
|
|
31
|
+
"env": {}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Use an absolute command path if Zed cannot find `pnpm` in its environment. The workspace must be the same directory as the eve application root; eve rejects a different `session/new.cwd` instead of running the wrong application.
|
|
38
|
+
|
|
39
|
+
Disable Zed project MCP servers for this agent. The initial eve adapter does not accept client-provided MCP servers.
|
|
40
|
+
|
|
41
|
+
## Supported behavior
|
|
42
|
+
|
|
43
|
+
ACP clients receive:
|
|
44
|
+
|
|
45
|
+
- streamed assistant text and reasoning;
|
|
46
|
+
- tool-call requests and results;
|
|
47
|
+
- one-time tool approval and denial requests;
|
|
48
|
+
- fixed-choice and freeform questions when the client supports ACP form elicitation;
|
|
49
|
+
- cooperative turn cancellation;
|
|
50
|
+
- independent concurrent ACP sessions;
|
|
51
|
+
- session closure and process cleanup.
|
|
52
|
+
|
|
53
|
+
Development rebuilds retain normal eve semantics. In-flight work stays pinned to its generation, and the next turn uses the newest successful generation.
|
|
54
|
+
|
|
55
|
+
## Security and capability limits
|
|
56
|
+
|
|
57
|
+
ACP mode does not give the agent access to the editor's host filesystem or terminal. `session/new.cwd` identifies the eve application being launched; it is not mounted into the agent sandbox.
|
|
58
|
+
|
|
59
|
+
The initial adapter does not support:
|
|
60
|
+
|
|
61
|
+
- a deployed ACP HTTP or WebSocket endpoint;
|
|
62
|
+
- ACP authentication (remote bridges use the deployed eve agent's existing HTTP authentication);
|
|
63
|
+
- ACP v2;
|
|
64
|
+
- client filesystem or terminal methods;
|
|
65
|
+
- client-provided MCP servers;
|
|
66
|
+
- images, audio, files, or embedded resources in prompts;
|
|
67
|
+
- session loading, listing, resumption, or durable ACP IDs across process restarts;
|
|
68
|
+
- ACP model or mode configuration.
|
|
69
|
+
|
|
70
|
+
The agent continues to use the connections, tools, credentials, and sandbox policy authored in the eve application. Prompt text and ACP metadata never establish an authenticated end-user principal.
|
|
71
|
+
|
|
72
|
+
## Diagnose a connection
|
|
73
|
+
|
|
74
|
+
ACP reserves stdout for newline-delimited JSON-RPC. eve sends compilation output, server logs, and diagnostics to stderr so they cannot corrupt the protocol stream.
|
|
75
|
+
|
|
76
|
+
For a quick headless smoke test, run an ACP client such as `acpx` from the application root. `acpx` launches the ACP process itself; do not start `eve acp` separately.
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
npx acpx@latest \
|
|
80
|
+
--agent 'pnpm exec eve acp' \
|
|
81
|
+
exec 'Reply with exactly: ACP works'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
When testing from the eve source checkout, use an authored fixture rather than the monorepo root, which does not provide an `eve` executable:
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
cd apps/fixtures/weather-agent
|
|
88
|
+
npx acpx@latest --agent 'pnpm exec eve acp' exec 'Reply with exactly: ACP works'
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If startup fails, inspect the ACP client's logs together with eve's stderr. A non-empty client MCP configuration, a mismatched working directory, and unsupported prompt content produce explicit protocol errors before model work begins.
|
|
@@ -19,6 +19,20 @@ const result = await response.result();
|
|
|
19
19
|
|
|
20
20
|
Cancellation does not replace stream consumption. Continue reading the response to observe its terminal `turn.cancelled` and `session.waiting` boundary and to advance the client session cursor normally.
|
|
21
21
|
|
|
22
|
+
Between turns, `session.compact()` queues context compaction without sending model input. An accepted request reports the session id; consume the durable stream through the following `session.waiting` boundary before sending the next turn. `compaction.completed` confirms that summarization succeeded; without it, eve preserves the previous history. A never-started session returns `no_active_session` as a successful no-op.
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
const compaction = await session.compact();
|
|
26
|
+
console.log(compaction.status);
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Use `session.clear()` to remove model-message history while retaining the session and its durable resources. Consume `context.cleared` and the following `session.waiting` before sending the next turn.
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
const cleared = await session.clear();
|
|
33
|
+
console.log(cleared.status);
|
|
34
|
+
```
|
|
35
|
+
|
|
22
36
|
## Aggregate a turn
|
|
23
37
|
|
|
24
38
|
Use `result()` when you only need the final turn summary:
|
|
@@ -180,6 +194,30 @@ Because a tail-relative cursor cannot be bounded, `follow: false` throws when co
|
|
|
180
194
|
|
|
181
195
|
`stream()` throws if the session has no `sessionId`, because there's no stream to attach to before the first send.
|
|
182
196
|
|
|
197
|
+
## Snapshot a session
|
|
198
|
+
|
|
199
|
+
Use `snapshot()` when you need the complete event prefix and its matching cursor
|
|
200
|
+
as one value, such as when hydrating a server-rendered chat:
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
const session = client.session({ sessionId, streamIndex: 0 });
|
|
204
|
+
const snapshot = await session.snapshot();
|
|
205
|
+
|
|
206
|
+
// snapshot.events contains event indexes 0 through snapshot.session.streamIndex - 1.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The read pins the durable tail when it opens, just like
|
|
210
|
+
`stream({ follow: false })`. Events written afterward are not included, and
|
|
211
|
+
`snapshot.session.streamIndex` is the exact index from which a live consumer can
|
|
212
|
+
continue. `snapshot()` always reads from index `0`; use a bounded stream directly
|
|
213
|
+
when you only need the unread suffix from an existing cursor.
|
|
214
|
+
|
|
215
|
+
Unlike `stream()`, `snapshot()` does not advance or reset the originating
|
|
216
|
+
`ClientSession`. Its returned session includes a continuation token only when
|
|
217
|
+
the captured prefix ends in `session.waiting`, or when completed sessions are
|
|
218
|
+
explicitly preserved by the client. Active and terminal snapshots remain
|
|
219
|
+
inspectable at their returned stream cursor but cannot accept another turn.
|
|
220
|
+
|
|
183
221
|
## Abort a request
|
|
184
222
|
|
|
185
223
|
Pass an `AbortSignal` to cancel the POST or stream. Aborting is local transport cancellation: turns are resumable across disconnects, so detaching never stops the server-side turn — it keeps running and remains attachable by index. To stop the turn itself, POST the session's [cancel route](../../channels/eve#routes) and watch the stream settle with `turn.cancelled` followed by `session.waiting`.
|
package/docs/guides/dev-tui.md
CHANGED
|
@@ -35,13 +35,16 @@ Each command echoes as an invocation line, asks through a bordered panel that ta
|
|
|
35
35
|
| Command | Does |
|
|
36
36
|
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
37
37
|
| `/model` | Opens a configure menu that loops until Done (or Esc). See [Configure the model and provider](#configure-the-model-and-provider). |
|
|
38
|
-
| `/add` |
|
|
38
|
+
| `/add` | Adds an integration from the registry or an item address entered directly. |
|
|
39
39
|
| `/deploy` | Ships the agent to Vercel production, linking the directory first when it is unlinked. |
|
|
40
40
|
| `/vc:install` | Installs the Vercel CLI. Available locally and on a remote session. |
|
|
41
41
|
| `/vc:login` | Logs in to Vercel locally. On a remote session, resolves the deployment's project, refreshes its OIDC token, and confirms any required Trusted Sources rule. |
|
|
42
42
|
| `/loglevel` | Switches which logs the transcript shows. See [Control what logs show](#control-what-logs-show). |
|
|
43
43
|
| `/traces` | Opens the full-screen local trace viewer. See [Inspect traces](#inspect-traces). |
|
|
44
|
-
| `/
|
|
44
|
+
| `/reset` | Starts a fresh session. |
|
|
45
|
+
| `/cancel` | Cooperatively cancels the running turn while preserving the session and settled context. |
|
|
46
|
+
| `/clear` | Clears model-message history while preserving the current session and its durable resources. |
|
|
47
|
+
| `/compact` | Queues context compaction for the current session without sending a message. |
|
|
45
48
|
| `/exit` | Quits the TUI. |
|
|
46
49
|
| `/help` | Lists the commands available for the current local or remote session. |
|
|
47
50
|
|
|
@@ -55,11 +58,11 @@ The provider row opens one menu: AI Gateway via a project, AI Gateway via `AI_GA
|
|
|
55
58
|
|
|
56
59
|
The provider row demands attention (a bold yellow "Configure model access" with a yellow "Not configured" hint that dims when unselected and uses the terminal foreground when selected) until a link or gateway credential is detected, then names the connection afterward (for example "AI Gateway (Linked to my-project in my-team)"). Setup menus mark the cursor row with a padded, filled-arrow inverse label that inherits the row's accent: blue normally and yellow for warning rows. In stacked menus, the selected row's description appears directly beneath that option. The completed command's outcome stays in the transcript after the panel closes. When a turn fails because AI Gateway authentication is missing or stale, the error points you at `/model` directly.
|
|
57
60
|
|
|
58
|
-
###
|
|
61
|
+
### Add registry integrations
|
|
59
62
|
|
|
60
|
-
`/add`
|
|
63
|
+
`/add` groups integrations by their role: **Channels** for where people talk to your agent, **MCP connections** for external services and data, **Extensions** for reusable capabilities, and **Observability** for tracing and evaluation. Pick a category to open its searchable catalog from the official eve registry and the registry namespaces configured in `package.json`, or browse every integration. Each result shows its source beside its name, such as `Vercel` or a configured registry namespace. Select a result to review its source, packages, environment variables, and target files before adding it, or enter an official item path, configured namespace address, or HTTP(S) URL directly in the search bar. After an add attempt finishes, the panel closes instead of returning to the catalog.
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
MCP connection registry items install their definition and then configure Vercel Connect through the same `/add` flow. If the directory is unlinked, setup first offers to create or link a project. Run `eve add connection/<name>` for the equivalent CLI flow.
|
|
63
66
|
|
|
64
67
|
## Keyboard shortcuts
|
|
65
68
|
|
|
@@ -81,9 +84,9 @@ In terminals that support bracketed paste, pasting multi-line text into chat or
|
|
|
81
84
|
|
|
82
85
|
### Queue and steer while the agent works
|
|
83
86
|
|
|
84
|
-
Sending a message while a turn is still running does not interrupt it — the message joins a queue of up to five, pinned in a panel directly above the input with one line per message. When the turn ends, the queued messages coalesce into the next turn's message.
|
|
87
|
+
Sending a message while a turn is still running does not interrupt it — the message joins a queue of up to five, pinned in a panel directly above the input with one line per message. When the turn ends, the queued messages coalesce into the next turn's message. Submit `/cancel` during a turn to cancel it immediately without queueing the command as model input; `/cancel` also works from the idle prompt when a prior stream disconnected while its server turn may still be running.
|
|
85
88
|
|
|
86
|
-
`Esc` steers instead of waiting: it pops the oldest queued message, cancels the running turn cooperatively, and submits the popped message as the replacement turn. In the transcript, a steered message carries an accent `↑` on its own line above its gutter bar; a queued message that waited for the boundary carries it below. Any remaining messages stay queued behind it. With nothing queued,
|
|
89
|
+
`Esc` steers instead of waiting: it pops the oldest queued message, cancels the running turn cooperatively, and submits the popped message as the replacement turn. In the transcript, a steered message carries an accent `↑` on its own line above its gutter bar; a queued message that waited for the boundary carries it below. Any remaining messages stay queued behind it. With nothing queued, one `Esc` cancels the turn immediately. Unlike `Ctrl+C` — which drops the stream client-side — a cancelled turn ends cleanly on the server and the session keeps its context; the conversation picks up at the next prompt.
|
|
87
90
|
|
|
88
91
|
If a turn fails terminally (the server session dies or the connection drops), the TUI starts a fresh session and notes it inline so you can keep going. Server-side context resets with the old session. Messages still queued when a turn is interrupted or fails are restored into the next prompt's input instead of being sent blind.
|
|
89
92
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Dynamic Capabilities"
|
|
3
|
-
description: "Resolve models, tools, skills, and instructions at runtime
|
|
3
|
+
description: "Resolve models, subagents, tools, skills, and instructions at runtime with defineDynamic resolver events."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
`defineDynamic` resolves the model, tools, skills, and instructions at runtime from a session event instead of declaring them up front. Reach for it when the right capability isn't known until the session starts, because it hinges on who the caller is, what tenant they belong to, feature flags, or external data. The [tools](../tools), [skills](../skills), and [instructions](../instructions) guides each point here for their dynamic form.
|
|
6
|
+
`defineDynamic` resolves the model, subagents, tools, skills, and instructions at runtime from a session event instead of declaring them up front. Reach for it when the right capability isn't known until the session starts, because it hinges on who the caller is, what tenant they belong to, feature flags, or external data. The [subagents](../subagents), [tools](../tools), [skills](../skills), and [instructions](../instructions) guides each point here for their dynamic form.
|
|
7
7
|
|
|
8
8
|
## Dynamic models
|
|
9
9
|
|
|
@@ -16,10 +16,52 @@ uncached prices. See
|
|
|
16
16
|
[agent configuration](../agent-config#choose-the-model-dynamically) for the
|
|
17
17
|
full contract.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
The agent always needs exactly one model, so the compiled fallback anchors
|
|
20
|
+
build-time metadata. Tools, skills, instructions, and subagents default by
|
|
21
|
+
authoring a static entry (or returning `null`), so `fallback` on their
|
|
22
|
+
`defineDynamic` export is a build error.
|
|
23
|
+
|
|
24
|
+
## Dynamic subagents
|
|
25
|
+
|
|
26
|
+
Wrap a declared subagent's own `agent.ts` in `defineDynamic` when its
|
|
27
|
+
availability depends on the caller, tenant, environment, or a feature flag.
|
|
28
|
+
Return the child definition to configure and expose it. Return `null` or
|
|
29
|
+
`undefined` to omit it from the parent's model-visible tools.
|
|
30
|
+
|
|
31
|
+
```ts title="agent/subagents/finance/agent.ts"
|
|
32
|
+
import { defineAgent, defineDynamic } from "eve";
|
|
33
|
+
|
|
34
|
+
export default defineDynamic({
|
|
35
|
+
events: {
|
|
36
|
+
"session.started": (_event, ctx) =>
|
|
37
|
+
ctx.session.auth.current?.attributes.plan === "enterprise"
|
|
38
|
+
? defineAgent({
|
|
39
|
+
description: "Analyze financial and accounting data.",
|
|
40
|
+
model: "openai/gpt-5.5",
|
|
41
|
+
})
|
|
42
|
+
: null,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
eve always compiles the subagent's filesystem manifest, including its
|
|
48
|
+
instructions, tools, skills, connections, sandbox, and nested subagents. When
|
|
49
|
+
the resolver selects it, eve injects the returned agent configuration into that
|
|
50
|
+
compiled manifest. Each resolution can return a different model or other
|
|
51
|
+
runtime agent settings. Runtime-selected models must use string model IDs;
|
|
52
|
+
build and Workflow-world configuration cannot be selected at runtime.
|
|
53
|
+
|
|
54
|
+
Dynamic subagents support `session.started` and `turn.started`. A turn selection
|
|
55
|
+
shadows the session selection for that turn, including when the turn handler
|
|
56
|
+
returns nil. If a resolver throws or returns an invalid definition, eve logs the
|
|
57
|
+
failure and omits the subagent.
|
|
58
|
+
|
|
59
|
+
The resolved set applies to direct delegation and the `Workflow` tool. eve
|
|
60
|
+
also checks availability again before starting the child, so a stale or
|
|
61
|
+
manually constructed call fails with `SUBAGENT_UNAVAILABLE`. Treat conditional
|
|
62
|
+
availability as capability composition, not as the only authorization
|
|
63
|
+
boundary: sensitive child tools still need their own authorization and
|
|
64
|
+
approval checks.
|
|
23
65
|
|
|
24
66
|
## Dynamic tools
|
|
25
67
|
|
|
@@ -162,6 +204,7 @@ Both resolve before the prompt is assembled, so the model sees the right instruc
|
|
|
162
204
|
|
|
163
205
|
## What to read next
|
|
164
206
|
|
|
207
|
+
- Conditionally expose a specialist → [Subagents](../subagents)
|
|
165
208
|
- The static tool basics this builds on → [Tools](../tools)
|
|
166
209
|
- The built-in tools and how to override them → [Default harness](../concepts/default-harness)
|
|
167
210
|
- Authenticate a tool or connection to an external service → [Auth & route protection](./auth-and-route-protection)
|
package/docs/guides/meta.json
CHANGED
package/docs/reference/cli.md
CHANGED
|
@@ -15,6 +15,7 @@ The `eve` binary (`bin: eve`) runs from your app root, and every command first l
|
|
|
15
15
|
| `eve start` | Serve the built `.output/` app; prints the listening URL |
|
|
16
16
|
| `eve dev` | Start the local dev server and open the terminal UI |
|
|
17
17
|
| `eve dev <url>` | Connect the UI to an existing server URL (e.g. a remote deployment) instead of booting a local server |
|
|
18
|
+
| `eve acp [url]` | Serve the local application or an existing eve server URL as a stable ACP v1 agent over stdio |
|
|
18
19
|
| `eve logs [logid]` | Print an `eve dev` diagnostic log (the most recent when `logid` is omitted) |
|
|
19
20
|
| `eve logs ls` | List `eve dev` diagnostic logs, most recent first |
|
|
20
21
|
| `eve traces ls` | List locally captured agent traces, most recent first |
|
|
@@ -183,6 +184,8 @@ Pass a bare URL and the UI connects to that server instead of booting a local on
|
|
|
183
184
|
| `--context-size <tokens>` | number | none | Model context window size, shown as a usage percentage |
|
|
184
185
|
| `--logs <mode>` | enum | `stderr` | Server/agent logs to show: `all` \| `stderr` \| `sandbox` \| `none` |
|
|
185
186
|
|
|
187
|
+
`eve acp` reserves stdin and stdout for newline-delimited JSON-RPC and sends diagnostics to stderr. Without a URL, it supervises an isolated local development server. With a URL, it bridges ACP to that server's existing eve HTTP API and accepts the same URL credentials and request headers as `eve dev <url>`. Pass `--scope <team>` when the active Vercel scope does not own the deployment; `EVE_VERCEL_SCOPE` provides the same value for managed harnesses. See [Use eve through ACP](../guides/acp) for client configuration and capability limits.
|
|
188
|
+
|
|
186
189
|
A fresh `eve init` passes `--input /model`. That bare local input starts onboarding: the TUI installs the Vercel CLI if needed, asks you to log in if needed, opens `/model`, then offers categorized registry next steps before the first prompt. Other input stays editable in the prompt.
|
|
187
190
|
|
|
188
191
|
For a URL target protected by HTTP Basic auth, put the credentials in the URL. eve sends them as a Basic `Authorization` header and strips them from the server URL before connecting:
|
|
@@ -91,7 +91,7 @@ agent/subagents/researcher/
|
|
|
91
91
|
|
|
92
92
|
Rules:
|
|
93
93
|
|
|
94
|
-
- `agent.ts` is required
|
|
94
|
+
- `agent.ts` is required. A static subagent's definition must declare a `description`; a dynamic subagent's resolver must return a definition with one. The parent reads it on the lowered subagent tool to decide when to delegate.
|
|
95
95
|
- `instructions.md` / `instructions.ts` is optional (unlike the root agent, where it is required).
|
|
96
96
|
- `connections/`, `hooks/`, `skills/`, `lib/`, `sandbox/`, and `tools/` are all supported, discovered from the subagent's own directory.
|
|
97
97
|
- `channels/` and `schedules/` are not supported inside local subagents.
|
|
@@ -30,27 +30,27 @@ export default defineTool({
|
|
|
30
30
|
|
|
31
31
|
## The define\* helpers
|
|
32
32
|
|
|
33
|
-
| Helper | Import from
|
|
34
|
-
| ----------------------------------------------------- |
|
|
35
|
-
| `defineAgent` | `eve`
|
|
36
|
-
| `defineTool` | `eve/tools`
|
|
37
|
-
| `defineDynamic` | `eve/tools`, `eve/skills`, `eve/instructions` | `agent/{tools,skills,instructions}/` | [Dynamic capabilities](../guides/dynamic-capabilities) |
|
|
38
|
-
| `defineMcpClientConnection` | `eve/connections`
|
|
39
|
-
| `defineOpenAPIConnection` | `eve/connections`
|
|
40
|
-
| `defineChannel` | `eve/channels`
|
|
41
|
-
| `eveChannel`, `slackChannel`, and the other platforms | `eve/channels/<platform>`
|
|
42
|
-
| `defineSkill` | `eve/skills`
|
|
43
|
-
| `defineInstructions` | `eve/instructions`
|
|
44
|
-
| `defineHook` | `eve/hooks`
|
|
45
|
-
| `defineSchedule` | `eve/schedules`
|
|
46
|
-
| `defineState` | `eve/context`
|
|
47
|
-
| `defineSandbox` | `eve/sandbox`
|
|
48
|
-
| `defineInstrumentation` | `eve/instrumentation`
|
|
49
|
-
| `defineRemoteAgent` | `eve`
|
|
50
|
-
| `defineEval` | `eve/evals`
|
|
51
|
-
| `defineEvalConfig` | `eve/evals`
|
|
52
|
-
| `mockModel` | `eve/evals`
|
|
53
|
-
| `useEveAgent` | `eve/react`, `eve/vue`, `eve/svelte`
|
|
33
|
+
| Helper | Import from | Authored at | Guide |
|
|
34
|
+
| ----------------------------------------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------ |
|
|
35
|
+
| `defineAgent` | `eve` | `agent/agent.ts` | [agent.ts](../agent-config) |
|
|
36
|
+
| `defineTool` | `eve/tools` | `agent/tools/<name>.ts` | [Tools](../tools) |
|
|
37
|
+
| `defineDynamic` | `eve`, `eve/tools`, `eve/skills`, `eve/instructions` | dynamic model or subagent `agent.ts`; `agent/{tools,skills,instructions}/` | [Dynamic capabilities](../guides/dynamic-capabilities) |
|
|
38
|
+
| `defineMcpClientConnection` | `eve/connections` | `agent/connections/<name>.ts` | [MCP connections](../connections/mcp) |
|
|
39
|
+
| `defineOpenAPIConnection` | `eve/connections` | `agent/connections/<name>.ts` | [OpenAPI connections](../connections/openapi) |
|
|
40
|
+
| `defineChannel` | `eve/channels` | `agent/channels/<name>.ts` | [Custom channels](../channels/custom) |
|
|
41
|
+
| `eveChannel`, `slackChannel`, and the other platforms | `eve/channels/<platform>` | `agent/channels/<platform>.ts` | [Channels](../channels/overview) |
|
|
42
|
+
| `defineSkill` | `eve/skills` | `agent/skills/<name>.ts` | [Skills](../skills) |
|
|
43
|
+
| `defineInstructions` | `eve/instructions` | `agent/instructions.ts` | [Instructions](../instructions) |
|
|
44
|
+
| `defineHook` | `eve/hooks` | `agent/hooks/<slug>.ts` | [Hooks](../guides/hooks) |
|
|
45
|
+
| `defineSchedule` | `eve/schedules` | `agent/schedules/<name>.ts` | [Schedules](../schedules) |
|
|
46
|
+
| `defineState` | `eve/context` | tools, hooks, lifecycle | [Session context](../guides/session-context) |
|
|
47
|
+
| `defineSandbox` | `eve/sandbox` | `agent/sandbox.ts` | [Sandbox](../sandbox) |
|
|
48
|
+
| `defineInstrumentation` | `eve/instrumentation` | `agent/instrumentation.ts` | [instrumentation.ts](../guides/instrumentation) |
|
|
49
|
+
| `defineRemoteAgent` | `eve` | `agent/subagents/<id>/agent.ts` | [Remote agents](../guides/remote-agents) |
|
|
50
|
+
| `defineEval` | `eve/evals` | `evals/*.eval.ts` | [Evals](../evals/overview) |
|
|
51
|
+
| `defineEvalConfig` | `eve/evals` | `evals/evals.config.ts` | [Evals](../evals/overview) |
|
|
52
|
+
| `mockModel` | `eve/evals` | Deterministic fixture agent models | [Evals](../evals/overview) |
|
|
53
|
+
| `useEveAgent` | `eve/react`, `eve/vue`, `eve/svelte` | frontend | [Frontend](../guides/frontend/overview) |
|
|
54
54
|
|
|
55
55
|
A few non-`define*` helpers round out the set: `disableTool` and `experimental_workflow` from `eve/tools` (see [Default harness](../concepts/default-harness)), `sleep` from `eve/tools/sleep`, the route verbs `GET`/`POST`/`PUT`/`PATCH`/`DELETE`/`WS` from `eve/channels`, the approval policies `always`/`once`/`never` from `eve/tools/approval`, and the channel auth helpers `localDev`/`vercelOidc`/`placeholderAuth` from `eve/channels/auth`. To wrap a built-in tool, import its default value from `eve/tools/defaults` (`bash`, `readFile`, `writeFile`, `glob`, `grep`, `webFetch`, `webSearch`, `todo`, `loadSkill`). `AgentReasoningDefinition` is exported from `eve` for the top-level `defineAgent({ reasoning })` setting. `AgentLimitsDefinition` is exported for `defineAgent({ limits })`. `AgentWorkflowDefinition` and `AgentWorkflowWorldDefinition` are exported from `eve` for the `defineAgent({ experimental: { workflow } })` config shape. `ExperimentalWorkflowToolInput` is exported from `eve/tools` for the `experimental_workflow(...)` config shape.
|
|
56
56
|
|
|
@@ -68,33 +68,33 @@ A few non-`define*` helpers round out the set: `disableTool` and `experimental_w
|
|
|
68
68
|
|
|
69
69
|
## Imports at a glance
|
|
70
70
|
|
|
71
|
-
| Import | Holds
|
|
72
|
-
| ----------------------------------------------------------- |
|
|
73
|
-
| `eve` | `defineAgent`, `defineRemoteAgent`, agent config types
|
|
74
|
-
| `eve/tools` | `defineTool`, `defineDynamic`, `disableTool`, `experimental_workflow`
|
|
75
|
-
| `eve/tools/defaults` | the built-in tools as plain values
|
|
76
|
-
| `eve/tools/approval` | `always`, `once`, `never`
|
|
77
|
-
| `eve/tools/sleep` | opt-in durable `sleep` tool
|
|
78
|
-
| `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection`
|
|
79
|
-
| `eve/channels` | `defineChannel`, route verbs
|
|
80
|
-
| `eve/channels/eve` | `eveChannel`
|
|
81
|
-
| `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth`
|
|
82
|
-
| `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories
|
|
83
|
-
| `eve/hooks` | `defineHook`
|
|
84
|
-
| `eve/schedules` | `defineSchedule`
|
|
85
|
-
| `eve/skills` | `defineSkill`, `defineDynamic`
|
|
86
|
-
| `eve/instructions` | `defineInstructions`, `defineDynamic`
|
|
87
|
-
| `eve/context` | `defineState`, session and state types
|
|
88
|
-
| `eve/sandbox` | `defineSandbox`, backends
|
|
89
|
-
| `eve/instrumentation` | `defineInstrumentation`, `isChannel`
|
|
90
|
-
| `eve/models/openai` | `experimental_chatgpt`
|
|
91
|
-
| `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types
|
|
92
|
-
| `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity`
|
|
93
|
-
| `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter`
|
|
94
|
-
| `eve/evals/loaders` | `loadJson`, `loadYaml`
|
|
95
|
-
| `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent`
|
|
96
|
-
| `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins
|
|
97
|
-
| [`eve/client`](../guides/client/overview) | `Client`, `ClientSession`
|
|
71
|
+
| Import | Holds |
|
|
72
|
+
| ----------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
73
|
+
| `eve` | `defineAgent`, `defineRemoteAgent`, `defineDynamic`, agent config types |
|
|
74
|
+
| `eve/tools` | `defineTool`, `defineDynamic`, `disableTool`, `experimental_workflow` |
|
|
75
|
+
| `eve/tools/defaults` | the built-in tools as plain values |
|
|
76
|
+
| `eve/tools/approval` | `always`, `once`, `never` |
|
|
77
|
+
| `eve/tools/sleep` | opt-in durable `sleep` tool |
|
|
78
|
+
| `eve/connections` | `defineMcpClientConnection`, `defineOpenAPIConnection` |
|
|
79
|
+
| `eve/channels` | `defineChannel`, route verbs |
|
|
80
|
+
| `eve/channels/eve` | `eveChannel` |
|
|
81
|
+
| `eve/channels/auth` | `localDev`, `vercelOidc`, `placeholderAuth` |
|
|
82
|
+
| `eve/channels/{slack,discord,teams,telegram,twilio,github}` | platform channel factories |
|
|
83
|
+
| `eve/hooks` | `defineHook` |
|
|
84
|
+
| `eve/schedules` | `defineSchedule` |
|
|
85
|
+
| `eve/skills` | `defineSkill`, `defineDynamic` |
|
|
86
|
+
| `eve/instructions` | `defineInstructions`, `defineDynamic` |
|
|
87
|
+
| `eve/context` | `defineState`, session and state types |
|
|
88
|
+
| `eve/sandbox` | `defineSandbox`, backends |
|
|
89
|
+
| `eve/instrumentation` | `defineInstrumentation`, `isChannel` |
|
|
90
|
+
| `eve/models/openai` | `experimental_chatgpt` |
|
|
91
|
+
| `eve/evals` | `defineEval`, `defineEvalConfig`, `mockModel`, eval types |
|
|
92
|
+
| `eve/evals/expect` | `includes`, `equals`, `matches`, `similarity` |
|
|
93
|
+
| `eve/evals/reporters` | `Braintrust`, `JUnit`, `EvalReporter` |
|
|
94
|
+
| `eve/evals/loaders` | `loadJson`, `loadYaml` |
|
|
95
|
+
| `eve/react`, `eve/vue`, `eve/svelte` | `useEveAgent` |
|
|
96
|
+
| `eve/next`, `eve/nuxt`, `eve/sveltekit` | framework bundler plugins |
|
|
97
|
+
| [`eve/client`](../guides/client/overview) | `Client`, `ClientSession` |
|
|
98
98
|
|
|
99
99
|
Exported types ship from the same entrypoint as the helper they describe (for example `ToolDefinition` and `ToolContext` from `eve/tools`). For the exhaustive list, read `packages/eve/src/public/index.ts`.
|
|
100
100
|
|
package/docs/subagents.mdx
CHANGED
|
@@ -47,11 +47,41 @@ export default defineAgent({
|
|
|
47
47
|
|
|
48
48
|
`description` is required. The parent reads it to decide whether to delegate, so the compiler rejects any subagent whose `agent.ts` leaves it out.
|
|
49
49
|
|
|
50
|
+
### Conditional availability
|
|
51
|
+
|
|
52
|
+
To expose a declared subagent only for certain sessions or turns, export
|
|
53
|
+
`defineDynamic` from that subagent's `agent.ts`. Return a `defineAgent`
|
|
54
|
+
configuration to expose the subagent, or nil to omit it from the parent's tools.
|
|
55
|
+
|
|
56
|
+
```ts title="agent/subagents/researcher/agent.ts"
|
|
57
|
+
import { defineAgent, defineDynamic } from "eve";
|
|
58
|
+
|
|
59
|
+
export default defineDynamic({
|
|
60
|
+
events: {
|
|
61
|
+
"session.started": (_event, ctx) =>
|
|
62
|
+
ctx.session.auth.current?.attributes.research === true
|
|
63
|
+
? defineAgent({
|
|
64
|
+
description: "Investigate ambiguous questions before the parent responds.",
|
|
65
|
+
model: "anthropic/claude-opus-4.8",
|
|
66
|
+
})
|
|
67
|
+
: null,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Resolvers run at `session.started` or `turn.started`; `step.started` is not
|
|
73
|
+
supported for subagents. A nil result (`null` or `undefined`) removes the
|
|
74
|
+
subagent's description and tool definition from the model-visible surface.
|
|
75
|
+
The subagent's filesystem manifest is always compiled; a non-nil result injects
|
|
76
|
+
the returned agent configuration when the child runs.
|
|
77
|
+
See [Dynamic capabilities](./guides/dynamic-capabilities#dynamic-subagents) for
|
|
78
|
+
scope precedence, failure behavior, and the dispatch-time guard.
|
|
79
|
+
|
|
50
80
|
Minimum files:
|
|
51
81
|
|
|
52
82
|
```text
|
|
53
83
|
agent/subagents/researcher/
|
|
54
|
-
├── agent.ts # required
|
|
84
|
+
├── agent.ts # required
|
|
55
85
|
├── instructions.md # or instructions.ts, optional
|
|
56
86
|
├── tools/ # optional, its own tools
|
|
57
87
|
├── skills/ # optional, its own skills
|
|
@@ -100,7 +130,7 @@ A declared subagent's tool name is the bare path-derived name, with no prefix. `
|
|
|
100
130
|
}
|
|
101
131
|
```
|
|
102
132
|
|
|
103
|
-
Because the name lives in the same runtime tool namespace as authored tools, a subagent named `researcher` collides with a tool named `researcher`. eve rejects
|
|
133
|
+
Because the name lives in the same runtime tool namespace as authored tools, a subagent named `researcher` collides with a tool named `researcher`. eve rejects static collisions at build time and active dynamic collisions at runtime rather than picking a winner, so keep subagent directory names distinct from tool names.
|
|
104
134
|
|
|
105
135
|
Do not rely on subagent delegation by itself as an approval boundary. Put sensitive tools behind `approval`, connection approval, route/session authorization, or other controls wherever those tools can be called.
|
|
106
136
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.29.
|
|
3
|
+
"version": "0.29.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -293,6 +293,7 @@
|
|
|
293
293
|
"undici": "8.9.0"
|
|
294
294
|
},
|
|
295
295
|
"devDependencies": {
|
|
296
|
+
"@agentclientprotocol/sdk": "1.3.0",
|
|
296
297
|
"@ai-sdk/anthropic": "^4.0.18",
|
|
297
298
|
"@ai-sdk/google": "^4.0.21",
|
|
298
299
|
"@ai-sdk/mcp": "^2.0.16",
|
|
@@ -384,7 +385,7 @@
|
|
|
384
385
|
"clean": "node -e \"fs.rmSync('dist', { recursive: true, force: true })\"",
|
|
385
386
|
"build": "pnpm run check:bin-runtime-dependencies && pnpm run build:js && node ./scripts/copy-docs.mjs && node ./scripts/stamp-version-tokens.mjs",
|
|
386
387
|
"build:compiled": "node ./scripts/vendor-compiled.mjs",
|
|
387
|
-
"build:js": "pnpm run build:compiled && pnpm run clean && pnpm run build:types && node ./scripts/copy-compiled-assets.mjs && node ./scripts/build-rolldown.mjs && node ./scripts/copy-runtime-assets.mjs",
|
|
388
|
+
"build:js": "pnpm run build:compiled && pnpm run clean && pnpm run build:types && node ./scripts/copy-compiled-assets.mjs && node --conditions=eve-source ./scripts/build-rolldown.mjs && node ./scripts/copy-runtime-assets.mjs",
|
|
388
389
|
"build:types": "pnpm run build:compiled && tsc -p tsconfig.build.json",
|
|
389
390
|
"check:bin-runtime-dependencies": "node ./scripts/check-bin-runtime-dependencies.mjs",
|
|
390
391
|
"dev": "pnpm run build:compiled && node ./scripts/copy-runtime-assets.mjs && tsc -p tsconfig.dev.json --watch --preserveWatchOutput",
|