eve 0.81.1 → 0.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/src/channel/channel-address.d.ts +21 -2
- package/dist/src/channel/channel-address.js +1 -1
- package/dist/src/channel/channel-operations.d.ts +32 -1
- package/dist/src/channel/channel-operations.js +1 -1
- package/dist/src/channel/delivery-idempotency.d.ts +4 -0
- package/dist/src/channel/delivery-idempotency.js +1 -0
- package/dist/src/channel/routes.d.ts +6 -0
- package/dist/src/channel/session.d.ts +5 -0
- package/dist/src/channel/session.js +1 -1
- package/dist/src/channel/types.d.ts +14 -11
- package/dist/src/chunks/{use-eve-agent-Bp6nbhfV.js → use-eve-agent-DTu78IAF.js} +36 -0
- package/dist/src/chunks/{use-eve-agent-DLkjJIm3.js → use-eve-agent-DlznYwQk.js} +36 -0
- package/dist/src/cli/dev/command-options.d.ts +1 -0
- package/dist/src/cli/dev/diagnostic-dump.js +1 -1
- package/dist/src/cli/run.d.ts +1 -0
- package/dist/src/cli/run.js +1 -1
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/client/message-reducer-types.d.ts +7 -3
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/client/transcript-reducer.d.ts +6 -3
- package/dist/src/client/transcript-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +19 -18
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/load-binding-namespace.d.ts +2 -0
- package/dist/src/compiler/load-binding-namespace.js +1 -1
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/module-lifecycle.d.ts +1 -1
- package/dist/src/compiler/module-lifecycle.js +1 -1
- package/dist/src/compiler/module-map.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/project-sources.d.ts +6 -0
- package/dist/src/compiler/project-sources.js +1 -1
- package/dist/src/context/keys.d.ts +2 -0
- package/dist/src/context/keys.js +1 -1
- package/dist/src/evals/cli/eval-state-directory.d.ts +7 -0
- package/dist/src/evals/cli/eval-state-directory.js +1 -0
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/eve-channel/index.js +1 -1
- package/dist/src/eve-channel/support.d.ts +2 -0
- package/dist/src/eve-channel/support.js +1 -1
- package/dist/src/eve-channel/types.d.ts +7 -0
- package/dist/src/execution/agent-sessions/context.d.ts +2 -13
- package/dist/src/execution/agent-sessions/context.js +1 -1
- package/dist/src/execution/agent-sessions/runtime-overrides.d.ts +5 -0
- package/dist/src/execution/agent-sessions/runtime-overrides.js +1 -0
- package/dist/src/execution/agent-sessions/session.d.ts +2 -2
- package/dist/src/execution/agent-sessions/session.js +1 -1
- package/dist/src/execution/agent-sessions/steps.d.ts +2 -0
- package/dist/src/execution/agent-sessions/steps.js +1 -1
- package/dist/src/execution/coordination-dispatch-shared.d.ts +5 -5
- package/dist/src/execution/coordination-dispatch-step.d.ts +17 -2
- package/dist/src/execution/coordination-dispatch-step.js +1 -1
- package/dist/src/execution/create-session-step.d.ts +5 -2
- package/dist/src/execution/create-session-step.js +1 -1
- package/dist/src/execution/deliver-payloads.js +1 -1
- package/dist/src/execution/durable-session-store.d.ts +0 -1
- package/dist/src/execution/dynamic-connection-recovery.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/effective-agent-config.d.ts +8 -2
- package/dist/src/execution/effective-agent-config.js +1 -1
- package/dist/src/execution/install-workflow-deployment-id.d.ts +3 -0
- package/dist/src/execution/install-workflow-deployment-id.js +1 -0
- package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
- package/dist/src/execution/node-step.d.ts +1 -0
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/runtime-context.d.ts +2 -0
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/session/active-turn.js +1 -1
- package/dist/src/execution/session/admission.js +1 -1
- package/dist/src/execution/session/checkpoint-migrations.js +1 -1
- package/dist/src/execution/session/entry-input.d.ts +1 -3
- package/dist/src/execution/session/entry.js +1 -1
- package/dist/src/execution/session/finalization.js +1 -1
- package/dist/src/execution/session/handoff.d.ts +6 -9
- package/dist/src/execution/session/handoff.js +1 -1
- package/dist/src/execution/session/input-queue.d.ts +5 -1
- package/dist/src/execution/session/input-queue.js +1 -1
- package/dist/src/execution/session/pending-history.d.ts +5 -0
- package/dist/src/execution/session/pending-history.js +1 -0
- package/dist/src/execution/session/pending-turn-state.js +1 -1
- package/dist/src/execution/session/program.d.ts +1 -1
- package/dist/src/execution/session/program.js +1 -1
- package/dist/src/execution/session/timeout-control.d.ts +18 -4
- package/dist/src/execution/session/timeout-control.js +1 -1
- package/dist/src/execution/session/timeout.d.ts +1 -2
- package/dist/src/execution/session/timeout.js +1 -1
- package/dist/src/execution/session/turn-event-handler.js +1 -1
- package/dist/src/execution/session/turn-step-result.js +1 -1
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn-waiting-step.js +1 -1
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/session-inbox/protocol.js +1 -1
- package/dist/src/execution/session.d.ts +0 -12
- package/dist/src/execution/session.js +2 -2
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/tasks/model-step.js +1 -1
- package/dist/src/execution/tasks/start.d.ts +4 -4
- package/dist/src/execution/tasks/start.js +1 -1
- package/dist/src/execution/tasks/steps.js +1 -1
- package/dist/src/execution/terminate-child-sessions-step.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/workflow/body.d.ts +2 -2
- package/dist/src/execution/workflow-runtime.d.ts +5 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/harness/hitl/approvals.js +1 -1
- package/dist/src/harness/hitl/budget-request.d.ts +12 -6
- package/dist/src/harness/hitl/budget-request.js +1 -1
- package/dist/src/harness/hitl/budget.d.ts +7 -1
- package/dist/src/harness/hitl/budget.js +1 -1
- package/dist/src/harness/hitl/coordinator.js +1 -1
- package/dist/src/harness/hitl/delivery.d.ts +1 -1
- package/dist/src/harness/hitl/delivery.js +1 -1
- package/dist/src/harness/hitl/index.js +1 -1
- package/dist/src/harness/hitl/intake.d.ts +2 -2
- package/dist/src/harness/hitl/intake.js +1 -1
- package/dist/src/harness/messages.d.ts +5 -0
- package/dist/src/harness/messages.js +1 -1
- package/dist/src/harness/model-call/call.d.ts +2 -2
- package/dist/src/harness/model-call/request.d.ts +2 -2
- package/dist/src/harness/session-machine/transitions.d.ts +3 -1
- package/dist/src/harness/session-machine/transitions.js +1 -1
- package/dist/src/harness/step/context.d.ts +3 -0
- package/dist/src/harness/step/context.js +1 -1
- package/dist/src/harness/step/intake.d.ts +5 -2
- package/dist/src/harness/step/intake.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/harness/turn-tag-state.d.ts +7 -26
- package/dist/src/harness/turn-tag-state.js +1 -1
- package/dist/src/harness/types.d.ts +10 -25
- package/dist/src/internal/application/build-profile.d.ts +3 -0
- package/dist/src/internal/application/build-profile.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +2 -2
- package/dist/src/internal/application/dev-environment.d.ts +13 -0
- package/dist/src/internal/application/dev-environment.js +1 -1
- package/dist/src/internal/application/stamped-package-version.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-module-build-options.d.ts +7 -0
- package/dist/src/internal/authored-module-build-options.js +1 -0
- package/dist/src/internal/authored-module-graph.d.ts +13 -0
- package/dist/src/internal/authored-module-graph.js +1 -0
- package/dist/src/internal/authored-module-loader.d.ts +22 -1
- package/dist/src/internal/authored-module-loader.js +1 -3
- package/dist/src/internal/authored-module.d.ts +7 -0
- package/dist/src/internal/authored-module.js +1 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/bundler/nitro-rolldown.d.ts +5 -1
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
- package/dist/src/internal/development-programmatic-source-loader.d.ts +1 -0
- package/dist/src/internal/development-programmatic-source-loader.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/build-deployment-id.d.ts +8 -0
- package/dist/src/internal/nitro/host/build-deployment-id.js +1 -0
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-server-state.js +1 -1
- package/dist/src/internal/nitro/host/skill-server-assets.js +1 -1
- package/dist/src/internal/nitro/host/stage-build-deployment-id.d.ts +2 -0
- package/dist/src/internal/nitro/host/stage-build-deployment-id.js +1 -0
- package/dist/src/internal/nitro/host/start-production-server.d.ts +1 -0
- package/dist/src/internal/nitro/host/start-production-server.js +3 -3
- package/dist/src/internal/nitro/routes/schedule-task.d.ts +3 -0
- package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
- package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
- package/dist/src/internal/programmatic-source-loader.js +1 -1
- package/dist/src/internal/schedules/disabled.d.ts +2 -0
- package/dist/src/internal/schedules/disabled.js +1 -0
- package/dist/src/internal/workflow/development-world-server.js +1 -1
- package/dist/src/internal/workflow/local-world-data-directory.d.ts +2 -1
- package/dist/src/internal/workflow/local-world-data-directory.js +1 -1
- package/dist/src/internal/workflow-bundle/builder.js +1 -1
- package/dist/src/protocol/message.d.ts +27 -1
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +13 -0
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
- package/dist/src/public/channels/chat-sdk/fetch-message.d.ts +10 -0
- package/dist/src/public/channels/chat-sdk/fetch-message.js +1 -0
- package/dist/src/public/channels/chat-sdk/index.d.ts +1 -1
- package/dist/src/public/channels/chat-sdk/reply-context.d.ts +15 -0
- package/dist/src/public/channels/chat-sdk/reply-context.js +2 -0
- package/dist/src/public/channels/discord/discordChannel.d.ts +3 -0
- package/dist/src/public/channels/discord/discordChannel.js +1 -1
- package/dist/src/public/channels/github/dispatch.js +1 -1
- package/dist/src/public/channels/github/githubChannel.d.ts +3 -0
- package/dist/src/public/channels/imessage-tapbacks.d.ts +74 -0
- package/dist/src/public/channels/imessage-tapbacks.js +1 -0
- package/dist/src/public/channels/index.d.ts +2 -1
- package/dist/src/public/channels/index.js +1 -1
- package/dist/src/public/channels/linear/linearChannel.d.ts +3 -0
- package/dist/src/public/channels/linear/linearChannel.js +1 -1
- package/dist/src/public/channels/linq/inboundContent.d.ts +7 -0
- package/dist/src/public/channels/linq/inboundContent.js +1 -1
- package/dist/src/public/channels/linq/index.d.ts +1 -0
- package/dist/src/public/channels/linq/index.js +1 -1
- package/dist/src/public/channels/linq/linqChannel.d.ts +17 -1
- package/dist/src/public/channels/linq/linqChannel.js +1 -1
- package/dist/src/public/channels/photon/inboundContent.d.ts +7 -0
- package/dist/src/public/channels/photon/inboundContent.js +2 -1
- package/dist/src/public/channels/photon/index.d.ts +1 -0
- package/dist/src/public/channels/photon/index.js +1 -1
- package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +17 -1
- package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +6 -0
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/model-context.d.ts +7 -0
- package/dist/src/public/channels/slack/model-context.js +1 -1
- package/dist/src/public/channels/slack/reply-delivery.d.ts +5 -0
- package/dist/src/public/channels/slack/reply-delivery.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +17 -3
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +3 -0
- package/dist/src/public/channels/teams/teamsChannel.js +1 -1
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +3 -0
- package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
- package/dist/src/public/definitions/agent.d.ts +1 -1
- package/dist/src/public/definitions/channel.d.ts +2 -2
- package/dist/src/public/definitions/channel.js +1 -1
- package/dist/src/public/definitions/hook.d.ts +1 -0
- package/dist/src/public/index.d.ts +1 -1
- package/dist/src/public/tools/index.d.ts +1 -1
- package/dist/src/runtime/agent/resolve-model.d.ts +4 -0
- package/dist/src/runtime/agent/resolve-model.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
- package/dist/src/runtime/types.d.ts +3 -2
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +31 -42
- package/dist/src/shared/session-history.d.ts +22 -0
- package/dist/src/shared/session-history.js +1 -0
- package/dist/src/subagents/tool.d.ts +1 -3
- package/dist/src/subagents/tool.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/provided/ask-question-workflow.js +1 -1
- package/dist/src/tools/provided/sleep-workflow.js +1 -1
- package/dist/src/tools/workflow-definition.d.ts +14 -1
- package/dist/src/tracing/eve/conversation-context.d.ts +4 -1
- package/dist/src/tracing/eve/conversation-context.js +1 -1
- package/dist/src/tracing/eve/invoke-tool-span.js +1 -1
- package/dist/src/tracing/eve/operation-input.d.ts +0 -5
- package/dist/src/tracing/eve/operation-input.js +1 -1
- package/dist/src/tracing/eve/otel-registration.js +1 -1
- package/dist/src/tracing/eve/session.d.ts +3 -2
- package/dist/src/tracing/eve/session.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +86 -65
- package/docs/channels/chat-sdk.mdx +6 -1
- package/docs/channels/custom.mdx +38 -6
- package/docs/channels/eve.mdx +46 -0
- package/docs/channels/linq.mdx +51 -0
- package/docs/channels/photon.mdx +64 -0
- package/docs/channels/slack.mdx +4 -2
- package/docs/concepts/built-in-tools.md +1 -1
- package/docs/concepts/execution-model-and-durability.mdx +12 -5
- package/docs/concepts/sessions-runs-and-streaming.md +9 -8
- package/docs/connections/overview.mdx +1 -1
- package/docs/experimental/dynamic-schedules.mdx +186 -0
- package/docs/experimental/meta.json +4 -0
- package/docs/guides/client/streaming.mdx +1 -0
- package/docs/guides/deployment/self-hosting.md +3 -0
- package/docs/guides/hooks.md +21 -1
- package/docs/memory/overview.mdx +2 -1
- package/docs/patterns/dynamic-scheduling.md +3 -1
- package/docs/reference/cli.md +14 -7
- package/docs/schedules.mdx +2 -0
- package/docs/subagents/index.mdx +2 -0
- package/docs/tools/overview.mdx +2 -1
- package/docs/tools/tasks-upgrade.md +12 -7
- package/docs/tools/tasks.md +10 -6
- package/docs/tools/workflows.mdx +36 -5
- package/docs/tutorial/connect-a-warehouse.mdx +1 -1
- package/docs/tutorial/run-analysis.mdx +1 -1
- package/package.json +1 -1
- package/dist/src/execution/run-session-limits.d.ts +0 -12
- package/dist/src/execution/run-session-limits.js +0 -1
- package/dist/src/harness/session-usage-limits.d.ts +0 -49
- package/dist/src/harness/session-usage-limits.js +0 -1
- package/dist/src/subagents/token-budget.d.ts +0 -15
- package/dist/src/subagents/token-budget.js +0 -1
package/docs/reference/cli.md
CHANGED
|
@@ -224,7 +224,7 @@ Use a profile file to establish a repeatable baseline before changing the build
|
|
|
224
224
|
eve build --profile .eve/build-profiles/baseline.json
|
|
225
225
|
```
|
|
226
226
|
|
|
227
|
-
The report is attempted only after a successful build. It records total elapsed time, completed phase timings, and final regular-file totals for file count, raw bytes, and the sum of each file compressed with gzip. For Vercel output it also includes a subtotal for every real `.func` directory, so app and flow bundles can be compared separately. The profile path resolves from the app root and should be outside the published output directory; profile collection does not add a file to the deployment. If collection or writing fails, eve emits a warning but keeps the completed build successful.
|
|
227
|
+
The report is attempted only after a successful build. It records total elapsed time, completed phase timings, and final regular-file totals for file count, raw bytes, and the sum of each file compressed with gzip. For Vercel output it also includes a subtotal for every real `.func` directory, so app and flow bundles can be compared separately. For self-hosted output it includes `deploymentId`, the content-derived build identity eve passes to the Workflow World as `WORKFLOW_DEPLOYMENT_ID` when that variable isn't already set. The profile path resolves from the app root and should be outside the published output directory; profile collection does not add a file to the deployment. If collection or writing fails, eve emits a warning but keeps the completed build successful.
|
|
228
228
|
|
|
229
229
|
Production builds do not write through the stable compiler, host, Nitro, or Workflow files owned by `eve dev`, so builds can run while a local dev server is active. A failed build leaves the last successful `.output/` and agent summary untouched. Concurrent completed builds serialize only the final publication window.
|
|
230
230
|
|
|
@@ -241,15 +241,20 @@ Useful stable artifacts written by inspection and development flows under `.eve/
|
|
|
241
241
|
## `eve start`
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
|
-
eve start [--host <host>] [--port <port>]
|
|
244
|
+
eve start [--host <host>] [--port <port>] [--no-schedules]
|
|
245
245
|
```
|
|
246
246
|
|
|
247
|
-
| Flag
|
|
248
|
-
|
|
|
249
|
-
| `--host <host>`
|
|
250
|
-
| `--port <port>`
|
|
247
|
+
| Flag | Type | Default | Description |
|
|
248
|
+
| ---------------- | ------ | ------------------ | --------------------------------------------- |
|
|
249
|
+
| `--host <host>` | string | all interfaces | Host interface to bind |
|
|
250
|
+
| `--port <port>` | number | `$PORT`, then 3000 | Port to listen on |
|
|
251
|
+
| `--no-schedules` | flag | schedules on | Start without running authored cron schedules |
|
|
251
252
|
|
|
252
|
-
Serves the previously built output. Prints the listening URL.
|
|
253
|
+
Serves the previously built output. Prints the listening URL, and a `schedules disabled` line when `--no-schedules` or `EVE_SCHEDULES_DISABLED` turns schedules off. HTTP requests and workflow jobs continue to run.
|
|
254
|
+
|
|
255
|
+
Set `EVE_SCHEDULES_DISABLED=1` or `true` (case-insensitive) to disable authored cron schedules at runtime, including when you run `node .output/server/index.mjs` directly. Unset, empty, and other values leave schedules enabled. `--no-schedules` sets the variable to `1` only for the spawned server; omitting the flag preserves any value you already set. The same build can run with schedules enabled or disabled.
|
|
256
|
+
|
|
257
|
+
Use this setting when [scaling self-hosted replicas](../guides/deployment/self-hosting#run-schedules). It also disables authored cron dispatch on Vercel if set there, but does not affect explicit schedule dispatch in `eve dev`.
|
|
253
258
|
|
|
254
259
|
For self-hosted deployments, copy the app source, `.output/`, and installed dependencies together. The deployment directory can differ from the build directory. Preserve the relative layout of any workspace packages used by the app; startup resolves sandbox prewarm modules from the deployed source.
|
|
255
260
|
|
|
@@ -449,6 +454,8 @@ eve eval [evalId...] [--url <url>] [options]
|
|
|
449
454
|
|
|
450
455
|
Runs all discovered evals when no eval ids are given; ids match exactly or by directory prefix (`eve eval weather` runs everything under `evals/weather/`). Exits `0` when every eval passed its checks, `1` when any eval failed (a failed check, an execution error, or a `--strict` threshold miss), `2` on configuration errors.
|
|
451
456
|
|
|
457
|
+
Without `--url`, `eve eval` starts its own local server on a free port with state under `.eve/eval-servers/<run id>/`, removed when the run ends. It runs beside an `eve dev` session for the same agent without attaching to it or changing it.
|
|
458
|
+
|
|
452
459
|
| Flag | Type | Default | Description |
|
|
453
460
|
| ------------------------ | ------ | ------- | ------------------------------------------------------------- |
|
|
454
461
|
| `--url <url>` | string | none | Remote agent URL (skip local host startup) |
|
package/docs/schedules.mdx
CHANGED
|
@@ -7,6 +7,8 @@ A schedule starts the agent on its own clock instead of waiting for an inbound m
|
|
|
7
7
|
|
|
8
8
|
The name comes from the path under `schedules/` (`agent/schedules/billing/sweep.ts` → `"billing/sweep"`), and nested directories are fine. An extension mount prefixes that name (`extension/schedules/sweep.ts` mounted as `crm` → `"crm__sweep"`) without changing its cron expression.
|
|
9
9
|
|
|
10
|
+
For creator-owned schedules created and managed at runtime, see [Experimental dynamic schedules](./experimental/dynamic-schedules). `defineSchedule` remains the fixed, code-authored cron API.
|
|
11
|
+
|
|
10
12
|
## `defineSchedule`
|
|
11
13
|
|
|
12
14
|
Every schedule provides a `cron` and exactly one of `markdown` or `run`:
|
package/docs/subagents/index.mdx
CHANGED
|
@@ -34,6 +34,8 @@ The copy uses the root's instructions, connections, auth, and sandbox. It receiv
|
|
|
34
34
|
|
|
35
35
|
The parent transfers data to the child through the `message` input it gives the subagent. Do not include sensitive data in a subagent request unless that child and its inherited tools, connections, sandbox, and telemetry path are appropriate for that data.
|
|
36
36
|
|
|
37
|
+
An authored workflow can open the same root-copy target through `ctx.agent("agent")`. To keep the copied configuration but use another model for that child session, pass a [model override to `ctx.agent`](./tools/workflows#delegate-work-ctxagent). The model-facing built-in tool does not accept a model choice.
|
|
38
|
+
|
|
37
39
|
To prevent the root session from delegating to a fresh copy of itself, set `tool: false` on the root agent:
|
|
38
40
|
|
|
39
41
|
```ts title="agent/agent.ts"
|
package/docs/tools/overview.mdx
CHANGED
|
@@ -174,7 +174,8 @@ export default defineTool({
|
|
|
174
174
|
});
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
eve publishes
|
|
177
|
+
eve publishes earlier yields as `action.partial` stream events. When the durable
|
|
178
|
+
writer is busy, eve may keep only the newest adjacent snapshot for a call. The
|
|
178
179
|
snapshot is visible to channels, hooks, and clients but never enters model
|
|
179
180
|
history or `toModelOutput`; only the final yield does. Treat snapshots as
|
|
180
181
|
last-write-wins by tool call id, not append-only progress. The durable runtime
|
|
@@ -158,15 +158,18 @@ reports each wait with the new `turn.waiting` event, which carries the open turn
|
|
|
158
158
|
subagent's question, emitted `turn.completed` and `session.waiting` in the middle of the turn.
|
|
159
159
|
It now emits `input.requested` or `authorization.required`, then `turn.waiting`, and the turn
|
|
160
160
|
resumes under the same `turnId` after the answer. The session you answer on emits
|
|
161
|
-
`input.resolved` for every question it routes an answer to. A tool approval the
|
|
162
|
-
requests
|
|
161
|
+
`input.resolved` for every question it routes an answer to. A sign-in or tool approval the
|
|
162
|
+
turn itself requests holds the turn the same way, with `turn.waiting` on `"input"`.
|
|
163
163
|
- **`turn.completed` comes only when the turn really ends,** and `session.waiting` always means
|
|
164
164
|
the turn has ended.
|
|
165
165
|
|
|
166
166
|
The TypeScript client's `send(...).result()` reads past `turn.waiting` and returns the final reply
|
|
167
|
-
of a held turn, not the text written before the wait.
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
of a held turn, not the text written before the wait. At `turn.waiting`, an unanswered input
|
|
168
|
+
request (a question, approval, or `session-limit` prompt) makes `result()` return
|
|
169
|
+
`status: "waiting"`; use `respond()` to answer it and continue reading the same turn.
|
|
170
|
+
A sign-in keeps the response attached while its authorization callback is pending. Render the
|
|
171
|
+
sign-in prompt from the live `authorization.required` event rather than waiting for `result()`.
|
|
172
|
+
A custom client that ends a response at `turn.completed` or
|
|
170
173
|
`session.waiting` mid-turn, or that shows the first completed message as the reply, should follow
|
|
171
174
|
the same rule. See [Aggregate a turn](/docs/guides/client/streaming#aggregate-a-turn).
|
|
172
175
|
|
|
@@ -197,5 +200,7 @@ Two things differ from a remote agent on the caller's own release:
|
|
|
197
200
|
|
|
198
201
|
Each protocol-1 create logs `serving a remote agent protocol 1 caller` with the caller's origin.
|
|
199
202
|
|
|
200
|
-
Upgrade a caller after every remote agent it calls. A caller on this release
|
|
201
|
-
|
|
203
|
+
Upgrade a caller after every remote agent it calls. A caller on this release accepts a protocol-1
|
|
204
|
+
remote agent's results and failures, but that remote agent's approvals and sign-in requests don't
|
|
205
|
+
reach the caller. Any other protocol mismatch fails the call at start, with an error that names
|
|
206
|
+
both versions.
|
package/docs/tools/tasks.md
CHANGED
|
@@ -232,9 +232,12 @@ continues once the person answers or signs in.
|
|
|
232
232
|
|
|
233
233
|
In every session, `turn.completed` comes only when the turn really ends. The TypeScript client's
|
|
234
234
|
`send(...).result()` and the MCP channel's `agent_get` read past `turn.waiting` and report the
|
|
235
|
-
final reply rather than the text written before the wait.
|
|
236
|
-
|
|
237
|
-
`status: "waiting"`; `respond()`
|
|
235
|
+
final reply rather than the text written before the wait. At `turn.waiting`, an unanswered input
|
|
236
|
+
request (a question, approval, or `session-limit` prompt) makes `result()` return
|
|
237
|
+
`status: "waiting"`; use `respond()` to answer it and continue reading the same turn.
|
|
238
|
+
A sign-in keeps the response attached while its authorization callback is pending. Render the
|
|
239
|
+
sign-in prompt from the live `authorization.required` event rather than waiting for `result()`.
|
|
240
|
+
See [Aggregate a turn](/docs/guides/client/streaming#aggregate-a-turn).
|
|
238
241
|
Channels such as [Slack](/docs/channels/slack) post a root session's text before the wait as an
|
|
239
242
|
ordinary reply, then post the reply after the results as another message. Slack also shows each
|
|
240
243
|
turn's tasks in a live [task card](/docs/channels/slack#task-card).
|
|
@@ -305,9 +308,10 @@ task's start and end instead. See
|
|
|
305
308
|
and enforce per-person access inside the tool.
|
|
306
309
|
- **Working tasks.** A session runs at most 32 working tasks at once. An idle resumable task doesn't
|
|
307
310
|
count, and a call that makes it work again does.
|
|
308
|
-
- **No time limits.** Tasks have no timeout of their own
|
|
309
|
-
|
|
310
|
-
|
|
311
|
+
- **No time limits.** Tasks have no timeout of their own, and the session timeout does not bound
|
|
312
|
+
them. A turn held open while its tasks work keeps the session open, and
|
|
313
|
+
`limits.sessionTimeoutMs` (30 idle days by default) counts from when that turn settles. A body
|
|
314
|
+
that needs a deadline races `sleep` against its work.
|
|
311
315
|
|
|
312
316
|
## Upgrade from background tasks
|
|
313
317
|
|
package/docs/tools/workflows.mdx
CHANGED
|
@@ -502,9 +502,9 @@ and can only show the model's input. Both compose: `approval` before the run, `c
|
|
|
502
502
|
|
|
503
503
|
## Delegate work: `ctx.agent`
|
|
504
504
|
|
|
505
|
-
`ctx.agent(name)` returns a session with an agent, shaped like the TypeScript client's
|
|
506
|
-
session opens on its first `send`, and each `response.result()` resolves when that
|
|
507
|
-
ends:
|
|
505
|
+
`ctx.agent(name, options?)` returns a session with an agent, shaped like the TypeScript client's
|
|
506
|
+
session. The session opens on its first `send`, and each `response.result()` resolves when that
|
|
507
|
+
message's turn ends:
|
|
508
508
|
|
|
509
509
|
```ts
|
|
510
510
|
import { z } from "zod";
|
|
@@ -517,6 +517,37 @@ const response = await reviewer.send("Review the deployment plan for security ri
|
|
|
517
517
|
const { data, message, status } = await response.result();
|
|
518
518
|
```
|
|
519
519
|
|
|
520
|
+
Set `model` when the workflow should run a local child with a different AI Gateway model. The
|
|
521
|
+
selection belongs to the returned session, so every message sent through that handle uses it:
|
|
522
|
+
|
|
523
|
+
```ts
|
|
524
|
+
const reviewer = ctx.agent("agent", {
|
|
525
|
+
model: "anthropic/claude-opus-5.5",
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
const response = await reviewer.send("Review the migration plan.", {
|
|
529
|
+
signal: ctx.abortSignal,
|
|
530
|
+
});
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
The override changes only the model. The child keeps the target agent's instructions, tools, skills,
|
|
534
|
+
connections, sandbox behavior, limits, reasoning, and explicit compaction model. Pass a selection
|
|
535
|
+
object to override model-specific settings too:
|
|
536
|
+
|
|
537
|
+
```ts
|
|
538
|
+
const reviewer = ctx.agent("agent", {
|
|
539
|
+
model: {
|
|
540
|
+
model: "anthropic/claude-opus-5.5",
|
|
541
|
+
modelContextWindowTokens: 200_000,
|
|
542
|
+
reasoning: "high",
|
|
543
|
+
},
|
|
544
|
+
});
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
The selection must contain an AI Gateway model id. A live AI SDK `LanguageModel` cannot cross the
|
|
548
|
+
durable workflow boundary. A remote agent rejects the option because its deployment owns its model
|
|
549
|
+
configuration.
|
|
550
|
+
|
|
520
551
|
The name is an available agent target. On the root agent, `"agent"` starts a copy of the root agent.
|
|
521
552
|
A declared subagent uses its path-derived name and remains callable when hidden with `tool: false`
|
|
522
553
|
or `disableTool()`. Delegated root copies and declared subagent contexts do not expose the built-in
|
|
@@ -544,8 +575,8 @@ client's `MessageResult` fields, plus `error` when the turn failed:
|
|
|
544
575
|
| `status` | `"waiting"` when the session waits for its next message, `"completed"` when the session ended with the turn, or `"failed"` when the turn failed. A cancelled turn is `"waiting"` with neither `data` nor `message`. |
|
|
545
576
|
| `error` | `{ message }` with the reason the turn failed, present only when `status` is `"failed"`. |
|
|
546
577
|
|
|
547
|
-
Every `ctx.agent(name)` call returns a new session that only the workflow run can address.
|
|
548
|
-
does not see it; it sees what the tool returns. A local child runs as the caller's principal with the
|
|
578
|
+
Every `ctx.agent(name, options?)` call returns a new session that only the workflow run can address.
|
|
579
|
+
The model does not see it; it sees what the tool returns. A local child runs as the caller's principal with the
|
|
549
580
|
caller's capabilities. A remote child does not inherit the caller's session principal by default;
|
|
550
581
|
the receiving deployment determines its identity from the outbound request. To forward the caller's
|
|
551
582
|
identity, set `forwardPrincipal: true` on the remote agent and configure the receiver's
|
|
@@ -72,7 +72,7 @@ If the user has not authorized the connector, the turn parks and the channel sho
|
|
|
72
72
|
|
|
73
73
|
## The token never reaches the model
|
|
74
74
|
|
|
75
|
-
Right before each request to the MCP server, eve resolves the bearer and sends it as `Authorization: Bearer <token>`. The model sees tool names, descriptions, and results. The credential stays in the app runtime.
|
|
75
|
+
Right before each request to the MCP server, eve resolves the user's bearer and, once the user has authorized, sends it as `Authorization: Bearer <token>`. The model sees tool names, descriptions, and results. The credential stays in the app runtime.
|
|
76
76
|
|
|
77
77
|
Gate the connection behind approval (`approval: once()`) or narrow which tools the model sees (`tools.allow`) when needed. See [MCP connections](../connections/mcp).
|
|
78
78
|
|
|
@@ -217,7 +217,7 @@ This example caps charts at 1 MiB because tool outputs are persisted with sessio
|
|
|
217
217
|
|
|
218
218
|
## Secrets stay out of the sandbox
|
|
219
219
|
|
|
220
|
-
The sandbox
|
|
220
|
+
The sandbox doesn't inherit your app's `process.env`. Secrets you pass explicitly through an environment or per-call `env` option are available inside the sandbox. The `run_sql` tool and sample database run in your app. You pass only the query results to the chart tool; the sandbox does not need database credentials.
|
|
221
221
|
|
|
222
222
|
The local backend runs the sandbox on your laptop during `eve dev`; on Vercel it runs on Vercel Sandbox. Lifecycle, backends, and network policy are in [Sandbox](../sandbox).
|
|
223
223
|
|
package/package.json
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { AgentLimitsDefinition } from "#shared/agent-definition.js";
|
|
2
|
-
type UsageLimit = AgentLimitsDefinition["maxInputTokensPerSession"] | AgentLimitsDefinition["maxOutputTokensPerSession"] | AgentLimitsDefinition["maxTokenCostUsdPerSession"];
|
|
3
|
-
/**
|
|
4
|
-
* Resolves an authored usage cap against an inherited parent cap. `false`
|
|
5
|
-
* only means "uncapped" before inheritance; an actual inherited cap still
|
|
6
|
-
* bounds the child.
|
|
7
|
-
*/
|
|
8
|
-
export declare function resolveInheritedTokenLimit(input: {
|
|
9
|
-
readonly configured: UsageLimit | undefined;
|
|
10
|
-
readonly inherited: UsageLimit | undefined;
|
|
11
|
-
}): UsageLimit | undefined;
|
|
12
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function resolveInheritedTokenLimit(e){return e.inherited===void 0?e.configured:e.inherited===!1?e.configured??!1:e.configured===void 0||e.configured===!1?e.inherited:Math.min(e.configured,e.inherited)}export{resolveInheritedTokenLimit};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
interface SessionUsageAmounts {
|
|
2
|
-
readonly costUsd?: number;
|
|
3
|
-
readonly inputTokens: number;
|
|
4
|
-
readonly outputTokens: number;
|
|
5
|
-
}
|
|
6
|
-
export interface SessionRuntimeUsageLimits {
|
|
7
|
-
readonly costUsd?: number;
|
|
8
|
-
readonly inputTokens?: number;
|
|
9
|
-
readonly outputTokens?: number;
|
|
10
|
-
}
|
|
11
|
-
export type SessionUsageLimitViolation = {
|
|
12
|
-
readonly kind: "input";
|
|
13
|
-
readonly limit: number;
|
|
14
|
-
readonly usedTokens: number;
|
|
15
|
-
} | {
|
|
16
|
-
readonly kind: "output";
|
|
17
|
-
readonly limit: number;
|
|
18
|
-
readonly usedTokens: number;
|
|
19
|
-
} | {
|
|
20
|
-
readonly kind: "token-cost";
|
|
21
|
-
readonly limitUsd: number;
|
|
22
|
-
readonly usedCostUsd: number;
|
|
23
|
-
};
|
|
24
|
-
/** Resolves per-axis lifetime ceilings, preferring a previously granted ceiling. */
|
|
25
|
-
export declare function resolveRuntimeUsageLimits(input: {
|
|
26
|
-
readonly configured: SessionRuntimeUsageLimits;
|
|
27
|
-
readonly stored?: SessionRuntimeUsageLimits;
|
|
28
|
-
}): SessionRuntimeUsageLimits;
|
|
29
|
-
/** Grants one full configured window from the current lifetime usage. */
|
|
30
|
-
export declare function grantRuntimeUsageLimits(input: {
|
|
31
|
-
readonly configured: SessionRuntimeUsageLimits;
|
|
32
|
-
readonly usage: SessionUsageAmounts;
|
|
33
|
-
}): SessionRuntimeUsageLimits;
|
|
34
|
-
/** Returns the unspent quota for each capped axis. */
|
|
35
|
-
export declare function remainingRuntimeUsageQuota(input: {
|
|
36
|
-
readonly runtime: SessionRuntimeUsageLimits;
|
|
37
|
-
readonly usage: SessionUsageAmounts;
|
|
38
|
-
}): {
|
|
39
|
-
readonly costUsd: number | false;
|
|
40
|
-
readonly inputTokens: number | false;
|
|
41
|
-
readonly outputTokens: number | false;
|
|
42
|
-
};
|
|
43
|
-
/** Returns the first exhausted axis: input tokens, output tokens, then token cost. */
|
|
44
|
-
export declare function findRuntimeUsageLimitViolation(input: {
|
|
45
|
-
readonly configured: SessionRuntimeUsageLimits;
|
|
46
|
-
readonly runtime: SessionRuntimeUsageLimits;
|
|
47
|
-
readonly usage: SessionUsageAmounts;
|
|
48
|
-
}): SessionUsageLimitViolation | null;
|
|
49
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function resolveRuntimeUsageLimits(e){let t={},n=e.stored?.inputTokens??e.configured.inputTokens;n!==void 0&&(t.inputTokens=n);let r=e.stored?.outputTokens??e.configured.outputTokens;r!==void 0&&(t.outputTokens=r);let i=e.stored?.costUsd??e.configured.costUsd;return i!==void 0&&(t.costUsd=i),t}function grantRuntimeUsageLimits(e){let t={};return e.configured.inputTokens!==void 0&&(t.inputTokens=e.usage.inputTokens+e.configured.inputTokens),e.configured.outputTokens!==void 0&&(t.outputTokens=e.usage.outputTokens+e.configured.outputTokens),e.configured.costUsd!==void 0&&(t.costUsd=(e.usage.costUsd??0)+e.configured.costUsd),t}function remainingRuntimeUsageQuota(e){return{costUsd:e.runtime.costUsd!==void 0&&Math.max(0,e.runtime.costUsd-(e.usage.costUsd??0)),inputTokens:e.runtime.inputTokens!==void 0&&Math.max(0,e.runtime.inputTokens-e.usage.inputTokens),outputTokens:e.runtime.outputTokens!==void 0&&Math.max(0,e.runtime.outputTokens-e.usage.outputTokens)}}function findRuntimeUsageLimitViolation(e){return e.runtime.inputTokens!==void 0&&e.configured.inputTokens!==void 0&&e.usage.inputTokens>=e.runtime.inputTokens?{kind:`input`,limit:e.configured.inputTokens,usedTokens:e.usage.inputTokens}:e.runtime.outputTokens!==void 0&&e.configured.outputTokens!==void 0&&e.usage.outputTokens>=e.runtime.outputTokens?{kind:`output`,limit:e.configured.outputTokens,usedTokens:e.usage.outputTokens}:e.runtime.costUsd!==void 0&&e.configured.costUsd!==void 0&&(e.usage.costUsd??0)>=e.runtime.costUsd?{kind:`token-cost`,limitUsd:e.configured.costUsd,usedCostUsd:e.usage.costUsd??0}:null}export{findRuntimeUsageLimitViolation,grantRuntimeUsageLimits,remainingRuntimeUsageQuota,resolveRuntimeUsageLimits};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { RunSessionLimits } from "#channel/types.js";
|
|
2
|
-
import type { HarnessSession } from "#harness/types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Computes the session token limits a delegated child inherits from its
|
|
5
|
-
* parent: the parent's remaining runtime-limit quota, per axis, split evenly
|
|
6
|
-
* across the `fanoutSize` children started together. `false` marks an axis
|
|
7
|
-
* with no inherited cap.
|
|
8
|
-
*
|
|
9
|
-
* The split bounds children started together by the parent's remainder as a
|
|
10
|
-
* group, not each by the whole of it. Children started later see the quota
|
|
11
|
-
* net of the spend earlier children reported, which counts in the parent's
|
|
12
|
-
* session totals. A granted continuation bumps the parent's runtime limit, so
|
|
13
|
-
* children started after a grant draw from the fresh window.
|
|
14
|
-
*/
|
|
15
|
-
export declare function resolveRemainingSessionTokenLimits(session: Pick<HarnessSession, "limits" | "state">, fanoutSize: number): RunSessionLimits;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getSessionRemainingUsageQuota}from"#harness/turn-tag-state.js";function resolveRemainingSessionTokenLimits(e,t){let n=Math.max(1,t),r=getSessionRemainingUsageQuota(e),i={maxInputTokensPerSession:grantTokenShare(r.inputTokens,n),maxOutputTokensPerSession:grantTokenShare(r.outputTokens,n)};return r.costUsd!==!1&&(i.maxTokenCostUsdPerSession=r.costUsd/n),i}function grantTokenShare(e,t){return e!==!1&&Math.floor(e/t)}export{resolveRemainingSessionTokenLimits};
|