eve 0.27.5 → 0.27.7
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 +18 -0
- package/dist/src/channel/forwarded-principal.d.ts +74 -0
- package/dist/src/channel/forwarded-principal.js +1 -0
- package/dist/src/channel/routes.d.ts +7 -0
- package/dist/src/channel/send.js +1 -1
- package/dist/src/channel/session.d.ts +5 -0
- package/dist/src/channel/session.js +1 -1
- package/dist/src/channel/types.d.ts +7 -0
- package/dist/src/chunks/{use-eve-agent-BtkhbY2I.js → use-eve-agent-JPfBHZJr.js} +37 -7
- package/dist/src/chunks/{use-eve-agent-NUjD28Iu.js → use-eve-agent-r5tkzjmt.js} +37 -7
- package/dist/src/cli/commands/channels.d.ts +5 -2
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/dev/local-server-child.d.ts +1 -0
- package/dist/src/cli/dev/local-server-child.js +1 -0
- package/dist/src/cli/dev/local-server-cleanup.d.ts +5 -0
- package/dist/src/cli/dev/local-server-cleanup.js +1 -0
- package/dist/src/cli/dev/local-server-process.d.ts +35 -0
- package/dist/src/cli/dev/local-server-process.js +1 -0
- package/dist/src/cli/dev/tui/remote-auth.js +1 -1
- package/dist/src/cli/dev/tui/runner.d.ts +4 -0
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -0
- package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
- package/dist/src/cli/dev/tui/tui.d.ts +2 -0
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/wait-for-ui.d.ts +13 -0
- package/dist/src/cli/dev/wait-for-ui.js +1 -0
- package/dist/src/cli/run.js +2 -2
- package/dist/src/cli/shutdown.d.ts +23 -0
- package/dist/src/cli/shutdown.js +1 -0
- package/dist/src/client/client.js +1 -1
- package/dist/src/client/open-stream.d.ts +17 -2
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session.d.ts +5 -1
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +9 -1
- package/dist/src/compiled/@workflow/core/index.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime.js +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-Dk1fP6vt.js → attribute-changes-CB7nRYoY.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{functions-Dv8dc_-I.js → functions-DareOZz_.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{resume-hook-czpG5xnP.js → resume-hook-g1vh0WRC.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{run-6zaMjFY6.js → run-lsS-QDok.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{sleep-B2u06FWc.js → sleep-BXg5I9l2.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-DnoQohyD.js +8 -0
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/evals/autoevals-client.js +1 -1
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/evals/expect/index.js +1 -1
- package/dist/src/evals/judge.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/remote-agent-dispatch.d.ts +5 -1
- package/dist/src/execution/remote-agent-dispatch.js +1 -1
- package/dist/src/execution/sandbox/bash-tool.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker-container.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +1 -1
- package/dist/src/execution/sandbox/development-cleanup.js +1 -1
- package/dist/src/execution/sandbox/ensure.js +1 -1
- package/dist/src/execution/subagent-invocation.d.ts +10 -0
- package/dist/src/execution/subagent-invocation.js +2 -2
- package/dist/src/execution/subagent-tool.js +1 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/runtime-actions.d.ts +4 -0
- package/dist/src/harness/runtime-actions.js +1 -1
- package/dist/src/harness/tool-call-input-errors.d.ts +20 -0
- package/dist/src/harness/tool-call-input-errors.js +1 -1
- package/dist/src/internal/application/build-workspace.d.ts +0 -1
- package/dist/src/internal/application/build-workspace.js +1 -1
- package/dist/src/internal/application/optional-package-install.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.d.ts +1 -6
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/configure-nitro-routes.d.ts +4 -4
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
- package/dist/src/internal/nitro/host/create-application-nitro.d.ts +11 -7
- 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/sandbox-shutdown-plugin.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host/types.d.ts +0 -4
- package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +29 -1
- package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
- package/dist/src/internal/workflow/queue-namespace.d.ts +8 -0
- package/dist/src/internal/workflow/queue-namespace.js +1 -1
- package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -5
- package/dist/src/internal/workflow-bundle/builder.d.ts +0 -5
- package/dist/src/internal/workflow-bundle/builder.js +2 -2
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +0 -51
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -3
- package/dist/src/internal/workflow-bundle/workflow-builders.d.ts +0 -7
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/node_modules/.pnpm/{autoevals@0.0.132_ws@8.21.1 → autoevals@0.0.132_ws@8.21.1_bufferutil@4.1.0_}/node_modules/autoevals/jsdist/index.js +1 -1
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/protocol/message.d.ts +1 -0
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/public/channels/eve.d.ts +20 -0
- package/dist/src/public/channels/eve.js +2 -2
- package/dist/src/public/definitions/remote-agent.d.ts +15 -0
- package/dist/src/public/sandbox/backends/default.js +1 -1
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
- package/dist/src/runtime/types.d.ts +1 -0
- package/dist/src/setup/boxes/add-channels.d.ts +9 -7
- package/dist/src/setup/boxes/add-channels.js +2 -2
- package/dist/src/setup/boxes/select-channels.d.ts +4 -5
- package/dist/src/setup/channel-setup-deployment.d.ts +11 -0
- package/dist/src/setup/channel-setup-deployment.js +1 -0
- package/dist/src/setup/channel-setup-environment.d.ts +16 -0
- package/dist/src/setup/channel-setup-environment.js +1 -0
- package/dist/src/setup/channel-setup-integration.d.ts +31 -0
- package/dist/src/setup/channel-setup-integration.js +1 -0
- package/dist/src/setup/channel-setup-integrations.d.ts +7 -0
- package/dist/src/setup/channel-setup-integrations.js +1 -0
- package/dist/src/setup/channel-setup-runner.d.ts +7 -0
- package/dist/src/setup/channel-setup-runner.js +1 -0
- package/dist/src/setup/channel-setup-slack.d.ts +3 -0
- package/dist/src/setup/channel-setup-slack.js +1 -0
- package/dist/src/setup/channel-setup-ui.d.ts +18 -0
- package/dist/src/setup/channel-setup-ui.js +2 -0
- package/dist/src/setup/channel-setup-web.d.ts +3 -0
- package/dist/src/setup/channel-setup-web.js +1 -0
- package/dist/src/setup/flows/channels.d.ts +5 -10
- package/dist/src/setup/flows/channels.js +1 -1
- package/dist/src/setup/flows/install-vercel-cli.js +1 -1
- package/dist/src/setup/flows/login.js +1 -1
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/scaffold/channels-catalog.d.ts +0 -2
- package/dist/src/setup/scaffold/channels-catalog.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/update/channels.d.ts +5 -3
- package/dist/src/setup/scaffold/update/channels.js +5 -2
- package/dist/src/setup/slack-connect-lifecycle.d.ts +3 -2
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/slack-connect.d.ts +2 -0
- package/dist/src/setup/slack-connect.js +1 -1
- package/dist/src/setup/slackbot.d.ts +4 -0
- package/dist/src/setup/slackbot.js +1 -1
- 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/docs/README.md +21 -20
- package/docs/channels/custom.mdx +1 -1
- package/docs/channels/overview.mdx +2 -0
- package/docs/channels/slack.mdx +2 -0
- package/docs/concepts/{execution-model-and-durability.md → execution-model-and-durability.mdx} +16 -0
- package/docs/concepts/security-model.md +2 -0
- package/docs/concepts/sessions-runs-and-streaming.md +9 -0
- package/docs/getting-started.mdx +13 -196
- package/docs/guides/auth-and-route-protection.md +20 -0
- package/docs/guides/client/overview.mdx +2 -0
- package/docs/guides/client/streaming.mdx +15 -0
- package/docs/guides/remote-agents.md +31 -8
- package/docs/installation.mdx +60 -0
- package/docs/meta.json +7 -6
- package/docs/project-structure.mdx +53 -0
- package/docs/reference/cli.md +1 -1
- package/docs/tutorial/meta.json +1 -1
- package/package.json +1 -1
- package/dist/src/compiled/_chunks/workflow/wrapper-Cc2otuUR.js +0 -6
- package/docs/introduction.mdx +0 -103
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/_vendor/partial-json-parser/parser.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/auth/workload-identity-auth.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/azure.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/client.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/api-promise.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/error.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/pagination.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/resource.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/streaming.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/core/uploads.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/error.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/decoders/line.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/detect-platform.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/errors.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/headers.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/parse.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/qs/formats.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/qs/stringify.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/qs/utils.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/request-options.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/shims.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/to-file.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/tslib.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/uploads.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/base64.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/bytes.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/env.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/log.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/path.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/query.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/sleep.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/uuid.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils/values.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/internal/utils.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/AbstractChatCompletionRunner.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/AssistantStream.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/ChatCompletionRunner.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/ChatCompletionStream.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/ChatCompletionStreamingRunner.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/EventStream.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/ResponsesParser.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/RunnableFunction.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/Util.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/chatCompletionUtils.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/parser.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/lib/responses/ResponseStream.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/admin.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/admin-api-keys.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/audit-logs.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/certificates.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/data-retention.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/groups.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/groups/users.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/invites.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/organization.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/api-keys.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/certificates.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/data-retention.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/groups/groups.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/groups/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/model-permissions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/projects.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/rate-limits.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/service-accounts.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/spend-alerts.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/users/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/projects/users/users.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/spend-alerts.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/usage.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/users/roles.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/admin/organization/users/users.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/audio/audio.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/audio/speech.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/audio/transcriptions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/audio/translations.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/batches.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/assistants.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/beta.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/chatkit/chatkit.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/chatkit/sessions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/chatkit/threads.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/realtime/realtime.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/realtime/sessions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/realtime/transcription-sessions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/threads/messages.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/threads/runs/runs.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/threads/runs/steps.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/beta/threads/threads.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/chat/chat.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/chat/completions/completions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/chat/completions/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/chat/completions/messages.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/chat/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/completions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/containers/containers.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/containers/files/content.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/containers/files/files.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/conversations/conversations.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/conversations/items.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/embeddings.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/evals/evals.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/evals/runs/output-items.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/evals/runs/runs.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/files.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/alpha/alpha.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/alpha/graders.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/checkpoints/permissions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/fine-tuning.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/jobs/jobs.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/fine-tuning/methods.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/graders/grader-models.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/graders/graders.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/images.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/models.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/moderations.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/realtime/calls.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/realtime/client-secrets.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/realtime/realtime.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/responses/input-items.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/responses/input-tokens.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/responses/responses.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/shared.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/skills/content.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/skills/skills.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/skills/versions/content.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/skills/versions/versions.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/uploads/parts.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/uploads/uploads.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/vector-stores/file-batches.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/vector-stores/files.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/vector-stores/vector-stores.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/videos.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/webhooks/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/webhooks/webhooks.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/resources/webhooks.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/streaming.js +0 -0
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_zod@3.25.76 → openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/version.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# eve
|
|
2
2
|
|
|
3
|
+
## 0.27.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3c53306: Vercel builds now run a single Nitro build. The workflow flow function is emitted through Nitro's per-route `functionRules` (queue trigger, `maxDuration: "max"`, precondition guard) instead of a second standalone Nitro build that was copied and retargeted into the output, making `eve build` on Vercel roughly twice as fast.
|
|
8
|
+
- e368fcd: The client's `session.stream()` accepts `follow: false` for bounded catch-up reads (`follow` defaults to `true`, following the live stream): it consumes events from the cursor to the durable tail observed when the stream opens — surviving reconnects and still advancing the stored `streamIndex` — then returns instead of following the live stream. The HTTP stream route reports the durable tail as the `x-eve-stream-tail-index` response header when a request opts in with `includeTailIndex=1`, and channel-authoring `Session` objects gain `getStreamTailIndex()` for serving bounded reads from custom routes.
|
|
9
|
+
- 7e4f7ef: Tool calls whose arguments arrive as a raw JSON string (e.g. provider-executed server tools) are now parsed, and arguments that cannot be parsed at all — such as malformed JSON emitted by the model — surface as a failed tool result the model can react to instead of failing the whole turn.
|
|
10
|
+
|
|
11
|
+
## 0.27.6
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 0a8b63c: `eve channels add` now scaffolds portable channel variants when Vercel is unavailable and asks before deploying Vercel-integrated channels. Portable Slack setup uses environment credentials and records the required variables in `.env.example`.
|
|
16
|
+
- ad0dfa7: Remote agents can now forward the end user's identity across deployments. `defineRemoteAgent({ forwardPrincipal: true })` sends the dispatching turn's session principal (metadata only — never tokens) on the create-session request, and the receiving deployment opts in with `eveChannel({ trustedForwarders })`, a predicate over the verified transport forwarder. Accepted forwarding replaces the session principal so per-user connections, local subagents, and chained remote hops see the original user; a receiver that refuses the forwarder (or accepts no forwarded principal) rejects with 403 and the dispatch fails instead of silently downgrading to the calling service's identity.
|
|
17
|
+
- ad0dfa7: Remote agent dispatch now ignores an empty `outputSchema` (`{}`) passed by the model on the lowered subagent tool call, matching local subagent dispatch. An empty schema constrains nothing, but forwarding it flipped the remote child into structured-output mode and replaced its text reply with `{}`.
|
|
18
|
+
- 5cf8ae0: Make `eve dev` return the terminal after one Ctrl+C or termination signal. The local server gets a bounded cleanup window before process-group termination, and interrupted sandbox cleanup resumes on the next start. A forced exit (second Ctrl+C or the shutdown backstop) now restores the terminal — raw mode, cursor, bracketed paste — before the process ends.
|
|
19
|
+
- c2079a4: Preserve remote agent base paths when creating sessions and cancelling turns, so same-origin agents mounted below a route prefix no longer receive requests at the wrong endpoint.
|
|
20
|
+
|
|
3
21
|
## 0.27.5
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { SessionAuthContext } from "#channel/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Attribute key the receiving deployment stamps onto accepted forwarded
|
|
4
|
+
* principal contexts. Holds the verified transport forwarder's `principalId`,
|
|
5
|
+
* always overwriting any sender-supplied value — a forwarder must not be able
|
|
6
|
+
* to falsify the audit trail. On multi-hop chains the attribute names the
|
|
7
|
+
* most recent hop only.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FORWARDED_BY_ATTRIBUTE = "eve:forwarded-by";
|
|
10
|
+
/**
|
|
11
|
+
* Wire shape of the create-session `forwardedPrincipal` body field: the
|
|
12
|
+
* dispatching turn's session principals, asserted by a trusted forwarder.
|
|
13
|
+
* Only principal metadata crosses the wire — never tokens or credentials.
|
|
14
|
+
*/
|
|
15
|
+
export interface ForwardedPrincipal {
|
|
16
|
+
readonly current: SessionAuthContext;
|
|
17
|
+
readonly initiator?: SessionAuthContext;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Authorizes which transport-authenticated forwarders may assert a forwarded
|
|
21
|
+
* principal. Receives the *verified* route-auth principal (who is asserting),
|
|
22
|
+
* never the forwarded identity (what is asserted).
|
|
23
|
+
*/
|
|
24
|
+
export type TrustedForwarders = (forwarder: SessionAuthContext) => boolean | Promise<boolean>;
|
|
25
|
+
export type ForwardedPrincipalParseResult = {
|
|
26
|
+
readonly forwardedPrincipal: ForwardedPrincipal;
|
|
27
|
+
readonly ok: true;
|
|
28
|
+
} | {
|
|
29
|
+
readonly cause: unknown;
|
|
30
|
+
readonly message: string;
|
|
31
|
+
readonly ok: false;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The create route's effective session principals after the forwarded
|
|
35
|
+
* principal gate: the transport principal untouched when the body carries no
|
|
36
|
+
* assertion, or the stamped forwarded contexts once a trusted forwarder's
|
|
37
|
+
* assertion is accepted.
|
|
38
|
+
*/
|
|
39
|
+
export type ResolvedForwardedPrincipal = {
|
|
40
|
+
readonly accepted: false;
|
|
41
|
+
readonly auth: SessionAuthContext;
|
|
42
|
+
} | {
|
|
43
|
+
readonly accepted: true;
|
|
44
|
+
readonly auth: SessionAuthContext;
|
|
45
|
+
readonly initiatorAuth: SessionAuthContext;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Gates the create-session `forwardedPrincipal` body field and resolves the
|
|
49
|
+
* effective session principals. Returns the failure `Response` on rejection:
|
|
50
|
+
* 403 when the channel accepts no forwarded principal or the predicate
|
|
51
|
+
* refuses the forwarder, 400 on a malformed payload, 500 when the authored
|
|
52
|
+
* predicate throws. Accepted contexts are stamped with
|
|
53
|
+
* {@link FORWARDED_BY_ATTRIBUTE} before they are returned, so a custom
|
|
54
|
+
* `onMessage` always sees the transport forwarder on the replaced principal.
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveForwardedPrincipal(input: {
|
|
57
|
+
readonly trustedForwarders: TrustedForwarders | undefined;
|
|
58
|
+
readonly forwarder: SessionAuthContext;
|
|
59
|
+
readonly payload: Record<string, unknown>;
|
|
60
|
+
}): Promise<ResolvedForwardedPrincipal | Response>;
|
|
61
|
+
/**
|
|
62
|
+
* Parses the create-session `forwardedPrincipal` body field against the
|
|
63
|
+
* strict wire schema. Mirrors `parseSessionCallback` for `callback`: strict
|
|
64
|
+
* keys, formatted error strings, and no exceptions.
|
|
65
|
+
*/
|
|
66
|
+
export declare function parseForwardedPrincipal(value: unknown): ForwardedPrincipalParseResult;
|
|
67
|
+
/**
|
|
68
|
+
* Returns a copy of `context` with {@link FORWARDED_BY_ATTRIBUTE} set to the
|
|
69
|
+
* verified transport forwarder's `principalId`, overwriting any
|
|
70
|
+
* sender-supplied value. Attributes never affect Connect token-cache keying
|
|
71
|
+
* (`principalKey` reads only issuer + id), so stamping is purely an audit
|
|
72
|
+
* trail.
|
|
73
|
+
*/
|
|
74
|
+
export declare function stampForwardedBy(context: SessionAuthContext, forwardedBy: string): SessionAuthContext;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createLogger,logError}from"#internal/logging.js";import{z}from"#compiled/zod/index.js";const log=createLogger(`channel.forwarded-principal`),FORWARDED_BY_ATTRIBUTE=`eve:forwarded-by`,attributeValueSchema=z.union([z.string(),z.array(z.string()).readonly()]),forwardedPrincipalContextSchema=z.object({attributes:z.record(z.string(),attributeValueSchema).readonly(),authenticator:z.string().min(1),issuer:z.string().min(1).optional(),principalId:z.string().min(1),principalType:z.string().min(1),subject:z.string().min(1).optional()}).strict(),forwardedPrincipalSchema=z.object({current:forwardedPrincipalContextSchema,initiator:forwardedPrincipalContextSchema.optional()}).strict();async function resolveForwardedPrincipal(e){let n=e.payload.forwardedPrincipal;if(n===void 0)return{accepted:!1,auth:e.forwarder};if(e.trustedForwarders===void 0)return Response.json({error:`This deployment does not accept a forwarded principal.`,ok:!1},{status:403});let r=parseForwardedPrincipal(n);if(!r.ok)return Response.json({error:r.message,ok:!1},{status:400});let i;try{i=await e.trustedForwarders(e.forwarder)}catch(n){let r=logError(log,`trustedForwarders handler failed`,n,{forwarder:e.forwarder.principalId});return Response.json({error:`trustedForwarders handler failed.`,errorId:r,ok:!1},{status:500})}if(!i)return Response.json({error:`Caller is not authorized to assert a forwarded principal.`,ok:!1},{status:403});let a=stampForwardedBy(r.forwardedPrincipal.current,e.forwarder.principalId);return{accepted:!0,auth:a,initiatorAuth:r.forwardedPrincipal.initiator===void 0?a:stampForwardedBy(r.forwardedPrincipal.initiator,e.forwarder.principalId)}}function parseForwardedPrincipal(e){let t=forwardedPrincipalSchema.safeParse(e);if(t.success){let e=toSessionAuthContext(t.data.current);return{forwardedPrincipal:t.data.initiator===void 0?{current:e}:{current:e,initiator:toSessionAuthContext(t.data.initiator)},ok:!0}}return{cause:t.error,message:formatForwardedPrincipalParseError(t.error),ok:!1}}function stampForwardedBy(e,t){return{...e,attributes:{...e.attributes,[FORWARDED_BY_ATTRIBUTE]:t}}}function toSessionAuthContext(e){let t={attributes:e.attributes,authenticator:e.authenticator,principalId:e.principalId,principalType:e.principalType};return e.issuer!==void 0&&(t.issuer=e.issuer),e.subject!==void 0&&(t.subject=e.subject),t}function formatForwardedPrincipalParseError(e){return`Invalid forwardedPrincipal metadata: ${e.issues.map(e=>`${e.path.length===0?`forwardedPrincipal`:`forwardedPrincipal.${e.path.join(`.`)}`}: ${e.message}`).join(`; `)}`}export{FORWARDED_BY_ATTRIBUTE,parseForwardedPrincipal,resolveForwardedPrincipal,stampForwardedBy};
|
|
@@ -71,6 +71,13 @@ type BaseSendOptions = {
|
|
|
71
71
|
auth: SessionAuthContext | null;
|
|
72
72
|
callback?: SessionCallback;
|
|
73
73
|
continuationToken: string;
|
|
74
|
+
/**
|
|
75
|
+
* The original (top-level) caller's auth for a newly started session,
|
|
76
|
+
* becoming `session.auth.initiator`. Defaults to {@link auth} when omitted
|
|
77
|
+
* (root session behavior). Ignored when the send resolves to an existing
|
|
78
|
+
* session, whose initiator never changes after start.
|
|
79
|
+
*/
|
|
80
|
+
initiatorAuth?: SessionAuthContext | null;
|
|
74
81
|
mode?: RunMode;
|
|
75
82
|
/**
|
|
76
83
|
* Human-readable title for a newly started workflow session. Defaults to
|
package/dist/src/channel/send.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createSession}from"#channel/session.js";import{isRuntimeNoActiveSessionError}from"#execution/runtime-errors.js";import{serializeUrlFilePart}from"#internal/attachments/url-refs.js";function createSendFn(n,r,i,a={}){return async(o,s)=>{let c=s.auth,l=s.
|
|
1
|
+
import{createSession}from"#channel/session.js";import{isRuntimeNoActiveSessionError}from"#execution/runtime-errors.js";import{serializeUrlFilePart}from"#internal/attachments/url-refs.js";function createSendFn(n,r,i,a={}){return async(o,s)=>{let c=s.auth,l=s.initiatorAuth,u=s.callback,d=s.mode??`conversation`,f=s.state,p=s.title,m=s.continuationToken,h=`${i}:${m}`,{message:g,inputResponses:_,context:v,outputSchema:y}=normalizeSendInput(o),b=serializeUrlFilePartsInMessage(g);try{let t={auth:c,continuationToken:h,requestId:a.requestId,payload:{inputResponses:_,message:b,context:v,outputSchema:y}},{sessionId:r}=await n.deliver(t);return createSession(r,m,n)}catch(e){if(!isRuntimeNoActiveSessionError(e))throw e}if(_&&_.length>0)throw Error(`Cannot deliver inputResponses — the target session was not found via continuation token.`);let x={adapter:f?{...r,state:{...r.state,...f}}:r,auth:c,capabilities:d===`conversation`?{requestInput:!0}:void 0,channelName:i,callback:u,continuationToken:h,input:{message:b??``,context:v,outputSchema:y},mode:d,requestId:a.requestId,title:p};return l!==void 0&&(x.initiatorAuth=l),createSession((await n.run(x)).sessionId,m,n)}}function serializeUrlFilePartsInMessage(e){if(e===void 0||typeof e==`string`)return e;let t=!1,r=e.map(e=>e.type===`file`&&e.data instanceof URL&&e.data.protocol!==`data:`?(t=!0,{...e,data:serializeUrlFilePart(e.data)}):e);return t?r:e}function normalizeSendInput(e){return typeof e==`string`||Array.isArray(e)?{message:e}:e}export{createSendFn};
|
|
@@ -30,6 +30,11 @@ export interface Session {
|
|
|
30
30
|
getEventStream(options?: {
|
|
31
31
|
startIndex?: number;
|
|
32
32
|
}): Promise<ReadableStream<HandleMessageStreamEvent>>;
|
|
33
|
+
/**
|
|
34
|
+
* Resolves the durable tail of the event stream: the zero-based index of
|
|
35
|
+
* the last recorded event, or `-1` before the first.
|
|
36
|
+
*/
|
|
37
|
+
getStreamTailIndex(): Promise<number>;
|
|
33
38
|
}
|
|
34
39
|
/**
|
|
35
40
|
* Live handle to the current session, exposed on `ctx.session` to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AuthKey,ContinuationTokenKey,InitiatorAuthKey,SessionIdKey}from"#context/keys.js";function createSession(e,t,n){return{id:e,continuationToken:t,async cancel(t){return n.cancelTurn({sessionId:e,turnId:t?.turnId})},async getEventStream(t){return n.getEventStream(e,t)}}}function createGetSessionFn(e){return t=>createSession(t,``,e)}function buildSessionHandle(i){return{get id(){return i.get(SessionIdKey)??``},get continuationToken(){return i.get(ContinuationTokenKey)??``},get auth(){return{current:i.get(AuthKey)??null,initiator:i.get(InitiatorAuthKey)??null}},setContinuationToken(e){let n=i.get(ContinuationTokenKey)??``,r=namespaceContinuationToken(n,e);n!==r&&i.set(ContinuationTokenKey,r)}}}function namespaceContinuationToken(e,t){let n=e.indexOf(`:`);if(n<=0)throw Error(`Cannot set session continuation token without an existing namespaced continuation token. Start the session with a placeholder continuationToken.`);return`${e.slice(0,n+1)}${t}`}export{buildSessionHandle,createGetSessionFn,createSession};
|
|
1
|
+
import{AuthKey,ContinuationTokenKey,InitiatorAuthKey,SessionIdKey}from"#context/keys.js";function createSession(e,t,n){return{id:e,continuationToken:t,async cancel(t){return n.cancelTurn({sessionId:e,turnId:t?.turnId})},async getEventStream(t){return n.getEventStream(e,t)},async getStreamTailIndex(){return n.getStreamTailIndex(e)}}}function createGetSessionFn(e){return t=>createSession(t,``,e)}function buildSessionHandle(i){return{get id(){return i.get(SessionIdKey)??``},get continuationToken(){return i.get(ContinuationTokenKey)??``},get auth(){return{current:i.get(AuthKey)??null,initiator:i.get(InitiatorAuthKey)??null}},setContinuationToken(e){let n=i.get(ContinuationTokenKey)??``,r=namespaceContinuationToken(n,e);n!==r&&i.set(ContinuationTokenKey,r)}}}function namespaceContinuationToken(e,t){let n=e.indexOf(`:`);if(n<=0)throw Error(`Cannot set session continuation token without an existing namespaced continuation token. Start the session with a placeholder continuationToken.`);return`${e.slice(0,n+1)}${t}`}export{buildSessionHandle,createGetSessionFn,createSession};
|
|
@@ -368,6 +368,13 @@ export interface Runtime {
|
|
|
368
368
|
* parameter unchanged.
|
|
369
369
|
*/
|
|
370
370
|
getEventStream(sessionId: string, options?: GetEventStreamOptions): Promise<ReadableStream<HandleMessageStreamEvent>>;
|
|
371
|
+
/**
|
|
372
|
+
* Resolves the durable tail of a session's event stream: the zero-based
|
|
373
|
+
* index of the last recorded event, or `-1` before the first. Callers use
|
|
374
|
+
* it to bound a read at the tail they observed instead of following the
|
|
375
|
+
* live stream.
|
|
376
|
+
*/
|
|
377
|
+
getStreamTailIndex(sessionId: string): Promise<number>;
|
|
371
378
|
}
|
|
372
379
|
/**
|
|
373
380
|
* Options accepted by {@link Runtime.getEventStream}.
|
|
@@ -299,6 +299,7 @@ function safeJsonStringify(value) {
|
|
|
299
299
|
//#endregion
|
|
300
300
|
//#region src/protocol/message.ts
|
|
301
301
|
const EVE_SESSION_ID_HEADER = "x-eve-session-id";
|
|
302
|
+
const EVE_STREAM_TAIL_INDEX_HEADER = "x-eve-stream-tail-index";
|
|
302
303
|
const textEncoder = new TextEncoder();
|
|
303
304
|
function isCurrentTurnBoundaryEvent(event) {
|
|
304
305
|
return event.type === "session.completed" || event.type === "session.failed" || event.type === "session.waiting";
|
|
@@ -531,32 +532,47 @@ function resolveStreamReconnectPolicy(policy) {
|
|
|
531
532
|
};
|
|
532
533
|
}
|
|
533
534
|
async function* followStreamIterable(input) {
|
|
535
|
+
if (input.follow === false && input.startIndex < 0) throw new Error("stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
|
|
534
536
|
const retryPolicy = resolveStreamReconnectPolicy(input.streamReconnectPolicy);
|
|
535
537
|
const idleRetryPolicy = retryPolicy.streamIdleReconnectPolicy;
|
|
536
538
|
let startIndex = input.startIndex;
|
|
537
539
|
let reconnectDelayMs = idleRetryPolicy.baseDelayMs;
|
|
538
540
|
let idleReconnects = 0;
|
|
539
541
|
let initialConnection = true;
|
|
542
|
+
let tailIndex;
|
|
540
543
|
while (true) {
|
|
541
|
-
let
|
|
544
|
+
let connection;
|
|
542
545
|
try {
|
|
543
|
-
|
|
546
|
+
connection = await openStreamBody({
|
|
544
547
|
...input,
|
|
545
548
|
retryPolicy,
|
|
546
|
-
startIndex
|
|
549
|
+
startIndex,
|
|
550
|
+
requestTailIndex: input.follow === false && tailIndex === void 0
|
|
547
551
|
});
|
|
548
552
|
} catch (error) {
|
|
549
553
|
if (input.signal?.aborted) return;
|
|
550
554
|
throw error;
|
|
551
555
|
}
|
|
556
|
+
if (input.follow === false && tailIndex === void 0) {
|
|
557
|
+
tailIndex = connection.tailIndex;
|
|
558
|
+
if (tailIndex === void 0) {
|
|
559
|
+
await connection.body.cancel().catch(() => {});
|
|
560
|
+
throw new Error(`stream({ follow: false }) requires the server to report the ${EVE_STREAM_TAIL_INDEX_HEADER} header. The agent may be running an older eve version.`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
if (tailIndex !== void 0 && startIndex > tailIndex) {
|
|
564
|
+
await connection.body.cancel().catch(() => {});
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
552
567
|
let deliveredEvent = false;
|
|
553
568
|
try {
|
|
554
|
-
for await (const event of readNdjsonStream(body)) {
|
|
569
|
+
for await (const event of readNdjsonStream(connection.body)) {
|
|
555
570
|
startIndex += 1;
|
|
556
571
|
deliveredEvent = true;
|
|
557
572
|
reconnectDelayMs = idleRetryPolicy.baseDelayMs;
|
|
558
573
|
idleReconnects = 0;
|
|
559
574
|
yield event;
|
|
575
|
+
if (tailIndex !== void 0 && startIndex > tailIndex) return;
|
|
560
576
|
}
|
|
561
577
|
} catch (error) {
|
|
562
578
|
if (!isStreamDisconnectError(error)) throw error;
|
|
@@ -576,8 +592,11 @@ async function openStreamBody(input) {
|
|
|
576
592
|
let lastBody;
|
|
577
593
|
let lastHeaders;
|
|
578
594
|
let retryDelayMs = openRetryPolicy.baseDelayMs;
|
|
595
|
+
const searchParams = {};
|
|
596
|
+
if (input.startIndex !== 0) searchParams.startIndex = String(input.startIndex);
|
|
597
|
+
if (input.requestTailIndex === true) searchParams.includeTailIndex = "1";
|
|
579
598
|
for (let attempt = 0; attempt < openRetryPolicy.maxAttempts; attempt += 1) {
|
|
580
|
-
const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId),
|
|
599
|
+
const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId), Object.keys(searchParams).length > 0 ? searchParams : void 0);
|
|
581
600
|
const headers = await input.resolveHeaders();
|
|
582
601
|
let response;
|
|
583
602
|
try {
|
|
@@ -594,7 +613,10 @@ async function openStreamBody(input) {
|
|
|
594
613
|
}
|
|
595
614
|
if (response.ok) {
|
|
596
615
|
if (!response.body) throw new ClientError(response.status, "Response body is null.", response.headers);
|
|
597
|
-
return
|
|
616
|
+
return {
|
|
617
|
+
body: response.body,
|
|
618
|
+
tailIndex: parseTailIndexHeader(response.headers)
|
|
619
|
+
};
|
|
598
620
|
}
|
|
599
621
|
lastStatus = response.status;
|
|
600
622
|
lastBody = await response.text();
|
|
@@ -607,6 +629,12 @@ async function openStreamBody(input) {
|
|
|
607
629
|
}
|
|
608
630
|
throw new ClientError(lastStatus ?? 0, lastBody ?? "Failed to open message stream.", lastHeaders);
|
|
609
631
|
}
|
|
632
|
+
function parseTailIndexHeader(headers) {
|
|
633
|
+
const raw = headers.get(EVE_STREAM_TAIL_INDEX_HEADER);
|
|
634
|
+
if (raw === null || !/^-?\d+$/.test(raw)) return;
|
|
635
|
+
const parsed = Number(raw);
|
|
636
|
+
return Number.isSafeInteger(parsed) ? parsed : void 0;
|
|
637
|
+
}
|
|
610
638
|
async function sleep$1(ms, signal) {
|
|
611
639
|
if (signal?.aborted) return;
|
|
612
640
|
await new Promise((resolve) => {
|
|
@@ -784,6 +812,7 @@ var ClientSession = class {
|
|
|
784
812
|
stream(options) {
|
|
785
813
|
const sessionId = this.#state.sessionId;
|
|
786
814
|
if (!sessionId) throw new Error("Session has no session ID. Send a message first.");
|
|
815
|
+
if (options?.follow === false && (options.startIndex ?? this.#state.streamIndex) < 0) throw new Error("stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
|
|
787
816
|
return this.#streamAndAdvance(sessionId, options);
|
|
788
817
|
}
|
|
789
818
|
async #postTurn(input, session) {
|
|
@@ -845,6 +874,7 @@ var ClientSession = class {
|
|
|
845
874
|
const events = [];
|
|
846
875
|
try {
|
|
847
876
|
for await (const event of followStreamIterable({
|
|
877
|
+
follow: options?.follow,
|
|
848
878
|
host: this.#context.host,
|
|
849
879
|
resolveHeaders: () => this.#context.resolveHeaders(),
|
|
850
880
|
redirect: this.#context.redirect,
|
|
@@ -996,8 +1026,8 @@ var Client = class {
|
|
|
996
1026
|
const headers = new Headers();
|
|
997
1027
|
const [baseHeaders, authHeaders] = await Promise.all([resolveHeadersValue(this.#headers), this.#resolveAuthHeaders()]);
|
|
998
1028
|
for (const [key, value] of Object.entries(baseHeaders)) headers.set(key, value);
|
|
999
|
-
if (perRequest) for (const [key, value] of Object.entries(perRequest)) headers.set(key, value);
|
|
1000
1029
|
for (const [key, value] of Object.entries(authHeaders)) headers.set(key, value);
|
|
1030
|
+
if (perRequest) for (const [key, value] of Object.entries(perRequest)) headers.set(key, value);
|
|
1001
1031
|
return headers;
|
|
1002
1032
|
}
|
|
1003
1033
|
async #resolveAuthHeaders() {
|
|
@@ -299,6 +299,7 @@ function safeJsonStringify(value) {
|
|
|
299
299
|
//#endregion
|
|
300
300
|
//#region src/protocol/message.ts
|
|
301
301
|
const EVE_SESSION_ID_HEADER = "x-eve-session-id";
|
|
302
|
+
const EVE_STREAM_TAIL_INDEX_HEADER = "x-eve-stream-tail-index";
|
|
302
303
|
const textEncoder = new TextEncoder();
|
|
303
304
|
function isCurrentTurnBoundaryEvent(event) {
|
|
304
305
|
return event.type === "session.completed" || event.type === "session.failed" || event.type === "session.waiting";
|
|
@@ -531,32 +532,47 @@ function resolveStreamReconnectPolicy(policy) {
|
|
|
531
532
|
};
|
|
532
533
|
}
|
|
533
534
|
async function* followStreamIterable(input) {
|
|
535
|
+
if (input.follow === false && input.startIndex < 0) throw new Error("stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
|
|
534
536
|
const retryPolicy = resolveStreamReconnectPolicy(input.streamReconnectPolicy);
|
|
535
537
|
const idleRetryPolicy = retryPolicy.streamIdleReconnectPolicy;
|
|
536
538
|
let startIndex = input.startIndex;
|
|
537
539
|
let reconnectDelayMs = idleRetryPolicy.baseDelayMs;
|
|
538
540
|
let idleReconnects = 0;
|
|
539
541
|
let initialConnection = true;
|
|
542
|
+
let tailIndex;
|
|
540
543
|
while (true) {
|
|
541
|
-
let
|
|
544
|
+
let connection;
|
|
542
545
|
try {
|
|
543
|
-
|
|
546
|
+
connection = await openStreamBody({
|
|
544
547
|
...input,
|
|
545
548
|
retryPolicy,
|
|
546
|
-
startIndex
|
|
549
|
+
startIndex,
|
|
550
|
+
requestTailIndex: input.follow === false && tailIndex === void 0
|
|
547
551
|
});
|
|
548
552
|
} catch (error) {
|
|
549
553
|
if (input.signal?.aborted) return;
|
|
550
554
|
throw error;
|
|
551
555
|
}
|
|
556
|
+
if (input.follow === false && tailIndex === void 0) {
|
|
557
|
+
tailIndex = connection.tailIndex;
|
|
558
|
+
if (tailIndex === void 0) {
|
|
559
|
+
await connection.body.cancel().catch(() => {});
|
|
560
|
+
throw new Error(`stream({ follow: false }) requires the server to report the ${EVE_STREAM_TAIL_INDEX_HEADER} header. The agent may be running an older eve version.`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
if (tailIndex !== void 0 && startIndex > tailIndex) {
|
|
564
|
+
await connection.body.cancel().catch(() => {});
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
552
567
|
let deliveredEvent = false;
|
|
553
568
|
try {
|
|
554
|
-
for await (const event of readNdjsonStream(body)) {
|
|
569
|
+
for await (const event of readNdjsonStream(connection.body)) {
|
|
555
570
|
startIndex += 1;
|
|
556
571
|
deliveredEvent = true;
|
|
557
572
|
reconnectDelayMs = idleRetryPolicy.baseDelayMs;
|
|
558
573
|
idleReconnects = 0;
|
|
559
574
|
yield event;
|
|
575
|
+
if (tailIndex !== void 0 && startIndex > tailIndex) return;
|
|
560
576
|
}
|
|
561
577
|
} catch (error) {
|
|
562
578
|
if (!isStreamDisconnectError(error)) throw error;
|
|
@@ -576,8 +592,11 @@ async function openStreamBody(input) {
|
|
|
576
592
|
let lastBody;
|
|
577
593
|
let lastHeaders;
|
|
578
594
|
let retryDelayMs = openRetryPolicy.baseDelayMs;
|
|
595
|
+
const searchParams = {};
|
|
596
|
+
if (input.startIndex !== 0) searchParams.startIndex = String(input.startIndex);
|
|
597
|
+
if (input.requestTailIndex === true) searchParams.includeTailIndex = "1";
|
|
579
598
|
for (let attempt = 0; attempt < openRetryPolicy.maxAttempts; attempt += 1) {
|
|
580
|
-
const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId),
|
|
599
|
+
const url = createClientUrl(input.host, createEveMessageStreamRoutePath(input.sessionId), Object.keys(searchParams).length > 0 ? searchParams : void 0);
|
|
581
600
|
const headers = await input.resolveHeaders();
|
|
582
601
|
let response;
|
|
583
602
|
try {
|
|
@@ -594,7 +613,10 @@ async function openStreamBody(input) {
|
|
|
594
613
|
}
|
|
595
614
|
if (response.ok) {
|
|
596
615
|
if (!response.body) throw new ClientError(response.status, "Response body is null.", response.headers);
|
|
597
|
-
return
|
|
616
|
+
return {
|
|
617
|
+
body: response.body,
|
|
618
|
+
tailIndex: parseTailIndexHeader(response.headers)
|
|
619
|
+
};
|
|
598
620
|
}
|
|
599
621
|
lastStatus = response.status;
|
|
600
622
|
lastBody = await response.text();
|
|
@@ -607,6 +629,12 @@ async function openStreamBody(input) {
|
|
|
607
629
|
}
|
|
608
630
|
throw new ClientError(lastStatus ?? 0, lastBody ?? "Failed to open message stream.", lastHeaders);
|
|
609
631
|
}
|
|
632
|
+
function parseTailIndexHeader(headers) {
|
|
633
|
+
const raw = headers.get(EVE_STREAM_TAIL_INDEX_HEADER);
|
|
634
|
+
if (raw === null || !/^-?\d+$/.test(raw)) return;
|
|
635
|
+
const parsed = Number(raw);
|
|
636
|
+
return Number.isSafeInteger(parsed) ? parsed : void 0;
|
|
637
|
+
}
|
|
610
638
|
async function sleep$1(ms, signal) {
|
|
611
639
|
if (signal?.aborted) return;
|
|
612
640
|
await new Promise((resolve) => {
|
|
@@ -784,6 +812,7 @@ var ClientSession = class {
|
|
|
784
812
|
stream(options) {
|
|
785
813
|
const sessionId = this.#state.sessionId;
|
|
786
814
|
if (!sessionId) throw new Error("Session has no session ID. Send a message first.");
|
|
815
|
+
if (options?.follow === false && (options.startIndex ?? this.#state.streamIndex) < 0) throw new Error("stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
|
|
787
816
|
return this.#streamAndAdvance(sessionId, options);
|
|
788
817
|
}
|
|
789
818
|
async #postTurn(input, session) {
|
|
@@ -845,6 +874,7 @@ var ClientSession = class {
|
|
|
845
874
|
const events = [];
|
|
846
875
|
try {
|
|
847
876
|
for await (const event of followStreamIterable({
|
|
877
|
+
follow: options?.follow,
|
|
848
878
|
host: this.#context.host,
|
|
849
879
|
resolveHeaders: () => this.#context.resolveHeaders(),
|
|
850
880
|
redirect: this.#context.redirect,
|
|
@@ -996,8 +1026,8 @@ var Client = class {
|
|
|
996
1026
|
const headers = new Headers();
|
|
997
1027
|
const [baseHeaders, authHeaders] = await Promise.all([resolveHeadersValue(this.#headers), this.#resolveAuthHeaders()]);
|
|
998
1028
|
for (const [key, value] of Object.entries(baseHeaders)) headers.set(key, value);
|
|
999
|
-
if (perRequest) for (const [key, value] of Object.entries(perRequest)) headers.set(key, value);
|
|
1000
1029
|
for (const [key, value] of Object.entries(authHeaders)) headers.set(key, value);
|
|
1030
|
+
if (perRequest) for (const [key, value] of Object.entries(perRequest)) headers.set(key, value);
|
|
1001
1031
|
return headers;
|
|
1002
1032
|
}
|
|
1003
1033
|
async #resolveAuthHeaders() {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { AddChannelsDeps } from "#setup/boxes/add-channels.js";
|
|
2
|
+
import type { DeployProjectDeps } from "#setup/boxes/deploy-project.js";
|
|
3
3
|
import { type DeploymentInfo } from "#setup/project-resolution.js";
|
|
4
4
|
import { type Prompter } from "#setup/prompter.js";
|
|
5
|
+
import { type VercelAuthStatus } from "#setup/vercel-project.js";
|
|
5
6
|
export interface CliLogger {
|
|
6
7
|
error(message: string): void;
|
|
7
8
|
log(message: string): void;
|
|
@@ -14,6 +15,8 @@ export interface AddChannelCommandOptions {
|
|
|
14
15
|
export interface ChannelsAddDependencies {
|
|
15
16
|
createPrompter?: () => Prompter;
|
|
16
17
|
detectDeployment(projectPath: string): Promise<DeploymentInfo>;
|
|
18
|
+
/** Read-only Vercel session probe. Optional only for legacy test seams. */
|
|
19
|
+
getVercelAuthStatus(projectPath: string): Promise<VercelAuthStatus>;
|
|
17
20
|
/** Test seam into the add-channels box's scaffold/Connect/Vercel effects. */
|
|
18
21
|
addChannelsDeps?: AddChannelsDeps;
|
|
19
22
|
/** Test seam into the deploy box's subprocess effects. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{assertCanAddSelectedChannels,inspectExistingChannelRegistrations}from"./channel-add-conflicts.js";import{NOT_AN_AGENT_MESSAGE}from"./preconditions.js";import{isEveProject,listAuthoredChannels}from"#setup/scaffold/index.js";import{interactiveAsker}from"#setup/ask.js";import{
|
|
1
|
+
import{assertCanAddSelectedChannels,inspectExistingChannelRegistrations}from"./channel-add-conflicts.js";import{NOT_AN_AGENT_MESSAGE}from"./preconditions.js";import{isEveProject,listAuthoredChannels}from"#setup/scaffold/index.js";import{interactiveAsker}from"#setup/ask.js";import{channelSetupEnvironment,describeChannelSetupEnvironment}from"#setup/channel-setup-environment.js";import{deployChannelSetup}from"#setup/channel-setup-deployment.js";import{channelSetupIntegration,createChannelSetupUi}from"#setup/channel-setup-integrations.js";import{selectChannels}from"#setup/boxes/select-channels.js";import{detectDeployment,projectResolutionFromDeployment}from"#setup/project-resolution.js";import{createPrompter}from"#setup/prompter.js";import{runInteractive}from"#setup/runner.js";import{createDefaultSetupState,snapshotSetupState}from"#setup/state.js";import{getVercelAuthStatus}from"#setup/vercel-project.js";const KNOWN_CHANNEL_KINDS=[`slack`,`web`];function isChannelKind(e){return KNOWN_CHANNEL_KINDS.includes(e)}function parseChannelKind(e){if(!isChannelKind(e))throw Error(`Unknown channel kind "${e}". Known: ${KNOWN_CHANNEL_KINDS.join(`, `)}.`);return e}const defaultChannelsAddDependencies={detectDeployment,getVercelAuthStatus};async function runAddChannelsFlow(n,r,i,s){if(r===void 0&&(i.yes||!process.stdin.isTTY||!process.stdout.isTTY))throw Error(`Pass a channel kind: \`eve channels add <${KNOWN_CHANNEL_KINDS.join(`|`)}>\`.`);let c=s.createPrompter?.()??createPrompter();c.intro(`Add channels to your eve agent`),c.log.message(`Checking Vercel setup...`);let l=await s.detectDeployment(n),u=channelSetupEnvironment(await s.getVercelAuthStatus(n),projectResolutionFromDeployment(l));c.log.info(describeChannelSetupEnvironment(u));let d={...createDefaultSetupState(),project:projectResolutionFromDeployment(l),projectPath:{kind:`resolved`,inPlace:!0,path:n}},f;function inspectRegistrations(){return f===void 0&&(c.log.message(`Inspecting existing channel registrations...`),f=inspectExistingChannelRegistrations(n)),f}let p=r===void 0?(await inspectRegistrations()).disabledChannelReasons:void 0,m=await runInteractive([selectChannels({asker:interactiveAsker(c),variant:`channels-add`,presetChannels:r===void 0?void 0:[r],disabledChannelReasons:p,validateSelection:async t=>{!t.includes(`web`)&&!t.includes(`slack`)||assertCanAddSelectedChannels(t,await inspectRegistrations())}})],d,{write:e=>c.log.message(e)},{snapshot:snapshotSetupState});if(m.kind===`cancelled`)return;let h=m.state,g=createChannelSetupUi({asker:interactiveAsker(c),prompter:c});for(let e of m.state.channelSelection){let t=await channelSetupIntegration(e).setup({environment:u,state:{...h,channelSelection:[e]},ui:g,force:i.force,presetCreateSlackbot:i.yes?!0:void 0,presetPortableCredentials:i.yes===!0?!0:void 0,deps:s.addChannelsDeps});if(t.kind===`cancelled`)return;h=t.state}(h.slackbotAttached||u.vercel.kind===`available`&&h.channels.includes(`web`))&&(h=await deployChannelSetup({state:h,ui:g,presetDeploy:i.yes===!0?!0:!process.stdin.isTTY||!process.stdout.isTTY?!1:void 0,deps:s.deployProjectDeps})),c.outro(h.channels.length===0?`No channels added.`:`Channels added.`)}async function runChannelsAddCommand(e,t,i,a=defaultChannelsAddDependencies){if(!await isEveProject(t)){e.error(NOT_AN_AGENT_MESSAGE),process.exitCode=1;return}try{await runAddChannelsFlow(t,i.kind===void 0?void 0:parseChannelKind(i.kind),i.options,a)}catch(t){e.error(t instanceof Error?t.message:String(t)),process.exitCode=1}}async function runChannelsListCommand(e,t,a){if(!await isEveProject(t)){e.error(NOT_AN_AGENT_MESSAGE),process.exitCode=1;return}let o=await listAuthoredChannels(t);if(a.json){e.log(JSON.stringify({channels:o},null,2));return}if(o.length===0){e.log("No channels defined. Run `eve channels add` to add one.");return}for(let t of o)e.log(t)}export{runChannelsAddCommand,runChannelsListCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createDevelopmentServer}from"#internal/nitro/host.js";import{getDevelopmentSandboxRunId}from"#execution/sandbox/development-run.js";import{reconcileCleanupIntents,recordCleanupIntent}from"#cli/dev/local-server-cleanup.js";const options=JSON.parse(process.argv[2]??`{}`),server=createDevelopmentServer(process.cwd(),{...options,onBootProgress:e=>send({type:`progress`,event:e})});let stopping=!1,removeCleanupIntent;reconcileCleanupIntents(process.cwd()).catch(()=>void 0);const send=e=>{try{process.connected&&process.send?.(e,()=>{})}catch{}},stop=()=>{if(stopping)return;stopping=!0,console.log=console.warn=console.error=()=>{},process.stdout.on(`error`,()=>{}),process.stderr.on(`error`,()=>{});let e=server.close();process.connected&&process.disconnect?.(),e.then(async()=>{await intentReady.catch(()=>void 0),await removeCleanupIntent?.().catch(()=>void 0),process.exit(0)},()=>process.exit(1))};process.on(`message`,e=>{e.type===`shutdown`&&stop()}),process.once(`disconnect`,stop),process.once(`SIGINT`,stop),process.once(`SIGTERM`,stop);const intentReady=server.start().then(async e=>{let n=getDevelopmentSandboxRunId();e.kind===`started`&&n!==void 0&&(removeCleanupIntent=await recordCleanupIntent(process.cwd(),{ownerPid:process.pid,runId:n})),send({type:`started`,handle:e}),e.kind===`existing`&&process.connected&&process.disconnect?.()},e=>{let t=e instanceof Error?e:Error(String(e));send({type:`failed`,message:t.message,stack:t.stack}),process.exitCode=1,process.connected&&process.disconnect?.()});export{};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{join}from"node:path";import{mkdir,readFile,readdir,rm,writeFile}from"node:fs/promises";import{stopDevelopmentSandboxResources}from"#execution/sandbox/bindings/local.js";const PREFIX=`dev-cleanup-intent.`,SUFFIX=`.json`;async function recordCleanupIntent(n,r){let a=join(n,`.eve`),c=join(a,`${PREFIX}${r.runId}${SUFFIX}`);return await mkdir(a,{recursive:!0}),await writeFile(c,`${JSON.stringify(r)}\n`,`utf8`),async()=>await rm(c,{force:!0})}async function reconcileCleanupIntents(t){let i=join(t,`.eve`),c;try{c=await readdir(i)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(c.filter(e=>e.startsWith(PREFIX)&&e.endsWith(SUFFIX)).map(async r=>{try{let o=join(i,r),s=JSON.parse(await readFile(o,`utf8`));if(typeof s.runId!=`string`||typeof s.ownerPid!=`number`||!Number.isInteger(s.ownerPid)||s.ownerPid<=0||isProcessAlive(s.ownerPid))return;await stopDevelopmentSandboxResources({appRoot:t,devRunId:s.runId}),await rm(o,{force:!0})}catch{}}))}function isProcessAlive(e){try{return process.kill(e,0),!0}catch(e){return e instanceof Error&&`code`in e&&e.code===`EPERM`}}export{reconcileCleanupIntents,recordCleanupIntent};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `eve dev` server child: forked `detached` (its own process group) and
|
|
3
|
+
* bound to the CLI's lifetime through the IPC channel, never through the OS.
|
|
4
|
+
*
|
|
5
|
+
* Why the child is not bound to the parent at the OS level (shared process
|
|
6
|
+
* group, inherited terminal signals):
|
|
7
|
+
*
|
|
8
|
+
* - The TUI puts stdin in raw mode, which disables ISIG: Ctrl+C never becomes
|
|
9
|
+
* a terminal-generated SIGINT, so same-group signal delivery does nothing in
|
|
10
|
+
* the mode where Ctrl+C matters most.
|
|
11
|
+
* - In headless mode, same-group delivery would signal parent and child
|
|
12
|
+
* simultaneously, racing the parent's graceful IPC shutdown against the
|
|
13
|
+
* child's own signal handler.
|
|
14
|
+
* - macOS has no parent-death signal. IPC `disconnect` is the portable
|
|
15
|
+
* equivalent: the child self-stops whenever this process exits, for any
|
|
16
|
+
* reason including SIGKILL (see local-server-child.ts).
|
|
17
|
+
*
|
|
18
|
+
* `detached` makes the child a process-group leader, so close() can escalate
|
|
19
|
+
* to a group-wide SIGTERM/SIGKILL that reaps the entire server tree. Sandbox
|
|
20
|
+
* resources leaked by a crash are reconciled by the cleanup-intent janitor on
|
|
21
|
+
* the next run (see local-server-cleanup.ts).
|
|
22
|
+
*/
|
|
23
|
+
import type { DevelopmentServer, DevelopmentServerOptions } from "#internal/nitro/host/types.js";
|
|
24
|
+
/**
|
|
25
|
+
* Worst-case close() duration. Must stay below the forced-exit backstop the
|
|
26
|
+
* dev command arms on its lifecycle (FORCED_EXIT_BACKSTOP_MS in
|
|
27
|
+
* `#cli/shutdown.js`), so a graceful close always beats the backstop and
|
|
28
|
+
* `eve dev` exits 0 after Ctrl+C. Enforced by local-server-process.test.ts.
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEV_SERVER_CLOSE_BUDGET_MS: number;
|
|
31
|
+
export interface DevelopmentServerProcess extends DevelopmentServer {
|
|
32
|
+
wait(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** Runs the CLI-owned local server outside the foreground TUI process. */
|
|
35
|
+
export declare function createDevelopmentServer(appRoot: string, options?: DevelopmentServerOptions): DevelopmentServerProcess;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{fork}from"node:child_process";import{fileURLToPath}from"node:url";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{EVE_DEV_ENV_FLAG}from"#internal/application/optional-package-install.js";const childPath=fileURLToPath(new URL(`./local-server-child.js`,import.meta.url)),DEV_SERVER_CLOSE_BUDGET_MS=800;function createDevelopmentServer(t,i={}){let a,o,s=!1,c=Promise.withResolvers(),l=Promise.withResolvers();c.promise.catch(()=>void 0);let release=()=>{let e=a;e!==void 0&&(a=void 0,e.stdout?.destroy(),e.stderr?.destroy(),e.connected&&e.disconnect(),e.unref())};return{start:()=>{if(a!==void 0)throw Error(`DevelopmentServer.start() was already called.`);let o={...process.env};loadDevelopmentEnvironmentFiles(t),process.env[EVE_DEV_ENV_FLAG]??=`1`;let u=fork(childPath,[JSON.stringify({existing:i.existing,host:i.host,port:i.port})],{cwd:t,detached:!0,env:{...o,[EVE_DEV_ENV_FLAG]:`1`},stdio:[`ignore`,`pipe`,`pipe`,`ipc`]});return a=u,u.stdout?.on(`data`,e=>process.stdout.write(e)),u.stderr?.on(`data`,e=>process.stderr.write(e)),new Promise((e,t)=>{let n=!1;u.once(`error`,t),u.once(`exit`,(e,r)=>{l.resolve(),release(),n?s?c.resolve():c.reject(Error(`Development server exited unexpectedly (${String(e)}, ${String(r)}).`)):t(Error(`Development server exited during startup (${String(e)}, ${String(r)}).`))}),u.on(`message`,r=>{if(r.type===`progress`&&i.onBootProgress?.(r.event),r.type===`started`&&!n&&(n=!0,e(r.handle),r.handle.kind===`existing`&&(s=!0,release())),r.type===`failed`&&!n){n=!0;let e=Error(r.message);r.stack!==void 0&&(e.stack=r.stack),t(e)}})})},close(){if(o!==void 0)return o;let e=a;return e===void 0?Promise.resolve():(s=!0,o=(async()=>{e.connected&&e.send({type:`shutdown`}),!await settlesWithin(l.promise,550)&&(signalProcessGroup(e,`SIGTERM`),!await settlesWithin(l.promise,150)&&(signalProcessGroup(e,`SIGKILL`),await settlesWithin(l.promise,100),release()))})(),o)},wait:()=>c.promise}}async function settlesWithin(e,t){let n;try{return await Promise.race([e.then(()=>!0),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n!==void 0&&clearTimeout(n)}}function signalProcessGroup(e,t){if(process.platform!==`win32`&&e.pid!==void 0)try{process.kill(-e.pid,t);return}catch{}e.kill(t)}export{DEV_SERVER_CLOSE_BUDGET_MS,createDevelopmentServer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__toESM}from"../../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{applyVercelTrustedSourceAccess,prepareVercelTrustedSourceAccess}from"./vercel-trusted-sources.js";import{appendRemoteAuthMutationSummary}from"./remote-auth-result.js";import{WizardCancelledError}from"#setup/step.js";import{toErrorMessage}from"#shared/errors.js";import{resolveDevelopmentOidcToken}from"#services/dev-client/request-headers.js";import{formatDevelopmentOidcTokenFailure}from"#services/dev-client/vercel-auth-error.js";import{runLoginFlow}from"#setup/flows/login.js";import{
|
|
1
|
+
import{__toESM}from"../../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{applyVercelTrustedSourceAccess,prepareVercelTrustedSourceAccess}from"./vercel-trusted-sources.js";import{appendRemoteAuthMutationSummary}from"./remote-auth-result.js";import{pickTeam}from"#setup/vercel-project.js";import{WizardCancelledError}from"#setup/step.js";import{toErrorMessage}from"#shared/errors.js";import{resolveDevelopmentOidcToken}from"#services/dev-client/request-headers.js";import{formatDevelopmentOidcTokenFailure}from"#services/dev-client/vercel-auth-error.js";import{runLoginFlow}from"#setup/flows/login.js";import{resolveVercelDeployment}from"#setup/vercel-deployment.js";var import_picocolors=__toESM(require_picocolors(),1);const defaultDeps={runLoginFlow,pickTeam,resolveVercelDeployment,resolveOidcToken:resolveDevelopmentOidcToken,prepareVercelTrustedSourceAccess,applyVercelTrustedSourceAccess};function failed(e,t=[]){return{kind:`failed`,message:appendRemoteAuthMutationSummary(e,t),completedMutations:[...t]}}function cancelled(e=[]){return{kind:`cancelled`,completedMutations:[...e]}}function loginFailure(e){switch(e.kind){case`already`:case`logged-in`:return;case`cancelled`:return cancelled();case`cli-missing`:return failed("The Vercel CLI is not installed. Install it with `npm i -g vercel@latest`, then retry /vc:login.");case`failed`:return failed(`Vercel login did not complete. Retry /vc:login.`);case`unavailable`:return failed(`Vercel could not verify your account. Check your connection, then retry /vc:login.`)}}function deploymentFailureMessage(e){return e.cause===`vercel`?e.failure.message:e.message}async function selectVercelDeploymentScope(e,t,n,r,i){return await e.pickTeam(r,t,void 0,{signal:i,selectMessage:e=>`${import_picocolors.default.blue(n)} is not accessible via current team (${import_picocolors.default.bold(e)})\nYou can try selecting another team:`})}async function runRemoteAuthFlow(e){let{workspaceRoot:t,serverUrl:n,prompter:r,signal:i}=e,a=new URL(n).host,o={...defaultDeps,...e.deps},s=[],c=!1;try{let n=await o.runLoginFlow({appRoot:t,prompter:r,signal:i}),l=loginFailure(n);if(l!==void 0)return l;n.kind===`logged-in`&&s.push({kind:`vercel-login`});let u=await o.resolveVercelDeployment({workspaceRoot:t,host:a,signal:i});if(u.kind===`forbidden`){let e=await o.runLoginFlow({appRoot:t,force:!0,prompter:r,signal:i}),n=loginFailure(e);if(n!==void 0)return n;e.kind===`logged-in`&&s.push({kind:`vercel-login`}),i?.throwIfAborted(),u=await o.resolveVercelDeployment({workspaceRoot:t,host:a,signal:i})}if(u.kind===`not-found`)try{let e=await selectVercelDeploymentScope(o,t,a,r,i);i?.throwIfAborted(),u=await o.resolveVercelDeployment({workspaceRoot:t,host:a,scope:e,signal:i})}catch(e){return e instanceof WizardCancelledError?cancelled(s):(i?.throwIfAborted(),failed(`Could not select a Vercel team: ${toErrorMessage(e)}`,s))}let d;switch(u.kind){case`resolved`:d=u.target;break;case`cancelled`:return cancelled(s);case`forbidden`:return failed(`Could not access ${a}. Re-authenticate (for example to complete a team's SSO), then retry /vc:login.`,s);case`not-found`:return failed(`Vercel did not resolve ${a} for the selected Vercel team.`,s);case`project-mismatch`:return failed(`Could not verify ${a}: Vercel resolved project ${u.actualProjectId}, not ${u.expectedProjectId}.`,s);case`failed`:return failed(`Could not verify ${a} through Vercel: ${deploymentFailureMessage(u.failure)}`,s)}let f;if(e.configureTrustedSources===!0){let e=await o.prepareVercelTrustedSourceAccess({workspaceRoot:t,target:d,prompter:r,signal:i});if(i?.throwIfAborted(),e.kind===`cancelled`)return cancelled(s);if(e.kind===`failed`)return failed(e.message,s);e.kind===`approved`&&(f=e.grant)}if(i?.throwIfAborted(),f!==void 0){c=!0;let e=await o.applyVercelTrustedSourceAccess({workspaceRoot:t,grant:f,signal:i});if(e.kind===`failed`)return failed(e.message,s);e.kind===`updated`&&s.push({kind:`trusted-sources-updated`,targetProjectName:e.targetProjectName})}let p=await o.resolveOidcToken({ownerId:d.deployment.ownerId,projectId:d.deployment.projectId,forceRefresh:!0});if(i?.throwIfAborted(),p.kind!==`resolved`)return failed(formatDevelopmentOidcTokenFailure(p),s);let m=p.token.trim();return{kind:`prepared`,target:d,resolveToken:async()=>{let e=await o.resolveOidcToken(d.deployment);return e.kind===`resolved`&&(m=e.token.trim()),m},completedMutations:[...s]}}catch(e){return!c&&(e instanceof WizardCancelledError||i?.aborted===!0)?cancelled(s):failed(`Could not authenticate ${a}: ${toErrorMessage(e)}`,s)}}export{runRemoteAuthFlow};
|
|
@@ -15,6 +15,7 @@ import { type McpConnectionProbe } from "./mcp-connection-status.js";
|
|
|
15
15
|
import type { detectProjectIdentity } from "#setup/project-resolution.js";
|
|
16
16
|
import { getVercelAuthStatus } from "#setup/vercel-project.js";
|
|
17
17
|
import type { DevDiagnostics } from "../diagnostics.js";
|
|
18
|
+
import type { CommandLifecycle } from "../../shutdown.js";
|
|
18
19
|
export { parsePromptCommand, type PromptCommand } from "./prompt-commands.js";
|
|
19
20
|
export type AgentTUIStreamResult = {
|
|
20
21
|
events: AsyncIterable<AgentTUIStreamEvent> | ReadableStream<AgentTUIStreamEvent>;
|
|
@@ -268,6 +269,8 @@ export type AgentTUIRenderer = {
|
|
|
268
269
|
* lifecycle ends.
|
|
269
270
|
*/
|
|
270
271
|
shutdown?(): void;
|
|
272
|
+
requestInterrupt?(): void;
|
|
273
|
+
exitRequested?(): boolean;
|
|
271
274
|
};
|
|
272
275
|
export interface PromptCommandHandlerContext {
|
|
273
276
|
readonly renderer: AgentTUIRenderer;
|
|
@@ -356,6 +359,7 @@ export type EveTUIRunnerOptions = TuiDisplayOptions & {
|
|
|
356
359
|
onBootProgress?: DevBootProgressReporter;
|
|
357
360
|
/** Parent-owned diagnostics recorder; omitted for remote and test renderers. */
|
|
358
361
|
diagnostics?: DevDiagnostics;
|
|
362
|
+
lifecycle?: CommandLifecycle;
|
|
359
363
|
};
|
|
360
364
|
export declare class EveTUIRunner {
|
|
361
365
|
#private;
|