eve 0.6.0-beta.8 → 0.7.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 +278 -0
- package/README.md +9 -6
- package/dist/docs/public/README.md +1 -1
- package/dist/docs/public/advanced/auth-and-route-protection.md +3 -1
- package/dist/docs/public/advanced/default-harness.md +2 -2
- package/dist/docs/public/advanced/dev-tui.md +9 -11
- package/dist/docs/public/advanced/instrumentation.md +1 -1
- package/dist/docs/public/advanced/meta.json +0 -1
- package/dist/docs/public/advanced/security-model.md +1 -1
- package/dist/docs/public/advanced/session-context.md +1 -1
- package/dist/docs/public/agent-config.md +6 -3
- package/dist/docs/public/channels/eve.mdx +1 -1
- package/dist/docs/public/channels/slack.mdx +14 -2
- package/dist/docs/public/connections.mdx +3 -1
- package/dist/docs/public/evals/assertions.mdx +108 -0
- package/dist/docs/public/evals/cases.mdx +143 -0
- package/dist/docs/public/evals/judge.mdx +94 -0
- package/dist/docs/public/evals/meta.json +4 -0
- package/dist/docs/public/evals/overview.mdx +118 -0
- package/dist/docs/public/evals/reporters.mdx +62 -0
- package/dist/docs/public/evals/running.mdx +63 -0
- package/dist/docs/public/evals/targets.mdx +54 -0
- package/dist/docs/public/frontend/nextjs.mdx +13 -4
- package/dist/docs/public/frontend/nuxt.mdx +4 -4
- package/dist/docs/public/frontend/sveltekit.mdx +2 -2
- package/dist/docs/public/getting-started.mdx +25 -13
- package/dist/docs/public/meta.json +1 -0
- package/dist/docs/public/reference/cli.md +31 -9
- package/dist/docs/public/reference/typescript-api.md +6 -2
- package/dist/docs/public/sandbox.mdx +3 -1
- package/dist/docs/public/tools.mdx +0 -4
- package/dist/docs/public/tutorial/connect-a-warehouse.mdx +1 -1
- package/dist/docs/public/tutorial/first-agent.mdx +5 -2
- package/dist/src/chunks/{use-eve-agent-DCZbkLG7.js → use-eve-agent-DErQj5hs.js} +125 -37
- package/dist/src/chunks/{use-eve-agent-DoheC4_o.js → use-eve-agent-DoR8C4i6.js} +125 -37
- package/dist/src/cli/banner.d.ts +7 -0
- package/dist/src/cli/banner.js +1 -0
- package/dist/src/cli/commands/channel-add-conflicts.d.ts +1 -1
- package/dist/src/cli/commands/channels.d.ts +9 -6
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/deploy.d.ts +21 -0
- package/dist/src/cli/commands/deploy.js +1 -0
- package/dist/src/cli/commands/init-git.d.ts +15 -0
- package/dist/src/cli/commands/init-git.js +1 -0
- package/dist/src/cli/commands/init.d.ts +29 -0
- package/dist/src/cli/commands/init.js +1 -0
- package/dist/src/cli/commands/link.d.ts +21 -0
- package/dist/src/cli/commands/link.js +1 -0
- package/dist/src/cli/commands/preconditions.d.ts +7 -0
- package/dist/src/cli/commands/preconditions.js +1 -0
- package/dist/src/cli/commands/register-project-commands.d.ts +12 -0
- package/dist/src/cli/commands/register-project-commands.js +1 -0
- package/dist/src/cli/dev/tui/agent-header.d.ts +15 -9
- package/dist/src/cli/dev/tui/agent-header.js +1 -1
- package/dist/src/cli/dev/tui/blocks.d.ts +1 -1
- package/dist/src/cli/dev/tui/blocks.js +3 -2
- package/dist/src/cli/dev/tui/command-typeahead.d.ts +47 -0
- package/dist/src/cli/dev/tui/command-typeahead.js +1 -0
- package/dist/src/cli/dev/tui/dev-rebuild-status.d.ts +21 -0
- package/dist/src/cli/dev/tui/dev-rebuild-status.js +1 -0
- package/dist/src/cli/dev/tui/errors.d.ts +18 -0
- package/dist/src/cli/dev/tui/errors.js +1 -1
- package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +14 -0
- package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -0
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +54 -0
- package/dist/src/cli/dev/tui/prompt-commands.js +2 -0
- package/dist/src/cli/dev/tui/runner.d.ts +62 -5
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +48 -0
- package/dist/src/cli/dev/tui/setup-commands.js +2 -0
- package/dist/src/cli/dev/tui/setup-flow.d.ts +35 -0
- package/dist/src/cli/dev/tui/setup-issues.d.ts +40 -0
- package/dist/src/cli/dev/tui/setup-issues.js +1 -0
- package/dist/src/cli/dev/tui/setup-panel.d.ts +103 -0
- package/dist/src/cli/dev/tui/setup-panel.js +1 -0
- package/dist/src/cli/dev/tui/status-line.d.ts +25 -0
- package/dist/src/cli/dev/tui/status-line.js +1 -0
- package/dist/src/cli/dev/tui/stream-format.d.ts +16 -1
- package/dist/src/cli/dev/tui/stream-format.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +32 -3
- package/dist/src/cli/dev/tui/terminal-renderer.js +5 -2
- package/dist/src/cli/dev/tui/test/index.d.ts +3 -1
- package/dist/src/cli/dev/tui/test/index.js +1 -1
- package/dist/src/cli/dev/tui/test/mock-terminal.d.ts +1 -0
- package/dist/src/cli/dev/tui/test/mock-terminal.js +1 -1
- package/dist/src/cli/dev/tui/theme.d.ts +10 -0
- package/dist/src/cli/dev/tui/theme.js +1 -1
- package/dist/src/cli/dev/tui/tui-prompter.d.ts +20 -0
- package/dist/src/cli/dev/tui/tui-prompter.js +1 -0
- package/dist/src/cli/dev/tui/tui.d.ts +6 -8
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/tui/types.d.ts +4 -3
- package/dist/src/cli/dev/tui/vercel-status.d.ts +47 -0
- package/dist/src/cli/dev/tui/vercel-status.js +1 -0
- package/dist/src/cli/run.d.ts +12 -19
- package/dist/src/cli/run.js +2 -2
- package/dist/src/client/client.d.ts +8 -0
- package/dist/src/client/client.js +1 -1
- package/dist/src/client/file-parts.d.ts +18 -0
- package/dist/src/client/file-parts.js +1 -0
- package/dist/src/client/index.d.ts +3 -2
- package/dist/src/client/index.js +1 -1
- package/dist/src/client/message-response.js +1 -1
- package/dist/src/client/open-stream.d.ts +6 -0
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session-utils.d.ts +5 -0
- package/dist/src/client/session-utils.js +1 -1
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +9 -2
- package/dist/src/compiled/.vendor-stamp.json +8 -8
- package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +56 -31
- package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/google/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
- package/dist/src/compiled/@ai-sdk/openai/index.d.ts +16 -9
- package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
- package/dist/src/compiled/@ai-sdk/otel/index.js +2 -2
- package/dist/src/compiled/@vercel/sandbox/index.js +1 -1
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +4 -2
- package/dist/src/compiled/@workflow/core/runtime/wait-until.d.ts +18 -0
- package/dist/src/compiled/@workflow/core/runtime.d.ts +3 -1
- package/dist/src/compiled/@workflow/core/runtime.js +28 -28
- package/dist/src/compiled/@workflow/core/serialization.d.ts +41 -0
- package/dist/src/compiled/@workflow/core/util.d.ts +0 -5
- 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/world/index.d.ts +2 -2
- package/dist/src/compiled/@workflow/world/queue.d.ts +28 -2
- package/dist/src/compiled/_chunks/workflow/{dist-gEXVSMPU.js → dist-CkMRLaRV.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/functions-DuPjIvMH.js +1 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-CEAS3opc.js +12 -0
- package/dist/src/compiled/_chunks/workflow/sleep-Cup6vPoA.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{symbols-BWCAoPHE.js → symbols-BUTtwS7j.js} +1 -1
- package/dist/src/compiled/just-bash/index.d.ts +27 -4
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/manifest.d.ts +8 -8
- package/dist/src/compiler/normalize-agent-config.d.ts +0 -10
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-channel.d.ts +2 -1
- package/dist/src/compiler/normalize-channel.js +1 -1
- package/dist/src/compiler/normalize-connection.d.ts +2 -1
- package/dist/src/compiler/normalize-connection.js +1 -1
- package/dist/src/compiler/normalize-helpers.d.ts +5 -0
- package/dist/src/compiler/normalize-helpers.js +1 -1
- package/dist/src/compiler/normalize-instructions.d.ts +3 -2
- package/dist/src/compiler/normalize-instructions.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +2 -2
- package/dist/src/compiler/normalize-sandbox.d.ts +2 -1
- package/dist/src/compiler/normalize-sandbox.js +1 -1
- package/dist/src/compiler/normalize-schedule.d.ts +2 -1
- package/dist/src/compiler/normalize-schedule.js +1 -1
- package/dist/src/compiler/normalize-skill.d.ts +2 -1
- package/dist/src/compiler/normalize-skill.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +4 -1
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/normalize-tool.d.ts +2 -1
- package/dist/src/compiler/normalize-tool.js +1 -1
- package/dist/src/compiler/workspace-resources.js +1 -1
- package/dist/src/context/node.d.ts +1 -1
- package/dist/src/evals/assertions/collector.d.ts +43 -0
- package/dist/src/evals/assertions/collector.js +1 -0
- package/dist/src/evals/assertions/run.d.ts +72 -0
- package/dist/src/evals/assertions/run.js +2 -0
- package/dist/src/evals/autoevals-client.js +2 -0
- package/dist/src/evals/cli/eval-client.d.ts +22 -0
- package/dist/src/evals/cli/eval-client.js +1 -0
- package/dist/src/evals/cli/eval.d.ts +12 -3
- package/dist/src/evals/cli/eval.js +1 -1
- package/dist/src/evals/context.d.ts +19 -0
- package/dist/src/evals/context.js +1 -0
- package/dist/src/evals/define-eval-config.d.ts +16 -0
- package/dist/src/evals/define-eval-config.js +1 -0
- package/dist/src/evals/define-eval.d.ts +20 -0
- package/dist/src/evals/define-eval.js +1 -0
- package/dist/src/evals/expect/index.d.ts +25 -0
- package/dist/src/evals/expect/index.js +1 -0
- package/dist/src/evals/index.d.ts +7 -2
- package/dist/src/evals/index.js +1 -1
- package/dist/src/evals/judge.d.ts +20 -0
- package/dist/src/evals/judge.js +1 -0
- package/dist/src/evals/match.d.ts +67 -0
- package/dist/src/evals/match.js +1 -0
- package/dist/src/evals/reporters/index.d.ts +1 -0
- package/dist/src/evals/reporters/index.js +1 -1
- package/dist/src/evals/requirements.d.ts +3 -0
- package/dist/src/evals/requirements.js +1 -0
- package/dist/src/evals/runner/artifacts.d.ts +7 -6
- package/dist/src/evals/runner/artifacts.js +3 -3
- package/dist/src/evals/runner/derive-run-facts.d.ts +17 -3
- package/dist/src/evals/runner/derive-run-facts.js +1 -1
- package/dist/src/evals/runner/discover.d.ts +31 -10
- package/dist/src/evals/runner/discover.js +1 -1
- package/dist/src/evals/runner/execute-eval.d.ts +25 -0
- package/dist/src/evals/runner/execute-eval.js +1 -0
- package/dist/src/evals/runner/execute-task.d.ts +31 -0
- package/dist/src/evals/runner/execute-task.js +1 -0
- package/dist/src/evals/runner/reporters/braintrust.d.ts +7 -5
- package/dist/src/evals/runner/reporters/braintrust.js +2 -2
- package/dist/src/evals/runner/reporters/console.d.ts +4 -4
- package/dist/src/evals/runner/reporters/console.js +1 -1
- package/dist/src/evals/runner/reporters/junit.d.ts +10 -0
- package/dist/src/evals/runner/reporters/junit.js +4 -0
- package/dist/src/evals/runner/reporters/types.d.ts +14 -8
- package/dist/src/evals/runner/run-evals.d.ts +38 -0
- package/dist/src/evals/runner/run-evals.js +1 -0
- package/dist/src/evals/runner/verdict.d.ts +13 -0
- package/dist/src/evals/runner/verdict.js +1 -0
- package/dist/src/evals/session.d.ts +52 -0
- package/dist/src/evals/session.js +1 -0
- package/dist/src/evals/target.d.ts +23 -0
- package/dist/src/evals/target.js +1 -0
- package/dist/src/evals/types.d.ts +353 -165
- package/dist/src/execution/compaction.d.ts +14 -0
- package/dist/src/execution/compaction.js +1 -0
- package/dist/src/execution/delegated-parent-notification.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/sandbox/bash-tool.d.ts +6 -6
- package/dist/src/execution/sandbox/bash-tool.js +1 -1
- package/dist/src/execution/sandbox/bindings/local.d.ts +11 -0
- package/dist/src/execution/sandbox/bindings/local.js +1 -1
- package/dist/src/execution/sandbox/glob-tool.js +3 -3
- package/dist/src/execution/sandbox/grep-tool.js +3 -3
- package/dist/src/execution/sandbox/read-file-tool.js +1 -1
- package/dist/src/execution/subagent-adapter.js +1 -1
- package/dist/src/execution/tool-auth.js +1 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/workflow-runtime.d.ts +2 -2
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/action-result-helpers.js +1 -1
- package/dist/src/harness/authorization.d.ts +26 -0
- package/dist/src/harness/authorization.js +1 -1
- package/dist/src/harness/code-mode-lifecycle.js +1 -1
- package/dist/src/harness/emission.d.ts +12 -5
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/model-call-error.d.ts +35 -6
- package/dist/src/harness/model-call-error.js +1 -1
- package/dist/src/harness/step-hooks.d.ts +10 -4
- package/dist/src/harness/step-hooks.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/harness/tools.d.ts +4 -6
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/turn-tag-state.d.ts +4 -0
- package/dist/src/harness/turn-tag-state.js +1 -1
- package/dist/src/harness/types.d.ts +4 -15
- package/dist/src/internal/application/cache-metadata.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.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/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module-loader.d.ts +4 -1
- package/dist/src/internal/authored-module-loader.js +2 -2
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +11 -0
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/host/build-application.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/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/dev-watcher-log.d.ts +37 -0
- package/dist/src/internal/nitro/host/dev-watcher-log.js +1 -0
- package/dist/src/internal/nitro/host/ports.d.ts +8 -0
- package/dist/src/internal/nitro/host/ports.js +1 -0
- package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
- package/dist/src/internal/nitro/host/server-external-packages.d.ts +1 -1
- package/dist/src/internal/nitro/host/server-external-packages.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +1 -1
- package/dist/src/internal/nitro/host/start-production-server.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.d.ts +5 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +31 -2
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.d.ts +13 -0
- package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -1
- package/dist/src/internal/nitro/routes/info.d.ts +2 -2
- package/dist/src/internal/nitro/routes/info.js +1 -1
- package/dist/src/internal/workflow/queue-namespace.d.ts +5 -0
- package/dist/src/internal/workflow/queue-namespace.js +1 -0
- package/dist/src/internal/workflow-bundle/builder-support.js +2 -2
- package/dist/src/internal/workflow-bundle/builder.js +3 -5
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js +4 -4
- package/dist/src/protocol/message.d.ts +15 -0
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/public/channels/slack/api.d.ts +8 -0
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/connections.d.ts +26 -18
- package/dist/src/public/channels/slack/connections.js +1 -1
- package/dist/src/public/channels/slack/defaults.d.ts +5 -2
- package/dist/src/public/channels/slack/defaults.js +1 -1
- package/dist/src/public/channels/slack/index.d.ts +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +65 -5
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/teams/defaults.js +1 -1
- package/dist/src/public/connections/errors.d.ts +8 -0
- package/dist/src/public/definitions/tool.d.ts +0 -33
- package/dist/src/public/next/index.d.ts +7 -1
- package/dist/src/public/next/index.js +1 -1
- package/dist/src/public/next/server.d.ts +1 -0
- package/dist/src/public/next/server.js +1 -1
- package/dist/src/public/nuxt/dev-server.js +1 -1
- package/dist/src/public/sandbox/backends/local.d.ts +2 -3
- package/dist/src/public/sveltekit/dev-server.js +1 -1
- package/dist/src/public/sveltekit/index.d.ts +1 -1
- package/dist/src/public/tools/defaults.d.ts +2 -4
- package/dist/src/public/tools/defaults.js +1 -1
- package/dist/src/public/tools/define-bash-tool.d.ts +3 -3
- package/dist/src/public/tools/define-bash-tool.js +1 -1
- package/dist/src/public/tools/define-read-file-tool.d.ts +0 -6
- package/dist/src/public/tools/define-read-file-tool.js +1 -1
- package/dist/src/public/tools/index.d.ts +2 -2
- package/dist/src/public/tools/index.js +1 -1
- package/dist/src/public/tools/internal.js +1 -1
- package/dist/src/runtime/actions/types.d.ts +11 -11
- package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
- package/dist/src/runtime/agent/mock-model-fixtures.js +3 -2
- package/dist/src/runtime/agent/mock-model-skill-selection.js +3 -4
- package/dist/src/runtime/connections/callback-route.js +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/scoped-authorization.d.ts +21 -5
- package/dist/src/runtime/connections/scoped-authorization.js +1 -1
- package/dist/src/runtime/connections/types.d.ts +33 -0
- package/dist/src/runtime/connections/validate-authorization.js +1 -1
- package/dist/src/runtime/framework-tools/bash.d.ts +3 -3
- package/dist/src/runtime/framework-tools/bash.js +1 -1
- package/dist/src/runtime/framework-tools/connection-search-dynamic.d.ts +1 -1
- package/dist/src/runtime/framework-tools/connection-search-dynamic.js +1 -1
- package/dist/src/runtime/framework-tools/file-state.d.ts +3 -3
- package/dist/src/runtime/framework-tools/index.js +1 -1
- package/dist/src/runtime/framework-tools/read-file.js +2 -2
- package/dist/src/runtime/framework-tools/todo.d.ts +7 -0
- package/dist/src/runtime/framework-tools/todo.js +2 -2
- package/dist/src/runtime/governance/auth/http-basic.js +1 -1
- package/dist/src/runtime/input/types.d.ts +1 -1
- package/dist/src/runtime/resolve-tool.d.ts +2 -2
- package/dist/src/runtime/resolve-tool.js +1 -1
- package/dist/src/runtime/sandbox/keys.js +1 -1
- package/dist/src/runtime/session-callback-route.js +1 -1
- package/dist/src/runtime/types.d.ts +1 -7
- package/dist/src/services/dev-client/client-options.d.ts +8 -0
- package/dist/src/services/dev-client/client-options.js +1 -0
- package/dist/src/services/dev-client/runtime-artifacts.d.ts +13 -0
- package/dist/src/services/dev-client/runtime-artifacts.js +1 -0
- package/dist/src/services/dev-client.d.ts +13 -46
- package/dist/src/services/dev-client.js +1 -1
- package/dist/src/services/inspect-application.js +1 -1
- package/dist/src/setup/ask.d.ts +205 -0
- package/dist/src/setup/ask.js +1 -0
- package/dist/src/setup/boxes/add-channels.d.ts +100 -16
- package/dist/src/setup/boxes/add-channels.js +2 -1
- package/dist/src/setup/boxes/add-connections.d.ts +13 -23
- package/dist/src/setup/boxes/add-connections.js +1 -1
- package/dist/src/setup/boxes/apply-ai-gateway-credential.d.ts +2 -2
- package/dist/src/setup/boxes/apply-ai-gateway-credential.js +1 -1
- package/dist/src/setup/boxes/deploy-project.d.ts +46 -14
- package/dist/src/setup/boxes/deploy-project.js +1 -1
- package/dist/src/setup/boxes/detect-ai-gateway.d.ts +10 -3
- package/dist/src/setup/boxes/detect-ai-gateway.js +1 -1
- package/dist/src/setup/boxes/link-project.d.ts +3 -3
- package/dist/src/setup/boxes/link-project.js +1 -1
- package/dist/src/setup/boxes/one-shot-next-steps.d.ts +18 -0
- package/dist/src/setup/boxes/one-shot-next-steps.js +2 -0
- package/dist/src/setup/boxes/preflight.d.ts +14 -6
- package/dist/src/setup/boxes/preflight.js +1 -1
- package/dist/src/setup/boxes/resolve-provisioning.d.ts +36 -8
- package/dist/src/setup/boxes/resolve-provisioning.js +1 -1
- package/dist/src/setup/boxes/resolve-target.d.ts +25 -8
- package/dist/src/setup/boxes/resolve-target.js +1 -1
- package/dist/src/setup/boxes/scaffold.d.ts +12 -6
- package/dist/src/setup/boxes/scaffold.js +1 -1
- package/dist/src/setup/boxes/select-channels.d.ts +38 -9
- package/dist/src/setup/boxes/select-channels.js +1 -1
- package/dist/src/setup/boxes/select-chat.d.ts +15 -11
- package/dist/src/setup/boxes/select-chat.js +1 -1
- package/dist/src/setup/boxes/select-connections.d.ts +30 -0
- package/dist/src/setup/boxes/select-connections.js +1 -0
- package/dist/src/setup/boxes/select-model.d.ts +18 -14
- package/dist/src/setup/boxes/select-model.js +1 -1
- package/dist/src/setup/boxes/select-setup-mode.d.ts +32 -0
- package/dist/src/setup/boxes/select-setup-mode.js +1 -0
- package/dist/src/setup/channel-add-conflicts.d.ts +28 -0
- package/dist/src/setup/channel-add-conflicts.js +1 -0
- package/dist/src/setup/cli/channel-setup-prompter.d.ts +23 -0
- package/dist/src/setup/cli/channel-setup-prompter.js +1 -0
- package/dist/src/setup/cli/connection-add-prompter.d.ts +8 -0
- package/dist/src/setup/cli/connection-add-prompter.js +1 -0
- package/dist/src/setup/{scaffold/cli → cli}/index.d.ts +4 -3
- package/dist/src/setup/cli/index.js +1 -0
- package/dist/src/setup/{scaffold/cli → cli}/prompt-ui.d.ts +39 -15
- package/dist/src/setup/cli/prompt-ui.js +5 -0
- package/dist/src/setup/{scaffold/cli → cli}/rail-log.d.ts +2 -0
- package/dist/src/setup/{scaffold/cli → cli}/rail-log.js +2 -2
- package/dist/src/setup/{scaffold/cli → cli}/select-component.d.ts +18 -3
- package/dist/src/setup/cli/select-component.js +1 -0
- package/dist/src/setup/cli/select-option-codec.d.ts +12 -0
- package/dist/src/setup/cli/select-option-codec.js +1 -0
- package/dist/src/setup/{scaffold/cli → cli}/select-state.d.ts +13 -1
- package/dist/src/setup/cli/select-state.js +1 -0
- package/dist/src/setup/cli/whimsy.d.ts +16 -0
- package/dist/src/setup/cli/whimsy.js +1 -0
- package/dist/src/setup/{scaffold/steps/setup-connection.d.ts → connection-connector.d.ts} +3 -2
- package/dist/src/setup/connection-connector.js +1 -0
- package/dist/src/setup/flows/channels.d.ts +43 -0
- package/dist/src/setup/flows/channels.js +1 -0
- package/dist/src/setup/flows/deploy.d.ts +40 -0
- package/dist/src/setup/flows/deploy.js +1 -0
- package/dist/src/setup/flows/in-project.d.ts +16 -0
- package/dist/src/setup/flows/in-project.js +1 -0
- package/dist/src/setup/flows/link.d.ts +43 -0
- package/dist/src/setup/flows/link.js +1 -0
- package/dist/src/setup/flows/model.d.ts +112 -0
- package/dist/src/setup/flows/model.js +1 -0
- package/dist/src/setup/flows/vercel.d.ts +31 -0
- package/dist/src/setup/flows/vercel.js +2 -0
- package/dist/src/setup/gateway-models.js +1 -1
- package/dist/src/setup/headless.d.ts +1 -1
- package/dist/src/setup/index.d.ts +10 -4
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/onboarding.d.ts +7 -4
- package/dist/src/setup/onboarding.js +1 -1
- package/dist/src/setup/package-manager.d.ts +27 -0
- package/dist/src/setup/package-manager.js +1 -0
- package/dist/src/setup/primitives/index.d.ts +3 -0
- package/dist/src/setup/primitives/index.js +1 -0
- package/dist/src/setup/primitives/pm/bun.d.ts +10 -0
- package/dist/src/setup/primitives/pm/bun.js +1 -0
- package/dist/src/setup/primitives/pm/index.d.ts +11 -0
- package/dist/src/setup/primitives/pm/index.js +1 -0
- package/dist/src/setup/primitives/pm/npm.d.ts +10 -0
- package/dist/src/setup/primitives/pm/npm.js +1 -0
- package/dist/src/setup/primitives/pm/pnpm.d.ts +27 -0
- package/dist/src/setup/primitives/pm/pnpm.js +8 -0
- package/dist/src/setup/primitives/pm/run.d.ts +23 -0
- package/dist/src/setup/primitives/pm/run.js +1 -0
- package/dist/src/setup/primitives/pm/shared.d.ts +8 -0
- package/dist/src/setup/primitives/pm/shared.js +1 -0
- package/dist/src/setup/primitives/pm/types.d.ts +37 -0
- package/dist/src/setup/primitives/pm/types.js +1 -0
- package/dist/src/setup/primitives/pm/yarn.d.ts +10 -0
- package/dist/src/setup/primitives/pm/yarn.js +1 -0
- package/dist/src/setup/primitives/run-pnpm.d.ts +1 -0
- package/dist/src/setup/primitives/run-pnpm.js +1 -0
- package/dist/src/setup/{scaffold/primitives → primitives}/run-vercel.d.ts +7 -0
- package/dist/src/setup/primitives/run-vercel.js +1 -0
- package/dist/src/setup/project-name.d.ts +4 -0
- package/dist/src/setup/project-name.js +1 -0
- package/dist/src/setup/project-resolution.d.ts +54 -0
- package/dist/src/setup/project-resolution.js +1 -0
- package/dist/src/setup/prompter.d.ts +52 -4
- package/dist/src/setup/prompter.js +1 -1
- package/dist/src/setup/quit-guard.d.ts +1 -1
- package/dist/src/setup/run-vercel-link.d.ts +1 -1
- package/dist/src/setup/run-vercel-link.js +1 -1
- package/dist/src/setup/runner.d.ts +5 -4
- package/dist/src/setup/runner.js +1 -1
- package/dist/src/setup/scaffold/channels-catalog.d.ts +3 -3
- package/dist/src/setup/scaffold/channels-catalog.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.d.ts +26 -0
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -0
- package/dist/src/setup/scaffold/create/project.d.ts +54 -0
- package/dist/src/setup/scaffold/create/project.js +80 -0
- package/dist/src/setup/scaffold/index.d.ts +4 -4
- package/dist/src/setup/scaffold/index.js +1 -1
- package/dist/src/setup/scaffold/{channels.d.ts → update/channels.d.ts} +11 -0
- package/dist/src/setup/scaffold/update/channels.js +7 -0
- package/dist/src/setup/scaffold/{connections.d.ts → update/connections.d.ts} +1 -1
- package/dist/src/setup/scaffold/update/connections.js +21 -0
- package/dist/src/setup/scaffold/version-tokens.d.ts +11 -0
- package/dist/src/setup/scaffold/version-tokens.js +1 -0
- package/dist/src/setup/{scaffold/steps/setup-slackbot.d.ts → slackbot.d.ts} +24 -20
- package/dist/src/setup/slackbot.js +1 -0
- package/dist/src/setup/state.d.ts +62 -15
- package/dist/src/setup/state.js +1 -1
- package/dist/src/setup/step.d.ts +9 -18
- package/dist/src/setup/vercel-project.d.ts +15 -8
- package/dist/src/setup/vercel-project.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +9 -3
- package/dist/src/shared/default-agent-model.d.ts +5 -0
- package/dist/src/shared/default-agent-model.js +1 -0
- package/dist/src/shared/sandbox-backend.d.ts +11 -11
- package/dist/src/source-change/apply-model-name.d.ts +25 -0
- package/dist/src/source-change/apply-model-name.js +2 -0
- package/dist/src/source-change/static-source-change.d.ts +36 -0
- package/dist/src/source-change/static-source-change.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/package.json +23 -38
- package/dist/docs/public/advanced/evals.md +0 -121
- package/dist/src/cli/commands/setup.d.ts +0 -55
- package/dist/src/cli/commands/setup.js +0 -1
- package/dist/src/cli/dev/repl/input-requests.d.ts +0 -38
- package/dist/src/cli/dev/repl/input-requests.js +0 -1
- package/dist/src/cli/dev/repl/input.d.ts +0 -19
- package/dist/src/cli/dev/repl/input.js +0 -1
- package/dist/src/cli/dev/repl/repl.d.ts +0 -62
- package/dist/src/cli/dev/repl/repl.js +0 -2
- package/dist/src/cli/dev/repl/terminal.d.ts +0 -21
- package/dist/src/cli/dev/repl/terminal.js +0 -5
- package/dist/src/compiled/_chunks/workflow/resume-hook-0Zk0zSvq.js +0 -12
- package/dist/src/compiled/_chunks/workflow/sleep-DXZr2BgM.js +0 -1
- package/dist/src/evals/define-eval-suite.d.ts +0 -16
- package/dist/src/evals/define-eval-suite.js +0 -1
- package/dist/src/evals/runner/execute-case.d.ts +0 -23
- package/dist/src/evals/runner/execute-case.js +0 -1
- package/dist/src/evals/runner/execute-suite.d.ts +0 -24
- package/dist/src/evals/runner/execute-suite.js +0 -1
- package/dist/src/evals/scorers/autoevals-client.js +0 -2
- package/dist/src/evals/scorers/autoevals.d.ts +0 -58
- package/dist/src/evals/scorers/autoevals.js +0 -1
- package/dist/src/evals/scorers/json.d.ts +0 -10
- package/dist/src/evals/scorers/json.js +0 -1
- package/dist/src/evals/scorers/run.d.ts +0 -18
- package/dist/src/evals/scorers/run.js +0 -1
- package/dist/src/evals/scorers/sql.d.ts +0 -9
- package/dist/src/evals/scorers/sql.js +0 -1
- package/dist/src/evals/scorers/text.d.ts +0 -18
- package/dist/src/evals/scorers/text.js +0 -1
- package/dist/src/evals/scores/index.d.ts +0 -72
- package/dist/src/evals/scores/index.js +0 -1
- package/dist/src/execution/tool-compaction.d.ts +0 -9
- package/dist/src/execution/tool-compaction.js +0 -1
- package/dist/src/services/dev-client/stream.d.ts +0 -5
- package/dist/src/services/dev-client/stream.js +0 -1
- package/dist/src/services/dev-client/url.d.ts +0 -11
- package/dist/src/services/dev-client/url.js +0 -1
- package/dist/src/setup/channel-setup-prompter.d.ts +0 -8
- package/dist/src/setup/channel-setup-prompter.js +0 -1
- package/dist/src/setup/scaffold/channels.js +0 -7
- package/dist/src/setup/scaffold/cli/channel-add-prompter.d.ts +0 -12
- package/dist/src/setup/scaffold/cli/channel-add-prompter.js +0 -1
- package/dist/src/setup/scaffold/cli/channel-setup-prompter.d.ts +0 -56
- package/dist/src/setup/scaffold/cli/connection-add-prompter.d.ts +0 -44
- package/dist/src/setup/scaffold/cli/connection-add-prompter.js +0 -1
- package/dist/src/setup/scaffold/cli/index.js +0 -1
- package/dist/src/setup/scaffold/cli/prompt-ui.js +0 -5
- package/dist/src/setup/scaffold/cli/select-component.js +0 -1
- package/dist/src/setup/scaffold/cli/select-state.js +0 -1
- package/dist/src/setup/scaffold/connections.js +0 -21
- package/dist/src/setup/scaffold/pnpm-workspace.d.ts +0 -3
- package/dist/src/setup/scaffold/pnpm-workspace.js +0 -11
- package/dist/src/setup/scaffold/primitives/detect-deployment.d.ts +0 -13
- package/dist/src/setup/scaffold/primitives/detect-deployment.js +0 -1
- package/dist/src/setup/scaffold/primitives/index.d.ts +0 -3
- package/dist/src/setup/scaffold/primitives/index.js +0 -1
- package/dist/src/setup/scaffold/primitives/pnpm-invocation.d.ts +0 -12
- package/dist/src/setup/scaffold/primitives/pnpm-invocation.js +0 -1
- package/dist/src/setup/scaffold/primitives/run-pnpm.d.ts +0 -17
- package/dist/src/setup/scaffold/primitives/run-pnpm.js +0 -1
- package/dist/src/setup/scaffold/primitives/run-vercel.js +0 -1
- package/dist/src/setup/scaffold/project.d.ts +0 -21
- package/dist/src/setup/scaffold/project.js +0 -80
- package/dist/src/setup/scaffold/steps/deploy-to-vercel.d.ts +0 -17
- package/dist/src/setup/scaffold/steps/deploy-to-vercel.js +0 -1
- package/dist/src/setup/scaffold/steps/index.d.ts +0 -4
- package/dist/src/setup/scaffold/steps/index.js +0 -1
- package/dist/src/setup/scaffold/steps/project-resolution.d.ts +0 -19
- package/dist/src/setup/scaffold/steps/project-resolution.js +0 -1
- package/dist/src/setup/scaffold/steps/run-add-connection.d.ts +0 -40
- package/dist/src/setup/scaffold/steps/run-add-connection.js +0 -1
- package/dist/src/setup/scaffold/steps/run-add-to-agent.d.ts +0 -81
- package/dist/src/setup/scaffold/steps/run-add-to-agent.js +0 -2
- package/dist/src/setup/scaffold/steps/setup-connection.js +0 -1
- package/dist/src/setup/scaffold/steps/setup-slackbot.js +0 -1
- /package/dist/src/{setup/scaffold/cli/channel-setup-prompter.js → cli/dev/tui/setup-flow.js} +0 -0
- /package/dist/src/evals/{scorers/autoevals-client.d.ts → autoevals-client.d.ts} +0 -0
- /package/dist/src/setup/{scaffold/cli → cli}/command-output.d.ts +0 -0
- /package/dist/src/setup/{scaffold/cli → cli}/command-output.js +0 -0
- /package/dist/src/setup/{scaffold/human-action.d.ts → human-action.d.ts} +0 -0
- /package/dist/src/setup/{scaffold/human-action.js → human-action.js} +0 -0
- /package/dist/src/setup/{scaffold/primitives → primitives}/process-output.d.ts +0 -0
- /package/dist/src/setup/{scaffold/primitives → primitives}/process-output.js +0 -0
- /package/dist/src/setup/scaffold/{web-template.d.ts → create/web-template.d.ts} +0 -0
- /package/dist/src/setup/scaffold/{web-template.js → create/web-template.js} +0 -0
- /package/dist/src/setup/scaffold/{module-files.d.ts → update/module-files.d.ts} +0 -0
- /package/dist/src/setup/scaffold/{module-files.js → update/module-files.js} +0 -0
- /package/dist/src/setup/scaffold/{package-json.d.ts → update/package-json.d.ts} +0 -0
- /package/dist/src/setup/scaffold/{package-json.js → update/package-json.js} +0 -0
- /package/dist/src/setup/scaffold/{primitives → update}/update-connection-connector.d.ts +0 -0
- /package/dist/src/setup/scaffold/{primitives → update}/update-connection-connector.js +0 -0
- /package/dist/src/setup/scaffold/{primitives → update}/update-slack-channel.d.ts +0 -0
- /package/dist/src/setup/scaffold/{primitives → update}/update-slack-channel.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{boolean,object,record,string,unknown}from"../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.js";import"../node_modules/.pnpm/zod@4.4.3/node_modules/zod/index.js";import{
|
|
1
|
+
import{boolean,object,record,string,unknown}from"../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.js";import"../node_modules/.pnpm/zod@4.4.3/node_modules/zod/index.js";import{captureVercel,runVercel}from"#setup/primitives/index.js";import{HumanActionRequiredError}from"#setup/human-action.js";import{whimsyFor}from"#setup/cli/index.js";const JsonObjectSchema=record(string(),unknown()),VercelTeamListEntrySchema=object({name:string(),slug:string(),current:boolean()}),VercelProjectListEntrySchema=object({name:string(),id:string()}),VercelProjectReferenceSchema=object({id:string(),name:string()}),VercelApiErrorSchema=object({error:object({code:string().optional(),message:string().optional()}).optional()});function unresolvedProject(){return{kind:`unresolved`}}async function withNetworkSpinner(e,t,n){let r=e.log.spinner?.(t);try{return await n()}finally{r?.stop()}}function projectIdFromResolution(e){return e.kind===`unresolved`?void 0:e.projectId}function parseJson(e,t){try{return JSON.parse(e)}catch{throw Error(`Could not parse ${t} JSON from Vercel CLI output.`)}}function parseVercelJsonList(e,t,n){let r=parseJson(e,t),i=JsonObjectSchema.safeParse(r);if(!i.success)throw Error(`Could not read ${t} from Vercel CLI JSON output.`);let a=i.data[t];if(!Array.isArray(a))throw Error(`Vercel CLI JSON output did not include ${t}.`);let o=[];for(let e of a){let t=n.safeParse(e);t.success&&o.push(t.data)}return o}function parseTeamList(e){return e===void 0?[]:parseVercelJsonList(e,`teams`,VercelTeamListEntrySchema)}async function listTeams(e){let t=await captureVercel([`teams`,`ls`,`--format`,`json`],{cwd:e});if(!t.ok)throw Error(`Could not list Vercel teams. ${t.failure.message}`);return parseTeamList(t.stdout)}function parseProjectList(e){return e===void 0?[]:parseVercelJsonList(e,`projects`,VercelProjectListEntrySchema)}async function listProjects(e,t){let n=await captureVercel([`project`,`ls`,`--format`,`json`,`--scope`,t],{cwd:e});if(!n.ok)throw Error(`Could not list Vercel projects in ${t}. ${n.failure.message}`);return parseProjectList(n.stdout)}function isNotFoundApiFailure(e){if(e.code===404)return!0;let t=VercelApiErrorSchema.safeParse(safeParseJson(e.stdout)),n=t.success?t.data.error:void 0,r=`${n?.code??``} ${n?.message??``} ${e.stderr}`.toLowerCase();return r.includes(`not_found`)||r.includes(`not found`)||r.includes(`404`)}function isConflictApiFailure(e){let t=VercelApiErrorSchema.safeParse(safeParseJson(e.stdout)),n=t.success?t.data.error:void 0,r=`${n?.code??``} ${n?.message??``} ${e.stdout} ${e.stderr}`.toLowerCase();return r.includes(`409`)||r.includes(`conflict`)||r.includes(`already exists`)}function safeParseJson(e){try{return JSON.parse(e)}catch{return}}function parseProjectReference(e,t){let n=VercelProjectReferenceSchema.safeParse(parseJson(e,t));if(!n.success)throw Error(`Could not read Vercel project identity from ${t}.`);return n.data}async function resolveProjectByNameOrId(e,t,n){let r=await captureVercel([`api`,`/v9/projects/${encodeURIComponent(n)}`,`--scope`,t,`--raw`],{cwd:e});if(r.ok)return parseProjectReference(r.stdout,`project ${n}`);if(isNotFoundApiFailure(r.failure))return null;throw Error(`Could not resolve project "${n}" in ${t}. ${r.failure.message}`)}async function createProject(e,t,n,r){let i=await captureVercel([`api`,`/v10/projects`,`--scope`,t,`--method`,`POST`,`--raw-field`,`name=${n}`,`--raw`],{cwd:e,onOutput:r});if(i.ok)return parseProjectReference(i.stdout,`created project ${n}`);throw isConflictApiFailure(i.failure)?Error(projectNameCollisionMessage(n,t)):Error(`Could not create Vercel project "${n}" in ${t}. ${i.failure.message}`)}function projectNameCollisionMessage(e,t){return`Vercel project "${e}" already exists in ${t}. Pass --project ${e} to link it, or choose a different project name.`}async function assertNewProjectNameAvailable(e,t,n){if(await resolveProjectByNameOrId(e,t,n)!==null)throw Error(projectNameCollisionMessage(n,t))}function requireVercelLogin(e){let t=`Provisioning a Vercel project requires you to be logged in to Vercel.`,n=e?.stderr.trim();throw new HumanActionRequiredError({kind:`vercel-login`,command:`vercel login`,reason:e?`${t} The Vercel CLI check did not succeed: ${e.message}${n?` ${n}`:``}`:t})}async function requireAuth(e,t){let check=async()=>{let t=await captureVercel([`whoami`],{cwd:e});t.ok||requireVercelLogin(t.failure)};if(t===void 0){await check();return}await withNetworkSpinner(t,whimsyFor(`auth`),check)}async function isVercelAuthenticated(e){return(await captureVercel([`whoami`],{cwd:e})).ok}async function whoamiScope(e){let t=await captureVercel([`whoami`],{cwd:e});return t.ok||requireVercelLogin(t.failure),t.stdout.trim()}async function resolveTeam(e,t){return t===void 0?(await listTeams(e)).find(e=>e.current)?.slug??await whoamiScope(e):t}async function validateTeam(e,t,n){if(n===void 0)return;let r=await listTeams(t);if(r.length>0&&!r.some(e=>e.slug===n))throw Error(`Team "${n}" was not found in \`vercel teams ls\`. Pass a valid team slug or omit --team.`)}async function pickTeam(e,t,n){if(n!==void 0)return await validateTeam(e,t,n),resolveTeam(t,n);let r=await withNetworkSpinner(e,whimsyFor(`teams`),()=>listTeams(t));return r.length<=1?r.find(e=>e.current)?.slug??await whoamiScope(t):e.select({message:`Select your team`,search:!0,placeholder:`type to filter teams`,options:r.map(e=>({value:e.slug,label:e.current?`${e.name} (current)`:e.name})),initialValue:r.find(e=>e.current)?.slug})}async function pickProject(e,t,n){let r=await withNetworkSpinner(e,whimsyFor(`projects`,n),()=>listProjects(t,n));return r.length===0?{project:await e.text({message:`No projects found in ${n}. Enter a project name to create`,validate:e=>e.trim().length===0?`Project name cannot be empty.`:void 0}),exists:!1}:{project:await e.select({message:`Project to link`,search:!0,placeholder:`type to filter projects`,options:r.map(e=>({value:e.name,label:e.name}))}),exists:!0}}async function pickNewProjectName(e,t,n,r){let i=await withNetworkSpinner(e,whimsyFor(`project-name`,n),()=>resolveProjectByNameOrId(t,n,r.trim())),a=r.trim();for(;i!==null;)e.note(`Vercel project "${a}" already exists in ${n}. Choose a different project name.`,`Project name unavailable`),a=(await e.text({message:`New Vercel project name`,defaultValue:`${a}-2`,validate:e=>{if(e.trim().length===0)return`Project name cannot be empty.`}})).trim(),i=await resolveProjectByNameOrId(t,n,a);return a}async function linkProject(e,t,n,r){let i=[`--scope`,n.team],a;if(n.kind===`new`)a=await withNetworkSpinner(e,`Creating Vercel project "${n.project}" in ${n.team}...`,async()=>(await assertNewProjectNameAvailable(t,n.team,n.project),createProject(t,n.team,n.project,r)));else{let e=await resolveProjectByNameOrId(t,n.team,n.project);if(e===null)throw Error(`Vercel project "${n.project}" was not found in ${n.team}.`);a=e}return withNetworkSpinner(e,`Linking this directory to Vercel project "${a.name}"...`,()=>runVercel([`link`,`--project`,a.id,...i,`--yes`],{cwd:t,onOutput:r}))}export{assertNewProjectNameAvailable,isVercelAuthenticated,linkProject,listProjects,listTeams,pickNewProjectName,pickProject,pickTeam,projectIdFromResolution,requireAuth,requireVercelLogin,resolveProjectByNameOrId,resolveTeam,unresolvedProject,validateTeam,withNetworkSpinner};
|
|
@@ -85,13 +85,15 @@ export interface AgentExperimentalDefinition {
|
|
|
85
85
|
/**
|
|
86
86
|
* Advanced hosted-build controls authored in `agent.ts`.
|
|
87
87
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
88
|
+
* These affect packaging and bundling only. They do not affect the runtime
|
|
89
|
+
* prompt or authored execution APIs.
|
|
90
90
|
*/
|
|
91
91
|
export interface AgentBuildDefinition {
|
|
92
92
|
/**
|
|
93
93
|
* Additional imported package names that Eve should keep external and trace
|
|
94
|
-
* into hosted build output.
|
|
94
|
+
* into hosted build output. Eve also keeps matching imports external while
|
|
95
|
+
* compiling authored TypeScript modules such as tools, channels, and
|
|
96
|
+
* schedules.
|
|
95
97
|
*
|
|
96
98
|
* Prefer this when a package is sensitive to bundling and should ship via
|
|
97
99
|
* `server/node_modules` in hosted output.
|
|
@@ -133,6 +135,10 @@ export type PublicAgentDefinition = {
|
|
|
133
135
|
* {@link AgentExperimentalDefinition}.
|
|
134
136
|
*/
|
|
135
137
|
readonly experimental?: AgentExperimentalDefinition;
|
|
138
|
+
/**
|
|
139
|
+
* Language model used for agent turns. Accepts an AI Gateway model ID or any
|
|
140
|
+
* AI SDK-compatible language model.
|
|
141
|
+
*/
|
|
136
142
|
readonly model: PublicAgentModelDefinition;
|
|
137
143
|
/**
|
|
138
144
|
* Optional override for the primary model's context window size, in tokens.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const DEFAULT_AGENT_MODEL_ID=`anthropic/claude-sonnet-4.6`;export{DEFAULT_AGENT_MODEL_ID};
|
|
@@ -27,7 +27,7 @@ export interface SandboxBackendSessionState {
|
|
|
27
27
|
readonly sessionKey: string;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* One file written into a sandbox template before
|
|
30
|
+
* One file written into a sandbox template before template state capture.
|
|
31
31
|
*/
|
|
32
32
|
export interface SandboxSeedFile {
|
|
33
33
|
readonly path: string;
|
|
@@ -81,9 +81,9 @@ export interface SandboxBackendCreateInput {
|
|
|
81
81
|
*
|
|
82
82
|
* Every authored sandbox in the compiled graph receives exactly one
|
|
83
83
|
* `prewarm(...)` call before runtime opens its first session. The
|
|
84
|
-
* backend captures
|
|
84
|
+
* backend captures reusable template state from the supplied
|
|
85
85
|
* `bootstrap` hook and `seedFiles`, then `backend.create(...)` opens
|
|
86
|
-
* durable sessions from that
|
|
86
|
+
* durable sessions from that state.
|
|
87
87
|
*/
|
|
88
88
|
export interface SandboxBackendPrewarmInput<BO = Record<string, never>> {
|
|
89
89
|
readonly templateKey: string;
|
|
@@ -95,13 +95,13 @@ export interface SandboxBackendPrewarmInput<BO = Record<string, never>> {
|
|
|
95
95
|
* Outcome of one {@link SandboxBackend.prewarm} call.
|
|
96
96
|
*
|
|
97
97
|
* The build pipeline uses this to report in the build logs whether a
|
|
98
|
-
* template
|
|
98
|
+
* template state was reused from a prior deploy or captured fresh, so
|
|
99
99
|
* a cache hit is distinguishable from an expensive rebuild.
|
|
100
100
|
*/
|
|
101
101
|
export interface SandboxBackendPrewarmResult {
|
|
102
102
|
/**
|
|
103
|
-
* `true` when
|
|
104
|
-
*
|
|
103
|
+
* `true` when existing template state was reused without rebuilding it;
|
|
104
|
+
* `false` when the backend captured fresh template state.
|
|
105
105
|
*/
|
|
106
106
|
readonly reused: boolean;
|
|
107
107
|
}
|
|
@@ -115,7 +115,7 @@ export interface SandboxBackendPrewarmResult {
|
|
|
115
115
|
* their own.
|
|
116
116
|
*
|
|
117
117
|
* A backend implements the full two-phase lifecycle:
|
|
118
|
-
* {@link SandboxBackend.prewarm} captures
|
|
118
|
+
* {@link SandboxBackend.prewarm} captures reusable template state at
|
|
119
119
|
* build time, and {@link SandboxBackend.create} starts or reattaches a
|
|
120
120
|
* live session from that template at runtime.
|
|
121
121
|
*/
|
|
@@ -124,7 +124,7 @@ export interface SandboxBackend<BO = Record<string, never>, SO = Record<string,
|
|
|
124
124
|
* Stable identifier for this backend implementation.
|
|
125
125
|
*
|
|
126
126
|
* Participates in cache-key derivation and the persisted reconnect
|
|
127
|
-
* state, so two backends that should not share template
|
|
127
|
+
* state, so two backends that should not share template state
|
|
128
128
|
* must use distinct names. Built-in backends use `"vercel"` and
|
|
129
129
|
* `"local"`. Custom backends pick a unique string.
|
|
130
130
|
*/
|
|
@@ -139,10 +139,10 @@ export interface SandboxBackend<BO = Record<string, never>, SO = Record<string,
|
|
|
139
139
|
/**
|
|
140
140
|
* Build-time prewarm hook. Eve invokes this for every authored
|
|
141
141
|
* sandbox in the compiled graph before serving traffic so the backend
|
|
142
|
-
* can capture
|
|
143
|
-
*
|
|
142
|
+
* can capture reusable template state. Idempotent against existing state
|
|
143
|
+
* keyed by `templateKey`.
|
|
144
144
|
*
|
|
145
|
-
* Returns whether the
|
|
145
|
+
* Returns whether the state was reused from a prior run or captured
|
|
146
146
|
* fresh so the build pipeline can surface that in its logs.
|
|
147
147
|
*/
|
|
148
148
|
prewarm(input: SandboxBackendPrewarmInput<BO>): Promise<SandboxBackendPrewarmResult>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outcome of a source-to-source edit attempt. Pure data. On success it carries
|
|
3
|
+
* the rewritten source, so the caller owns the filesystem write.
|
|
4
|
+
*/
|
|
5
|
+
export type SourceEdit = {
|
|
6
|
+
readonly kind: "applied";
|
|
7
|
+
readonly from: string;
|
|
8
|
+
readonly to: string;
|
|
9
|
+
readonly nextSource: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: "bail";
|
|
12
|
+
readonly reason: string;
|
|
13
|
+
readonly line: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Rewrites the `model` string literal passed to `defineAgent({ ... })` in
|
|
17
|
+
* `sourceText`, returning the edited source.
|
|
18
|
+
*
|
|
19
|
+
* Pure transform: parses with oxc, finds the literal's byte span, and splices
|
|
20
|
+
* only those bytes, so comments, formatting, and quote style everywhere else
|
|
21
|
+
* are preserved by construction. Bails (no edit) when `model` is absent or
|
|
22
|
+
* isn't a plain string literal. An env reference, a template, an inlined SDK
|
|
23
|
+
* model object, or a spread all opt out into the manual path instead.
|
|
24
|
+
*/
|
|
25
|
+
export declare function applyModelNameToSource(sourceText: string, modelName: string): SourceEdit;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseSync}from"oxc-parser";const AGENT_FACTORY=`defineAgent`;function applyModelNameToSource(n,r){let i=parseSync(`agent.ts`,n,{lang:`ts`});if(i.errors.length>0){let e=i.errors[0];return{kind:`bail`,reason:`agent.ts does not parse: ${e?.message??`unknown parse error`}`,line:lineAt(n,e?.labels[0]?.start??0)}}let a=findDefineAgentObject(i.program,AGENT_FACTORY);if(a===void 0)return{kind:`bail`,reason:`no \`export default ${AGENT_FACTORY}({ ... })\` call found`,line:1};let o=findStringLiteralProperty(a,`model`);if(o===void 0)return{kind:`bail`,reason:"`model` is absent or is not a string literal (e.g. an env reference, a template, or an inlined SDK model)",line:lineAt(n,a.start)};let s=o.value;if(s===r)return{kind:`applied`,from:s,to:r,nextSource:n};let c=o.raw?.[0]===`'`?`'`:`"`,l=`${c}${escapeForQuote(r,c)}${c}`;return{kind:`applied`,from:s,to:r,nextSource:n.slice(0,o.start)+l+n.slice(o.end)}}function unwrapExpression(e){let t=e;for(;t.type===`ParenthesizedExpression`||t.type===`TSAsExpression`||t.type===`TSSatisfiesExpression`;)t=t.expression;return t}function findDefineAgentObject(e,t){for(let n of e.body){if(n.type!==`ExportDefaultDeclaration`)continue;let e=n.declaration;if(e.type!==`CallExpression`&&e.type!==`ParenthesizedExpression`&&e.type!==`TSAsExpression`&&e.type!==`TSSatisfiesExpression`)continue;let r=unwrapExpression(e);if(r.type!==`CallExpression`||!isFactoryCallee(r.callee,t))continue;let i=r.arguments[0];if(i===void 0||i.type===`SpreadElement`)continue;let a=unwrapExpression(i);if(a.type===`ObjectExpression`)return a}}function isFactoryCallee(e,t){return e.type===`Identifier`&&e.name===t}function findStringLiteralProperty(e,t){for(let n of e.properties){if(n.type!==`Property`||n.computed||!keyMatches(n.key,t))continue;let e=unwrapExpression(n.value);return e.type===`Literal`&&typeof e.value==`string`?e:void 0}}function keyMatches(e,t){return e.type===`Identifier`?e.name===t:e.type===`Literal`?typeof e.value==`string`&&e.value===t:!1}function escapeForQuote(e,t){return e.replaceAll(`\\`,`\\\\`).replaceAll(t,`\\${t}`)}function lineAt(e,t){let n=1;for(let r=0;r<t&&r<e.length;r+=1)e[r]===`
|
|
2
|
+
`&&(n+=1);return n}export{applyModelNameToSource};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AgentSourceManifest } from "#discover/manifest.js";
|
|
2
|
+
/**
|
|
3
|
+
* Outcome of a static source change, returned to upstream callers (CLI, web
|
|
4
|
+
* setup UI) so they can render success or route the bail to a guided fix.
|
|
5
|
+
*/
|
|
6
|
+
export type ApplyResult = {
|
|
7
|
+
readonly kind: "applied";
|
|
8
|
+
readonly from: string;
|
|
9
|
+
readonly to: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: "bail";
|
|
12
|
+
readonly reason: string;
|
|
13
|
+
readonly at: {
|
|
14
|
+
readonly logicalPath: string;
|
|
15
|
+
readonly line: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Central, flat API for applying targeted edits to an agent's authored source.
|
|
20
|
+
*
|
|
21
|
+
* Built from a discovery manifest, which already carries every resource's
|
|
22
|
+
* `ModuleSourceRef`, so each operation can locate the file it edits without
|
|
23
|
+
* recompiling. Consumers depend only on this interface.
|
|
24
|
+
*/
|
|
25
|
+
export interface StaticSourceChange {
|
|
26
|
+
/**
|
|
27
|
+
* Rewrites the agent's `model` in `agent.ts` in place. Bails (no write) when
|
|
28
|
+
* the value isn't a string literal; the bail carries the source location so
|
|
29
|
+
* the caller can offer a manual fix.
|
|
30
|
+
*/
|
|
31
|
+
updateModelName(modelName: string): Promise<ApplyResult>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates the {@link StaticSourceChange} surface bound to one discovered agent.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createStaticSourceChange(manifest: AgentSourceManifest): StaticSourceChange;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{join}from"node:path";import{readFile,rename,writeFile}from"node:fs/promises";import{applyModelNameToSource}from"#source-change/apply-model-name.js";function createStaticSourceChange(e){return{updateModelName:t=>updateAgentModelName(e,t)}}async function updateAgentModelName(n,r){let i=n.configModule;if(i===void 0)return{kind:`bail`,reason:`agent has no agent.ts config module to edit`,at:{logicalPath:`agent.ts`,line:1}};let a=join(n.agentRoot,i.logicalPath),o=await readFile(a,`utf8`),s=applyModelNameToSource(o,r);if(s.kind===`bail`)return{kind:`bail`,reason:s.reason,at:{logicalPath:i.logicalPath,line:s.line}};if(s.nextSource!==o){let e=`${a}.${process.pid}.eve-tmp`;await writeFile(e,s.nextSource,`utf8`),await rename(e,a)}return{kind:`applied`,from:s.from,to:s.to}}export{createStaticSourceChange};
|
package/dist/src/svelte/index.js
CHANGED
package/dist/src/vue/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -135,6 +135,11 @@
|
|
|
135
135
|
"import": "./dist/src/evals/index.js",
|
|
136
136
|
"default": "./dist/src/evals/index.js"
|
|
137
137
|
},
|
|
138
|
+
"./evals/expect": {
|
|
139
|
+
"types": "./dist/src/evals/expect/index.d.ts",
|
|
140
|
+
"import": "./dist/src/evals/expect/index.js",
|
|
141
|
+
"default": "./dist/src/evals/expect/index.js"
|
|
142
|
+
},
|
|
138
143
|
"./evals/loaders": {
|
|
139
144
|
"types": "./dist/src/evals/loaders/index.d.ts",
|
|
140
145
|
"import": "./dist/src/evals/loaders/index.js",
|
|
@@ -145,11 +150,6 @@
|
|
|
145
150
|
"import": "./dist/src/evals/reporters/index.js",
|
|
146
151
|
"default": "./dist/src/evals/reporters/index.js"
|
|
147
152
|
},
|
|
148
|
-
"./evals/scores": {
|
|
149
|
-
"types": "./dist/src/evals/scores/index.d.ts",
|
|
150
|
-
"import": "./dist/src/evals/scores/index.js",
|
|
151
|
-
"default": "./dist/src/evals/scores/index.js"
|
|
152
|
-
},
|
|
153
153
|
"./skills": {
|
|
154
154
|
"types": "./dist/src/public/skills/index.d.ts",
|
|
155
155
|
"import": "./dist/src/public/skills/index.js",
|
|
@@ -232,24 +232,6 @@
|
|
|
232
232
|
"import": "./dist/src/setup/scaffold/index.js",
|
|
233
233
|
"default": "./dist/src/setup/scaffold/index.js"
|
|
234
234
|
},
|
|
235
|
-
"./setup/scaffold/cli": {
|
|
236
|
-
"eve-source": "./src/setup/scaffold/cli/index.ts",
|
|
237
|
-
"types": "./dist/src/setup/scaffold/cli/index.d.ts",
|
|
238
|
-
"import": "./dist/src/setup/scaffold/cli/index.js",
|
|
239
|
-
"default": "./dist/src/setup/scaffold/cli/index.js"
|
|
240
|
-
},
|
|
241
|
-
"./setup/scaffold/steps": {
|
|
242
|
-
"eve-source": "./src/setup/scaffold/steps/index.ts",
|
|
243
|
-
"types": "./dist/src/setup/scaffold/steps/index.d.ts",
|
|
244
|
-
"import": "./dist/src/setup/scaffold/steps/index.js",
|
|
245
|
-
"default": "./dist/src/setup/scaffold/steps/index.js"
|
|
246
|
-
},
|
|
247
|
-
"./setup/scaffold/primitives": {
|
|
248
|
-
"eve-source": "./src/setup/scaffold/primitives/index.ts",
|
|
249
|
-
"types": "./dist/src/setup/scaffold/primitives/index.d.ts",
|
|
250
|
-
"import": "./dist/src/setup/scaffold/primitives/index.js",
|
|
251
|
-
"default": "./dist/src/setup/scaffold/primitives/index.js"
|
|
252
|
-
},
|
|
253
235
|
"./setup": {
|
|
254
236
|
"eve-source": "./src/setup/index.ts",
|
|
255
237
|
"types": "./dist/src/setup/index.d.ts",
|
|
@@ -261,14 +243,14 @@
|
|
|
261
243
|
"access": "public"
|
|
262
244
|
},
|
|
263
245
|
"dependencies": {
|
|
264
|
-
"nitro": "3.0.
|
|
246
|
+
"nitro": "3.0.260610-beta"
|
|
265
247
|
},
|
|
266
248
|
"devDependencies": {
|
|
267
|
-
"@ai-sdk/anthropic": "4.0.0-canary.
|
|
268
|
-
"@ai-sdk/google": "4.0.0-canary.
|
|
269
|
-
"@ai-sdk/mcp": "2.0.0-canary.
|
|
270
|
-
"@ai-sdk/openai": "4.0.0-canary.
|
|
271
|
-
"@ai-sdk/otel": "1.0.0-canary.
|
|
249
|
+
"@ai-sdk/anthropic": "4.0.0-canary.65",
|
|
250
|
+
"@ai-sdk/google": "4.0.0-canary.80",
|
|
251
|
+
"@ai-sdk/mcp": "2.0.0-canary.62",
|
|
252
|
+
"@ai-sdk/openai": "4.0.0-canary.72",
|
|
253
|
+
"@ai-sdk/otel": "1.0.0-canary.117",
|
|
272
254
|
"@ai-sdk/provider": "4.0.0-canary.18",
|
|
273
255
|
"@chat-adapter/slack": "4.29.0",
|
|
274
256
|
"@chat-adapter/state-memory": "4.29.0",
|
|
@@ -281,21 +263,23 @@
|
|
|
281
263
|
"@types/react-test-renderer": "19.1.0",
|
|
282
264
|
"@vercel/oidc": "3.5.0",
|
|
283
265
|
"@vercel/sandbox": "2.1.0",
|
|
284
|
-
"@workflow/core": "5.0.0-beta.
|
|
266
|
+
"@workflow/core": "5.0.0-beta.14",
|
|
285
267
|
"@workflow/errors": "5.0.0-beta.7",
|
|
286
|
-
"@workflow/world": "5.0.0-beta.
|
|
287
|
-
"@workflow/world-local": "5.0.0-beta.
|
|
288
|
-
"ai": "7.0.0-canary.
|
|
268
|
+
"@workflow/world": "5.0.0-beta.8",
|
|
269
|
+
"@workflow/world-local": "5.0.0-beta.15",
|
|
270
|
+
"ai": "7.0.0-canary.171",
|
|
289
271
|
"autoevals": "0.0.132",
|
|
290
272
|
"chat": "4.29.0",
|
|
291
273
|
"chokidar": "5.0.0",
|
|
292
274
|
"commander": "14.0.3",
|
|
275
|
+
"emulate": "^0.6.0",
|
|
293
276
|
"experimental-ai-sdk-code-mode": "1.0.14",
|
|
294
277
|
"gray-matter": "4.0.3",
|
|
295
278
|
"jose": "6.2.3",
|
|
296
279
|
"jsonc-parser": "3.3.1",
|
|
297
280
|
"just-bash": "3.0.1",
|
|
298
281
|
"next": "16.2.6",
|
|
282
|
+
"oxc-parser": "^0.134.0",
|
|
299
283
|
"picocolors": "1.1.1",
|
|
300
284
|
"react": "19.2.6",
|
|
301
285
|
"react-test-renderer": "19.2.6",
|
|
@@ -305,12 +289,12 @@
|
|
|
305
289
|
"vue": "^3.5.0",
|
|
306
290
|
"zod": "4.4.3",
|
|
307
291
|
"zod-validation-error": "5.0.0",
|
|
308
|
-
"@vercel/eve-catalog": "0.0.
|
|
292
|
+
"@vercel/eve-catalog": "0.0.1"
|
|
309
293
|
},
|
|
310
294
|
"peerDependencies": {
|
|
311
295
|
"@opentelemetry/api": "^1.0.0",
|
|
312
296
|
"@sveltejs/kit": "^2.0.0",
|
|
313
|
-
"ai": "7.0.0-canary.
|
|
297
|
+
"ai": "7.0.0-canary.171",
|
|
314
298
|
"braintrust": "^3.0.0",
|
|
315
299
|
"next": "^16.0.0",
|
|
316
300
|
"nuxt": "^4.0.0",
|
|
@@ -359,13 +343,14 @@
|
|
|
359
343
|
"build:types": "pnpm run build:compiled && tsgo -p tsconfig.build.json",
|
|
360
344
|
"dev": "pnpm run build:compiled && tsgo -p tsconfig.dev.json --watch --preserveWatchOutput",
|
|
361
345
|
"test": "pnpm run test:unit && pnpm run test:integration",
|
|
362
|
-
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
363
346
|
"test:integration": "pnpm run build:js && vitest run --config vitest.integration.config.ts",
|
|
364
347
|
"test:scenario": "pnpm run build:compiled && vitest run --config vitest.scenario.config.ts",
|
|
365
348
|
"test:unit": "pnpm run build:compiled && vitest run --config vitest.unit.config.ts",
|
|
366
349
|
"test:watch": "pnpm run build:compiled && vitest --config vitest.unit.config.ts",
|
|
367
350
|
"typecheck": "pnpm run check:web-template && pnpm run build:compiled && tsgo -p tsconfig.json --noEmit",
|
|
368
351
|
"generate:web-template": "node src/setup/build.ts --write",
|
|
369
|
-
"check:web-template": "node src/setup/build.ts --check"
|
|
352
|
+
"check:web-template": "node src/setup/build.ts --check",
|
|
353
|
+
"test:tui": "pnpm run build:js && tsgo -p tsconfig.tui.json --noEmit && node test/tui-client/run-all.mjs",
|
|
354
|
+
"test:vercel": "vitest run --config vitest.vercel.config.ts"
|
|
370
355
|
}
|
|
371
356
|
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Evals"
|
|
3
|
-
description: "Define repeatable scored checks for an Eve agent with defineEvalSuite and run them with eve eval."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
An eval is a scored check that runs your agent against real sessions and grades the result. Use it to catch regressions when you change a prompt or a tool: compare the output against expected text, JSON, SQL, or behavior, and optionally ship the results to Braintrust.
|
|
7
|
-
|
|
8
|
-
## `defineEvalSuite`
|
|
9
|
-
|
|
10
|
-
Eve discovers suites under the app-root `evals/` directory, in `.eval.ts` files. The file path is the suite's identity, so you don't author an `id` or `name`.
|
|
11
|
-
|
|
12
|
-
```text
|
|
13
|
-
my-agent/
|
|
14
|
-
├── agent/
|
|
15
|
-
├── evals/
|
|
16
|
-
│ ├── smoke.eval.ts
|
|
17
|
-
│ └── weather.eval.ts
|
|
18
|
-
└── package.json
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
```ts title="evals/weather.eval.ts"
|
|
22
|
-
import { defineEvalSuite } from "eve/evals";
|
|
23
|
-
import { Run } from "eve/evals/scores";
|
|
24
|
-
|
|
25
|
-
export default defineEvalSuite({
|
|
26
|
-
model: "anthropic/claude-opus-4.8",
|
|
27
|
-
description: "Basic message and tool-usage coverage for the weather agent.",
|
|
28
|
-
cases: [
|
|
29
|
-
{ id: "brooklyn-forecast", input: "What is the weather in Brooklyn?", expected: "Sunny" },
|
|
30
|
-
],
|
|
31
|
-
scores: [Run.didNotFail()],
|
|
32
|
-
});
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Every suite needs `model`, `scores`, and either `cases` or `load`. The rest are optional: `description`, `task`, `thresholds`, `modelOptions`, `tags`, `metadata`, `maxConcurrency`, `timeoutMs`, `reporters`. The init template adds `evals/**/*.ts` to `tsconfig.json`, so your eval code type-checks alongside the app.
|
|
36
|
-
|
|
37
|
-
One thing that trips people up: `model` is the scorer model, not the agent's. Eve only uses it for model-backed scoring, never to swap out the agent under test. Pass a string id (e.g. `"anthropic/claude-opus-4.8"`) to route through the Vercel AI Gateway, or hand it an AI SDK model instance to use that directly.
|
|
38
|
-
|
|
39
|
-
## Cases and tasks
|
|
40
|
-
|
|
41
|
-
A case pairs an `input` with an `expected`, plus optional tags and metadata. `input` can be a string or an object. `expected` is optional, which is handy when you only care about behavior. List cases inline, or load them dynamically:
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
import { defineEvalSuite } from "eve/evals";
|
|
45
|
-
import { loadYaml } from "eve/evals/loaders";
|
|
46
|
-
import { Text } from "eve/evals/scores";
|
|
47
|
-
|
|
48
|
-
export default defineEvalSuite({
|
|
49
|
-
model: "anthropic/claude-opus-4.8",
|
|
50
|
-
async load() {
|
|
51
|
-
const doc = await loadYaml("evals/data/cases.yaml");
|
|
52
|
-
return (doc.evals as readonly { task: string; prompt: string; sql: string }[]).map((row) => ({
|
|
53
|
-
id: row.task,
|
|
54
|
-
input: row.prompt,
|
|
55
|
-
expected: row.sql,
|
|
56
|
-
}));
|
|
57
|
-
},
|
|
58
|
-
scores: [Text.exact()],
|
|
59
|
-
});
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
The loaders (`loadJson`, `loadYaml` from `eve/evals/loaders`) resolve paths relative to the app root. They're meant for fixtures, not runtime agent code. For the task itself, `task.prompt` covers the single-string case, `task.messages` sets up a multi-turn conversation, and `task.parseOutput` lets you compare a transformed result rather than the raw final message.
|
|
63
|
-
|
|
64
|
-
## Scorers and rubrics
|
|
65
|
-
|
|
66
|
-
Scorers live in namespaces on `eve/evals/scores`. Pick the cheapest one that captures what "correct" means here. The deterministic scorers run instantly for free; an LLM judge runs once per case and burns tokens, so save it for when nothing simpler will do.
|
|
67
|
-
|
|
68
|
-
| Need | Use |
|
|
69
|
-
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
70
|
-
| Assert agent behavior (run succeeded, used the right tools) | `Run.didNotFail()`, `Run.usedTool(name)`, `Run.usedNoTools()`, `Run.maxToolCalls(max)` |
|
|
71
|
-
| Exact string match | `Text.exact()`, `Text.includes()` |
|
|
72
|
-
| Fuzzy text match (typos, whitespace) | `Text.levenshtein()` |
|
|
73
|
-
| Exact JSON match | `Json.deepEqual()` |
|
|
74
|
-
| Exact SQL match (after normalization) | `Sql.exactNormalized()` |
|
|
75
|
-
| LLM-judged factual correctness vs an expected answer | `Autoevals.factuality()` |
|
|
76
|
-
| LLM-judged summary quality | `Autoevals.summary()` |
|
|
77
|
-
| LLM-judged SQL semantic equivalence | `Autoevals.sql()` |
|
|
78
|
-
| LLM-judged free-form criteria (no `expected` to match) | `Autoevals.closedQA({ criteria: "..." })` |
|
|
79
|
-
|
|
80
|
-
Each scorer gets the flattened `input`, `output`, and `expected` strings along with the full case and task result. Return `null` from a scorer to skip a case.
|
|
81
|
-
|
|
82
|
-
### Thresholds
|
|
83
|
-
|
|
84
|
-
By default a scorer has to hit an exact match to pass. `thresholds` loosens that, mapping each scorer name to the minimum score you'll accept:
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
defineEvalSuite({
|
|
88
|
-
model: "anthropic/claude-opus-4.8",
|
|
89
|
-
cases: [{ id: "hello", input: "Hello", expected: "Hello" }],
|
|
90
|
-
scores: [Run.didNotFail(), Text.includes()],
|
|
91
|
-
thresholds: { "run.didNotFail": 1, "text.includes": 0.5 },
|
|
92
|
-
});
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
`maxConcurrency` caps parallelism and `timeoutMs` bounds each case. Leave them off and `eve eval` runs up to 8 cases per suite at once. For provider-specific scorer-model settings, use `modelOptions.providerOptions`. Individual Autoevals scorers can also take their own `model` / `modelOptions`, which win over the suite default.
|
|
96
|
-
|
|
97
|
-
## Reporters
|
|
98
|
-
|
|
99
|
-
Suite-level reporters live on `eve/evals/reporters`. Right now the public surface is `Braintrust(...)`, which uploads suite results to Braintrust experiments. Eve still runs and scores everything itself; the reporter just ships the results out. Suite and case `metadata` ride along to the reporter, and the CLI prints a console summary by default.
|
|
100
|
-
|
|
101
|
-
## Running evals
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
eve eval # run discovered suites locally
|
|
105
|
-
eve eval --all # run all discovered suites
|
|
106
|
-
eve eval --suite weather # run selected suites
|
|
107
|
-
eve eval --url https://<app> # target a remote app instead of a local host
|
|
108
|
-
eve eval --json # machine-readable output
|
|
109
|
-
eve eval --skip-report # skip suite-defined reporters (e.g. Braintrust)
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Each run drops per-suite artifacts under `.eve/evals/<timestamp>-<suite-id>/`.
|
|
113
|
-
|
|
114
|
-
## A good baseline
|
|
115
|
-
|
|
116
|
-
Most apps do fine with a small smoke suite. Score behavior with `Run.didNotFail()` and one or two content assertions, keep case fixtures in `evals/data/`, and only reach for Braintrust once you actually need shared result review or experiment history.
|
|
117
|
-
|
|
118
|
-
## What to read next
|
|
119
|
-
|
|
120
|
-
- [Tools](../tools): the surface most evals assert on
|
|
121
|
-
- [instrumentation.ts](./instrumentation): tracing and debugging
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { type DeploymentInfo } from "#setup/scaffold/primitives/index.js";
|
|
2
|
-
import { type Prompter } from "#setup/prompter.js";
|
|
3
|
-
import { type ArgsHeadlessAiGateway, type ArgsHeadlessProject, type ChannelKind, type ChatPreference } from "#setup/state.js";
|
|
4
|
-
export interface SetupCliLogger {
|
|
5
|
-
error(message: string): void;
|
|
6
|
-
log(message: string): void;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Preset answers for a headless `eve setup` run. They mirror the create flow's
|
|
10
|
-
* preset options so a headless onboarding run is fully determined by its
|
|
11
|
-
* inputs; each field is threaded into the matching onboarding box option.
|
|
12
|
-
*/
|
|
13
|
-
export interface SetupCommandPresets {
|
|
14
|
-
presetName?: string;
|
|
15
|
-
presetModel?: string;
|
|
16
|
-
presetChannels?: ChannelKind[];
|
|
17
|
-
presetCreateSlackbot?: boolean;
|
|
18
|
-
presetNoDeploy?: boolean;
|
|
19
|
-
overwriteExisting?: boolean;
|
|
20
|
-
presetConnections?: string[];
|
|
21
|
-
presetChatPreference?: ChatPreference;
|
|
22
|
-
}
|
|
23
|
-
export interface SetupCommandOptions {
|
|
24
|
-
/**
|
|
25
|
-
* Programmatic-only for now: the `eve setup` CLI registers no headless flags,
|
|
26
|
-
* so a headless run is only reachable through this API with presets that
|
|
27
|
-
* answer every decision. The CLI fails fast on a non-interactive terminal
|
|
28
|
-
* instead of silently entering a headless run that cannot succeed.
|
|
29
|
-
*/
|
|
30
|
-
headless?: boolean;
|
|
31
|
-
/** Override for the scaffolded `eve` dependency version. Defaults to "beta",
|
|
32
|
-
* matching the create flow; ai/zod/tsgo come from build-stamped defaults. */
|
|
33
|
-
evePackageVersion?: string;
|
|
34
|
-
presets?: SetupCommandPresets;
|
|
35
|
-
/** Headless-only Vercel provisioning flags, mirroring the create flow. */
|
|
36
|
-
provisioning?: {
|
|
37
|
-
project: ArgsHeadlessProject;
|
|
38
|
-
aiGateway: ArgsHeadlessAiGateway;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
export interface SetupCommandDependencies {
|
|
42
|
-
createPrompter: () => Prompter;
|
|
43
|
-
detectDeployment(projectPath: string): Promise<DeploymentInfo>;
|
|
44
|
-
isEveProject(projectPath: string): Promise<boolean>;
|
|
45
|
-
hasInteractiveTerminal(): boolean;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* The unified `eve setup` entry. In a directory that is not yet an Eve project
|
|
49
|
-
* it runs the SAME onboarding composition as `pnpm create eve`, scaffolding in
|
|
50
|
-
* place; inside an existing project it runs in-project setup: the channel
|
|
51
|
-
* interview, then channel scaffolding, then deploy, against the detected
|
|
52
|
-
* on-disk project link. Both compose the shared boxes through the shared
|
|
53
|
-
* runner.
|
|
54
|
-
*/
|
|
55
|
-
export declare function runSetupCommand(logger: SetupCliLogger, appRoot: string, options: SetupCommandOptions, dependencies?: SetupCommandDependencies): Promise<void>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{basename}from"node:path";import{isEveProject}from"#setup/scaffold/index.js";import{createAddToAgentState}from"#setup/scaffold/steps/index.js";import{detectDeployment}from"#setup/scaffold/primitives/index.js";import{addChannels}from"#setup/boxes/add-channels.js";import{deployProject as deployProject$1}from"#setup/boxes/deploy-project.js";import{selectChannels}from"#setup/boxes/select-channels.js";import{composeOnboardingBoxes}from"#setup/onboarding.js";import{createPrompter}from"#setup/prompter.js";import{runHeadless,runInteractive}from"#setup/runner.js";import{createDefaultSetupState,snapshotSetupState}from"#setup/state.js";const defaultDependencies={createPrompter,detectDeployment,isEveProject,hasInteractiveTerminal:()=>!!(process.stdin.isTTY&&process.stdout.isTTY)};async function runSetupCommand(t,n,r,i=defaultDependencies){let a=!await i.isEveProject(n),o=r.evePackageVersion??`beta`,s=r.presets??{},c=r.headless!==!0;if(c&&!i.hasInteractiveTerminal()){t.error("eve setup is interactive and needs a terminal. For automation, use `create-eve --headless` to scaffold a new agent or `eve channels add` inside an existing project."),process.exitCode=1;return}let l=i.createPrompter(),u={write:e=>l.log.message(e)};l.intro(a?`Create a new Eve agent`:`Set up your Eve agent`);let d=a?`Agent created.`:`Setup complete.`,f,p;a?(f=createDefaultSetupState(),p=composeOnboardingBoxes({prompter:l,presetName:s.presetName,presetModel:s.presetModel,presetChannels:s.presetChannels,presetConnections:s.presetConnections,presetCreateSlackbot:s.presetCreateSlackbot,provisioning:r.provisioning,presetChatPreference:s.presetChatPreference??`skip`,targetDirectory:n,inPlace:!0,overwriteExisting:s.overwriteExisting,presetNoDeploy:s.presetNoDeploy,headless:!c,evePackageVersion:o})):(l.log.message(`Checking the current Vercel project...`),f={...createDefaultSetupState(),...createAddToAgentState(await i.detectDeployment(n)),agentName:basename(n),projectPath:{kind:`resolved`,inPlace:!0,path:n}},p=[selectChannels({prompter:l,presetChannels:s.presetChannels}),addChannels({prompter:l,evePackageVersion:o,presetCreateSlackbot:s.presetCreateSlackbot}),deployProject$1({prompter:l,skip:s.presetNoDeploy})]);try{if(c){let e=await runInteractive(p,f,u,{snapshot:snapshotSetupState});l.outro(e.kind===`cancelled`?`Cancelled.`:d);return}await runHeadless(p,f,u,{snapshot:snapshotSetupState}),l.outro(d)}catch(e){t.error(e instanceof Error?e.message:String(e)),process.exitCode=1}}export{runSetupCommand};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { HandleMessageStreamEvent } from "#protocol/message.js";
|
|
2
|
-
import type { InputRequest, InputResponse } from "#runtime/input/types.js";
|
|
3
|
-
import { type CliTheme } from "#cli/ui/output.js";
|
|
4
|
-
/**
|
|
5
|
-
* Sentinel returned when the CLI user pressed Escape while responding to a
|
|
6
|
-
* pending runtime input request.
|
|
7
|
-
*/
|
|
8
|
-
export declare const ESCAPED_RUNTIME_INPUT_PROMPT: unique symbol;
|
|
9
|
-
/**
|
|
10
|
-
* One raw answer collected from the CLI while prompting for pending runtime
|
|
11
|
-
* input requests.
|
|
12
|
-
*/
|
|
13
|
-
export type RuntimeInputPromptValue = string | typeof ESCAPED_RUNTIME_INPUT_PROMPT | undefined;
|
|
14
|
-
/**
|
|
15
|
-
* Outcome of one interactive CLI prompt pass for pending runtime input.
|
|
16
|
-
*/
|
|
17
|
-
export type RuntimeInputPromptResult = {
|
|
18
|
-
readonly inputResponses: readonly InputResponse[];
|
|
19
|
-
readonly kind: "submitted";
|
|
20
|
-
} | {
|
|
21
|
-
readonly kind: "deferred";
|
|
22
|
-
} | {
|
|
23
|
-
readonly kind: "aborted";
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Returns the last pending runtime-input batch emitted in one turn, if any.
|
|
27
|
-
*/
|
|
28
|
-
export declare function extractPendingRuntimeInputRequests(events: readonly HandleMessageStreamEvent[]): readonly InputRequest[];
|
|
29
|
-
/**
|
|
30
|
-
* Interactively collects CLI-native responses for pending runtime input
|
|
31
|
-
* requests.
|
|
32
|
-
*/
|
|
33
|
-
export declare function promptForRuntimeInputRequests(input: {
|
|
34
|
-
ask(prompt: string): Promise<RuntimeInputPromptValue>;
|
|
35
|
-
print(message: string): void;
|
|
36
|
-
requests: readonly InputRequest[];
|
|
37
|
-
theme: CliTheme;
|
|
38
|
-
}): Promise<RuntimeInputPromptResult>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{renderCliTaggedLine}from"#cli/ui/output.js";import{resolveTextToResponse}from"#channel/resolve-text.js";const ESCAPED_RUNTIME_INPUT_PROMPT=Symbol(`eve.cli.runtime-input.escaped`);function extractPendingRuntimeInputRequests(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.type===`input.requested`)return n.data.requests}return[]}async function promptForRuntimeInputRequests(t){let n=[];t.print(renderCliTaggedLine(t.theme,{message:`pending input request${t.requests.length===1?``:`s`}: reply now, press Escape, or type "skip" to return to the normal prompt`,tag:`input`,tone:`info`}));for(let e of t.requests){let r=await promptForRuntimeInputRequest({ask:t.ask,print:t.print,request:e,theme:t.theme});if(r.kind!==`submitted`)return r;n.push(r.inputResponse)}return{inputResponses:n,kind:`submitted`}}function isApprovalRequest(e){return e.display===`confirmation`}async function promptForRuntimeInputRequest(e){return isApprovalRequest(e.request)?await promptForApprovalInputRequest({ask:e.ask,print:e.print,request:e.request,theme:e.theme}):await promptForQuestionInputRequest({ask:e.ask,print:e.print,request:e.request,theme:e.theme})}async function promptForApprovalInputRequest(t){for(t.print(renderCliTaggedLine(t.theme,{message:`approve tool "${t.request.action.toolName}"? (yes/no)`,tag:`approval`,tone:`warning`})),t.print(renderCliTaggedLine(t.theme,{message:JSON.stringify(t.request.action.input,null,2),tag:`tool`,tone:`muted`}));;){let r=await t.ask(`approval> `);if(r===void 0)return{kind:`aborted`};if(r===ESCAPED_RUNTIME_INPUT_PROMPT)return{kind:`deferred`};let i=r.trim().toLowerCase();if(i===`skip`||i===`/skip`)return{kind:`deferred`};if(i===`a`||i===`approve`||i===`y`||i===`yes`)return{inputResponse:{optionId:`approve`,requestId:t.request.requestId},kind:`submitted`};if(i===`d`||i===`deny`||i===`n`||i===`no`)return{inputResponse:{optionId:`deny`,requestId:t.request.requestId},kind:`submitted`};t.print(renderCliTaggedLine(t.theme,{message:`enter "yes" to approve, "no" to deny, press Escape, or type "skip" to return to the normal prompt`,tag:`input`,tone:`warning`}))}}async function promptForQuestionInputRequest(r){r.print(renderCliTaggedLine(r.theme,{message:r.request.prompt,tag:`question`,tone:`info`}));for(let[t,n]of(r.request.options??[]).entries())r.print(renderCliTaggedLine(r.theme,{message:`${t+1}. ${n.label}${n.description===void 0?``:` - ${n.description}`}`,tag:`option`,tone:`muted`}));let i=r.request.allowFreeform===!0||(r.request.options?.length??0)===0;for(;;){let a=await r.ask(`answer> `);if(a===void 0)return{kind:`aborted`};if(a===ESCAPED_RUNTIME_INPUT_PROMPT)return{kind:`deferred`};let o=a.trim();if(o===`skip`||o===`/skip`)return{kind:`deferred`};let s=resolveTextToResponse(o,r.request);if(s!==void 0)return{inputResponse:s,kind:`submitted`};r.print(renderCliTaggedLine(r.theme,{message:r.request.options===void 0||r.request.options.length===0?`enter a response, press Escape, or type "skip" to return to the normal prompt`:i?`enter an option number/id, freeform text, press Escape, or type "skip" to return to the normal prompt`:`enter an option number/id, press Escape, or type "skip" to return to the normal prompt`,tag:`input`,tone:`warning`}))}}export{ESCAPED_RUNTIME_INPUT_PROMPT,extractPendingRuntimeInputRequests,promptForRuntimeInputRequests};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parsed result for one line of interactive `eve dev` input.
|
|
3
|
-
*/
|
|
4
|
-
export type DevReplInput = {
|
|
5
|
-
kind: "empty";
|
|
6
|
-
} | {
|
|
7
|
-
kind: "exit";
|
|
8
|
-
} | {
|
|
9
|
-
kind: "help";
|
|
10
|
-
} | {
|
|
11
|
-
kind: "new";
|
|
12
|
-
} | {
|
|
13
|
-
kind: "message";
|
|
14
|
-
message: string;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Parse one line of input for the minimal development REPL.
|
|
18
|
-
*/
|
|
19
|
-
export declare function parseDevReplInput(value: string): DevReplInput;
|