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,9 +0,0 @@
|
|
|
1
|
-
import type { EveEvalScorer } from "#evals/types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Scores 1 when the normalized SQL of `output` matches the normalized
|
|
4
|
-
* SQL of `expected`, 0 otherwise. Returns `null` when expected is absent.
|
|
5
|
-
*
|
|
6
|
-
* Normalization collapses whitespace, strips trailing semicolons, and
|
|
7
|
-
* lowercases the SQL string.
|
|
8
|
-
*/
|
|
9
|
-
export declare function exactNormalized(): EveEvalScorer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function exactNormalized(){return({output:e,expected:t})=>{if(t===void 0)return null;let n=normalizeSql(e),r=normalizeSql(t);return{name:`sql.exactNormalized`,score:+(n===r),metadata:{normalizedOutput:n,normalizedExpected:r}}}}function normalizeSql(e){return e.toLowerCase().replace(/\s+/g,` `).trim().replace(/;+$/,``)}export{exactNormalized};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { EveEvalScorer } from "#evals/types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Scores 1 when `output` exactly equals `expected` (string comparison),
|
|
4
|
-
* 0 otherwise. Returns `null` when expected is absent.
|
|
5
|
-
*/
|
|
6
|
-
export declare function exact(): EveEvalScorer;
|
|
7
|
-
/**
|
|
8
|
-
* Scores 1 when `output` contains `expected` as a substring,
|
|
9
|
-
* 0 otherwise. Returns `null` when expected is absent.
|
|
10
|
-
*/
|
|
11
|
-
export declare function includes(): EveEvalScorer;
|
|
12
|
-
/**
|
|
13
|
-
* Scores by normalized character-level Levenshtein similarity
|
|
14
|
-
* (1 = identical, 0 = entirely different). Use it for fuzzy comparison
|
|
15
|
-
* when exact match is too strict but you do not want to call an LLM
|
|
16
|
-
* judge or embedding model. Returns `null` when expected is absent.
|
|
17
|
-
*/
|
|
18
|
-
export declare function levenshtein(): EveEvalScorer;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Levenshtein}from"../../node_modules/.pnpm/autoevals@0.0.132_ws@8.21.0/node_modules/autoevals/jsdist/index.js";function exact(){return({output:e,expected:t})=>t===void 0?null:{name:`text.exact`,score:+(e===t)}}function includes(){return({output:e,expected:t})=>t===void 0?null:{name:`text.includes`,score:+!!e.includes(t)}}function levenshtein(){return async({output:t,expected:n})=>n===void 0?null:{name:`text.levenshtein`,score:(await Levenshtein({output:t,expected:n})).score}}export{exact,includes,levenshtein};
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import * as JsonScorers from "#evals/scorers/json.js";
|
|
2
|
-
import * as RunScorers from "#evals/scorers/run.js";
|
|
3
|
-
import * as SqlScorers from "#evals/scorers/sql.js";
|
|
4
|
-
import * as TextScorers from "#evals/scorers/text.js";
|
|
5
|
-
import * as AutoevalsScorers from "#evals/scorers/autoevals.js";
|
|
6
|
-
export type { AutoevalsClosedQAOptions, AutoevalsModelScorerOptions, } from "#evals/scorers/autoevals.js";
|
|
7
|
-
/**
|
|
8
|
-
* Text scorers for exact, substring, and fuzzy character-level matching.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { Text } from "eve/evals/scores";
|
|
13
|
-
*
|
|
14
|
-
* Text.exact()
|
|
15
|
-
* Text.includes()
|
|
16
|
-
* Text.levenshtein()
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export declare const Text: typeof TextScorers;
|
|
20
|
-
/**
|
|
21
|
-
* JSON scorers for structural comparison.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* import { Json } from "eve/evals/scores";
|
|
26
|
-
*
|
|
27
|
-
* Json.deepEqual()
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare const Json: typeof JsonScorers;
|
|
31
|
-
/**
|
|
32
|
-
* SQL scorers for normalized query comparison.
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```ts
|
|
36
|
-
* import { Sql } from "eve/evals/scores";
|
|
37
|
-
*
|
|
38
|
-
* Sql.exactNormalized()
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export declare const Sql: typeof SqlScorers;
|
|
42
|
-
/**
|
|
43
|
-
* Run-derived scorers for execution and tool-usage checks.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```ts
|
|
47
|
-
* import { Run } from "eve/evals/scores";
|
|
48
|
-
*
|
|
49
|
-
* Run.didNotFail()
|
|
50
|
-
* Run.usedTool("get_weather")
|
|
51
|
-
* Run.usedNoTools()
|
|
52
|
-
* Run.maxToolCalls(5)
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
export declare const Run: typeof RunScorers;
|
|
56
|
-
/**
|
|
57
|
-
* Eve-owned wrappers around Braintrust Autoevals scorers.
|
|
58
|
-
*
|
|
59
|
-
* String model IDs route through the Vercel AI Gateway; AI SDK model
|
|
60
|
-
* instances run directly.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```ts
|
|
64
|
-
* import { Autoevals } from "eve/evals/scores";
|
|
65
|
-
*
|
|
66
|
-
* Autoevals.factuality()
|
|
67
|
-
* Autoevals.summary()
|
|
68
|
-
* Autoevals.sql()
|
|
69
|
-
* Autoevals.closedQA({ criteria: "Must cite a source." })
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export declare const Autoevals: typeof AutoevalsScorers;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import*as JsonScorers from"#evals/scorers/json.js";import*as RunScorers from"#evals/scorers/run.js";import*as SqlScorers from"#evals/scorers/sql.js";import*as TextScorers from"#evals/scorers/text.js";import*as AutoevalsScorers from"#evals/scorers/autoevals.js";const Text=TextScorers,Json=JsonScorers,Sql=SqlScorers,Run=RunScorers,Autoevals=AutoevalsScorers;export{Autoevals,Json,Run,Sql,Text};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CompactionCallbackResult, HarnessSession } from "#harness/types.js";
|
|
2
|
-
import type { ResolvedToolDefinition } from "#runtime/types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Builds the harness compaction callback for a list of resolved tools.
|
|
5
|
-
*
|
|
6
|
-
* Hooks run in registration order inside the active `AlsContext`; throws
|
|
7
|
-
* are logged so one buggy hook cannot block the rest.
|
|
8
|
-
*/
|
|
9
|
-
export declare function createToolCompactionHandler(tools: readonly ResolvedToolDefinition[]): (session: HarnessSession) => Promise<CompactionCallbackResult>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createLogger}from"#internal/logging.js";import{buildCallbackContext}from"#context/build-callback-context.js";const log=createLogger(`execution.tool-compaction`);function createToolCompactionHandler(e){let n=e.filter(e=>e.onCompact!==void 0);return async e=>{if(n.length===0)return{messages:[],session:e};let r=buildCallbackContext(),i=new AbortController().signal,a=[],o=e.state??{},s=!1;for(let t of n){let n=t.onCompact;if(n===void 0)continue;let c;try{c=await n({history:e.history,signal:i},r)??{}}catch(e){log.warn(`compaction hook for tool "${t.name}" threw and was skipped`,{toolName:t.name,error:e});continue}c.messages!==void 0&&c.messages.length>0&&a.push(...c.messages),c.sessionPatch!==void 0&&(o={...o,...c.sessionPatch},s=!0)}return{messages:a,session:s?{...e,state:o}:e}}}export{createToolCompactionHandler};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { HandleMessageStreamEvent } from "#protocol/message.js";
|
|
2
|
-
/**
|
|
3
|
-
* Returns the last boundary event observed for the current streamed turn slice.
|
|
4
|
-
*/
|
|
5
|
-
export declare function extractCurrentTurnBoundaryEvent(events: readonly HandleMessageStreamEvent[]): HandleMessageStreamEvent | undefined;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{isCurrentTurnBoundaryEvent}from"#protocol/message.js";function extractCurrentTurnBoundaryEvent(e){return[...e].reverse().find(isCurrentTurnBoundaryEvent)}export{extractCurrentTurnBoundaryEvent};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves one server-provided resource reference against the configured
|
|
3
|
-
* development server URL.
|
|
4
|
-
*
|
|
5
|
-
* Absolute resource URLs are returned untouched; relative routes are
|
|
6
|
-
* resolved against the development server base.
|
|
7
|
-
*/
|
|
8
|
-
export declare function resolveDevelopmentServerResourceUrl(input: {
|
|
9
|
-
resource: string;
|
|
10
|
-
serverUrl: string;
|
|
11
|
-
}): URL;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function createDevelopmentServerBaseUrl(e){let t=new URL(e);return t.hash=``,t.search=``,t.pathname.endsWith(`/`)||(t.pathname=`${t.pathname}/`),t}function resolveDevelopmentServerResourceUrl(e){let t=e.resource.trim();try{return new URL(t)}catch{return new URL(t.replace(/^\/+/,``),createDevelopmentServerBaseUrl(e.serverUrl))}}export{resolveDevelopmentServerResourceUrl};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ChannelSetupPrompter } from "#setup/scaffold/cli/index.js";
|
|
2
|
-
import type { Prompter } from "./prompter.js";
|
|
3
|
-
/**
|
|
4
|
-
* Adapts the setup {@link Prompter} to the channel scaffolder's
|
|
5
|
-
* {@link ChannelSetupPrompter}, mapping its checklist onto the unified
|
|
6
|
-
* `select({ multiple: true })` and reusing the same single-select method.
|
|
7
|
-
*/
|
|
8
|
-
export declare function toChannelSetupPrompter(prompter: Prompter): ChannelSetupPrompter;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function toChannelSetupPrompter(e){return{multiselect:t=>e.select({multiple:!0,message:t.message,required:t.required,options:t.options.map(e=>({value:e.value,label:e.label,hint:e.hint,disabled:e.disabled,disabledReason:e.disabled?e.disabledReason:void 0}))}),select:t=>e.select({message:t.message,initialValue:t.initialValue,options:t.options.map(e=>({value:e.value,label:e.label,hint:e.hint,disabled:e.disabled}))}),log:e.log}}export{toChannelSetupPrompter};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{pathExists,writeTextFile}from"./files.js";import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{patchPackageJson}from"./package-json.js";import{PNPM_WORKSPACE_PATH,ensurePnpmWorkspacePolicy}from"./pnpm-workspace.js";import{WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON}from"./web-template.js";import"./project.js";import{basename,join,resolve}from"node:path";import{readFile,readdir,writeFile}from"node:fs/promises";const SLACK_CHANNEL_DEFAULT_ROUTE=`/eve/v1/slack`,DEFAULT_SLACK_CONNECTOR_SLUG=`my-agent`,PACKAGE_DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`],WEB_NEXT_CONFIG_PATH=`next.config.ts`,WEB_VERCEL_JSON_PATH=`vercel.json`,WEB_VERCEL_JSON_SCHEMA=`https://openapi.vercel.sh/vercel.json`,WEB_COMPETING_NEXT_CONFIG_PATHS=[`next.config.js`,`next.config.mjs`,WEB_NEXT_CONFIG_PATH,`next.config.mts`].filter(e=>e!==WEB_NEXT_CONFIG_PATH),WEB_DEFAULT_VERCEL_SERVICES={web:{entrypoint:`.`,framework:`nextjs`,routePrefix:`/`},eve:{buildCommand:`eve build`,entrypoint:`.`,framework:`eve`,routePrefix:`/_eve_internal/eve`}};function toSlackConnectorSlug(e){return e}function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function readDependencyVersion(e,t){let n=JSON.parse(await readFile(e,`utf8`));if(!isJsonObject(n)||!isJsonObject(n.dependencies))return;let r=n.dependencies[t];return typeof r==`string`?r:void 0}function packageJsonHasDependency(e,t){for(let n of PACKAGE_DEPENDENCY_FIELDS){let r=e[n];if(isJsonObject(r)&&typeof r[t]==`string`)return!0}return!1}async function hasPackageDependency(t,n){if(!await pathExists(t))return!1;let r=JSON.parse(await readFile(t,`utf8`));return isJsonObject(r)&&packageJsonHasDependency(r,n)}async function ensurePackageDependency(t,n,r){return!await pathExists(t)||await readDependencyVersion(t,n)===r?[]:(await patchPackageJson(t,{dependencies:{[n]:r}}),[{path:t,dependencies:[n],devDependencies:[],scripts:[]}])}function resolveWebPackageVersions(e){return{evePackageVersion:e?.evePackageVersion??`0.6.0-beta.8`,aiPackageVersion:e?.aiPackageVersion??`7.0.0-canary.165`,nextPackageVersion:e?.nextPackageVersion??`16.2.6`,reactPackageVersion:e?.reactPackageVersion??`19.2.6`,reactDomPackageVersion:e?.reactDomPackageVersion??`19.2.6`,streamdownPackageVersion:e?.streamdownPackageVersion??`2.5.0`,zodPackageVersion:e?.zodPackageVersion??`4.4.3`,tsgoPackageVersion:e?.tsgoPackageVersion??`7.0.0-dev.20260523.1`,typesNodePackageVersion:e?.typesNodePackageVersion??`25.9.1`,typesReactPackageVersion:e?.typesReactPackageVersion??`19.2.15`,typesReactDomPackageVersion:e?.typesReactDomPackageVersion??`19.2.3`}}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}async function patchWebPackageJson(t,n){if(!await pathExists(t))return[];assertStampedVersion(`evePackageVersion`,n.evePackageVersion),assertStampedVersion(`aiPackageVersion`,n.aiPackageVersion),assertStampedVersion(`nextPackageVersion`,n.nextPackageVersion),assertStampedVersion(`reactPackageVersion`,n.reactPackageVersion),assertStampedVersion(`reactDomPackageVersion`,n.reactDomPackageVersion),assertStampedVersion(`streamdownPackageVersion`,n.streamdownPackageVersion),assertStampedVersion(`zodPackageVersion`,n.zodPackageVersion),assertStampedVersion(`tsgoPackageVersion`,n.tsgoPackageVersion),assertStampedVersion(`typesNodePackageVersion`,n.typesNodePackageVersion),assertStampedVersion(`typesReactPackageVersion`,n.typesReactPackageVersion),assertStampedVersion(`typesReactDomPackageVersion`,n.typesReactDomPackageVersion);let r={...WEB_APP_TEMPLATE_PACKAGE_JSON.dependencies,ai:n.aiPackageVersion,eve:formatEveDependencySpecifier(n.evePackageVersion),next:n.nextPackageVersion,react:n.reactPackageVersion,"react-dom":n.reactDomPackageVersion,streamdown:n.streamdownPackageVersion,zod:n.zodPackageVersion},a={...WEB_APP_TEMPLATE_PACKAGE_JSON.devDependencies,"@types/node":n.typesNodePackageVersion,"@types/react":n.typesReactPackageVersion,"@types/react-dom":n.typesReactDomPackageVersion,"@typescript/native-preview":n.tsgoPackageVersion},o=WEB_APP_TEMPLATE_PACKAGE_JSON.scripts;return await patchPackageJson(t,{dependencies:r,devDependencies:a,scripts:o}),[{path:t,dependencies:Object.keys(r),devDependencies:Object.keys(a),scripts:Object.keys(o)}]}function normalizeSlackConnectorSlug(e){return toSlackConnectorSlug((e.trim().replace(/^@/,``).split(`/`).at(-1)??``).toLowerCase().replace(/[^a-z0-9_-]+/g,`-`).replace(/^[^a-z0-9]+/,``).replace(/[^a-z0-9]+$/,``).slice(0,100).replace(/[^a-z0-9]+$/,``)||`my-agent`)}async function deriveSlackConnectorSlug(e,t){if(t!==void 0&&t.length>0&&t!==`.`)return normalizeSlackConnectorSlug(t);try{let t=await readFile(join(e,`package.json`),`utf8`),n=JSON.parse(t);if(typeof n.name==`string`&&n.name.length>0)return normalizeSlackConnectorSlug(n.name)}catch{}return normalizeSlackConnectorSlug(basename(resolve(e))||`my-agent`)}function buildSlackTemplate(e){return`import { connectSlackCredentials } from "@vercel/connect/eve";
|
|
2
|
-
import { slackChannel } from "eve/channels/slack";
|
|
3
|
-
|
|
4
|
-
export default slackChannel({
|
|
5
|
-
credentials: connectSlackCredentials("slack/${e}"),
|
|
6
|
-
});
|
|
7
|
-
`}function renderWebAppTemplate(e,t,n){let r=n?``:`, { configureVercelJson: false }`;return e.replaceAll(`__EVE_INIT_APP_NAME__`,t).replaceAll(`__EVE_INIT_WITH_EVE_OPTIONS__`,r)}function withWebVercelServices(e){let t=JSON.parse(e);if(!isJsonObject(t))throw Error(`${WEB_VERCEL_JSON_PATH} must contain a JSON object.`);let n=t.experimentalServices;if(n!==void 0&&!isJsonObject(n))throw Error(`${WEB_VERCEL_JSON_PATH} experimentalServices must contain a JSON object.`);let r={...t,$schema:typeof t.$schema==`string`?t.$schema:WEB_VERCEL_JSON_SCHEMA,experimentalServices:{...n,web:n?.web??WEB_DEFAULT_VERCEL_SERVICES.web,eve:n?.eve??WEB_DEFAULT_VERCEL_SERVICES.eve}};return JSON.stringify(t)===JSON.stringify(r)?e:`${JSON.stringify(r,null,2)}\n`}async function ensureWebVercelServices(n){if(!await pathExists(n))return await writeTextFile(n,`${JSON.stringify({$schema:WEB_VERCEL_JSON_SCHEMA,experimentalServices:WEB_DEFAULT_VERCEL_SERVICES},null,2)}\n`,{force:!0}),`written`;let r=await readFile(n,`utf8`),i=withWebVercelServices(r);return i===r?`skipped`:(await writeFile(n,i,`utf8`),`written`)}async function findCompetingNextConfigFiles(t){let n=[];for(let r of WEB_COMPETING_NEXT_CONFIG_PATHS){let i=join(t,r);await pathExists(i)&&n.push(i)}return n}function assertStampedVersion(e,t){if(t.startsWith(`__`))throw Error(`Channel scaffold received unstamped version token (${e}=${t}). Build eve before using its dist entrypoint.`)}async function ensureChannel(e){switch(e.kind){case`slack`:return ensureSlackChannel({...e,kind:`slack`});case`web`:return ensureWebChannel({...e,kind:`web`})}}async function ensureWebChannel(n){let r=join(n.projectRoot,`package.json`),i=await pathExists(join(n.projectRoot,`app/page.tsx`));if(!n.force&&await hasPackageDependency(r,`next`))return{kind:`web`,action:`skipped`,skipReason:`nextjs-project`,filesWritten:[],filesSkipped:[r],packageJsonUpdated:[]};let c=await patchWebPackageJson(r,resolveWebPackageVersions(n.webPackageVersions)),l=[],u=[],d=[],f=[],p=basename(resolve(n.projectRoot)),m=n.configureVercelServices??!0;if(m){let e=join(n.projectRoot,WEB_VERCEL_JSON_PATH);await ensureWebVercelServices(e)===`written`?l.push(e):f.push(e)}let h=join(n.projectRoot,PNPM_WORKSPACE_PATH);await ensurePnpmWorkspacePolicy(h)===`written`?l.push(h):f.push(h);for(let[r,i]of Object.entries(WEB_APP_TEMPLATE_FILES)){let a=join(n.projectRoot,r);if(r===`agent/channels/eve.ts`&&!n.force&&await pathExists(a)){f.push(a);continue}let o=await pathExists(a);await writeTextFile(a,renderWebAppTemplate(i,p,m),{force:!0}),l.push(a),o&&u.push(a)}d.push(...await findCompetingNextConfigFiles(n.projectRoot));let g={kind:`web`,action:i?`overwritten`:`created`,filesWritten:l,filesSkipped:f,packageJsonUpdated:c};return u.length>0&&(g.filesOverwritten=u),d.length>0&&(g.competingNextConfigFiles=d),g}async function ensureSlackChannel(n){let r=join(n.projectRoot,`agent/channels/slack.ts`),i=await pathExists(r);if(!n.force&&i)return{kind:`slack`,action:`skipped`,filesWritten:[],filesSkipped:[r],packageJsonUpdated:[]};let a=n.connectPackageVersion??`0.1.1`;assertStampedVersion(`connectPackageVersion`,a);let o=await ensurePackageDependency(join(n.projectRoot,`package.json`),`@vercel/connect`,a),s=n.slackConnectorSlug??await deriveSlackConnectorSlug(n.projectRoot);await writeTextFile(r,buildSlackTemplate(s),{force:n.force});let c={kind:`slack`,action:i?`overwritten`:`created`,filesWritten:[r],filesSkipped:[],packageJsonUpdated:o,slackConnectorSlug:s};return i&&(c.filesOverwritten=[r]),c}async function listAuthoredChannels(e){let t=join(e,`agent/channels`),i;try{i=await readdir(t,{withFileTypes:!0})}catch(e){if(e.code===`ENOENT`)return[];throw e}let a=[];for(let e of i){if(e.isFile()){let t=getSupportedModuleBaseName(e.name);t!==null&&a.push(t);continue}if(e.isDirectory())try{(await readdir(join(t,e.name))).some(e=>matchesSupportedModuleBaseName(e,`connection`))&&a.push(e.name)}catch{}}return a.sort()}export{DEFAULT_SLACK_CONNECTOR_SLUG,SLACK_CHANNEL_DEFAULT_ROUTE,deriveSlackConnectorSlug,ensureChannel,listAuthoredChannels,normalizeSlackConnectorSlug};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ChannelSetupPrompter } from "./channel-setup-prompter.js";
|
|
2
|
-
/** Cancellation raised by the `eve channels add` prompt UI. */
|
|
3
|
-
export declare class ChannelAddCancelledError extends Error {
|
|
4
|
-
constructor();
|
|
5
|
-
}
|
|
6
|
-
/** Terminal operations required by `eve channels add`. */
|
|
7
|
-
export interface ChannelAddPrompter extends ChannelSetupPrompter {
|
|
8
|
-
intro(title: string, subtitle?: string): void;
|
|
9
|
-
outro(message: string): void;
|
|
10
|
-
}
|
|
11
|
-
/** Creates the onboarding-style prompt UI for `eve channels add`. */
|
|
12
|
-
export declare function createChannelAddPrompter(): ChannelAddPrompter;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{__toESM}from"../../../_virtual/_rolldown/runtime.js";import{q}from"../../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{require_picocolors}from"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{formatPromptCancellation,formatPromptOpener,formatPromptOutro}from"./prompt-ui.js";import{createRailLog}from"./rail-log.js";import{runSelectComponent}from"./select-component.js";var import_picocolors=__toESM(require_picocolors(),1),ChannelAddCancelledError=class extends Error{constructor(){super(`Channel setup cancelled.`),this.name=`ChannelAddCancelledError`}};function guardCancel(e){if(q(e))throw process.stdout.write(formatPromptCancellation(`Channel setup cancelled.`,import_picocolors.default)),new ChannelAddCancelledError;return e}function createChannelAddPrompter(){let e=createRailLog({colors:import_picocolors.default,output:process.stdout});return{intro(t,n=`Eve by Vercel: like Next.js, but for agents.`){e.settle(),process.stdout.write(formatPromptOpener(t,n,import_picocolors.default))},outro(t){e.settle(),process.stdout.write(formatPromptOutro(t,import_picocolors.default))},async multiselect(t){return e.settle(),guardCancel(await runSelectComponent({message:t.message,options:t.options,multiple:!0,search:!1,required:t.required??!1,leadingRail:`green`}))},async select(t){return e.settle(),guardCancel(await runSelectComponent({message:t.message,options:t.options,multiple:!1,search:!1,required:!1,defaultValue:t.initialValue,leadingRail:`green`}))},log:e}}export{ChannelAddCancelledError,createChannelAddPrompter};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { ChannelKind } from "../channels.js";
|
|
2
|
-
interface ChannelSelectOptionBase {
|
|
3
|
-
value: ChannelKind;
|
|
4
|
-
label: string;
|
|
5
|
-
hint?: string;
|
|
6
|
-
}
|
|
7
|
-
/** A selectable item displayed in the shared onboarding channel picker. */
|
|
8
|
-
export interface EnabledChannelSelectOption extends ChannelSelectOptionBase {
|
|
9
|
-
disabled?: false;
|
|
10
|
-
}
|
|
11
|
-
/** An unavailable picker item with a visible explanation for its disabled state. */
|
|
12
|
-
export interface DisabledChannelSelectOption extends ChannelSelectOptionBase {
|
|
13
|
-
disabled: true;
|
|
14
|
-
disabledReason: string;
|
|
15
|
-
}
|
|
16
|
-
/** An item displayed in the shared onboarding channel picker. */
|
|
17
|
-
export type ChannelSelectOption = EnabledChannelSelectOption | DisabledChannelSelectOption;
|
|
18
|
-
/** Reasons that make scaffoldable channel kinds unavailable in a picker. */
|
|
19
|
-
export type DisabledChannelReasons = Readonly<Partial<Record<ChannelKind, string>>>;
|
|
20
|
-
/** Minimal prompt capability needed to select scaffoldable channels. */
|
|
21
|
-
export interface ChannelPrompt {
|
|
22
|
-
multiselect(opts: {
|
|
23
|
-
message: string;
|
|
24
|
-
options: ChannelSelectOption[];
|
|
25
|
-
required?: boolean;
|
|
26
|
-
}): Promise<ChannelKind[]>;
|
|
27
|
-
}
|
|
28
|
-
/** Values supported by the select questions in add-channel setup. */
|
|
29
|
-
export type ChannelSetupPromptValue = string | number | boolean;
|
|
30
|
-
/** One select option shown during add-channel setup. */
|
|
31
|
-
export interface ChannelSetupSelectOption<T extends ChannelSetupPromptValue> {
|
|
32
|
-
value: T;
|
|
33
|
-
label: string;
|
|
34
|
-
hint?: string;
|
|
35
|
-
disabled?: boolean;
|
|
36
|
-
}
|
|
37
|
-
/** Status and subprocess output operations used by shared setup flows. */
|
|
38
|
-
export interface ChannelSetupLog {
|
|
39
|
-
message(text: string): void;
|
|
40
|
-
info(text: string): void;
|
|
41
|
-
success(text: string): void;
|
|
42
|
-
warning(text: string): void;
|
|
43
|
-
error(text: string): void;
|
|
44
|
-
/** Updates the transient detail beneath the current status while a child command runs. */
|
|
45
|
-
commandOutput(text: string): void;
|
|
46
|
-
}
|
|
47
|
-
/** Prompts and status output needed by the shared channel setup flow. */
|
|
48
|
-
export interface ChannelSetupPrompter extends ChannelPrompt {
|
|
49
|
-
select<T extends ChannelSetupPromptValue>(opts: {
|
|
50
|
-
message: string;
|
|
51
|
-
options: ChannelSetupSelectOption<T>[];
|
|
52
|
-
initialValue?: T;
|
|
53
|
-
}): Promise<T>;
|
|
54
|
-
log: ChannelSetupLog;
|
|
55
|
-
}
|
|
56
|
-
export {};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { type RailLog } from "./rail-log.js";
|
|
2
|
-
/** Cancellation raised by the `eve connections add` prompt UI. */
|
|
3
|
-
export declare class ConnectionAddCancelledError extends Error {
|
|
4
|
-
constructor();
|
|
5
|
-
}
|
|
6
|
-
/** A selectable connection shown in the onboarding picker. */
|
|
7
|
-
export interface ConnectionSelectOption {
|
|
8
|
-
value: string;
|
|
9
|
-
label: string;
|
|
10
|
-
hint?: string;
|
|
11
|
-
disabled?: boolean;
|
|
12
|
-
disabledReason?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface ConnectionSetupSelectOption<T extends string> {
|
|
15
|
-
value: T;
|
|
16
|
-
label: string;
|
|
17
|
-
hint?: string;
|
|
18
|
-
disabled?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface ConnectionTextPrompt {
|
|
21
|
-
message: string;
|
|
22
|
-
placeholder?: string;
|
|
23
|
-
initialValue?: string;
|
|
24
|
-
validate?: (value: string) => string | undefined;
|
|
25
|
-
}
|
|
26
|
-
/** Terminal operations required by `eve connections add`. */
|
|
27
|
-
export interface ConnectionAddPrompter {
|
|
28
|
-
intro(title: string, subtitle?: string): void;
|
|
29
|
-
outro(message: string): void;
|
|
30
|
-
multiselect(opts: {
|
|
31
|
-
message: string;
|
|
32
|
-
options: ConnectionSelectOption[];
|
|
33
|
-
required?: boolean;
|
|
34
|
-
}): Promise<string[]>;
|
|
35
|
-
select<T extends string>(opts: {
|
|
36
|
-
message: string;
|
|
37
|
-
options: ConnectionSetupSelectOption<T>[];
|
|
38
|
-
initialValue?: T;
|
|
39
|
-
}): Promise<T>;
|
|
40
|
-
text(opts: ConnectionTextPrompt): Promise<string>;
|
|
41
|
-
log: RailLog;
|
|
42
|
-
}
|
|
43
|
-
/** Creates the onboarding-style prompt UI for `eve connections add`. */
|
|
44
|
-
export declare function createConnectionAddPrompter(): ConnectionAddPrompter;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{__toESM}from"../../../_virtual/_rolldown/runtime.js";import{ht,q}from"../../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{require_picocolors}from"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{bulletFor,cornerFor,formatPromptCancellation,formatPromptOpener,formatPromptOutro,formatPromptSubmission,railFor}from"./prompt-ui.js";import{createRailLog}from"./rail-log.js";import{runSelectComponent}from"./select-component.js";var import_picocolors=__toESM(require_picocolors(),1),ConnectionAddCancelledError=class extends Error{constructor(){super(`Connection setup cancelled.`),this.name=`ConnectionAddCancelledError`}};function toPromptState(e){return e}function guardCancel(e){if(q(e))throw process.stdout.write(formatPromptCancellation(`Connection setup cancelled.`,import_picocolors.default)),new ConnectionAddCancelledError;return e}function textPrompt(e){let n,r=new ht({placeholder:e.placeholder,initialValue:e.initialValue,validate:e.validate?t=>{let n=e.validate?.(t??``);return n===void 0?void 0:n}:void 0,render(){if(!n)return``;let t=n,r=toPromptState(t.state),i=railFor(r,import_picocolors.default),a=`${import_picocolors.default.green(`│`)}\n${bulletFor(r,import_picocolors.default)} ${e.message}\n`,o=t.userInputWithCursor;return r===`submit`?formatPromptSubmission(r,e.message,t.userInput??``,{colors:import_picocolors.default,leadingRail:`green`}):r===`cancel`?`${a}${i} ${import_picocolors.default.strikethrough(import_picocolors.default.dim(t.userInput??``))}\n${i}`:`${a}${i} ${o}${r===`error`?`\n${cornerFor(r,import_picocolors.default)} ${import_picocolors.default.red(t.error)}`:`\n${cornerFor(r,import_picocolors.default)}`}\n`}});return n=r,r.prompt()}function createConnectionAddPrompter(){let e=createRailLog({colors:import_picocolors.default,output:process.stdout});return{intro(t,n=`Eve by Vercel: like Next.js, but for agents.`){e.settle(),process.stdout.write(formatPromptOpener(t,n,import_picocolors.default))},outro(t){e.settle(),process.stdout.write(formatPromptOutro(t,import_picocolors.default))},async multiselect(t){return e.settle(),guardCancel(await runSelectComponent({message:t.message,options:t.options,multiple:!0,search:!1,required:t.required??!1,leadingRail:`green`}))},async select(t){return e.settle(),guardCancel(await runSelectComponent({message:t.message,options:t.options,multiple:!1,search:!1,required:!1,defaultValue:t.initialValue,leadingRail:`green`}))},async text(t){return e.settle(),guardCancel(await textPrompt(t))},log:e}}export{ConnectionAddCancelledError,createConnectionAddPrompter};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{CORNER,RAIL,bulletFor,cornerFor,formatPromptCancellation,formatPromptHeader,formatPromptOpener,formatPromptOutro,formatPromptSubmission,formatRailLine,railFor,renderMultiselectPrompt,renderOptionRow,renderSearchableSelect,renderSelectPrompt}from"./prompt-ui.js";import{createRailLog}from"./rail-log.js";import{SelectComponent,runSelectComponent}from"./select-component.js";import{ChannelAddCancelledError,createChannelAddPrompter}from"./channel-add-prompter.js";import{createPromptCommandOutput}from"./command-output.js";import{ConnectionAddCancelledError,createConnectionAddPrompter}from"./connection-add-prompter.js";export{CORNER,ChannelAddCancelledError,ConnectionAddCancelledError,RAIL,SelectComponent,bulletFor,cornerFor,createChannelAddPrompter,createConnectionAddPrompter,createPromptCommandOutput,createRailLog,formatPromptCancellation,formatPromptHeader,formatPromptOpener,formatPromptOutro,formatPromptSubmission,formatRailLine,railFor,renderMultiselectPrompt,renderOptionRow,renderSearchableSelect,renderSelectPrompt,runSelectComponent};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{W}from"../../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";const RAIL=`│`,CORNER=`└`;function bulletFor(e,t){switch(e){case`initial`:case`active`:return t.green(`△`);case`submit`:return t.green(`▲`);case`cancel`:return t.gray(`▲`);case`error`:return t.red(`▲`)}}function railFor(e,t){switch(e){case`initial`:case`active`:return t.white(`│`);case`submit`:return t.green(`│`);case`cancel`:return t.gray(`│`);case`error`:return t.red(`│`)}}function cornerFor(e,t){switch(e){case`initial`:case`active`:return t.white(`└`);case`submit`:return t.green(`└`);case`cancel`:return t.gray(`└`);case`error`:return t.red(`└`)}}function formatPromptHeader(e,t,n){return`${n.leadingRail===`green`?n.colors.green(`│`):n.colors.white(`│`)}\n${bulletFor(e,n.colors)} ${t}\n`}function formatPromptSubmission(e,t,n,r){let i=r.leadingRail===`green`?r.colors.green(`│`):r.colors.white(`│`),a=n===``?``:` ${n}`;return`${i}\n${bulletFor(e,r.colors)} ${r.colors.dim(t)}${a}`}function formatPromptOpener(e,t,n){return`\n${n.bold(n.white(`▲`))} ${n.bold(e)}\n ${n.dim(t)}\n${n.white(`│`)}\n`}function formatPromptOutro(e,t){let n=e.replace(/\n/g,`
|
|
2
|
-
`);return`${t.green(`│`)}\n${t.green(`●`)} ${n}\n`}function formatPromptCancellation(e,t){let n=e.replace(/\n/g,`
|
|
3
|
-
`);return`${t.red(`│`)}\n${t.red(`●`)} ${t.red(n)}\n`}function formatRailLine(t,n,r){if(t===``)return`${n.green(`│`)}\n`;let i=`${n.green(`│`)} `;return`${t.split(`
|
|
4
|
-
`).map(t=>t===``?n.green(`│`):W(r,t,i)).join(`
|
|
5
|
-
`)}\n`}function renderMultiselectPrompt(e){let t=railFor(e.state,e.colors),n=formatPromptHeader(e.state,e.message,{colors:e.colors,leadingRail:e.leadingRail}),r=new Set(e.selectedValues),i=e.options.some(e=>!e.disabled);switch(e.state){case`submit`:{let t=r.size===0?e.colors.dim(`(none selected)`):e.options.filter(e=>r.has(e.value)).map(e=>e.label).join(`, `);return formatPromptSubmission(e.state,e.message,t,{colors:e.colors,leadingRail:e.leadingRail})}case`cancel`:return`${n}${t} ${e.colors.strikethrough(e.colors.dim(`cancelled`))}\n${t}`;case`error`:{let r=renderMultiselectRows({...e,rail:t});return`${n.trim()}\n${t} ${r}${multiselectHelpLine(t,e.colors,i)}\n${cornerFor(e.state,e.colors)} ${e.colors.red(e.error??``)}\n`}case`initial`:case`active`:{let r=renderMultiselectRows({...e,rail:t}),a=cornerWithNote(cornerFor(e.state,e.colors),e.footerNote);return`${n}${t} ${r}${multiselectHelpLine(t,e.colors,i)}\n${a}\n`}}}function cornerWithNote(e,t){return t?`${e} ${t}`:e}function renderSelectPrompt(e){let t=railFor(e.state,e.colors),n=formatPromptHeader(e.state,e.message,{colors:e.colors,leadingRail:e.leadingRail}),i=e.options[e.cursor];switch(e.state){case`submit`:{let t=i?renderSelectOption(i,`selected`,e.colors):``;return formatPromptSubmission(e.state,e.message,t,{colors:e.colors,leadingRail:e.leadingRail})}case`cancel`:return`${n}${t} ${i?e.colors.strikethrough(e.colors.dim(i.label)):``}\n${t}`;case`initial`:case`active`:case`error`:return`${n}${t} ${e.options.map((n,i)=>{let a=!n.disabled&&i===e.cursor,o=renderSelectOption(n,n.disabled?`disabled`:a?`active`:`inactive`,e.colors);if(!a||!n.description)return o;let s=e.colors.dim(n.description);return inlineOptionWidth(n)<=MAX_INLINE_OPTION_WIDTH?`${o} ${s}`:`${o}\n${t} ${s}`}).join(`\n${t} `)}\n${cornerWithNote(cornerFor(e.state,e.colors),e.footerNote)}\n`}}const MAX_INLINE_OPTION_WIDTH=80;function inlineOptionWidth(e){let t=e.hint?e.hint.length+3:0,n=e.description?e.description.length+2:0;return 5+e.label.length+t+n}function renderOptionRow(e){let{colors:t}=e,n=e.isCursor&&!e.disabled&&!e.locked,r=e.isChecked&&!e.disabled,i=e.locked?t.dim(t.green(`✓`)):r?t.green(`✓`):e.withCursorArrow&&n?t.green(`›`):` `,a=e.disabled?t.strikethrough(t.dim(e.label)):n?e.label:t.dim(e.label),o=n&&e.hint?t.dim(` (${e.hint})`):``,s=e.disabled?e.disabledReason:e.locked?e.lockedReason:void 0;return`${i} ${a}${o}${s?t.dim(` (${s})`):``}`}function renderSelectOption(e,t,n){return t===`selected`?e.label:renderOptionRow({colors:n,label:e.label,hint:e.hint,isCursor:t===`active`,isChecked:t===`active`,withCursorArrow:!1,disabled:t===`disabled`,disabledReason:e.disabledReason,locked:e.locked,lockedReason:e.lockedReason})}function renderMultiselectRows(e){let t=new Set(e.selectedValues);return e.options.map((n,r)=>renderMultiselectRow({colors:e.colors,isCursor:r===e.cursor,isSelected:t.has(n.value),option:n})).join(`\n${e.rail} `)}function renderMultiselectRow(e){return renderOptionRow({colors:e.colors,label:e.option.label,hint:e.option.hint,isCursor:e.isCursor,isChecked:e.isSelected,withCursorArrow:!0,disabled:e.option.disabled,disabledReason:e.option.disabledReason,locked:e.option.locked,lockedReason:e.option.lockedReason})}function multiselectHelpLine(e,t,n){return n?`\n${e}\n${e} ${t.dim(`(`)}${t.cyan(`space`)} ${t.dim(`to select · `)}${t.cyan(`enter`)} ${t.dim(`to confirm or skip`)}${t.dim(`)`)}`:`\n${e}\n${e} ${t.dim(`(no channels available to add)`)}`}function searchableHelpLine(e,t,n){let r=(n?[[t.cyan(`type`),`to filter`],[t.cyan(`space`),`to select`],[t.cyan(`enter`),`to confirm`]]:[[t.cyan(`type`),`to filter`],[t.cyan(`enter`),`to select`]]).map(([e,n])=>`${e}${t.dim(` ${n}`)}`).join(t.dim(` · `));return`\n${e} ${t.dim(`(`)}${r}${t.dim(`)`)}`}function renderSearchableSelect(e){let{colors:t}=e,n=railFor(e.state,t),r=formatPromptHeader(e.state,e.message,{colors:t,leadingRail:e.leadingRail});if(e.state===`submit`)return formatPromptSubmission(e.state,e.message,e.submitDisplay,{colors:t,leadingRail:e.leadingRail});if(e.state===`cancel`)return`${r}${n} ${t.strikethrough(t.dim(e.filter))}${e.filter.trim()?`\n${n}`:``}`;let i=new Set(e.selectedValues),a=e.viewSize??8,o=e.cursor>=e.options.length?0:e.cursor,s=e.filter.length>0?e.filter+t.inverse(` `):e.placeholder?t.dim(e.placeholder):t.inverse(` `),c=Math.max(0,Math.min(o-Math.floor(a/2),Math.max(0,e.options.length-a))),l=Math.min(c+a,e.options.length),u=e.options.slice(c,l),d=u.length===0?t.dim(`(no matches)`):u.map((n,r)=>renderOptionRow({colors:t,label:n.label,hint:n.hint,isCursor:r+c===o,isChecked:i.has(n.value),withCursorArrow:e.multiple,disabled:n.disabled,disabledReason:n.disabledReason,locked:n.locked,lockedReason:n.lockedReason})).join(`\n${n} `),f=e.options.length>u.length?`\n${n} ${t.dim(`↑↓ ${e.options.length} options, showing ${c+1}–${l}`)}`:``,p=searchableHelpLine(n,t,e.multiple),m=`${n} ${t.dim(` `)} ${s}\n${n} ${d}${f}${p}`;return e.state===`error`?`${r.trim()}\n${m}\n${cornerFor(e.state,t)} ${t.red(e.error??``)}\n`:`${r}${m}\n${cornerWithNote(cornerFor(e.state,t),e.footerNote)}\n`}export{CORNER,RAIL,bulletFor,cornerFor,formatPromptCancellation,formatPromptHeader,formatPromptOpener,formatPromptOutro,formatPromptSubmission,formatRailLine,railFor,renderMultiselectPrompt,renderOptionRow,renderSearchableSelect,renderSelectPrompt};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{__toESM}from"../../../_virtual/_rolldown/runtime.js";import{m,q}from"../../../node_modules/.pnpm/@clack_core@1.3.1/node_modules/@clack/core/dist/index.js";import{require_picocolors}from"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{renderMultiselectPrompt,renderSearchableSelect,renderSelectPrompt}from"./prompt-ui.js";import{filterOptions,initialSelectState,orderedSelection,reduceSelect,selectValueAtCursor}from"./select-state.js";var import_picocolors=__toESM(require_picocolors(),1);function toPromptState(e){return e}var SelectComponent=class extends m{options;multiple;search;required;filter=``;optionCursor=0;selectedSet=new Set;constructor(e){super({render:e.render,validate:()=>this.submitError()},!1),this.options=e.options,this.multiple=e.multiple,this.search=e.search,this.required=e.required,this.filter=e.initial.filter,this.optionCursor=e.initial.cursor,this.selectedSet=e.initial.selected,this.refreshValue(),this.on(`key`,(e,t)=>{if(this.multiple&&t?.name===`space`){this.apply({type:`toggle`});return}if(this.search){if(t?.name===`backspace`||e===``||e===`\b`){this.apply({type:`backspace`});return}e!==void 0&&e.length===1&&e>=` `&&e!==``&&e!==` `&&this.apply({type:`char`,char:e})}}),this.on(`cursor`,e=>{e===`up`||e===`left`?this.apply({type:`up`}):(e===`down`||e===`right`)&&this.apply({type:`down`})})}visibleOptions(){return filterOptions(this.options,this.filter)}selectedValues(){if(this.multiple)return orderedSelection(this.options,this.selectedSet);let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?[]:[e]}submitDisplay(){if(this.multiple){let e=this.options.filter(e=>this.selectedSet.has(e.value)).map(e=>e.label);return e.length>0?e.join(`, `):import_picocolors.default.dim(`(none selected)`)}let e=selectValueAtCursor(this.visibleOptions(),this.optionCursor);return e===void 0?``:this.labelForValue(e)}labelForValue(e){return this.options.find(t=>t.value===e)?.label??e}submitError(){return this.multiple?this.required&&this.selectedSet.size===0?`Select at least one option, then press enter.`:void 0:selectValueAtCursor(this.visibleOptions(),this.optionCursor)===void 0?`Type to match an option, then press enter.`:void 0}apply(e){let t=reduceSelect({filter:this.filter,cursor:this.optionCursor,selected:this.selectedSet},e,{options:this.options});this.filter=t.filter,this.optionCursor=t.cursor,this.selectedSet=t.selected,this.refreshValue()}refreshValue(){this.value=this.multiple?orderedSelection(this.options,this.selectedSet):selectValueAtCursor(this.visibleOptions(),this.optionCursor)}};function renderSelectComponent(e,t,n,r){let s=toPromptState(e.state);return e.search?renderSearchableSelect({colors:import_picocolors.default,state:s,leadingRail:n,message:t.message,multiple:e.multiple,filter:e.filter,placeholder:t.placeholder,options:e.visibleOptions(),cursor:e.optionCursor,selectedValues:e.selectedValues(),submitDisplay:e.submitDisplay(),footerNote:r,error:e.error}):e.multiple?renderMultiselectPrompt({colors:import_picocolors.default,cursor:e.optionCursor,error:e.error,footerNote:r,leadingRail:n,message:t.message,options:e.options,selectedValues:e.selectedValues(),state:s}):renderSelectPrompt({colors:import_picocolors.default,cursor:e.optionCursor,footerNote:r,leadingRail:n,message:t.message,options:e.options,state:s})}async function runSelectComponent(e){let toKey=e=>String(e),t=new Map,r=e.options.map(e=>{let n=toKey(e.value);return t.set(n,e.value),{value:n,label:e.label,hint:e.hint,description:e.description,disabled:e.disabled,disabledReason:e.disabledReason,locked:e.locked,lockedReason:e.lockedReason}}),i=initialSelectState({options:r,defaultValue:e.defaultValue===void 0?void 0:toKey(e.defaultValue),initialValues:e.initialValues?.map(toKey)}),a,o,s=new SelectComponent({options:r,multiple:e.multiple,search:e.search,required:e.required,initial:i,render(){return a?renderSelectComponent(a,{message:e.message,placeholder:e.placeholder},e.leadingRail,o?.note()):``}});a=s,o=e.attachGuard?.(s);let c=await s.prompt();return q(c)?c:e.multiple?c.map(e=>t.get(e)??e):t.get(c)??c}export{SelectComponent,runSelectComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function filterOptions(e,t){let n=t.trim().toLowerCase();return n===``?[...e]:e.filter(e=>e.label.toLowerCase().includes(n)||e.value.toLowerCase().includes(n)||(e.hint?.toLowerCase().includes(n)??!1))}function isNavigable(e){return!e.disabled&&!e.locked}function firstNavigableIndex(e){let t=e.findIndex(isNavigable);return t<0?0:t}function stepCursor(e,t,n){if(e.length===0)return t;let r=t;for(let t=0;t<e.length;t+=1){r=(r+n+e.length)%e.length;let t=e[r];if(t&&isNavigable(t))return r}return t}function reduceSelect(e,t,n){switch(t.type){case`char`:{let r=e.filter+t.char;return{...e,filter:r,cursor:firstNavigableIndex(filterOptions(n.options,r))}}case`backspace`:{if(e.filter.length===0)return e;let t=e.filter.slice(0,-1);return{...e,filter:t,cursor:firstNavigableIndex(filterOptions(n.options,t))}}case`up`:case`down`:{let r=filterOptions(n.options,e.filter),i=t.type===`up`?-1:1,a=stepCursor(r,e.cursor,i);return a===e.cursor?e:{...e,cursor:a}}case`toggle`:{let t=filterOptions(n.options,e.filter)[e.cursor];if(t===void 0||!isNavigable(t))return e;let r=new Set(e.selected);return r.has(t.value)?r.delete(t.value):r.add(t.value),{...e,selected:r}}}}function initialSelectState(e){let t=e.filter??``,n=filterOptions(e.options,t),r=firstNavigableIndex(n);if(e.defaultValue!==void 0){let t=n.findIndex(t=>isNavigable(t)&&t.value===e.defaultValue);t>=0&&(r=t)}let i=e.options.filter(e=>e.locked).map(e=>e.value);return{filter:t,cursor:r,selected:new Set([...e.initialValues??[],...i])}}function selectValueAtCursor(e,t){let n=e[t];return n&&isNavigable(n)?n.value:void 0}function orderedSelection(e,t){return e.filter(e=>t.has(e.value)).map(e=>e.value)}export{filterOptions,initialSelectState,orderedSelection,reduceSelect,selectValueAtCursor};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import{pathExists,writeTextFile}from"./files.js";import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{patchPackageJson}from"./package-json.js";import{endpointForProtocol}from"./connections/catalog.js";import{join}from"node:path";import{readFile,readdir,writeFile}from"node:fs/promises";const CONNECT_PACKAGE_NAME=`@vercel/connect`,USER_AUTHORED_CONNECTION_DIR=`agent/connections`;function resolveAuth(e){return e.auth??{kind:`none`}}function envKeysForAuth(e){switch(e.kind){case`bearer-env`:return[e.envVar];case`header`:return e.headers.map(e=>e.envVar);case`connect`:case`none`:return[]}}function assertStampedVersion(e,t){if(t.startsWith(`__`))throw Error(`Connection scaffold received unstamped version token (${e}=${t}). Build eve before using its dist entrypoint.`)}function authBlock(e){switch(e.kind){case`connect`:return` auth: connect("${e.connector}"),\n`;case`bearer-env`:return` auth: { getToken: async () => ({ token: process.env.${e.envVar}! }) },\n`;case`header`:return` headers: () => ({\n${e.headers.map(e=>` "${e.header}": process.env.${e.envVar}!,`).join(`
|
|
2
|
-
`)}\n }),\n`;case`none`:return``}}function renderMcpTemplate(e,t,n){return`${n.kind===`connect`?`import { connect } from "@vercel/connect/eve";
|
|
3
|
-
import { defineMcpClientConnection } from "eve/connections";
|
|
4
|
-
`:`import { defineMcpClientConnection } from "eve/connections";
|
|
5
|
-
`}
|
|
6
|
-
export default defineMcpClientConnection({
|
|
7
|
-
url: "${e.url}",
|
|
8
|
-
description: "${t}",
|
|
9
|
-
${authBlock(n)}});
|
|
10
|
-
`}function renderOpenApiTemplate(e,t,n){let r=n.kind===`connect`?`import { connect } from "@vercel/connect/eve";
|
|
11
|
-
import { defineOpenAPIConnection } from "eve/connections";
|
|
12
|
-
`:`import { defineOpenAPIConnection } from "eve/connections";
|
|
13
|
-
`,i=e.baseUrl?` baseUrl: "${e.baseUrl}",\n`:``;return`${r}
|
|
14
|
-
export default defineOpenAPIConnection({
|
|
15
|
-
spec: "${e.spec}",
|
|
16
|
-
${i} description: "${t}",
|
|
17
|
-
${authBlock(n)}});
|
|
18
|
-
`}function renderTemplate(e,t,n,r){return e===`mcp`?renderMcpTemplate(t,n,r):renderOpenApiTemplate(t,n,r)}function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function ensureConnectDependency(t,n){if(!await pathExists(t))return[];let r=JSON.parse(await readFile(t,`utf8`));return(isJsonObject(r)&&isJsonObject(r.dependencies)?r.dependencies[CONNECT_PACKAGE_NAME]:void 0)===n?[]:(await patchPackageJson(t,{dependencies:{[CONNECT_PACKAGE_NAME]:n}}),[{path:t,dependencies:[CONNECT_PACKAGE_NAME],devDependencies:[],scripts:[]}])}function envKeyPresent(e,t){return RegExp(`^\\s*(?:export\\s+)?${t}\\s*=`,`m`).test(e)}async function seedEnvPlaceholders(t,n){if(n.length===0)return[];let r=``;await pathExists(t)&&(r=await readFile(t,`utf8`));let i=n.filter(e=>!envKeyPresent(r,e));if(i.length===0)return[];let a=`${r.length>0&&!r.endsWith(`
|
|
19
|
-
`)?`
|
|
20
|
-
`:``}${i.map(e=>`${e}=`).join(`
|
|
21
|
-
`)}\n`;return await writeFile(t,r+a,`utf8`),i}async function ensureConnection(n){let r=n.slug??n.entry.slug,i=resolveAuth(n.entry),o=endpointForProtocol(n.entry,n.protocol);if(o===null)throw Error(`Connection "${r}" is missing a ${n.protocol===`mcp`?`mcp.url`:`openapi.spec`} endpoint for protocol "${n.protocol}".`);let s=join(n.projectRoot,USER_AUTHORED_CONNECTION_DIR,`${r}.ts`),c=envKeysForAuth(i),l=await pathExists(s);if(!n.force&&l)return{slug:r,protocol:n.protocol,action:`skipped`,filePath:s,filesWritten:[],filesSkipped:[s],packageJsonUpdated:[],envKeysAdded:[],envKeysRequired:c};let u=[];if(i.kind===`connect`){let e=n.connectPackageVersion??`0.1.1`;assertStampedVersion(`connectPackageVersion`,e),u.push(...await ensureConnectDependency(join(n.projectRoot,`package.json`),e))}await writeTextFile(s,renderTemplate(n.protocol,o,n.entry.description,i),{force:!0});let d=await seedEnvPlaceholders(join(n.projectRoot,`.env.local`),c),f={slug:r,protocol:n.protocol,action:l?`overwritten`:`created`,filePath:s,filesWritten:[s],filesSkipped:[],packageJsonUpdated:u,envKeysAdded:d,envKeysRequired:c};return l&&(f.filesOverwritten=[s]),f}async function listAuthoredConnections(e){let t=join(e,USER_AUTHORED_CONNECTION_DIR),i;try{i=await readdir(t,{withFileTypes:!0})}catch(e){if(e.code===`ENOENT`)return[];throw e}let a=[];for(let e of i){if(e.isFile()){let t=getSupportedModuleBaseName(e.name);t!==null&&a.push(t);continue}if(e.isDirectory())try{(await readdir(join(t,e.name))).some(e=>matchesSupportedModuleBaseName(e,`connection`))&&a.push(e.name)}catch{}}return a.sort()}export{ensureConnection,listAuthoredConnections};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare const PNPM_WORKSPACE_PATH = "pnpm-workspace.yaml";
|
|
2
|
-
export declare const PNPM_WORKSPACE_CONTENT = "minimumReleaseAgeExclude:\n - eve\nallowBuilds:\n sharp: false\n";
|
|
3
|
-
export declare function ensurePnpmWorkspacePolicy(filePath: string): Promise<"skipped" | "written">;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{pathExists,writeTextFile}from"./files.js";import{readFile,writeFile}from"node:fs/promises";const PNPM_WORKSPACE_PATH=`pnpm-workspace.yaml`,PNPM_WORKSPACE_CONTENT=`minimumReleaseAgeExclude:
|
|
2
|
-
- eve
|
|
3
|
-
allowBuilds:
|
|
4
|
-
sharp: false
|
|
5
|
-
`,EVE_RELEASE_AGE_EXCLUSION=` - eve`,SHARP_BUILD_POLICY=` sharp: false`;function findYamlBlockEnd(e,t){let n=t+1;for(;n<e.length;){let t=e[n]??``;if(t.length>0&&!t.startsWith(` `)&&!t.startsWith(` `))break;n+=1}return n}function withSharpBuildPolicy(e){let t=e.endsWith(`
|
|
6
|
-
`)?e:`${e}\n`,n=t.split(`
|
|
7
|
-
`),r=n.findIndex(e=>e===`allowBuilds:`);if(r<0)return`${t.trim().length===0?``:`${t}\n`}allowBuilds:\n${SHARP_BUILD_POLICY}\n`;let i=findYamlBlockEnd(n,r);if(n.slice(r+1,i).some(e=>/^\s+sharp:/.test(e)))return e;let a=i;for(;a>r+1&&n[a-1]===``;)--a;return n.splice(a,0,SHARP_BUILD_POLICY),n.join(`
|
|
8
|
-
`)}function withExperimentalEveReleaseAgeExclusion(e){let t=e.endsWith(`
|
|
9
|
-
`)?e:`${e}\n`,n=t.split(`
|
|
10
|
-
`),r=n.findIndex(e=>e===`minimumReleaseAgeExclude:`);if(r<0)return`${t.trim().length===0?``:`${t}\n`}minimumReleaseAgeExclude:\n${EVE_RELEASE_AGE_EXCLUSION}\n`;let i=findYamlBlockEnd(n,r);if(n.slice(r+1,i).some(e=>e.trim()===`- eve`))return e;let a=i;for(;a>r+1&&n[a-1]===``;)--a;return n.splice(a,0,EVE_RELEASE_AGE_EXCLUSION),n.join(`
|
|
11
|
-
`)}async function ensurePnpmWorkspacePolicy(i){if(!await pathExists(i))return await writeTextFile(i,PNPM_WORKSPACE_CONTENT,{force:!0}),`written`;let o=await readFile(i,`utf8`),s=withExperimentalEveReleaseAgeExclusion(withSharpBuildPolicy(o));return s===o?`skipped`:(await writeFile(i,s,`utf8`),`written`)}export{PNPM_WORKSPACE_CONTENT,PNPM_WORKSPACE_PATH,ensurePnpmWorkspacePolicy};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Link and production-deployment status for a Vercel project directory. */
|
|
2
|
-
export type DeploymentState = "unlinked" | "linked" | "deployed";
|
|
3
|
-
/** Vercel project data resolved from local link metadata and the API. */
|
|
4
|
-
export interface DeploymentInfo {
|
|
5
|
-
state: DeploymentState;
|
|
6
|
-
projectId?: string;
|
|
7
|
-
orgId?: string;
|
|
8
|
-
productionUrl?: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Reads local Vercel link metadata and checks whether the linked project has a production alias.
|
|
12
|
-
*/
|
|
13
|
-
export declare function detectDeployment(projectPath: string): Promise<DeploymentInfo>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{captureVercel}from"./run-vercel.js";import{join}from"node:path";import{readFile}from"node:fs/promises";function pickShortestAlias(e){if(!Array.isArray(e))return;let t;for(let n of e)typeof n!=`string`||n.length===0||(t===void 0||n.length<t.length)&&(t=n);return t}async function fetchProductionAlias(t,n,r){let i=await captureVercel([`api`,`/v9/projects/${t}?teamId=${n}`,`--scope`,n],{cwd:r});if(i.ok)try{let e=pickShortestAlias(JSON.parse(i.stdout).targets?.production?.alias);return e?`https://${e}`:void 0}catch{return}}async function detectDeployment(e){let r;try{r=await readFile(join(e,`.vercel`,`project.json`),`utf8`)}catch{return{state:`unlinked`}}let i;try{i=JSON.parse(r)}catch{return{state:`unlinked`}}let a=typeof i.projectId==`string`?i.projectId:void 0,o=typeof i.orgId==`string`?i.orgId:void 0;if(!a||!o)return{state:`unlinked`};let s=await fetchProductionAlias(a,o,e);return{state:s?`deployed`:`linked`,projectId:a,orgId:o,productionUrl:s}}export{detectDeployment};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { detectDeployment, type DeploymentInfo, type DeploymentState, } from "./detect-deployment.js";
|
|
2
|
-
export { runPnpmInstall, spawnPnpm, type RunPnpmOptions } from "./run-pnpm.js";
|
|
3
|
-
export { captureVercel, runVercel, type RunVercelOptions, type VercelCaptureFailure, type VercelCaptureResult, } from "./run-vercel.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{captureVercel,runVercel}from"./run-vercel.js";import{detectDeployment}from"./detect-deployment.js";import{runPnpmInstall,spawnPnpm}from"./run-pnpm.js";export{captureVercel,detectDeployment,runPnpmInstall,runVercel,spawnPnpm};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolved invocation for the host's pnpm executable.
|
|
3
|
-
*/
|
|
4
|
-
export interface PnpmInvocation {
|
|
5
|
-
readonly args: readonly string[];
|
|
6
|
-
readonly command: string;
|
|
7
|
-
readonly shell?: boolean;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Picks the pnpm executable exposed by the current host environment.
|
|
11
|
-
*/
|
|
12
|
-
export declare function resolvePnpmInvocation(args: readonly string[]): PnpmInvocation;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{extname,join}from"node:path";import{existsSync}from"node:fs";function resolvePnpmInvocation(n){let r=process.env.PNPM_HOME;if(r!==void 0){let e=join(r,process.platform===`win32`?`pnpm.CMD`:`pnpm`);if(existsSync(e))return{args:n,command:e,shell:process.platform===`win32`}}let i=process.env.npm_execpath;if(i!==void 0&&i.toLowerCase().includes(`pnpm`)){let t=extname(i).toLowerCase();return t===`.cjs`||t===`.js`?{args:[i,...n],command:process.execPath}:{args:n,command:i,shell:process.platform===`win32`}}return{args:n,command:`pnpm`}}export{resolvePnpmInvocation};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type ProcessOutputHandler } from "./process-output.js";
|
|
2
|
-
/** Output routing options for setup-owned pnpm commands. */
|
|
3
|
-
export interface RunPnpmOptions {
|
|
4
|
-
/** Streams command output to a parent-owned renderer instead of writing outside it. */
|
|
5
|
-
onOutput?: ProcessOutputHandler;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Runs `pnpm <args>` in `projectRoot`, resolving to whether it exited cleanly.
|
|
9
|
-
* Standalone agents run with `--ignore-workspace` unless they carry their own
|
|
10
|
-
* `pnpm-workspace.yaml`, which may set policy such as allowBuilds.
|
|
11
|
-
*/
|
|
12
|
-
export declare function spawnPnpm(projectRoot: string, args: string[], options?: RunPnpmOptions): Promise<boolean>;
|
|
13
|
-
/**
|
|
14
|
-
* Installs project dependencies and permits the lockfile update required
|
|
15
|
-
* after an interactive scaffold step changes `package.json`.
|
|
16
|
-
*/
|
|
17
|
-
export declare function runPnpmInstall(projectRoot: string, options?: RunPnpmOptions): Promise<boolean>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createProcessOutputBuffer}from"./process-output.js";import{resolvePnpmInvocation}from"./pnpm-invocation.js";import{join}from"node:path";import{existsSync}from"node:fs";import{spawn}from"node:child_process";function spawnPnpm(n,r,i={}){return new Promise(a=>{let o=resolvePnpmInvocation([`--dir`,n,...existsSync(join(n,`pnpm-workspace.yaml`))?[]:[`--ignore-workspace`],...r]),s=i.onOutput&&createProcessOutputBuffer(i.onOutput),c=spawn(o.command,[...o.args],{cwd:n,stdio:i.onOutput?[`inherit`,`pipe`,`pipe`]:`inherit`,shell:o.shell});c.stdout?.on(`data`,e=>s?.write(`stdout`,e)),c.stderr?.on(`data`,e=>s?.write(`stderr`,e));let l=!1;function settle(e){l||(l=!0,s?.flush(),a(e))}function reportFailure(e){i.onOutput?i.onOutput({stream:`stderr`,text:e}):process.stderr.write(`\n${e}\n`)}c.on(`error`,e=>{e.code===`ENOENT`?reportFailure(`pnpm not found. Install it before running this step.`):reportFailure(`pnpm ${r.join(` `)} failed: ${e.message}`),settle(!1)}),c.on(`close`,e=>settle(e===0))})}function runPnpmInstall(e,t={}){return spawnPnpm(e,[`install`,`--no-frozen-lockfile`],t)}export{runPnpmInstall,spawnPnpm};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createProcessOutputBuffer}from"./process-output.js";import{dirname,join,resolve}from"node:path";import{accessSync,constants,existsSync,statSync}from"node:fs";import{spawn}from"node:child_process";const CONNECT_FEATURE_FLAG_ENV={FF_CONNECT_ENABLED:`1`},VERCEL_NOT_FOUND_MESSAGE=`Vercel CLI not found. Install with: npm i -g vercel@latest`;function buildSpawnEnv(e){return{...process.env,...CONNECT_FEATURE_FLAG_ENV,...e}}function existingDir(e){let n=resolve(e);for(;!existsSync(n);){let e=dirname(n);if(e===n)break;n=e}return n}function ancestorDirectories(e){let n=[],i=resolve(e);for(;;){n.push(i);let e=dirname(i);if(e===i)return n;i=e}}function findExecutable(e){try{if(accessSync(e,constants.F_OK|constants.X_OK),statSync(e).isFile())return e}catch{return}}function findLocalVercel(e){for(let t of ancestorDirectories(e)){let e=findExecutable(join(t,`node_modules`,`.bin`,`vercel`));if(e!==void 0)return e}}function resolveVercelInvocation(e){let t=findLocalVercel(e);return t===void 0?{command:`vercel`,commandArgs:[]}:{command:t,commandArgs:[]}}function stdioForRun(e){return e.onOutput?[e.nonInteractive?`ignore`:`inherit`,`pipe`,`pipe`]:e.nonInteractive?[`ignore`,`pipe`,`pipe`]:`inherit`}async function runVercel(t,n){return new Promise(r=>{let i=existingDir(n.cwd),a=resolveVercelInvocation(i),o=n.onOutput&&createProcessOutputBuffer(n.onOutput),s=spawn(a.command,[...a.commandArgs,...t],{cwd:i,stdio:stdioForRun(n),env:buildSpawnEnv(n.extraEnv??{})});s.stdout?.on(`data`,e=>o?.write(`stdout`,e)),s.stderr?.on(`data`,e=>o?.write(`stderr`,e));let c=!1;function settle(e){c||(c=!0,o?.flush(),r(e))}function reportFailure(e){n.onOutput?n.onOutput({stream:`stderr`,text:e}):process.stderr.write(`\n${e}\n`)}s.on(`error`,e=>{e.code===`ENOENT`?reportFailure(VERCEL_NOT_FOUND_MESSAGE):reportFailure(`vercel ${t.join(` `)} failed: ${e.message}`),settle(!1)}),s.on(`close`,e=>{e!==0&&e!==null&&(o?.flush(),reportFailure(`vercel ${t.join(` `)} exited with code ${e}.`)),settle(e===0)})})}async function runVercelCaptureStdout(t,n){return new Promise(r=>{let i=existingDir(n.cwd),a=resolveVercelInvocation(i),o=n.onOutput&&createProcessOutputBuffer(n.onOutput),s=spawn(a.command,[...a.commandArgs,...t],{cwd:i,stdio:[n.nonInteractive?`ignore`:`inherit`,`pipe`,n.onOutput?`pipe`:`inherit`],env:buildSpawnEnv(n.extraEnv??{})}),c=[];s.stdout?.on(`data`,e=>c.push(e.toString(`utf8`))),s.stderr?.on(`data`,e=>o?.write(`stderr`,e));let l=!1;function settle(e){l||(l=!0,o?.flush(),r({ok:e,stdout:c.join(``)}))}function reportFailure(e){n.onOutput?n.onOutput({stream:`stderr`,text:e}):process.stderr.write(`\n${e}\n`)}s.on(`error`,e=>{reportFailure(e.code===`ENOENT`?VERCEL_NOT_FOUND_MESSAGE:`vercel ${t.join(` `)} failed: ${e.message}`),settle(!1)}),s.on(`close`,e=>{e!==0&&e!==null&&reportFailure(`vercel ${t.join(` `)} exited with code ${e}.`),settle(e===0)})})}async function captureVercel(t,n){return new Promise(r=>{let i=existingDir(n.cwd),a=resolveVercelInvocation(i),o=n.onOutput&&createProcessOutputBuffer(n.onOutput),s=spawn(a.command,[...a.commandArgs,...t],{cwd:i,stdio:[`ignore`,`pipe`,`pipe`],env:buildSpawnEnv(n.extraEnv??{})}),c=[],l=[];s.stdout?.on(`data`,e=>c.push(e.toString(`utf8`))),s.stderr?.on(`data`,e=>{l.push(e.toString(`utf8`)),o?.write(`stderr`,e)});let u=!1;function fail(e){u||(u=!0,o?.flush(),n.onOutput?.({stream:`stderr`,text:e.message}),r({ok:!1,failure:e}))}function succeed(){u||(u=!0,o?.flush(),r({ok:!0,stdout:c.join(``)}))}s.on(`error`,e=>{fail({errno:e.code,stdout:c.join(``),stderr:l.join(``),message:e.code===`ENOENT`?VERCEL_NOT_FOUND_MESSAGE:`vercel ${t.join(` `)} failed: ${e.message}`})}),s.on(`close`,e=>{if(e!==0&&e!==null){fail({code:e,stdout:c.join(``),stderr:l.join(``),message:`vercel ${t.join(` `)} exited with code ${e}.`});return}succeed()})})}export{captureVercel,runVercel,runVercelCaptureStdout};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export declare const CURRENT_DIRECTORY_PROJECT_NAME = ".";
|
|
2
|
-
export interface ScaffoldBaseProjectOptions {
|
|
3
|
-
projectName: string;
|
|
4
|
-
model: string;
|
|
5
|
-
targetDirectory?: string;
|
|
6
|
-
overwriteExisting?: boolean;
|
|
7
|
-
onOverwriteFile?: (filePath: string) => void | Promise<void>;
|
|
8
|
-
evePackageVersion?: string;
|
|
9
|
-
aiPackageVersion?: string;
|
|
10
|
-
zodPackageVersion?: string;
|
|
11
|
-
tsgoPackageVersion?: string;
|
|
12
|
-
typesNodePackageVersion?: string;
|
|
13
|
-
/**
|
|
14
|
-
* Scaffold an inline provider `byok` block in `agent.ts` that reads the
|
|
15
|
-
* provider key from `process.env` instead of relying on the managed Vercel
|
|
16
|
-
* AI Gateway. Adds `@types/node` to the project so `process` is typed.
|
|
17
|
-
*/
|
|
18
|
-
byokProvider?: boolean;
|
|
19
|
-
}
|
|
20
|
-
export declare function scaffoldBaseProject(options: ScaffoldBaseProjectOptions): Promise<string>;
|
|
21
|
-
export declare function isEveProject(projectRoot: string): Promise<boolean>;
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import{pathExists,writeTextFile}from"./files.js";import{SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS}from"./module-files.js";import{PNPM_WORKSPACE_CONTENT,PNPM_WORKSPACE_PATH}from"./pnpm-workspace.js";import{WEB_APP_TEMPLATE_FILES}from"./web-template.js";import{basename,join,resolve}from"node:path";import{mkdir,readdir,stat}from"node:fs/promises";const CURRENT_DIRECTORY_PROJECT_NAME=`.`,ALLOWED_CREATE_IN_PLACE_ENTRIES=new Set([`.DS_Store`,`.git`,`.gitkeep`,`.hg`]);function renderTemplate(e,t){return e.replaceAll(`__EVE_INIT_APP_NAME__`,t.appName).replaceAll(`__EVE_INIT_MODEL__`,t.model).replaceAll(`__EVE_INIT_PACKAGE_VERSION__`,formatEveDependencySpecifier(t.evePackageVersion)).replaceAll(`__EVE_INIT_AI_SDK_VERSION__`,t.aiPackageVersion).replaceAll(`__EVE_INIT_ZOD_VERSION__`,t.zodPackageVersion).replaceAll(`__EVE_INIT_TSGO_VERSION__`,t.tsgoPackageVersion).replaceAll(`__EVE_INIT_TYPES_NODE_VERSION__`,t.typesNodePackageVersion)}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}function packageJsonTemplate(e){return`{
|
|
2
|
-
"name": "__EVE_INIT_APP_NAME__",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"type": "module",
|
|
5
|
-
"imports": {
|
|
6
|
-
"#*": "./agent/*",
|
|
7
|
-
"#evals/*": "./evals/*"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"build": "eve build",
|
|
11
|
-
"dev": "eve dev",
|
|
12
|
-
"start": "eve start",
|
|
13
|
-
"typecheck": "tsgo"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"ai": "__EVE_INIT_AI_SDK_VERSION__",
|
|
17
|
-
"eve": "__EVE_INIT_PACKAGE_VERSION__",
|
|
18
|
-
"zod": "__EVE_INIT_ZOD_VERSION__"
|
|
19
|
-
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
${e?` "@types/node": "__EVE_INIT_TYPES_NODE_VERSION__",
|
|
22
|
-
"@typescript/native-preview": "__EVE_INIT_TSGO_VERSION__"`:` "@typescript/native-preview": "__EVE_INIT_TSGO_VERSION__"`}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`}const SHARED_TEMPLATE_FILES={"agent/channels/eve.ts":WEB_APP_TEMPLATE_FILES[`agent/channels/eve.ts`],"agent/instructions.md":`# Identity
|
|
26
|
-
|
|
27
|
-
You are a helpful assistant.
|
|
28
|
-
`,"tsconfig.json":`{
|
|
29
|
-
"compilerOptions": {
|
|
30
|
-
"target": "ES2022",
|
|
31
|
-
"module": "NodeNext",
|
|
32
|
-
"moduleResolution": "NodeNext",
|
|
33
|
-
"strict": true,
|
|
34
|
-
"esModuleInterop": true,
|
|
35
|
-
"skipLibCheck": true,
|
|
36
|
-
"noEmit": true
|
|
37
|
-
},
|
|
38
|
-
"include": ["agent/**/*.ts", "evals/**/*.ts", ".eve/**/*.d.ts"]
|
|
39
|
-
}
|
|
40
|
-
`,".gitignore":`node_modules
|
|
41
|
-
.env*
|
|
42
|
-
.eve
|
|
43
|
-
.vercel
|
|
44
|
-
.workflow-data
|
|
45
|
-
.next
|
|
46
|
-
.output
|
|
47
|
-
.nitro
|
|
48
|
-
dist
|
|
49
|
-
.DS_Store
|
|
50
|
-
*.tsbuildinfo
|
|
51
|
-
`,".vercelignore":`node_modules
|
|
52
|
-
.eve
|
|
53
|
-
.next
|
|
54
|
-
.output
|
|
55
|
-
.nitro
|
|
56
|
-
dist
|
|
57
|
-
`,[PNPM_WORKSPACE_PATH]:PNPM_WORKSPACE_CONTENT,"AGENTS.md":`# Eve Agent App
|
|
58
|
-
|
|
59
|
-
This project uses the Eve framework. Before writing code, always read the relevant guide in \`node_modules/eve/dist/docs/public/\`.
|
|
60
|
-
`,"CLAUDE.md":`@AGENTS.md
|
|
61
|
-
`};function templateFiles(e){return{"agent/agent.ts":e?`import { defineAgent } from "eve";
|
|
62
|
-
|
|
63
|
-
export default defineAgent({
|
|
64
|
-
model: "__EVE_INIT_MODEL__",
|
|
65
|
-
modelOptions: {
|
|
66
|
-
providerOptions: {
|
|
67
|
-
gateway: {
|
|
68
|
-
byok: {
|
|
69
|
-
anthropic: [{ apiKey: process.env.ANTHROPIC_API_KEY! }],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
`:`import { defineAgent } from "eve";
|
|
76
|
-
|
|
77
|
-
export default defineAgent({
|
|
78
|
-
model: "__EVE_INIT_MODEL__",
|
|
79
|
-
});
|
|
80
|
-
`,...SHARED_TEMPLATE_FILES,"package.json":packageJsonTemplate(e)}}function assertStampedVersion(e,t){if(t.startsWith(`__`))throw Error(`Scaffold received unstamped version token (${e}=${t}). Build eve before using its dist entrypoint.`)}async function assertCanCreateInPlace(t,n){if(!await pathExists(t))return;let r=(await readdir(t)).filter(e=>!ALLOWED_CREATE_IN_PLACE_ENTRIES.has(e));if(r.length>0&&!n){let e=r.slice(0,5).join(`, `),t=r.length>5?`, and ${r.length-5} more`:``;throw Error(`Cannot create project in current directory because it is not empty. Found: ${e}${t}. Pass --yes with --in-place to overwrite Eve scaffold files.`)}}async function scaffoldBaseProject(n){let r=resolve(n.targetDirectory??process.cwd(),n.projectName),i=n.projectName===`.`,a=n.overwriteExisting??!1,s=n.byokProvider??!1;if(i)await assertCanCreateInPlace(r,a);else if(await pathExists(r))throw Error(`Cannot create project because "${r}" already exists.`);let u={appName:basename(r),model:n.model,evePackageVersion:n.evePackageVersion??`0.6.0-beta.8`,aiPackageVersion:n.aiPackageVersion??`7.0.0-canary.165`,zodPackageVersion:n.zodPackageVersion??`4.4.3`,tsgoPackageVersion:n.tsgoPackageVersion??`7.0.0-dev.20260523.1`,typesNodePackageVersion:n.typesNodePackageVersion??`25.9.1`};assertStampedVersion(`evePackageVersion`,u.evePackageVersion),assertStampedVersion(`aiPackageVersion`,u.aiPackageVersion),assertStampedVersion(`zodPackageVersion`,u.zodPackageVersion),assertStampedVersion(`tsgoPackageVersion`,u.tsgoPackageVersion),s&&assertStampedVersion(`typesNodePackageVersion`,u.typesNodePackageVersion),await mkdir(r,{recursive:!0});for(let[o,c]of Object.entries(templateFiles(s))){let s=`${r}/${o}`,l=await pathExists(s);await writeTextFile(s,renderTemplate(c,u),{force:i&&a}),l&&await n.onOverwriteFile?.(s)}return r}async function isEveProject(e){for(let t of SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS)try{return await stat(join(e,`agent`,`agent${t}`)),!0}catch{}return!1}export{CURRENT_DIRECTORY_PROJECT_NAME,isEveProject,scaffoldBaseProject};
|