eve 0.33.0 → 0.33.2
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 +16 -0
- package/dist/src/compiled/.vendor-stamp.json +1 -1
- package/dist/src/compiled/@workflow/core/_quickjs-wasi.d.ts +3 -0
- package/dist/src/compiled/@workflow/core/events-consumer.d.ts +127 -6
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.d.ts +87 -18
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +15 -1
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +116 -8
- package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +36 -1
- package/dist/src/compiled/@workflow/core/runtime/quickjs-serde.d.ts +107 -0
- package/dist/src/compiled/@workflow/core/runtime/replay-budget.d.ts +5 -14
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +7 -0
- package/dist/src/compiled/@workflow/core/runtime/world-compatibility.d.ts +15 -0
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/serialization/codec-devalue-vm.d.ts +7 -0
- package/dist/src/compiled/@workflow/core/serialization/workflow-vm.d.ts +8 -3
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +23 -0
- 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-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +15 -15
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-Du5ztewf.js → attribute-changes-6OqdYdi4.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/dist-C8PhDW9B.js +1 -0
- package/dist/src/compiled/_chunks/workflow/functions-CXb61C6h.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{functions-ClJbpZhR.js → functions-xMPAeWFr.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/node-Smb57EnG.js +40 -0
- package/dist/src/compiled/_chunks/workflow/private-tvMBynnC.js +1 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-BrduAuFX.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-CX7_sJnW.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-tsb2HjWK.js +1 -0
- package/dist/src/compiled/_chunks/workflow/undici-BNc_0O4m.js +95 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-BYKVqrwc.js +15 -0
- package/dist/src/compiled/_chunks/workflow/wrapper-CDq65xJV.js +8 -0
- package/dist/src/evals/autoevals-client.js +1 -1
- 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.d.ts +3 -9
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/durable-session-store.d.ts +5 -0
- package/dist/src/execution/durable-session-store.js +1 -1
- package/dist/src/execution/parked-delivery-wait.d.ts +8 -0
- package/dist/src/execution/parked-delivery-wait.js +1 -1
- package/dist/src/execution/route-child-delivery.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/subagent-hitl-proxy.d.ts +1 -0
- package/dist/src/execution/subagent-hitl-proxy.js +1 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-steps.d.ts +4 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/hitl/approval-input-requests.d.ts +13 -0
- package/dist/src/harness/hitl/approval-input-requests.js +1 -0
- package/dist/src/harness/hitl/pending-input-resolution.d.ts +51 -0
- package/dist/src/harness/hitl/pending-input-resolution.js +1 -0
- package/dist/src/harness/hitl/question-input-requests.d.ts +15 -0
- package/dist/src/harness/hitl/question-input-requests.js +1 -0
- package/dist/src/harness/hitl/session-limit-input-requests.d.ts +10 -0
- package/dist/src/harness/hitl/session-limit-input-requests.js +1 -0
- package/dist/src/harness/input-requests.d.ts +17 -105
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +77 -0
- package/dist/src/harness/pending-input-batches.js +1 -0
- package/dist/src/harness/proxy-input-requests.d.ts +13 -3
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/node_modules/.pnpm/{autoevals@0.0.132_ws@8.21.1_bufferutil@4.1.0_ → autoevals@0.0.132_ws@8.21.3_bufferutil@4.1.0_}/node_modules/autoevals/jsdist/index.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +9 -0
- package/dist/src/setup/scaffold/create/web-template.js +291 -1
- package/dist/src/setup/scaffold/index.d.ts +1 -1
- package/dist/src/setup/scaffold/update/channels.d.ts +4 -13
- package/dist/src/setup/scaffold/update/channels.js +2 -2
- package/dist/src/setup/scaffold/update/web-options.d.ts +15 -0
- package/dist/src/setup/scaffold/update/web-options.js +1 -0
- package/dist/src/setup/vercel-project.js +0 -0
- package/docs/concepts/sessions-runs-and-streaming.md +4 -4
- package/docs/guides/frontend/overview.mdx +31 -10
- package/docs/guides/frontend/use-eve-agent-svelte.mdx +37 -15
- package/docs/guides/frontend/use-eve-agent-vue.mdx +38 -15
- package/docs/tools/human-in-the-loop.md +2 -2
- package/package.json +2 -2
- package/dist/src/compiled/@workflow/core/correlation-id.d.ts +0 -109
- package/dist/src/compiled/@workflow/core/serialization/vm-bundle-entry.d.ts +0 -12
- package/dist/src/compiled/_chunks/workflow/dist-CNXUKQCp.js +0 -40
- package/dist/src/compiled/_chunks/workflow/env-config-CYoX3muK.js +0 -1
- package/dist/src/compiled/_chunks/workflow/private-CiWVdS5v.js +0 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-CT0keOww.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-DBheaFhH.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-id-BdE0MZz9.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-BeH4B0Cd.js +0 -1
- package/dist/src/compiled/_chunks/workflow/spec-version-C0hBsfu-.js +0 -1
- package/dist/src/compiled/_chunks/workflow/undici-CUIybhQ2.js +0 -95
- package/dist/src/compiled/_chunks/workflow/wait-until-CMX5LUWJ.js +0 -15
- package/dist/src/compiled/_chunks/workflow/wrapper-6mlyNCCb.js +0 -8
- /package/dist/src/node_modules/.pnpm/{openai@6.39.1_ws@8.21.1_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_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_bufferutil@4.1.0__zod@3.25.76 → openai@6.39.1_ws@8.21.3_bufferutil@4.1.0__zod@3.25.76}/node_modules/openai/version.js +0 -0
|
@@ -4969,4 +4969,294 @@ export default config;
|
|
|
4969
4969
|
],
|
|
4970
4970
|
"exclude": ["node_modules"]
|
|
4971
4971
|
}
|
|
4972
|
-
`},
|
|
4972
|
+
`},WEB_APP_SIGN_IN_WITH_VERCEL_TEMPLATE_FILES={"agent/channels/eve.ts":`import { eveChannel } from "eve/channels/eve";
|
|
4973
|
+
import { localDev, type AuthFn, vercelOidc } from "eve/channels/auth";
|
|
4974
|
+
import { auth } from "@/lib/auth";
|
|
4975
|
+
|
|
4976
|
+
const betterAuthSession: AuthFn<Request> = async (request) => {
|
|
4977
|
+
const session = await auth.api.getSession({ headers: request.headers });
|
|
4978
|
+
if (!session) return null;
|
|
4979
|
+
|
|
4980
|
+
const attributes: Record<string, string> = {
|
|
4981
|
+
email: session.user.email,
|
|
4982
|
+
name: session.user.name,
|
|
4983
|
+
};
|
|
4984
|
+
if (session.user.image) {
|
|
4985
|
+
attributes.picture = session.user.image;
|
|
4986
|
+
}
|
|
4987
|
+
|
|
4988
|
+
return {
|
|
4989
|
+
attributes,
|
|
4990
|
+
authenticator: "better-auth:vercel",
|
|
4991
|
+
issuer: "https://vercel.com",
|
|
4992
|
+
principalId: session.user.id,
|
|
4993
|
+
principalType: "user",
|
|
4994
|
+
};
|
|
4995
|
+
};
|
|
4996
|
+
|
|
4997
|
+
export default eveChannel({
|
|
4998
|
+
auth: [betterAuthSession, vercelOidc(), localDev()],
|
|
4999
|
+
});
|
|
5000
|
+
`,"app/_components/web-chat-auth.tsx":`"use client";
|
|
5001
|
+
|
|
5002
|
+
import { LogOutIcon } from "lucide-react";
|
|
5003
|
+
import { useState } from "react";
|
|
5004
|
+
import { Button } from "@/components/ui/button";
|
|
5005
|
+
import {
|
|
5006
|
+
DropdownMenu,
|
|
5007
|
+
DropdownMenuContent,
|
|
5008
|
+
DropdownMenuItem,
|
|
5009
|
+
DropdownMenuSeparator,
|
|
5010
|
+
DropdownMenuTrigger,
|
|
5011
|
+
} from "@/components/ui/dropdown-menu";
|
|
5012
|
+
import { authClient } from "@/lib/auth-client";
|
|
5013
|
+
|
|
5014
|
+
const AGENT_NAME = "__EVE_INIT_APP_NAME__";
|
|
5015
|
+
|
|
5016
|
+
export function SignIn() {
|
|
5017
|
+
const [pending, setPending] = useState(false);
|
|
5018
|
+
const [error, setError] = useState<string>();
|
|
5019
|
+
|
|
5020
|
+
async function signIn() {
|
|
5021
|
+
setPending(true);
|
|
5022
|
+
setError(undefined);
|
|
5023
|
+
try {
|
|
5024
|
+
const result = await authClient.signIn.social({
|
|
5025
|
+
callbackURL: "/",
|
|
5026
|
+
provider: "vercel",
|
|
5027
|
+
});
|
|
5028
|
+
if (!result.error) return;
|
|
5029
|
+
setPending(false);
|
|
5030
|
+
setError("Sign-in failed. Try again.");
|
|
5031
|
+
} catch {
|
|
5032
|
+
setPending(false);
|
|
5033
|
+
setError("Sign-in failed. Try again.");
|
|
5034
|
+
}
|
|
5035
|
+
}
|
|
5036
|
+
|
|
5037
|
+
return (
|
|
5038
|
+
<main className="flex h-dvh items-center justify-center bg-background px-6 text-foreground">
|
|
5039
|
+
<div className="flex w-full max-w-sm flex-col items-center gap-6 text-center">
|
|
5040
|
+
<div className="space-y-2">
|
|
5041
|
+
<h1 className="break-words font-medium text-4xl tracking-tighter">{AGENT_NAME}</h1>
|
|
5042
|
+
<p className="text-muted-foreground text-sm">
|
|
5043
|
+
Team members can sign in with Vercel to chat.
|
|
5044
|
+
</p>
|
|
5045
|
+
</div>
|
|
5046
|
+
<Button disabled={pending} onClick={signIn}>
|
|
5047
|
+
Sign in with Vercel
|
|
5048
|
+
</Button>
|
|
5049
|
+
{error ? (
|
|
5050
|
+
<p className="text-destructive text-sm" role="alert">
|
|
5051
|
+
{error}
|
|
5052
|
+
</p>
|
|
5053
|
+
) : null}
|
|
5054
|
+
</div>
|
|
5055
|
+
</main>
|
|
5056
|
+
);
|
|
5057
|
+
}
|
|
5058
|
+
|
|
5059
|
+
export function AccountControl({
|
|
5060
|
+
email,
|
|
5061
|
+
image,
|
|
5062
|
+
name,
|
|
5063
|
+
}: {
|
|
5064
|
+
readonly email: string;
|
|
5065
|
+
readonly image?: string | null;
|
|
5066
|
+
readonly name: string;
|
|
5067
|
+
}) {
|
|
5068
|
+
const [imageFailed, setImageFailed] = useState(false);
|
|
5069
|
+
const [pending, setPending] = useState(false);
|
|
5070
|
+
const initials = getInitials(name, email);
|
|
5071
|
+
|
|
5072
|
+
async function signOut() {
|
|
5073
|
+
setPending(true);
|
|
5074
|
+
try {
|
|
5075
|
+
await authClient.signOut({
|
|
5076
|
+
fetchOptions: {
|
|
5077
|
+
onError: () => setPending(false),
|
|
5078
|
+
onSuccess: () => window.location.assign("/"),
|
|
5079
|
+
},
|
|
5080
|
+
});
|
|
5081
|
+
} catch {
|
|
5082
|
+
setPending(false);
|
|
5083
|
+
}
|
|
5084
|
+
}
|
|
5085
|
+
|
|
5086
|
+
return (
|
|
5087
|
+
<div className="fixed top-3 right-3 z-10">
|
|
5088
|
+
<DropdownMenu>
|
|
5089
|
+
<DropdownMenuTrigger asChild>
|
|
5090
|
+
<Button
|
|
5091
|
+
aria-label={\`Open account menu for \${name}\`}
|
|
5092
|
+
className="size-9 cursor-pointer overflow-hidden rounded-full p-0"
|
|
5093
|
+
size="icon"
|
|
5094
|
+
variant="outline"
|
|
5095
|
+
>
|
|
5096
|
+
{image && !imageFailed ? (
|
|
5097
|
+
<img
|
|
5098
|
+
alt=""
|
|
5099
|
+
className="size-full object-cover"
|
|
5100
|
+
onError={() => setImageFailed(true)}
|
|
5101
|
+
src={image}
|
|
5102
|
+
/>
|
|
5103
|
+
) : (
|
|
5104
|
+
<span aria-hidden="true" className="font-medium text-xs">
|
|
5105
|
+
{initials}
|
|
5106
|
+
</span>
|
|
5107
|
+
)}
|
|
5108
|
+
</Button>
|
|
5109
|
+
</DropdownMenuTrigger>
|
|
5110
|
+
<DropdownMenuContent align="end" className="w-64">
|
|
5111
|
+
<div className="min-w-0 px-2 py-1.5 text-sm">
|
|
5112
|
+
<span className="block truncate font-medium leading-5" title={name}>
|
|
5113
|
+
{name}
|
|
5114
|
+
</span>
|
|
5115
|
+
<span className="block truncate text-muted-foreground leading-5" title={email}>
|
|
5116
|
+
{email}
|
|
5117
|
+
</span>
|
|
5118
|
+
</div>
|
|
5119
|
+
<DropdownMenuSeparator />
|
|
5120
|
+
<DropdownMenuItem
|
|
5121
|
+
className="cursor-pointer justify-between"
|
|
5122
|
+
disabled={pending}
|
|
5123
|
+
onSelect={signOut}
|
|
5124
|
+
>
|
|
5125
|
+
{pending ? "Logging out…" : "Log out"}
|
|
5126
|
+
<LogOutIcon aria-hidden="true" />
|
|
5127
|
+
</DropdownMenuItem>
|
|
5128
|
+
</DropdownMenuContent>
|
|
5129
|
+
</DropdownMenu>
|
|
5130
|
+
</div>
|
|
5131
|
+
);
|
|
5132
|
+
}
|
|
5133
|
+
|
|
5134
|
+
function getInitials(name: string, email: string): string {
|
|
5135
|
+
const parts = name.trim().split(/\\s+/).filter(Boolean);
|
|
5136
|
+
if (parts.length >= 2) {
|
|
5137
|
+
return \`\${parts[0]?.[0] ?? ""}\${parts.at(-1)?.[0] ?? ""}\`.toUpperCase();
|
|
5138
|
+
}
|
|
5139
|
+
return (parts[0]?.[0] ?? email[0] ?? "?").toUpperCase();
|
|
5140
|
+
}
|
|
5141
|
+
`,"app/api/auth/[...all]/route.ts":`import { toNextJsHandler } from "better-auth/next-js";
|
|
5142
|
+
import { auth } from "@/lib/auth";
|
|
5143
|
+
|
|
5144
|
+
export const { GET, POST } = toNextJsHandler(auth);
|
|
5145
|
+
`,"app/layout.tsx":`import type { Metadata } from "next";
|
|
5146
|
+
import { Geist, Geist_Mono } from "next/font/google";
|
|
5147
|
+
import type { ReactNode } from "react";
|
|
5148
|
+
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
5149
|
+
import { cn } from "@/lib/utils";
|
|
5150
|
+
import "./globals.css";
|
|
5151
|
+
|
|
5152
|
+
const sans = Geist({
|
|
5153
|
+
variable: "--font-sans",
|
|
5154
|
+
subsets: ["latin"],
|
|
5155
|
+
weight: "variable",
|
|
5156
|
+
display: "swap",
|
|
5157
|
+
});
|
|
5158
|
+
|
|
5159
|
+
const mono = Geist_Mono({
|
|
5160
|
+
variable: "--font-mono",
|
|
5161
|
+
subsets: ["latin"],
|
|
5162
|
+
weight: "variable",
|
|
5163
|
+
display: "swap",
|
|
5164
|
+
});
|
|
5165
|
+
|
|
5166
|
+
export const metadata: Metadata = {
|
|
5167
|
+
title: "__EVE_INIT_APP_NAME__",
|
|
5168
|
+
description: "A Next.js starter for eve agents with AI Elements.",
|
|
5169
|
+
};
|
|
5170
|
+
|
|
5171
|
+
// The page and Eve routes validate the generated app's Better Auth session.
|
|
5172
|
+
export default function RootLayout({ children }: { readonly children: ReactNode }) {
|
|
5173
|
+
return (
|
|
5174
|
+
<html className={cn(sans.variable, mono.variable)} lang="en">
|
|
5175
|
+
<body>
|
|
5176
|
+
<TooltipProvider>{children}</TooltipProvider>
|
|
5177
|
+
</body>
|
|
5178
|
+
</html>
|
|
5179
|
+
);
|
|
5180
|
+
}
|
|
5181
|
+
`,"app/page.tsx":`import { headers } from "next/headers";
|
|
5182
|
+
import { AgentChat } from "./_components/agent-chat";
|
|
5183
|
+
import { AccountControl, SignIn } from "./_components/web-chat-auth";
|
|
5184
|
+
import { auth } from "@/lib/auth";
|
|
5185
|
+
|
|
5186
|
+
export default async function Page() {
|
|
5187
|
+
if (process.env.NODE_ENV === "development") {
|
|
5188
|
+
return <AgentChat />;
|
|
5189
|
+
}
|
|
5190
|
+
|
|
5191
|
+
const session = await auth.api.getSession({ headers: await headers() });
|
|
5192
|
+
if (!session) {
|
|
5193
|
+
return <SignIn />;
|
|
5194
|
+
}
|
|
5195
|
+
|
|
5196
|
+
return (
|
|
5197
|
+
<>
|
|
5198
|
+
<AgentChat />
|
|
5199
|
+
<AccountControl
|
|
5200
|
+
email={session.user.email}
|
|
5201
|
+
image={session.user.image}
|
|
5202
|
+
name={session.user.name}
|
|
5203
|
+
/>
|
|
5204
|
+
</>
|
|
5205
|
+
);
|
|
5206
|
+
}
|
|
5207
|
+
`,"lib/auth-client.ts":`"use client";
|
|
5208
|
+
|
|
5209
|
+
import { createAuthClient } from "better-auth/react";
|
|
5210
|
+
|
|
5211
|
+
export const authClient = createAuthClient();
|
|
5212
|
+
`,"lib/auth.ts":`import { betterAuth } from "better-auth";
|
|
5213
|
+
|
|
5214
|
+
const SESSION_MAX_AGE_SECONDS = 8 * 60 * 60;
|
|
5215
|
+
const DEVELOPMENT_ALLOWED_HOSTS = ["localhost:*", "127.0.0.1:*"];
|
|
5216
|
+
|
|
5217
|
+
function getAllowedHosts(): string[] {
|
|
5218
|
+
if (process.env.NODE_ENV === "development") {
|
|
5219
|
+
return DEVELOPMENT_ALLOWED_HOSTS;
|
|
5220
|
+
}
|
|
5221
|
+
const deploymentHosts = [
|
|
5222
|
+
process.env.VERCEL_URL,
|
|
5223
|
+
process.env.VERCEL_BRANCH_URL,
|
|
5224
|
+
process.env.VERCEL_PROJECT_PRODUCTION_URL,
|
|
5225
|
+
].filter((host): host is string => Boolean(host));
|
|
5226
|
+
if (deploymentHosts.length === 0) {
|
|
5227
|
+
throw new Error("No trusted deployment hosts are configured");
|
|
5228
|
+
}
|
|
5229
|
+
return Array.from(new Set(deploymentHosts));
|
|
5230
|
+
}
|
|
5231
|
+
|
|
5232
|
+
function requireEnvironmentVariable(name: string): string {
|
|
5233
|
+
const value = process.env[name];
|
|
5234
|
+
if (value) return value;
|
|
5235
|
+
if (process.env.NODE_ENV === "development") return \`development-\${name}\`;
|
|
5236
|
+
throw new Error(\`Missing required environment variable: \${name}\`);
|
|
5237
|
+
}
|
|
5238
|
+
|
|
5239
|
+
export const auth = betterAuth({
|
|
5240
|
+
baseURL: {
|
|
5241
|
+
allowedHosts: getAllowedHosts(),
|
|
5242
|
+
protocol: process.env.NODE_ENV === "development" ? "auto" : "https",
|
|
5243
|
+
},
|
|
5244
|
+
secret: requireEnvironmentVariable("BETTER_AUTH_SECRET"),
|
|
5245
|
+
session: {
|
|
5246
|
+
expiresIn: SESSION_MAX_AGE_SECONDS,
|
|
5247
|
+
disableSessionRefresh: true,
|
|
5248
|
+
cookieCache: {
|
|
5249
|
+
enabled: true,
|
|
5250
|
+
maxAge: SESSION_MAX_AGE_SECONDS,
|
|
5251
|
+
refreshCache: false,
|
|
5252
|
+
strategy: "jwe",
|
|
5253
|
+
},
|
|
5254
|
+
},
|
|
5255
|
+
socialProviders: {
|
|
5256
|
+
vercel: {
|
|
5257
|
+
clientId: requireEnvironmentVariable("VERCEL_APP_CLIENT_ID"),
|
|
5258
|
+
clientSecret: requireEnvironmentVariable("VERCEL_APP_CLIENT_SECRET"),
|
|
5259
|
+
},
|
|
5260
|
+
},
|
|
5261
|
+
});
|
|
5262
|
+
`},WEB_APP_TEMPLATE_PACKAGE_JSON={scripts:{build:`next build`,"build:eve":`eve build`,dev:`next dev`,"dev:eve":`eve dev`,start:`next start`,"start:eve":`eve start`,typecheck:`tsc --noEmit -p tsconfig.json`},dependencies:{"@radix-ui/react-use-controllable-state":`1.2.2`,"@shikijs/core":`4.1.0`,"@shikijs/engine-javascript":`4.1.0`,"@shikijs/engine-oniguruma":`4.1.0`,"@streamdown/cjk":`1.0.3`,"@streamdown/code":`1.1.1`,"@streamdown/math":`1.0.2`,"@streamdown/mermaid":`1.0.2`,"@tailwindcss/postcss":`4.3.0`,ai:`^7.0.38`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,cmdk:`1.1.1`,"lucide-react":`1.16.0`,motion:`12.40.0`,nanoid:`5.1.11`,next:`16.3.0-preview.6`,"radix-ui":`1.4.3`,react:`19.2.6`,"react-dom":`19.2.6`,shiki:`4.1.0`,streamdown:`2.5.0`,"tailwind-merge":`3.6.0`,tailwindcss:`4.3.0`,"use-stick-to-bottom":`1.1.4`,zod:`4.4.3`},devDependencies:{"@types/node":`26`,"@types/react":`19.2.15`,"@types/react-dom":`19.2.3`,typescript:`6.0.3`}};export{WEB_APP_SIGN_IN_WITH_VERCEL_TEMPLATE_FILES,WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { byokProviderEnvVar, CURRENT_DIRECTORY_PROJECT_NAME, isEveProject, scaffoldBaseProject, type EvePackageContract, type ScaffoldBaseProjectOptions, } from "./create/project.js";
|
|
2
2
|
export { scaffoldExtensionProject, type ScaffoldExtensionProjectOptions, } from "./create/extension.js";
|
|
3
|
-
export { DEFAULT_SLACK_CONNECTOR_SLUG, SLACK_CHANNEL_DEFAULT_ROUTE, deriveSlackConnectorSlug, ensureChannel, hasVercelHostFramework, isNextJsProject, listAuthoredChannels, normalizeSlackConnectorSlug, resolveVercelHostFrameworkPreset, type ChannelKind, type ChannelMutationResult, type EnsureChannelOptions, type SlackConnectorSlug, type WebPackageVersions, } from "./update/channels.js";
|
|
3
|
+
export { DEFAULT_SLACK_CONNECTOR_SLUG, SLACK_CHANNEL_DEFAULT_ROUTE, deriveSlackConnectorSlug, ensureChannel, hasVercelHostFramework, isNextJsProject, listAuthoredChannels, normalizeSlackConnectorSlug, resolveVercelHostFrameworkPreset, type ChannelKind, type ChannelMutationResult, type EnsureChannelOptions, type SlackConnectorSlug, type WebAuthentication, type WebPackageVersions, } from "./update/channels.js";
|
|
4
4
|
export { SCAFFOLDABLE_CHANNELS, type ScaffoldableChannel } from "./channels-catalog.js";
|
|
5
5
|
export { ensureConnection, ensureConnectionDependencies, listAuthoredConnections, type ConnectionInput, type ConnectionMutationAction, type ConnectionMutationResult, type EnsureConnectionOptions, type EnsureConnectionDependenciesOptions, } from "./update/connections.js";
|
|
6
6
|
export { catalogSlugs, CONNECTION_CATALOG, CUSTOM_CONNECTION_SLUG, effectiveProtocols, endpointForProtocol, getCatalogEntry, isValidConnectionSlug, SUPPORTED_PROTOCOLS, type ConnectionAuthSpec, type ConnectionCatalogEntry, type ConnectionProtocol, type CustomConnectionInput, type EnvHeader, type McpEndpoint, type OpenApiEndpoint, } from "./connections/catalog.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { PackageManagerKind } from "../../package-manager.js";
|
|
2
2
|
import { type NodeEngineOverride } from "../../node-engine.js";
|
|
3
3
|
import { type WorkspaceRootMutation } from "../workspace-root.js";
|
|
4
|
-
import { type
|
|
4
|
+
import { type WebAuthentication, type WebPackageVersions } from "./web-options.js";
|
|
5
|
+
export type { WebAuthentication, WebPackageVersions } from "./web-options.js";
|
|
5
6
|
export declare const SLACK_CHANNEL_DEFAULT_ROUTE = "/eve/v1/slack";
|
|
6
7
|
export declare const DEFAULT_SLACK_CONNECTOR_SLUG = "my-agent";
|
|
7
8
|
declare const slackConnectorSlugBrand: unique symbol;
|
|
@@ -97,23 +98,13 @@ export interface EnsureChannelOptions {
|
|
|
97
98
|
slackCredentials?: "vercel-connect" | "environment";
|
|
98
99
|
connectPackageVersion?: string;
|
|
99
100
|
webPackageVersions?: WebPackageVersions;
|
|
101
|
+
/** Authentication integration generated for Web Chat. Omit to keep the fail-closed placeholder. */
|
|
102
|
+
webAuthentication?: WebAuthentication;
|
|
100
103
|
/** When false, Web Chat leaves Vercel Services config unwritten for preview-only scaffolds. */
|
|
101
104
|
configureVercelServices?: boolean;
|
|
102
105
|
onWorkspaceRootMutation?: (mutation: WorkspaceRootMutation) => void | Promise<void>;
|
|
103
106
|
/** Dependencies are already owned and installed by a registry item. */
|
|
104
107
|
skipDependencyMutation?: boolean;
|
|
105
108
|
}
|
|
106
|
-
export interface WebPackageVersions {
|
|
107
|
-
evePackage?: EvePackageContract;
|
|
108
|
-
aiPackageVersion?: string;
|
|
109
|
-
nextPackageVersion?: string;
|
|
110
|
-
reactPackageVersion?: string;
|
|
111
|
-
reactDomPackageVersion?: string;
|
|
112
|
-
streamdownPackageVersion?: string;
|
|
113
|
-
zodPackageVersion?: string;
|
|
114
|
-
typesReactPackageVersion?: string;
|
|
115
|
-
typesReactDomPackageVersion?: string;
|
|
116
|
-
}
|
|
117
109
|
export declare function ensureChannel(options: EnsureChannelOptions): Promise<ChannelMutationResult>;
|
|
118
110
|
export declare function listAuthoredChannels(projectRoot: string): Promise<string[]>;
|
|
119
|
-
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{appendEnv}from"../../append-env.js";import{pinnedNodeEngineMajor}from"../../node-engine.js";import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{patchPackageJson}from"./package-json.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON}from"../create/web-template.js";import{
|
|
1
|
+
import{appendEnv}from"../../append-env.js";import{pinnedNodeEngineMajor}from"../../node-engine.js";import{getSupportedModuleBaseName,matchesSupportedModuleBaseName}from"./module-files.js";import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{patchPackageJson}from"./package-json.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{WEB_APP_SIGN_IN_WITH_VERCEL_TEMPLATE_FILES,WEB_APP_TEMPLATE_FILES,WEB_APP_TEMPLATE_PACKAGE_JSON}from"../create/web-template.js";import{resolveEvePackageContract}from"../create/project.js";import{resolveWebPackageVersions}from"./web-options.js";import{readFile,readdir,unlink,writeFile}from"node:fs/promises";import{basename,join,resolve}from"node:path";const SLACK_CHANNEL_DEFAULT_ROUTE=`/eve/v1/slack`,DEFAULT_SLACK_CONNECTOR_SLUG=`my-agent`,NEXT_PACKAGE_NAME=`next`,PACKAGE_DEPENDENCY_FIELDS=[`dependencies`,`devDependencies`],WEB_NEXT_CONFIG_PATH=`next.config.ts`,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);function toSlackConnectorSlug(e){return e}function isJsonObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function readPackageJsonObject(e){if(!await pathExists(e))return;let t=JSON.parse(await readFile(e,`utf8`));return isJsonObject(t)?t:void 0}async function readDependencyVersion(e,t){let n=await readPackageJsonObject(e);if(n===void 0||!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(e,t){let n=await readPackageJsonObject(e);return n!==void 0&&packageJsonHasDependency(n,t)}async function isNextJsProject(e){return hasPackageDependency(join(e,`package.json`),NEXT_PACKAGE_NAME)}const VERCEL_HOST_FRAMEWORK_PRESETS={"@sveltejs/kit":`sveltekit`,[NEXT_PACKAGE_NAME]:`nextjs`,nuxt:`nuxtjs`,nuxt3:`nuxtjs`,"nuxt-edge":`nuxtjs`,"nuxt-nightly":`nuxtjs`};async function resolveVercelHostFrameworkPreset(e){let t=await readPackageJsonObject(join(e,`package.json`));if(t!==void 0){for(let[e,n]of Object.entries(VERCEL_HOST_FRAMEWORK_PRESETS))if(packageJsonHasDependency(t,e))return n}}async function hasVercelHostFramework(e){return await resolveVercelHostFrameworkPreset(e)!==void 0}async function ensurePackageDependency(e,t,n){return!await pathExists(e)||await readDependencyVersion(e,t)===n?[]:(await patchPackageJson(e,{dependencies:{[t]:n}}),[{path:e,dependencies:[t],devDependencies:[],scripts:[]}])}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}async function patchWebPackageJson(e,n,r,a,c,d=!0,f){let h=join(e,`package.json`);if(!await pathExists(h))return{mutations:[]};let g=resolveEvePackageContract(a.evePackage),_=pinnedNodeEngineMajor(g.nodeEngine),v={...WEB_APP_TEMPLATE_PACKAGE_JSON.dependencies,ai:resolveVersionToken(`aiPackageVersion`,a.aiPackageVersion),eve:formatEveDependencySpecifier(g.version),next:resolveVersionToken(`nextPackageVersion`,a.nextPackageVersion),react:resolveVersionToken(`reactPackageVersion`,a.reactPackageVersion),"react-dom":resolveVersionToken(`reactDomPackageVersion`,a.reactDomPackageVersion),streamdown:resolveVersionToken(`streamdownPackageVersion`,a.streamdownPackageVersion),zod:resolveVersionToken(`zodPackageVersion`,a.zodPackageVersion),...f===`sign-in-with-vercel`?{"better-auth":resolveVersionToken(`betterAuthPackageVersion`,a.betterAuthPackageVersion)}:{}},y={...WEB_APP_TEMPLATE_PACKAGE_JSON.devDependencies,"@types/node":_,"@types/react":resolveVersionToken(`typesReactPackageVersion`,a.typesReactPackageVersion),"@types/react-dom":resolveVersionToken(`typesReactDomPackageVersion`,a.typesReactDomPackageVersion),typescript:`6.0.3`},b=WEB_APP_TEMPLATE_PACKAGE_JSON.scripts,x=isPackageManagerWorkspaceMember(n,r),S={scripts:b};d&&(S.dependencies=v,S.devDependencies=y),x||(S.nodeEngineRequirement=g.nodeEngine);let C=await patchPackageJson(h,S),w=(await patchWorkspaceRootPackageJson(n,r,{aiPackageVersion:v.ai,nodeEngineRequirement:g.nodeEngine,onWorkspaceRootMutation:c})).nodeEngineOverride??C.nodeEngineOverride;return{mutations:[{path:h,dependencies:d?Object.keys(v):[],devDependencies:d?Object.keys(y):[],scripts:Object.keys(b)}],nodeEngineOverride:w}}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 buildSlackConnectTemplate(e){if(!e.startsWith(`slack/`)||e.length===6)throw Error(`Invalid Slack connector UID "${e}".`);return`import { connectSlackCredentials } from "@vercel/connect/eve";
|
|
2
2
|
import { slackChannel } from "eve/channels/slack";
|
|
3
3
|
|
|
4
4
|
export default slackChannel({
|
|
5
5
|
credentials: connectSlackCredentials(${JSON.stringify(e)}),
|
|
6
6
|
});
|
|
7
|
-
`}const SLACK_ENV_EXAMPLE_VALUES={SLACK_BOT_TOKEN:``,SLACK_SIGNING_SECRET:``};function renderWebAppTemplate(e,t){return e.replaceAll(`__EVE_INIT_APP_NAME__`,t).replaceAll(`__EVE_INIT_WITH_EVE_OPTIONS__`,``)}async function ensureWebVercelJson(e){return await pathExists(e)?`skipped`:(await writeTextFile(e,`${JSON.stringify({$schema:`https://openapi.vercel.sh/vercel.json`},null,2)}\n`,{force:!0}),`written`)}async function findCompetingNextConfigFiles(e){let t=[];for(let n of WEB_COMPETING_NEXT_CONFIG_PATHS){let r=join(e,n);await pathExists(r)&&t.push(r)}return t}async function ensureChannel(e){switch(e.kind){case`slack`:return ensureSlackChannel({...e,kind:`slack`});case`web`:return ensureWebChannel({...e,kind:`web`})}}async function ensureWebChannel(e){let t=join(e.projectRoot,`package.json`),n=await pathExists(join(e.projectRoot,`app/page.tsx`));if(!e.force&&await isNextJsProject(e.projectRoot))return{kind:`web`,action:`skipped`,skipReason:`nextjs-project`,filesWritten:[],filesSkipped:[t],packageJsonUpdated:[]};let r=resolveWebPackageVersions(e.webPackageVersions),o=e.packageManager??`pnpm`,s=resolve(e.workspaceProbeDirectory??e.projectRoot),l=await patchWebPackageJson(e.projectRoot,o,s,r,e.onWorkspaceRootMutation,!e.skipDependencyMutation),u=[],
|
|
7
|
+
`}const SLACK_ENV_EXAMPLE_VALUES={SLACK_BOT_TOKEN:``,SLACK_SIGNING_SECRET:``};function renderWebAppTemplate(e,t){return e.replaceAll(`__EVE_INIT_APP_NAME__`,t).replaceAll(`__EVE_INIT_WITH_EVE_OPTIONS__`,``)}async function ensureWebVercelJson(e){return await pathExists(e)?`skipped`:(await writeTextFile(e,`${JSON.stringify({$schema:`https://openapi.vercel.sh/vercel.json`},null,2)}\n`,{force:!0}),`written`)}async function findCompetingNextConfigFiles(e){let t=[];for(let n of WEB_COMPETING_NEXT_CONFIG_PATHS){let r=join(e,n);await pathExists(r)&&t.push(r)}return t}async function ensureChannel(e){switch(e.kind){case`slack`:return ensureSlackChannel({...e,kind:`slack`});case`web`:return ensureWebChannel({...e,kind:`web`})}}async function ensureWebChannel(e){let t=join(e.projectRoot,`package.json`),n=await pathExists(join(e.projectRoot,`app/page.tsx`));if(!e.force&&await isNextJsProject(e.projectRoot))return{kind:`web`,action:`skipped`,skipReason:`nextjs-project`,filesWritten:[],filesSkipped:[t],packageJsonUpdated:[]};let r=resolveWebPackageVersions(e.webPackageVersions,e.webAuthentication),o=e.packageManager??`pnpm`,s=resolve(e.workspaceProbeDirectory??e.projectRoot),l=await patchWebPackageJson(e.projectRoot,o,s,r,e.onWorkspaceRootMutation,!e.skipDependencyMutation,e.webAuthentication),u=[],p=[],m=[],g=[],_=basename(resolve(e.projectRoot));if(e.configureVercelServices??!0){let t=join(e.projectRoot,`vercel.json`);await ensureWebVercelJson(t)===`written`?u.push(t):g.push(t)}let v=await applyPackageManagerWorkspaceConfiguration({packageManager:o,projectRoot:e.projectRoot,workspaceProbeRoot:s,onWorkspaceRootMutation:e.onWorkspaceRootMutation});if(u.push(...v.filesWritten),g.push(...v.filesSkipped),!e.skipDependencyMutation){let t={...WEB_APP_TEMPLATE_FILES,...e.webAuthentication===`sign-in-with-vercel`?WEB_APP_SIGN_IN_WITH_VERCEL_TEMPLATE_FILES:{}};for(let[n,r]of Object.entries(t)){let t=join(e.projectRoot,n);if(n===`agent/channels/eve.ts`&&!e.force&&await pathExists(t)){g.push(t);continue}let o=await pathExists(t);await writeTextFile(t,renderWebAppTemplate(r,_),{force:!0}),u.push(t),o&&p.push(t)}}m.push(...await findCompetingNextConfigFiles(e.projectRoot));let y=[...new Set(u)],S=[...new Set(g)].filter(e=>!y.includes(e)),C={kind:`web`,action:n?`overwritten`:`created`,filesWritten:y,filesSkipped:S,packageJsonUpdated:l.mutations};return p.length>0&&(C.filesOverwritten=p),m.length>0&&(C.competingNextConfigFiles=m),l.nodeEngineOverride!==void 0&&(C.nodeEngineOverride=l.nodeEngineOverride),C}async function ensureSlackChannel(t){let n=join(t.projectRoot,`agent/channels/slack.ts`),r=await pathExists(n);if(!t.force&&r)return{kind:`slack`,action:`skipped`,filesWritten:[],filesSkipped:[n],packageJsonUpdated:[]};let s=t.slackCredentials??`vercel-connect`,c=t.slackConnectorSlug??await deriveSlackConnectorSlug(t.projectRoot),l,u=[],d=[n],f=[],p;if(s===`vercel-connect`){if(!t.skipDependencyMutation){let e=resolveVersionToken(`connectPackageVersion`,t.connectPackageVersion??`0.4.3`);u=await ensurePackageDependency(join(t.projectRoot,`package.json`),`@vercel/connect`,e)}l=buildSlackConnectTemplate(t.slackConnectorUid??`slack/${c}`)}else{l=`import { slackChannel } from "eve/channels/slack";
|
|
8
8
|
|
|
9
9
|
export default slackChannel();
|
|
10
10
|
`;let n=join(t.projectRoot,`.env.example`);p={path:n,...await pathExists(n)?{content:await readFile(n,`utf8`)}:{}},(await appendEnv(n,SLACK_ENV_EXAMPLE_VALUES)).written.length>0?d.push(n):f.push(n)}try{await writeTextFile(n,l,{force:t.force})}catch(e){throw p!==void 0&&(p.content===void 0?await unlink(p.path):await writeFile(p.path,p.content,`utf8`)),e}let m={kind:`slack`,action:r?`overwritten`:`created`,filesWritten:d,filesSkipped:f,packageJsonUpdated:u,slackConnectorSlug:c};return r&&(m.filesOverwritten=[n]),m}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,hasVercelHostFramework,isNextJsProject,listAuthoredChannels,normalizeSlackConnectorSlug,resolveVercelHostFrameworkPreset};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type EvePackageContract } from "../create/project.js";
|
|
2
|
+
export type WebAuthentication = "sign-in-with-vercel";
|
|
3
|
+
export interface WebPackageVersions {
|
|
4
|
+
evePackage?: EvePackageContract;
|
|
5
|
+
aiPackageVersion?: string;
|
|
6
|
+
betterAuthPackageVersion?: string;
|
|
7
|
+
nextPackageVersion?: string;
|
|
8
|
+
reactPackageVersion?: string;
|
|
9
|
+
reactDomPackageVersion?: string;
|
|
10
|
+
streamdownPackageVersion?: string;
|
|
11
|
+
zodPackageVersion?: string;
|
|
12
|
+
typesReactPackageVersion?: string;
|
|
13
|
+
typesReactDomPackageVersion?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function resolveWebPackageVersions(input: WebPackageVersions | undefined, authentication?: WebAuthentication): Required<WebPackageVersions>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{DEFAULT_EVE_PACKAGE_CONTRACT}from"../create/project.js";function resolveWebPackageVersions(e,t){return{evePackage:e?.evePackage??DEFAULT_EVE_PACKAGE_CONTRACT,aiPackageVersion:e?.aiPackageVersion??`^7.0.58`,betterAuthPackageVersion:e?.betterAuthPackageVersion??`1.6.26`,nextPackageVersion:e?.nextPackageVersion??(t===`sign-in-with-vercel`?`16.3.0`:`16.3.0-preview.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`,typesReactPackageVersion:e?.typesReactPackageVersion??`19.2.15`,typesReactDomPackageVersion:e?.typesReactDomPackageVersion??`19.2.3`}}export{resolveWebPackageVersions};
|
|
Binary file
|
|
@@ -150,13 +150,13 @@ curl -X POST http://127.0.0.1:2000/eve/v1/session/<sessionId> \
|
|
|
150
150
|
|
|
151
151
|
The follow-up reuses the same durable session: same history, same state. Message sends default to cancellation-backed `"steer"`; if a turn is active, eve buffers the follow-up, cancels that turn, and starts the message under a new turn ID. Channels and TypeScript `Session.send(...)` calls can select `turnPolicy: "queue"` when active work should finish first. Structured `inputResponses` never steer.
|
|
152
152
|
|
|
153
|
-
If
|
|
153
|
+
If one pending batch is waiting on a human-in-the-loop approval, a matching text reply such as `approve` or `cancel` answers it. Unrelated text starts an ordinary turn immediately without denying the tool call; the approval stays pending and answerable. A later structured `inputResponses` answer keyed by its `requestId` still resumes the original tool call, even after intervening turns.
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
With one question-only batch, an exact option match or permitted freeform response answers `ask_question`. Any other follow-up marks the question unanswered and starts the new turn. With several approval or question batches pending, eve does not guess which batch plain text addresses: the message starts an ordinary turn and the batches stay open. Use structured responses to target requests unambiguously.
|
|
156
156
|
|
|
157
|
-
A response
|
|
157
|
+
A structured response matches any currently pending request by ID, not only the newest batch. It becomes stale only after that request was answered, cleared, or cancelled. eve delivers a stale response to the model as a new user message, and the model decides whether the old selection still matters. A stale approval never authorizes the earlier tool call; the model must request the action and approval again if they are still needed.
|
|
158
158
|
|
|
159
|
-
|
|
159
|
+
One delivery can answer requests from several batches. eve resumes approval-bearing batches in durable order and carries later answers forward until each batch can resume.
|
|
160
160
|
|
|
161
161
|
Multiple replacement messages retain their durable arrival order and may be folded into the same replacement turn when they arrive before cancellation settles. See [message delivery and steering](./execution-model-and-durability#message-delivery-and-steering) for the current runtime contract.
|
|
162
162
|
|
|
@@ -113,20 +113,41 @@ received attachment as a `file` part on the user message. The part includes `med
|
|
|
113
113
|
|
|
114
114
|
## Human-in-the-loop prompts
|
|
115
115
|
|
|
116
|
-
Tools opt into approval with `approval`, and the model can also ask a question with `ask_question` — see [Human-in-the-loop](/docs/human-in-the-loop) for the server-side model. Either way the stream emits an `input.requested` event, and the pending request rides on a `dynamic-tool` part
|
|
116
|
+
Tools opt into approval with `approval`, and the model can also ask a question with `ask_question` — see [Human-in-the-loop](/docs/human-in-the-loop) for the server-side model. Either way the stream emits an `input.requested` event, and the pending request rides on a `dynamic-tool` part at `part.toolMetadata?.eve?.inputRequest`. Scan every message because an unrelated turn can add newer messages while an approval stays open, then answer through the same session with `respond()`:
|
|
117
117
|
|
|
118
118
|
```tsx
|
|
119
|
-
const
|
|
120
|
-
.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
119
|
+
const pendingRequests = agent.data.messages
|
|
120
|
+
.flatMap((message) => message.parts)
|
|
121
|
+
.flatMap((part) => {
|
|
122
|
+
if (part.type !== "dynamic-tool" || part.state !== "approval-requested") return [];
|
|
123
|
+
const request = part.toolMetadata?.eve?.inputRequest;
|
|
124
|
+
return request ? [request] : [];
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
return pendingRequests.map((request) => (
|
|
128
|
+
<fieldset key={request.requestId}>
|
|
129
|
+
<legend>
|
|
130
|
+
{request.kind === "tool-approval"
|
|
131
|
+
? "Approval required"
|
|
132
|
+
: request.kind === "question"
|
|
133
|
+
? "Question"
|
|
134
|
+
: "Session limit"}
|
|
135
|
+
</legend>
|
|
136
|
+
<p>{request.prompt}</p>
|
|
137
|
+
{request.options?.map((option) => (
|
|
138
|
+
<button
|
|
139
|
+
key={option.id}
|
|
140
|
+
onClick={() => void agent.respond([{ requestId: request.requestId, optionId: option.id }])}
|
|
141
|
+
type="button"
|
|
142
|
+
>
|
|
143
|
+
{option.label}
|
|
144
|
+
</button>
|
|
145
|
+
))}
|
|
146
|
+
</fieldset>
|
|
147
|
+
));
|
|
127
148
|
```
|
|
128
149
|
|
|
129
|
-
|
|
150
|
+
For a question with `allowFreeform`, render a text input and send `{ requestId, text }`. The default reducer marks each matching part as responded immediately. Approved tools update again when eve streams their result.
|
|
130
151
|
|
|
131
152
|
## Authorization prompts
|
|
132
153
|
|
|
@@ -77,26 +77,48 @@ await agent.send([
|
|
|
77
77
|
|
|
78
78
|
## Human-in-the-loop prompts
|
|
79
79
|
|
|
80
|
-
A tool opts into approval with `approval` ([Tools](../../tools)). When one fires, the pending request rides along on a `dynamic-tool` part
|
|
80
|
+
A tool opts into approval with `approval` ([Tools](../../tools)). When one fires, the pending request rides along on a `dynamic-tool` part at `part.toolMetadata?.eve?.inputRequest`. Scan every message because an unrelated turn can add newer messages while the approval stays open, then answer through the same session with `agent.respond(inputResponses)`:
|
|
81
81
|
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const isDynamicToolPart = (part: EveMessagePart): part is EveDynamicToolPart =>
|
|
86
|
-
part.type === "dynamic-tool";
|
|
82
|
+
```svelte
|
|
83
|
+
<script lang="ts">
|
|
84
|
+
import { useEveAgent } from "eve/svelte";
|
|
87
85
|
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
const agent = useEveAgent();
|
|
87
|
+
const pendingRequests = $derived(
|
|
88
|
+
agent.data.messages.flatMap((message) =>
|
|
89
|
+
message.parts.flatMap((part) => {
|
|
90
|
+
if (part.type !== "dynamic-tool" || part.state !== "approval-requested") return [];
|
|
91
|
+
const request = part.toolMetadata?.eve?.inputRequest;
|
|
92
|
+
return request ? [request] : [];
|
|
93
|
+
}),
|
|
94
|
+
),
|
|
95
|
+
);
|
|
96
|
+
</script>
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
{#each pendingRequests as request (request.requestId)}
|
|
99
|
+
<fieldset>
|
|
100
|
+
<legend>
|
|
101
|
+
{request.kind === "tool-approval"
|
|
102
|
+
? "Approval required"
|
|
103
|
+
: request.kind === "question"
|
|
104
|
+
? "Question"
|
|
105
|
+
: "Session limit"}
|
|
106
|
+
</legend>
|
|
107
|
+
<p>{request.prompt}</p>
|
|
108
|
+
{#each request.options ?? [] as option (option.id)}
|
|
109
|
+
<button
|
|
110
|
+
type="button"
|
|
111
|
+
onclick={() =>
|
|
112
|
+
void agent.respond([{ requestId: request.requestId, optionId: option.id }])}
|
|
113
|
+
>
|
|
114
|
+
{option.label}
|
|
115
|
+
</button>
|
|
116
|
+
{/each}
|
|
117
|
+
</fieldset>
|
|
118
|
+
{/each}
|
|
97
119
|
```
|
|
98
120
|
|
|
99
|
-
|
|
121
|
+
For a question with `allowFreeform`, bind a text input and send `{ requestId, text }`. The [React hook reference](./overview) covers the shared behavior.
|
|
100
122
|
|
|
101
123
|
## Stop, reset, and resume
|
|
102
124
|
|
|
@@ -88,28 +88,51 @@ async function onFileChange(event: Event) {
|
|
|
88
88
|
|
|
89
89
|
## Human-in-the-loop prompts
|
|
90
90
|
|
|
91
|
-
A tool opts into approval with `approval` ([Tools](../../tools)). When it triggers, the pending request shows up
|
|
91
|
+
A tool opts into approval with `approval` ([Tools](../../tools)). When it triggers, the pending request shows up on a `dynamic-tool` part at `part.toolMetadata?.eve?.inputRequest`. Scan every message because an unrelated turn can add newer messages while the approval stays open, then answer through the same session with `respond(inputResponses)`:
|
|
92
92
|
|
|
93
|
-
```
|
|
94
|
-
|
|
93
|
+
```vue
|
|
94
|
+
<script setup lang="ts">
|
|
95
|
+
import { computed } from "vue";
|
|
96
|
+
import { useEveAgent } from "eve/vue";
|
|
95
97
|
|
|
96
98
|
const { data, respond } = useEveAgent();
|
|
97
99
|
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
const pendingRequests = computed(() =>
|
|
101
|
+
data.value.messages.flatMap((message) =>
|
|
102
|
+
message.parts.flatMap((part) => {
|
|
103
|
+
if (part.type !== "dynamic-tool" || part.state !== "approval-requested") return [];
|
|
104
|
+
const request = part.toolMetadata?.eve?.inputRequest;
|
|
105
|
+
return request ? [request] : [];
|
|
106
|
+
}),
|
|
107
|
+
),
|
|
108
|
+
);
|
|
109
|
+
</script>
|
|
106
110
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
111
|
+
<template>
|
|
112
|
+
<fieldset v-for="request in pendingRequests" :key="request.requestId">
|
|
113
|
+
<legend>
|
|
114
|
+
{{
|
|
115
|
+
request.kind === "tool-approval"
|
|
116
|
+
? "Approval required"
|
|
117
|
+
: request.kind === "question"
|
|
118
|
+
? "Question"
|
|
119
|
+
: "Session limit"
|
|
120
|
+
}}
|
|
121
|
+
</legend>
|
|
122
|
+
<p>{{ request.prompt }}</p>
|
|
123
|
+
<button
|
|
124
|
+
v-for="option in request.options ?? []"
|
|
125
|
+
:key="option.id"
|
|
126
|
+
type="button"
|
|
127
|
+
@click="respond([{ requestId: request.requestId, optionId: option.id }])"
|
|
128
|
+
>
|
|
129
|
+
{{ option.label }}
|
|
130
|
+
</button>
|
|
131
|
+
</fieldset>
|
|
132
|
+
</template>
|
|
110
133
|
```
|
|
111
134
|
|
|
112
|
-
|
|
135
|
+
For a question with `allowFreeform`, bind a text input and send `{ requestId, text }`. The [React hook reference](./overview) covers the shared behavior.
|
|
113
136
|
|
|
114
137
|
## Stop, reset, and resume
|
|
115
138
|
|