eve 0.72.1 → 0.74.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 +44 -0
- package/dist/src/_virtual/_rolldown/runtime.js +1 -1
- package/dist/src/channel/agent-description.d.ts +49 -9
- package/dist/src/channel/agent-description.js +1 -1
- package/dist/src/channel/invoke-tool.d.ts +26 -4
- package/dist/src/channel/invoke-tool.js +1 -1
- package/dist/src/channel/principal-identity.d.ts +9 -0
- package/dist/src/channel/principal-identity.js +1 -0
- package/dist/src/channel/prompt-queue.d.ts +31 -0
- package/dist/src/channel/prompt-queue.js +1 -0
- package/dist/src/channel/routes.d.ts +19 -4
- package/dist/src/channel/schedule.d.ts +20 -6
- package/dist/src/channel/schedule.js +1 -1
- package/dist/src/channel/skill-files.d.ts +114 -0
- package/dist/src/channel/skill-files.js +1 -0
- package/dist/src/channel/types.d.ts +4 -0
- package/dist/src/chunks/{use-eve-agent-C1GYGCtb.js → use-eve-agent-DOOXadF0.js} +13 -3
- package/dist/src/chunks/{use-eve-agent-hZJ7CB8t.js → use-eve-agent-mP0M7SrL.js} +13 -3
- package/dist/src/cli/commands/agent-instructions.js +1 -1
- package/dist/src/cli/commands/extension-init.js +1 -1
- package/dist/src/cli/commands/init-agent-workspace.js +1 -1
- package/dist/src/cli/commands/init-project.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/dev/diagnostic-dump.js +1 -1
- package/dist/src/cli/dev/tui/blocks.d.ts +6 -0
- package/dist/src/cli/dev/tui/blocks.js +2 -2
- package/dist/src/cli/dev/tui/markdown.d.ts +5 -0
- package/dist/src/cli/dev/tui/markdown.js +2 -2
- package/dist/src/cli/dev/tui/stream-format.js +2 -2
- package/dist/src/cli/dev/tui/transcript-parts.d.ts +4 -1
- package/dist/src/cli/dev/tui/transcript-parts.js +2 -2
- package/dist/src/cli/dev/tui/transcript.js +1 -1
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +9 -8
- package/dist/src/compiled/@eve/catalog/index.js +1 -1
- package/dist/src/compiled/@modelcontextprotocol/server/index.d.ts +68 -7
- package/dist/src/compiled/@vercel/schedules/index.d.ts +158 -0
- package/dist/src/compiled/@vercel/schedules/index.js +17 -0
- package/dist/src/compiled/@workflow/core/capabilities.d.ts +33 -6
- package/dist/src/compiled/@workflow/core/flushable-stream.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.d.ts +1 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +6 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/serialization/codec.d.ts +8 -8
- package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +13 -5
- package/dist/src/compiled/@workflow/core/serialization.d.ts +9 -9
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/symbols.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow/index.d.ts +1 -0
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +11 -0
- package/dist/src/compiled/@workflow/world/hooks.d.ts +2 -0
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +6 -0
- package/dist/src/compiled/@workflow/world-local/index.js +3 -3
- package/dist/src/compiled/@workflow/world-vercel/index.js +13 -13
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-VaTKT4K8.js → attribute-changes-CSqvJx6j.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/{dist-B7NC1c9-.js → dist-DmXynLVH.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-T5NnW-0k.js +3 -0
- package/dist/src/compiled/_chunks/workflow/helpers-BXCuoPUb.js +1 -0
- package/dist/src/compiled/_chunks/workflow/private-Dlf90Zvn.js +1 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-CvENCrxc.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{run-DYKeqbob.js → run-8pLWuR2U.js} +6 -6
- package/dist/src/compiled/_chunks/workflow/serialization-vDozzDhh.js +16 -0
- package/dist/src/compiled/_chunks/workflow/sleep-BMqbraZM.js +1 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-A344L2AG.js +1 -0
- package/dist/src/compiled/shadcn-registry/index.js +3408 -35163
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/compile-agent.js +1 -1
- package/dist/src/compiler/development-extensions.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +18 -18
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/load-binding-namespace.d.ts +5 -0
- package/dist/src/compiler/load-binding-namespace.js +1 -1
- package/dist/src/compiler/manifest.d.ts +39 -0
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/memory-wrapper-candidates.d.ts +2 -0
- package/dist/src/compiler/memory-wrapper-candidates.js +1 -0
- 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/normalize-schedule-collection.d.ts +3 -0
- package/dist/src/compiler/normalize-schedule-collection.js +1 -0
- package/dist/src/compiler/normalize-schedule.d.ts +2 -2
- package/dist/src/compiler/normalize-schedule.js +1 -1
- package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
- package/dist/src/compiler/schedule-collection-wrapper-candidates.d.ts +2 -0
- package/dist/src/compiler/schedule-collection-wrapper-candidates.js +1 -0
- package/dist/src/compiler/validate-artifact.js +1 -1
- package/dist/src/context/build-callback-context.js +1 -1
- package/dist/src/context/dynamic-resolve-context.js +1 -1
- package/dist/src/context/key-names.d.ts +1 -0
- package/dist/src/context/key-names.js +1 -1
- package/dist/src/context/keys.d.ts +2 -0
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/providers/session.js +1 -1
- package/dist/src/context/schedule-collection-tools.d.ts +9 -0
- package/dist/src/context/schedule-collection-tools.js +1 -0
- package/dist/src/context/session-context.d.ts +4 -1
- package/dist/src/context/session-schedule.d.ts +9 -0
- package/dist/src/context/session-schedule.js +1 -0
- package/dist/src/context/turn-principals.d.ts +12 -0
- package/dist/src/context/turn-principals.js +1 -0
- package/dist/src/dynamic/definition.d.ts +1 -0
- package/dist/src/evals/cli/eval-client.js +1 -1
- package/dist/src/evals/cli/eval.js +1 -1
- package/dist/src/execution/agent-sessions/context.d.ts +2 -0
- package/dist/src/execution/agent-sessions/context.js +1 -1
- package/dist/src/execution/agent-sessions/steps.js +1 -1
- package/dist/src/execution/cancelled-model-call-batch.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/invoke-tool.d.ts +6 -2
- package/dist/src/execution/invoke-tool.js +1 -1
- 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/publish-session-events.js +1 -1
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
- package/dist/src/execution/sandbox/bindings/vercel-errors.d.ts +11 -0
- package/dist/src/execution/sandbox/bindings/vercel-errors.js +2 -1
- package/dist/src/execution/sandbox/bindings/vercel-tool-sessions.d.ts +7 -0
- package/dist/src/execution/sandbox/bindings/vercel-tool-sessions.js +1 -0
- package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
- package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -1
- package/dist/src/execution/sandbox/ensure.d.ts +14 -1
- package/dist/src/execution/sandbox/ensure.js +1 -1
- package/dist/src/execution/sandbox/prewarm.js +1 -1
- package/dist/src/execution/session/active-turn.d.ts +2 -1
- package/dist/src/execution/session/active-turn.js +1 -1
- package/dist/src/execution/session/entry.d.ts +10 -1
- package/dist/src/execution/session/entry.js +1 -1
- package/dist/src/execution/session/program.d.ts +4 -0
- package/dist/src/execution/session/program.js +1 -1
- package/dist/src/execution/session/timeout-control.d.ts +1 -2
- package/dist/src/execution/session/timeout-control.js +1 -1
- package/dist/src/execution/session/turn-control.d.ts +7 -0
- package/dist/src/execution/session/turn-control.js +1 -0
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +2 -0
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/session-inbox/protocol.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/tool-session/id.d.ts +22 -0
- package/dist/src/execution/tool-session/id.js +1 -0
- package/dist/src/execution/tool-session/sandbox.d.ts +22 -0
- package/dist/src/execution/tool-session/sandbox.js +1 -0
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/connection-tools.js +1 -1
- package/dist/src/framework/sources/modules/schedule-collection-wrapper.d.ts +2 -0
- package/dist/src/framework/sources/modules/schedule-collection-wrapper.js +1 -0
- package/dist/src/framework/sources/registry.d.ts +1 -0
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/compaction/step.js +1 -1
- package/dist/src/harness/emission.d.ts +1 -0
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/hitl/approvals.d.ts +1 -1
- package/dist/src/harness/hitl/approvals.js +1 -1
- package/dist/src/harness/hitl/delivery.d.ts +9 -2
- package/dist/src/harness/hitl/delivery.js +1 -1
- package/dist/src/harness/hitl/intake.js +1 -1
- package/dist/src/harness/model-call/call.d.ts +5 -0
- package/dist/src/harness/model-call/call.js +1 -1
- package/dist/src/harness/model-call/usage.js +1 -1
- package/dist/src/harness/open-input-request.d.ts +8 -0
- package/dist/src/harness/open-input-request.js +1 -0
- package/dist/src/harness/session-machine/current.js +1 -1
- package/dist/src/harness/session-machine/transitions.d.ts +13 -0
- package/dist/src/harness/session-machine/transitions.js +1 -1
- package/dist/src/harness/stream-actions.d.ts +6 -1
- package/dist/src/harness/stream-actions.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/types.d.ts +2 -0
- package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
- package/dist/src/instrumentation/lifecycle.d.ts +1 -0
- package/dist/src/internal/application/cache-metadata.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/application/runtime-compiled-artifacts-source.js +1 -1
- package/dist/src/internal/authored-definition/connection.js +1 -1
- package/dist/src/internal/authored-definition/schedule-collection.d.ts +2 -0
- package/dist/src/internal/authored-definition/schedule-collection.js +1 -0
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module-loader.d.ts +7 -0
- package/dist/src/internal/authored-module-loader.js +2 -2
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/authored-runtime-modules.d.ts +1 -0
- package/dist/src/internal/authored-runtime-modules.js +1 -1
- package/dist/src/internal/invocation/metadata.js +1 -1
- package/dist/src/internal/mcp/forwarded-principal-header.d.ts +31 -0
- package/dist/src/internal/mcp/forwarded-principal-header.js +1 -0
- package/dist/src/internal/mcp/published-tools.d.ts +9 -2
- package/dist/src/internal/mcp/published-tools.js +1 -1
- package/dist/src/internal/mcp/skills.d.ts +57 -0
- package/dist/src/internal/mcp/skills.js +1 -0
- package/dist/src/internal/mcp/streamable-http-server.d.ts +38 -6
- package/dist/src/internal/mcp/streamable-http-server.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/development-generation.js +1 -1
- package/dist/src/internal/nitro/host/artifacts-config.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/build-extension.js +1 -1
- package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/dev-runner.js +1 -1
- package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
- package/dist/src/internal/nitro/host/local-tracing-runtime-plugin.js +1 -1
- package/dist/src/internal/nitro/host/skill-server-assets.d.ts +29 -0
- package/dist/src/internal/nitro/host/skill-server-assets.js +1 -0
- package/dist/src/internal/nitro/host/start-production-server.js +1 -1
- package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +12 -0
- package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
- package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/nitro/routes/channel-route-context.d.ts +4 -0
- package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +3 -0
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -0
- package/dist/src/internal/schedules/consumer-route.d.ts +17 -0
- package/dist/src/internal/schedules/consumer-route.js +1 -0
- package/dist/src/internal/schedules/verify-delivery.d.ts +25 -0
- package/dist/src/internal/schedules/verify-delivery.js +1 -0
- package/dist/src/internal/vercel/build-agent-workspace.js +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/internal/workflow/validate-world.js +1 -1
- package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
- package/dist/src/internal/workflow-bundle/builder-support.js +1 -1
- package/dist/src/internal/workflow-bundle/builder.js +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +2 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +2 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +2 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js +36 -0
- package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +1 -0
- package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +1 -0
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +2 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +1 -0
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +1 -0
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +1 -0
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +1 -0
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +1 -0
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +1 -0
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +1 -0
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +1 -0
- package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +1 -0
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +1 -0
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +1 -0
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +1 -0
- package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +1 -0
- package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +1 -0
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +1 -0
- package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +7 -0
- package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +1 -0
- package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +1 -0
- package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +1 -0
- package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +1 -0
- package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +1 -0
- package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +1 -0
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +1 -0
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +1 -0
- package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +2 -0
- package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +1 -0
- package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +1 -0
- package/dist/src/public/channels/chat-sdk/authorization.js +1 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +7 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
- package/dist/src/public/channels/discord/defaults.d.ts +8 -7
- package/dist/src/public/channels/discord/discordChannel.d.ts +21 -1
- package/dist/src/public/channels/discord/discordChannel.js +1 -1
- package/dist/src/public/channels/discord/index.d.ts +1 -1
- package/dist/src/public/channels/github/defaults.js +3 -3
- package/dist/src/public/channels/github/githubChannel.d.ts +4 -1
- package/dist/src/public/channels/github/state.d.ts +2 -1
- package/dist/src/public/channels/index.d.ts +1 -1
- package/dist/src/public/channels/linear/defaults.js +1 -1
- package/dist/src/public/channels/linear/linearChannel.d.ts +4 -1
- package/dist/src/public/channels/mcp.d.ts +26 -5
- package/dist/src/public/channels/mcp.js +1 -1
- package/dist/src/public/channels/slack/index.d.ts +1 -0
- package/dist/src/public/channels/slack/index.js +1 -1
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +6 -0
- package/dist/src/public/channels/twilio/defaults.js +2 -4
- package/dist/src/public/channels/twilio/twilioChannel.d.ts +4 -1
- package/dist/src/public/definitions/channel.d.ts +1 -1
- package/dist/src/public/definitions/connections/mcp.d.ts +11 -0
- package/dist/src/public/experimental/schedules/client.d.ts +7 -0
- package/dist/src/public/experimental/schedules/client.js +1 -0
- package/dist/src/public/experimental/schedules/index.d.ts +5 -0
- package/dist/src/public/experimental/schedules/index.js +1 -0
- package/dist/src/public/experimental/schedules/testing.d.ts +2 -0
- package/dist/src/public/experimental/schedules/testing.js +1 -0
- package/dist/src/public/experimental/schedules/vercel.d.ts +2 -0
- package/dist/src/public/experimental/schedules/vercel.js +1 -0
- package/dist/src/public/memory/scope.js +1 -1
- package/dist/src/public/schedules/provider-types.d.ts +16 -0
- package/dist/src/public/schedules/provider-types.js +1 -0
- package/dist/src/public/schedules/providers/in-memory.d.ts +5 -0
- package/dist/src/public/schedules/providers/in-memory.js +1 -0
- package/dist/src/public/schedules/providers/vercel.d.ts +10 -0
- package/dist/src/public/schedules/providers/vercel.js +1 -0
- package/dist/src/public/schedules/scope.d.ts +2 -0
- package/dist/src/public/schedules/scope.js +1 -0
- package/dist/src/public/schedules/subscription.d.ts +259 -0
- package/dist/src/public/schedules/subscription.js +1 -0
- package/dist/src/public/schedules/testing.d.ts +1 -0
- package/dist/src/public/schedules/testing.js +1 -0
- package/dist/src/public/sveltekit/dev-server.js +1 -1
- package/dist/src/runtime/cache-key.js +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/loaders/compile-metadata.js +1 -1
- package/dist/src/runtime/loaders/manifest.js +1 -1
- package/dist/src/runtime/loaders/module-map.js +1 -1
- package/dist/src/runtime/resolve-connection.js +1 -1
- package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
- package/dist/src/runtime/schedules/collection-client.d.ts +20 -0
- package/dist/src/runtime/schedules/collection-client.js +1 -0
- package/dist/src/runtime/schedules/dispatch-occurrence.d.ts +12 -0
- package/dist/src/runtime/schedules/dispatch-occurrence.js +1 -0
- package/dist/src/runtime/schedules/load-collection.d.ts +14 -0
- package/dist/src/runtime/schedules/load-collection.js +1 -0
- package/dist/src/runtime/schedules/payload.d.ts +24 -0
- package/dist/src/runtime/schedules/payload.js +1 -0
- package/dist/src/runtime/schedules/provider-types.d.ts +1 -0
- package/dist/src/runtime/schedules/provider-types.js +1 -0
- package/dist/src/runtime/schedules/queue-namespace.d.ts +2 -0
- package/dist/src/runtime/schedules/queue-namespace.js +1 -0
- package/dist/src/runtime/schedules/record.d.ts +4 -0
- package/dist/src/runtime/schedules/record.js +1 -0
- package/dist/src/runtime/schedules/validation.d.ts +6 -0
- package/dist/src/runtime/schedules/validation.js +1 -0
- package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
- package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
- package/dist/src/runtime/sessions/runtime-session.d.ts +10 -0
- package/dist/src/runtime/sessions/runtime-session.js +1 -1
- package/dist/src/runtime/types.d.ts +2 -0
- package/dist/src/self-modification/config.d.ts +4 -63
- package/dist/src/self-modification/config.js +1 -1
- package/dist/src/self-modification/credentials.d.ts +1 -1
- package/dist/src/self-modification/deployed-sandbox.d.ts +14 -0
- package/dist/src/self-modification/deployed-sandbox.js +1 -0
- package/dist/src/self-modification/extension/config-schema.d.ts +2 -17
- package/dist/src/self-modification/extension/config-schema.js +1 -1
- package/dist/src/self-modification/extension/local-only.d.ts +1 -1
- package/dist/src/self-modification/extension/local-only.js +1 -1
- package/dist/src/self-modification/extension/subagents/agent/agent.d.ts +1 -1
- package/dist/src/self-modification/extension/subagents/agent/agent.js +1 -1
- package/dist/src/self-modification/extension/subagents/agent/instructions.js +3 -35
- package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.d.ts +3 -31
- package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
- package/dist/src/self-modification/git-workspace.d.ts +1 -2
- package/dist/src/self-modification/git-workspace.js +1 -1
- package/dist/src/self-modification/github-publisher.d.ts +1 -1
- package/dist/src/self-modification/mode.d.ts +4 -4
- package/dist/src/self-modification/mode.js +1 -1
- package/dist/src/self-modification/proposal.js +1 -1
- package/dist/src/self-modification/remote/config-schema.d.ts +20 -0
- package/dist/src/self-modification/remote/config-schema.js +1 -0
- package/dist/src/self-modification/remote/config.d.ts +66 -0
- package/dist/src/self-modification/remote/config.js +1 -0
- package/dist/src/self-modification/remote/extension.d.ts +5 -0
- package/dist/src/self-modification/remote/extension.js +1 -0
- package/dist/src/self-modification/remote/production-registry-add.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/agent.d.ts +4 -0
- package/dist/src/self-modification/remote/subagents/agent/agent.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/instructions.d.ts +2 -0
- package/dist/src/self-modification/remote/subagents/agent/instructions.js +5 -0
- package/dist/src/self-modification/remote/subagents/agent/sandbox.d.ts +2 -0
- package/dist/src/self-modification/remote/subagents/agent/sandbox.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/edit_file.d.ts +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/edit_file.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/publish.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.d.ts +32 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/search_models.d.ts +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/search_models.js +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/search_registry.d.ts +1 -0
- package/dist/src/self-modification/remote/subagents/agent/tools/search_registry.js +1 -0
- package/dist/src/self-modification/sandbox.d.ts +1 -6
- package/dist/src/self-modification/sandbox.js +1 -1
- package/dist/src/self-modification/scaffold.js +1 -1
- package/dist/src/self-modification/setup.d.ts +6 -0
- package/dist/src/self-modification/setup.js +46 -48
- package/dist/src/self-modification/subagent-guidance.d.ts +15 -0
- package/dist/src/self-modification/subagent-guidance.js +29 -0
- package/dist/src/services/dev-client/request-headers.js +1 -1
- package/dist/src/setup/flows/model-source-change.js +1 -1
- package/dist/src/setup/integrations/self-modification/setup.js +1 -1
- package/dist/src/setup/project-resolution.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/verified-remote-client.d.ts +3 -0
- package/dist/src/setup/verified-remote-client.js +1 -1
- package/dist/src/shared/framework-eve-server.js +1 -1
- package/dist/src/shared/principal-scope.d.ts +2 -0
- package/dist/src/shared/principal-scope.js +1 -0
- package/dist/src/shared/schedule-collection-definition.d.ts +11 -0
- package/dist/src/shared/schedule-collection-definition.js +1 -0
- package/dist/src/shared/schedule-collection-tools.d.ts +1 -0
- package/dist/src/shared/schedule-collection-tools.js +1 -0
- package/dist/src/subagents/hitl-proxy.js +1 -1
- package/dist/src/subagents/tool.d.ts +1 -0
- 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/framework/agent.js +1 -1
- package/dist/src/tools/provided/ask-question-workflow.js +1 -1
- package/dist/src/tools/provided/read-file.js +1 -1
- package/dist/src/tools/provided/sleep-workflow.js +1 -1
- package/dist/src/tracing/agent-otel-content.d.ts +2 -0
- package/dist/src/tracing/agent-otel-content.js +2 -2
- package/dist/src/tracing/agent-otel-provider.js +1 -1
- package/dist/src/tracing/invoke-tool-span.d.ts +1 -0
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/chat-sdk.mdx +27 -0
- package/docs/channels/custom.mdx +5 -2
- package/docs/channels/discord.mdx +22 -0
- package/docs/channels/mcp.mdx +102 -4
- package/docs/channels/slack.mdx +1 -1
- package/docs/connections/mcp.mdx +19 -0
- package/docs/evals/targets.mdx +5 -1
- package/docs/guides/self-modification.md +50 -3
- package/docs/tools/human-in-the-loop.md +14 -2
- package/docs/tools/workflows.mdx +6 -4
- package/docs/tutorial/guard-the-spend.mdx +1 -1
- package/package.json +46 -8
- package/dist/src/compiled/@workflow/core/runtime/vm-serde-bundle.generated.d.ts +0 -14
- package/dist/src/compiled/_chunks/workflow/dist-CaNNONeg.js +0 -3
- package/dist/src/compiled/_chunks/workflow/global-DKbOgrts.js +0 -1
- package/dist/src/compiled/_chunks/workflow/helpers-CP9TjeO8.js +0 -1
- package/dist/src/compiled/_chunks/workflow/logger-oqfblE3p.js +0 -14
- package/dist/src/compiled/_chunks/workflow/resume-hook-yq-NAdBu.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-APSKphN5.js +0 -3
- package/dist/src/compiled/_chunks/workflow/sleep-Ba8SExMt.js +0 -1
- package/dist/src/compiled/_chunks/workflow/wait-until-Dc9s3yyP.js +0 -1
- package/dist/src/self-modification/extension/production-registry-add.js +0 -1
- package/dist/src/self-modification/extension/subagents/agent/tools/publish.js +0 -1
- /package/dist/src/self-modification/{extension → remote}/production-registry-add.d.ts +0 -0
- /package/dist/src/self-modification/{extension → remote}/subagents/agent/tools/publish.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# eve
|
|
2
2
|
|
|
3
|
+
## 0.74.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bc101b5: Add experimental `defineDynamicSchedules` with direct operation tools, optional `preparePayload` creation preparation, top-level per-operation approval, and creator-bound execution. Create approval receives prepared data and rejects changed results before writing; `ctx.session.schedule` exposes scheduled-turn provenance without auth attributes.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 51648e3: Manual compaction now resolves step-scoped dynamic models before summarizing a session.
|
|
12
|
+
- 880dd8b: Record offered tool definitions on GenAI chat spans and expose them to lifecycle handlers when input capture is enabled.
|
|
13
|
+
- f528669: Settle tool calls when a model call is retried and remove unresolved tool parts when a turn ends.
|
|
14
|
+
- 8751775: The experimental Vercel schedule provider includes Schedules SDK alpha.11 in the published package without adding a runtime dependency. Provider requests receive the operation's abort signal, and failed disable calls after inactive creation report that the schedule may remain active.
|
|
15
|
+
- b9470fe: `Shift+Enter` now inserts a newline in the `eve dev` prompt in Warp, which sends a bare line feed for it. `Ctrl+J` inserts a newline too, instead of sending the message.
|
|
16
|
+
- 8751775: Schedule subscriptions default to Vercel Schedules in production and process-local storage under `eve dev`, so an explicit `provider` is no longer required. Pass a provider to override the backend, or use `vercelScheduleProvider` from `eve/experimental/schedules/vercel` to customize the Vercel endpoint.
|
|
17
|
+
- 0b5bb5b: Workflow tools in an `agents/<name>/` workspace member now compile with the workflow ID that the deployment registers, so calls no longer fail with "is not registered as a workflow in this deployment". Members can also import workflow and step modules from the shared root package, such as `lib/`, and `eve dev` rebuilds when shared modules imported from outside the agent directory change.
|
|
18
|
+
|
|
19
|
+
## 0.73.0
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- 9de88f7: Split self-modification into separate `eve/self-modification/local` and `eve/self-modification/remote` mounts, so `eve dev` no longer loads deployed sandbox dependencies. `eve/self-modification` remains an alias for the local mount and now rejects the `deployed` option; move that configuration to its own mount, for example `agent/extensions/self-modification-remote/extension.ts`, with the former `deployed` fields at the top level.
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- a549cb6: Enable Workflow stream-writer WebSockets for eve's Vercel world. The upgraded SDK disposes released and aborted writer sessions, and falls back to HTTP when the server declines a WebSocket upgrade.
|
|
28
|
+
- 83b97e6: Chat SDK channels now send a sign-in started in a shared thread to the person signing in, as an ephemeral message or a direct message, and show a link-free status in the thread. Adapters that support neither still post the existing "continue in a direct message" notice.
|
|
29
|
+
- 7c60065: Discord button presses, selects, and modal submissions now answer as the Discord user who made them instead of anonymously, so requester-only and other approval response policies work on Discord. The new `onInputResponse` option on `discordChannel` chooses an answer's auth or drops it, and its context carries the presser's `defaultAuth`. Apps with a custom `onCommand` must also set `onInputResponse`; until they do, eve drops presses and logs a warning.
|
|
30
|
+
- 90972b6: Start the first model call without waiting for session-title metadata persistence, while still completing the title write before the durable turn step finishes.
|
|
31
|
+
- 933996c: `invokeTool` now accepts a `key`: calls from the same caller with the same key share one session id and keep their sandbox between calls, on Vercel Sandbox and just-bash. `mcpChannel({ tools: true })` advertises the `dev.eve/tool-sessions` extension, so MCP clients that declare it can join a tool session with `_meta["dev.eve/tool-session"]`. A forwarded caller's session also covers the verified forwarder, passed as `invokeTool`'s `forwardedBy` (`mcpChannel` passes the router its `auth` verified), so one user reached through two routers gets two sessions. Tool sessions need an authenticated caller: a keyed call from the anonymous principal `none()` gives is denied. On Vercel Sandbox, a tool session's saved filesystem expires a day after its last use, so the next call with the key starts a fresh sandbox; a deploy that changes the agent's sandbox definition also starts a fresh sandbox for each key.
|
|
32
|
+
- 279e2b6: `mcpChannel({ skills: true })` serves the agent's skills as SEP-2640 skills under `skill://`, with each file's size and SHA-256 digest. Files are served byte for byte, except that a `SKILL.md` without conforming `name` and `description` frontmatter is served with generated frontmatter. Channel routes also get `listSkillFiles(skill)`, which lists a skill's files with their sizes, and `readSkill(skill, path?)`, which returns one skill file's bytes; `describe()` lists each skill's name and description.
|
|
33
|
+
|
|
34
|
+
Production builds now ship skill files as eve-owned server assets and drop Nitro's default `server` asset entry, which bundled the app's `assets/` directory. An app that read `assets:server` storage in production finds it empty; eve reads only its own asset bases.
|
|
35
|
+
- 866cb41: Tools published with `mcpChannel({ tools: true })` can now run as the user a trusted caller forwards. Set `trustedForwarders` on the channel to accept the `eve-forwarded-principal` header, and `forwardPrincipal: true` on a `defineMcpClientConnection` to send the turn's user to another eve agent. A channel without `trustedForwarders` refuses requests carrying the header with `403`. `invokeTool` also accepts an `initiator` option.
|
|
36
|
+
- 282802a: Reduce new-session startup latency by overlapping session creation with timeout startup and first-turn cancellation and steering hook registration after inbox ownership is ready.
|
|
37
|
+
- 64301d1: Remote evals now resolve Vercel deployments using the owner and project from the environment or local project link, allowing protected deployments owned by a different team than the CLI's current team. Ambient credentials are withheld when the deployment does not match the expected project.
|
|
38
|
+
- f8bf204: Add the Sanity MCP integration to the registry. Use `eve add connection/sanity` to connect an existing Sanity account through Vercel Connect OAuth.
|
|
39
|
+
- 0d6e2e2: `eve add` and `eve registry` now use `@shadcn/registry` instead of the full `shadcn` CLI package. The vendored registry bundle shrinks from 9.7 MB to 3.8 MB, and registry items install the same files, env vars, and dependencies as before.
|
|
40
|
+
- 3c8919a: Slack `onInteraction` actions now include `triggerId`, so a button on a message can open a modal with `views.open`.
|
|
41
|
+
- 17d5b11: When a turn waits on several questions or approvals, a typed reply now answers the first open one instead of none, so people can answer them one message at a time. Twilio, GitHub, Linear, and Chat SDK channels (including Linq and Photon) show one prompt at a time and post the next once it is answered. An approval raised alongside a workflow tool call such as `ask_question` is now requested after that call finishes, since it can't take effect before then.
|
|
42
|
+
|
|
43
|
+
On Twilio, GitHub, and Linear, the built-in prompt queue spans the `input.requested`, `input.resolved`, and `approval.settled` handlers. If you override any one of them, override all three, or the built-in handlers will post prompts twice or stop posting later ones. If you render prompts yourself from `input.requested`, make `input.resolved` and `approval.settled` no-ops.
|
|
44
|
+
- 7f559ac: The TUI now prints a connection sign-in URL on its own line and makes every wrapped row an OSC 8 hyperlink to the full URL, so Cmd-clicking the link opens the whole URL in a narrow terminal.
|
|
45
|
+
- 17d5b11: Typing `approve` or `cancel` now answers a tool approval that has an `approval.response` policy. The policy checks the person who typed the reply, just as it checks someone who presses a button. Before, the reply reached the model as an ordinary message and the approval stayed pending.
|
|
46
|
+
|
|
3
47
|
## 0.72.1
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"node:module";export{};
|
|
1
|
+
import"node:module";var __create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=__getOwnPropNames(t),a=0,o=i.length,s;a<o;a++)s=i[a],!__hasOwnProp.call(e,s)&&s!==n&&__defProp(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=__getOwnPropDesc(t,s))||r.enumerable});return e},__toESM=(e,t,n)=>(n=e==null?{}:__create(__getProtoOf(e)),__copyProps(t||!e||!e.__esModule||!__hasOwnProp.call(e,`default`)?__defProp(n,`default`,{value:e,enumerable:!0}):n,e));export{__commonJSMin,__toESM};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CompiledAgentManifest } from "#compiler/manifest.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type SkillFileSource } from "#channel/skill-files.js";
|
|
3
|
+
import { type RuntimeCompiledArtifactsSource } from "#runtime/compiled-artifacts-source.js";
|
|
3
4
|
import type { JsonObject } from "#shared/json.js";
|
|
4
5
|
/** One compiled tool a caller can invoke outside a turn. */
|
|
5
6
|
export interface AgentToolDescription {
|
|
@@ -10,24 +11,63 @@ export interface AgentToolDescription {
|
|
|
10
11
|
/** The tool declares an approval policy. */
|
|
11
12
|
readonly approval: boolean;
|
|
12
13
|
}
|
|
14
|
+
/** One file of a skill, as `listSkillFiles` returns it. `readSkill` rejects files over 512 KiB. */
|
|
15
|
+
export interface AgentSkillFileDescription {
|
|
16
|
+
/** `/`-separated path under the skill root, e.g. `references/api.md`. */
|
|
17
|
+
readonly path: string;
|
|
18
|
+
/** Size in bytes. */
|
|
19
|
+
readonly size: number;
|
|
20
|
+
}
|
|
21
|
+
/** One compiled skill. `listSkillFiles` enumerates its files. */
|
|
22
|
+
export interface AgentSkillDescription {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly description: string;
|
|
25
|
+
}
|
|
13
26
|
/**
|
|
14
|
-
* The caller-facing view of an agent: its name, description,
|
|
15
|
-
* tools `invokeTool` can run, sorted by name.
|
|
16
|
-
* carries no paths, config, diagnostics, or
|
|
17
|
-
* channels can publish it as is. Tools
|
|
18
|
-
* subagents are not listed.
|
|
27
|
+
* The caller-facing view of an agent: its name, description, the compiled
|
|
28
|
+
* tools `invokeTool` can run, and its compiled skills, each sorted by name.
|
|
29
|
+
* Unlike `GET /eve/v1/info`, it carries no paths, config, diagnostics, or
|
|
30
|
+
* other inspection detail, so channels can publish it as is. Tools and
|
|
31
|
+
* skills added by dynamic resolvers and subagents are not listed.
|
|
19
32
|
*/
|
|
20
33
|
export interface AgentDescription {
|
|
21
34
|
readonly name: string;
|
|
22
35
|
readonly description?: string;
|
|
23
36
|
readonly tools: readonly AgentToolDescription[];
|
|
37
|
+
readonly skills: readonly AgentSkillDescription[];
|
|
38
|
+
}
|
|
39
|
+
/** The `describe`, `listSkillFiles`, and `readSkill` route handler args. */
|
|
40
|
+
export interface AgentDescriptionRouteArgs {
|
|
41
|
+
describe(): Promise<AgentDescription>;
|
|
42
|
+
listSkillFiles(skill: string): Promise<readonly AgentSkillFileDescription[]>;
|
|
43
|
+
readSkill(skill: string, path?: string): Promise<Uint8Array>;
|
|
24
44
|
}
|
|
25
45
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
46
|
+
* One compiled agent as its routes see it: the description projected from
|
|
47
|
+
* its manifest, and the source of its skill files. Loading it reads the
|
|
48
|
+
* manifest only; no skill file is touched until one is listed or read.
|
|
49
|
+
*/
|
|
50
|
+
export interface DescribedAgent {
|
|
51
|
+
readonly description: AgentDescription;
|
|
52
|
+
readonly files: SkillFileSource;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Loads the agent of a compiled artifacts source once per artifact version
|
|
56
|
+
* on the active runtime session, as `getCompiledRuntimeAgentBundle` does for
|
|
57
|
+
* the execution graph, without resolving that graph. A production build
|
|
58
|
+
* loads once per process; `eve dev` reloads after each recompile. A failed
|
|
59
|
+
* load is retried on the next call rather than cached.
|
|
60
|
+
*/
|
|
61
|
+
export declare function loadDescribedAgent(compiledArtifactsSource: RuntimeCompiledArtifactsSource): Promise<DescribedAgent>;
|
|
62
|
+
/**
|
|
63
|
+
* The agent route handler args for one compiled artifacts source, which
|
|
64
|
+
* resolves on first use so routes that never call them pay nothing. Also
|
|
65
|
+
* returns the agent's skill files, so a channel that already holds listed
|
|
66
|
+
* paths reads them without the listing `readSkill` repeats per call.
|
|
28
67
|
*/
|
|
29
68
|
export declare function createAgentDescriptionRouteArgs(resolveCompiledArtifactsSource: () => RuntimeCompiledArtifactsSource): {
|
|
30
|
-
|
|
69
|
+
readonly args: AgentDescriptionRouteArgs;
|
|
70
|
+
readonly skillFiles: SkillFileSource;
|
|
31
71
|
};
|
|
32
72
|
/** Projects the root node of a compiled manifest onto {@link AgentDescription}. */
|
|
33
73
|
export declare function describeCompiledAgent(manifest: CompiledAgentManifest): AgentDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isInvocableCompiledTool}from"#channel/tool-eligibility.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";function
|
|
1
|
+
import{SkillReadError,comparePaths,createCompiledSkillFileSource,readSkillFile}from"#channel/skill-files.js";import{isInvocableCompiledTool}from"#channel/tool-eligibility.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{getRuntimeCompiledArtifactsCacheKey}from"#runtime/compiled-artifacts-source.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{getActiveRuntimeSession}from"#runtime/sessions/runtime-session.js";async function loadDescribedAgent(e){let t=getActiveRuntimeSession(),n=getRuntimeCompiledArtifactsCacheKey(e),r=await resolveRuntimeCompiledArtifactsVersionedCacheKey(e),i=t.describedAgents.get(n);if(i?.version===r)return await i.agent;let a=loadCompiledManifest({compiledArtifactsSource:e}).then(t=>({description:describeCompiledAgent(t),files:createCompiledSkillFileSource({compiledArtifactsSource:e,workspaceResourceRoot:t.workspaceResourceRoot})}));return a.catch(()=>{t.describedAgents.get(n)?.agent===a&&t.describedAgents.delete(n)}),t.describedAgents.set(n,{agent:a,version:r}),await a}function createAgentDescriptionRouteArgs(e){let load=()=>loadDescribedAgent(e()),t={listFiles:async e=>await(await load()).files.listFiles(e),listDirectories:async e=>await(await load()).files.listDirectories(e),readFile:async(e,t)=>await(await load()).files.readFile(e,t)},assertSkill=async e=>{let{description:t}=await load();if(!t.skills.some(t=>t.name===e))throw new SkillReadError(`unknown-skill`,`Unknown skill "${e}".`)};return{args:{describe:async()=>(await load()).description,async listSkillFiles(e){return await assertSkill(e),await t.listFiles(e)},async readSkill(e,n){return await assertSkill(e),await readSkillFile({path:n,skill:e,source:t})}},skillFiles:t}}function describeCompiledAgent(e){let t=e.tools.filter(t=>isInvocableCompiledTool(e,t)).sort((e,t)=>comparePaths(e.name,t.name)).map(describeTool),n=[...e.skills].sort((e,t)=>comparePaths(e.name,t.name)).map(({name:e,description:t})=>({name:e,description:t})),r={name:e.config.name,tools:t,skills:n};return e.config.description!==void 0&&(r.description=e.config.description),r}function describeTool(e){let t={name:e.name,description:e.description,inputSchema:e.inputSchema??{},approval:e.requiresApproval};return e.outputSchema!==void 0&&(t.outputSchema=e.outputSchema),t}export{createAgentDescriptionRouteArgs,describeCompiledAgent,loadDescribedAgent};
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import type { SessionAuthContext } from "#channel/types.js";
|
|
2
2
|
import type { ToolModelOutput } from "#tools/model-output.js";
|
|
3
|
+
/** Longest {@link InvokeToolOptions.key} `invokeTool` accepts. */
|
|
4
|
+
export declare const TOOL_SESSION_KEY_MAX_LENGTH = 512;
|
|
3
5
|
/** Options for one {@link InvokeToolFn} call. */
|
|
4
6
|
export interface InvokeToolOptions {
|
|
5
7
|
/** The caller this request authenticated. Becomes `ctx.session.auth.current`. */
|
|
6
8
|
readonly auth: SessionAuthContext;
|
|
9
|
+
/** Becomes `ctx.session.auth.initiator`. Defaults to `auth`. */
|
|
10
|
+
readonly initiator?: SessionAuthContext;
|
|
11
|
+
/**
|
|
12
|
+
* The verified caller that forwarded `auth`, when a trusted forwarder
|
|
13
|
+
* asserted it. A keyed session's identity includes it, so one user reached
|
|
14
|
+
* through two forwarders gets two sessions. Pass the principal the route
|
|
15
|
+
* authenticated, never one read from the request.
|
|
16
|
+
*/
|
|
17
|
+
readonly forwardedBy?: SessionAuthContext;
|
|
18
|
+
/**
|
|
19
|
+
* Names a tool session the call joins: 1 to 512 characters, chosen by the
|
|
20
|
+
* caller. Calls from the same `auth` principal with the same key share one
|
|
21
|
+
* session id and one sandbox, which outlives the call. A different
|
|
22
|
+
* principal using the same key gets a different session. Without a key,
|
|
23
|
+
* the call runs in a one-off session. An anonymous `auth` (from `none()`)
|
|
24
|
+
* cannot send a key: the call is denied before anything runs.
|
|
25
|
+
*/
|
|
26
|
+
readonly key?: string;
|
|
7
27
|
readonly signal?: AbortSignal;
|
|
8
28
|
}
|
|
9
29
|
/** Outcome of one {@link InvokeToolFn} call. */
|
|
@@ -33,9 +53,11 @@ export type InvokeToolResult = {
|
|
|
33
53
|
};
|
|
34
54
|
/**
|
|
35
55
|
* Runs one of the agent's tools outside a conversation. No model, turn, or
|
|
36
|
-
* workflow step is involved, and the call never parks.
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* when the call ends.
|
|
56
|
+
* workflow step is involved, and the call never parks. `ctx.session.auth.current`
|
|
57
|
+
* is the caller, and authored state starts from its initial value and is not
|
|
58
|
+
* kept, with or without a key. Without `key`, each call gets its own session,
|
|
59
|
+
* and a sandbox the tool opens is deleted when the call ends. With `key`, the
|
|
60
|
+
* session id is stable for that caller and key, and its sandbox is kept for
|
|
61
|
+
* the next call with the same key.
|
|
40
62
|
*/
|
|
41
63
|
export type InvokeToolFn = (name: string, input: unknown, options: InvokeToolOptions) => Promise<InvokeToolResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{};
|
|
1
|
+
const TOOL_SESSION_KEY_MAX_LENGTH=512;export{TOOL_SESSION_KEY_MAX_LENGTH};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SessionAuthContext } from "#channel/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The fields that identify a principal, in a fixed order, for hashing into
|
|
4
|
+
* invocation owner keys and tool session ids. Attributes describe a principal;
|
|
5
|
+
* they do not identify it. Adding a field changes every derived hash.
|
|
6
|
+
*/
|
|
7
|
+
export declare function principalIdentity(auth: SessionAuthContext): readonly string[];
|
|
8
|
+
/** Whether `auth` is the shared principal `none()` gives every unauthenticated caller. */
|
|
9
|
+
export declare function isAnonymousPrincipal(auth: SessionAuthContext): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function principalIdentity(e){return[e.authenticator,e.issuer??``,e.principalType,e.principalId,e.subject??``]}function isAnonymousPrincipal(e){return e.principalType===`anonymous`}export{isAnonymousPrincipal,principalIdentity};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { UnstampedMessageStreamEvent } from "#protocol/message.js";
|
|
2
|
+
import type { InputRequest } from "#shared/input.js";
|
|
3
|
+
/**
|
|
4
|
+
* Channel state for showing a session's open requests one at a time. A typed
|
|
5
|
+
* reply answers the first open request, so a channel that can only show text
|
|
6
|
+
* shows that one and holds the rest until it is answered.
|
|
7
|
+
*/
|
|
8
|
+
export interface PromptQueueState {
|
|
9
|
+
/** The request the channel last showed, which a typed reply answers. */
|
|
10
|
+
shownPromptId?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Event handlers that call `show` with the request a typed reply answers now,
|
|
14
|
+
* each time that request changes. They read which requests are open from the
|
|
15
|
+
* session's own record of the events it published, so a request that closed
|
|
16
|
+
* never shows, and one the channel failed to show is tried again on the next
|
|
17
|
+
* event. `show` returns `false` when it could not show the request.
|
|
18
|
+
*/
|
|
19
|
+
export declare function promptQueueEvents<TChannel extends {
|
|
20
|
+
state: PromptQueueState;
|
|
21
|
+
}>(show: (channel: TChannel, request: InputRequest) => Promise<boolean | void>): {
|
|
22
|
+
"input.requested"(data: Extract<UnstampedMessageStreamEvent, {
|
|
23
|
+
type: "input.requested";
|
|
24
|
+
}>["data"], channel: TChannel): Promise<void>;
|
|
25
|
+
"input.resolved"(data: Extract<UnstampedMessageStreamEvent, {
|
|
26
|
+
type: "input.resolved";
|
|
27
|
+
}>["data"], channel: TChannel): Promise<void>;
|
|
28
|
+
"approval.settled"(data: Extract<UnstampedMessageStreamEvent, {
|
|
29
|
+
type: "approval.settled";
|
|
30
|
+
}>["data"], channel: TChannel): Promise<void>;
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{foldSession}from"#protocol/session-projection.js";import{contextStorage}from"#context/container.js";import{firstOpenInput}from"#harness/open-input-request.js";import{currentProjection}from"#harness/session-machine/current.js";function promptQueueEvents(e){async function refresh(t,n){let r=firstOpenInput(foldSession(publishedProjection(t),n))?.request;if(r===void 0){delete t.state.shownPromptId;return}r.requestId!==t.state.shownPromptId&&await e(t,r)!==!1&&(t.state.shownPromptId=r.requestId)}return{async"input.requested"(e,t){await refresh(t,{data:e,type:`input.requested`})},async"input.resolved"(e,t){await refresh(t,{data:e,type:`input.resolved`})},async"approval.settled"(e,t){await refresh(t,{data:e,type:`approval.settled`})}}}function publishedProjection(e){let t=e.ctx??contextStorage.getStore();return currentProjection(t)}export{promptQueueEvents};
|
|
@@ -6,7 +6,7 @@ import type { InputResponse } from "#shared/input.js";
|
|
|
6
6
|
import type { Session } from "#channel/session.js";
|
|
7
7
|
import type { JsonObject } from "#shared/json.js";
|
|
8
8
|
import type { ChannelMethod } from "#public/definitions/channel.js";
|
|
9
|
-
import type { AgentDescription } from "#channel/agent-description.js";
|
|
9
|
+
import type { AgentDescription, AgentSkillFileDescription } from "#channel/agent-description.js";
|
|
10
10
|
type WebSocketHeaders = Headers | readonly (readonly [string, string])[] | Record<string, string>;
|
|
11
11
|
/**
|
|
12
12
|
* Second argument passed to every route handler. `from` binds local operations,
|
|
@@ -32,11 +32,26 @@ export interface RouteHandlerArgs<TState = undefined> {
|
|
|
32
32
|
/** Best-effort client IP reported by the host, or `null` when unavailable. */
|
|
33
33
|
requestIp: string | null;
|
|
34
34
|
/**
|
|
35
|
-
* Describes the agent for callers: its name, description,
|
|
36
|
-
* tools that can run outside a turn,
|
|
37
|
-
*
|
|
35
|
+
* Describes the agent for callers: its name, description, the compiled
|
|
36
|
+
* tools that can run outside a turn, and the name and description of each
|
|
37
|
+
* compiled skill, sorted by name. Reads the compiled manifest only, no
|
|
38
|
+
* skill file, and carries none of the inspection detail of `GET /eve/v1/info`.
|
|
38
39
|
*/
|
|
39
40
|
describe(): Promise<AgentDescription>;
|
|
41
|
+
/**
|
|
42
|
+
* Lists the regular files of one compiled skill, each with its path under
|
|
43
|
+
* the skill root and its size in bytes, sorted by path. Rejects a skill
|
|
44
|
+
* the agent does not have.
|
|
45
|
+
*/
|
|
46
|
+
listSkillFiles(skill: string): Promise<readonly AgentSkillFileDescription[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Reads one file of a compiled skill as raw bytes. `path` is relative to
|
|
49
|
+
* the skill root and defaults to its `SKILL.md`. Rejects paths that are
|
|
50
|
+
* absolute or contain `.`, `..`, or empty segments, files the skill does
|
|
51
|
+
* not list, and files over 512 KiB. Production builds ship skill files as
|
|
52
|
+
* server assets, so they count toward the deployed function's size.
|
|
53
|
+
*/
|
|
54
|
+
readSkill(skill: string, path?: string): Promise<Uint8Array>;
|
|
40
55
|
/** Runs one of the agent's tools as `auth`, outside any conversation. */
|
|
41
56
|
readonly invokeTool: InvokeToolFn;
|
|
42
57
|
}
|
|
@@ -2,6 +2,8 @@ import type { ChannelAdapter } from "#channel/adapter.js";
|
|
|
2
2
|
import { type Session } from "#channel/session.js";
|
|
3
3
|
import type { Runtime } from "#channel/types.js";
|
|
4
4
|
import type { ScheduleRunHandler } from "#public/definitions/schedule.js";
|
|
5
|
+
import type { DynamicSchedulesDefinition, ScheduleOccurrenceIdentity } from "#public/schedules/subscription.js";
|
|
6
|
+
import { type ScheduleCollectionPayload } from "#runtime/schedules/payload.js";
|
|
5
7
|
import type { ResolvedChannelDefinition } from "#runtime/types.js";
|
|
6
8
|
export { SCHEDULE_APP_AUTH } from "#channel/schedule-auth.js";
|
|
7
9
|
/**
|
|
@@ -18,11 +20,23 @@ export declare const SCHEDULE_ADAPTER: ChannelAdapter;
|
|
|
18
20
|
* Loaded shape of one schedule for the dispatcher. Either `run` is
|
|
19
21
|
* defined (authored handler) or `markdown` is defined (fire-and-forget).
|
|
20
22
|
*/
|
|
21
|
-
interface ScheduleDispatchInput {
|
|
23
|
+
export interface ScheduleDispatchInput {
|
|
22
24
|
readonly scheduleId: string;
|
|
23
25
|
readonly run?: ScheduleRunHandler;
|
|
24
26
|
readonly markdown?: string;
|
|
25
27
|
}
|
|
28
|
+
/** Sessions started by dispatch and background work registered by the handler. */
|
|
29
|
+
export interface ScheduleDispatchResult {
|
|
30
|
+
readonly sessions: readonly Session[];
|
|
31
|
+
readonly waitUntilTasks: readonly Promise<unknown>[];
|
|
32
|
+
}
|
|
33
|
+
export interface ScheduleCollectionDispatchInput {
|
|
34
|
+
readonly collectionId: string;
|
|
35
|
+
readonly definition: DynamicSchedulesDefinition<any, any, any>;
|
|
36
|
+
readonly payload: ScheduleCollectionPayload<unknown>;
|
|
37
|
+
readonly occurrence: ScheduleOccurrenceIdentity;
|
|
38
|
+
readonly verifyDelivery?: () => Promise<void>;
|
|
39
|
+
}
|
|
26
40
|
/**
|
|
27
41
|
* Dispatches scheduled task execution.
|
|
28
42
|
*
|
|
@@ -38,12 +52,10 @@ interface ScheduleDispatchInput {
|
|
|
38
52
|
*
|
|
39
53
|
* Returns a {@link ScheduleDispatchResult} carrying any sessions the
|
|
40
54
|
* handler started (for telemetry / task-result observability) and the
|
|
41
|
-
* `waitUntil` promises the handler registered.
|
|
55
|
+
* `waitUntil` promises the handler registered. Subscription callbacks resolve
|
|
56
|
+
* creator auth and await their registered work before returning; their channel
|
|
57
|
+
* sends start fresh, unattended sessions rather than resume a conversation.
|
|
42
58
|
*/
|
|
43
|
-
interface ScheduleDispatchResult {
|
|
44
|
-
readonly sessions: readonly Session[];
|
|
45
|
-
readonly waitUntilTasks: readonly Promise<unknown>[];
|
|
46
|
-
}
|
|
47
59
|
export declare class ScheduleDispatcher {
|
|
48
60
|
private readonly runtime;
|
|
49
61
|
private readonly channels;
|
|
@@ -52,7 +64,9 @@ export declare class ScheduleDispatcher {
|
|
|
52
64
|
readonly channels: readonly ResolvedChannelDefinition[];
|
|
53
65
|
});
|
|
54
66
|
trigger(input: ScheduleDispatchInput): Promise<ScheduleDispatchResult>;
|
|
67
|
+
triggerCollection(input: ScheduleCollectionDispatchInput): Promise<ScheduleDispatchResult>;
|
|
55
68
|
private triggerInScope;
|
|
69
|
+
private createHandlerContext;
|
|
56
70
|
private runMarkdown;
|
|
57
71
|
}
|
|
58
72
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createSession}from"#channel/session.js";import{SCHEDULE_APP_AUTH,SCHEDULE_APP_AUTH as SCHEDULE_APP_AUTH$1}from"#channel/schedule-auth.js";import{createCrossChannelToFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{
|
|
1
|
+
import{randomUUID}from"node:crypto";import{createSession}from"#channel/session.js";import{ContextContainer,contextStorage}from"#context/container.js";import{scheduleDisplayName}from"#runtime/schedules/record.js";import{SCHEDULE_APP_AUTH,SCHEDULE_APP_AUTH as SCHEDULE_APP_AUTH$1}from"#channel/schedule-auth.js";import{createCrossChannelToFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{AuthKey,OccurrenceIdKey,ScheduleIdKey,ScheduleInstanceKey}from"#context/keys.js";import{expectFunction}from"#internal/authored-module.js";import{parseSchedulePayload,validateSchedulePayload}from"#runtime/schedules/payload.js";const SCHEDULE_ADAPTER_KIND=`schedule`,SCHEDULE_ADAPTER={kind:SCHEDULE_ADAPTER_KIND};var ScheduleDispatcher=class{runtime;channels;constructor(e){this.runtime=e.runtime,this.channels=e.channels}async trigger(e){let t=new ContextContainer;return t.set(ScheduleIdKey,e.scheduleId),await contextStorage.run(t,()=>this.triggerInScope(e))}async triggerCollection(e){let{envelope:t}=parseSchedulePayload(e.payload,{application:e.payload.eve.application,collection:e.collectionId}),{definition:n}=e,r={...e.occurrence,displayName:scheduleDisplayName(e.occurrence.name)},i=n.preparePayload===void 0?await validateSchedulePayload(n.inputSchema,t.payload):t.payload;await e.verifyDelivery?.();let a=await n.auth({principal:t.principal,payload:i,occurrence:r});if(a===null)throw Error(`Scheduled execution is no longer authorized.`);if(a.principalId!==t.principal.principalId||a.principalType!==t.principal.type||a.authenticator!==t.principal.authenticator||a.issuer!==t.principal.issuer||a.subject!==t.principal.subject)throw Error(`Scheduled execution auth must resolve the schedule creator.`);let o=a,s=new ContextContainer;return s.set(ScheduleIdKey,e.collectionId),s.set(AuthKey,o),s.set(OccurrenceIdKey,r.executionId),s.set(ScheduleInstanceKey,r.name),await contextStorage.run(s,async()=>{let e={...this.runtime,resolveContinuation:async()=>void 0,dispatchContinuation:async e=>{if(e.command.kind!==`send`)throw Error(`Scheduled channel receive can only start a fresh session.`);return{status:`session_not_active`}},createSession:async e=>await this.runtime.createSession({...e,auth:o,initiatorAuth:o,capabilities:{requestInput:!1},continuationToken:`eve-scheduled-send:${randomUUID()}`,continuationConflictCommand:void 0})},{args:t,sessions:a,waitUntilTasks:s}=this.createHandlerContext(e);return await n.run({payload:i,occurrence:r,auth:o,to:(e,n)=>({send:r=>t.to(e,n).send(r,{auth:o})}),waitUntil:t.waitUntil}),await Promise.all(s),{sessions:a,waitUntilTasks:s}})}async triggerInScope(e){let{args:t,sessions:n,waitUntilTasks:r}=this.createHandlerContext();if(e.run)await e.run(t);else if(e.markdown!==void 0)n.push(await this.runMarkdown(e.markdown));else throw Error(`Schedule "${e.scheduleId}" has neither "run" nor "markdown" — at least one must be set.`);return{sessions:n,waitUntilTasks:r}}createHandlerContext(e=this.runtime){let t=[],n=[],r=createCrossChannelToFn(e,toCrossChannelTargets(this.channels));return{args:{appAuth:SCHEDULE_APP_AUTH$1,to(e,n){let i=r(e,n);return{async send(e,n){let r=await i.send(e,n);return t.push(r),r}}},waitUntil(e){n.push(e)}},sessions:t,waitUntilTasks:n}}async runMarkdown(e){let t=await this.runtime.createSession({adapter:SCHEDULE_ADAPTER,auth:SCHEDULE_APP_AUTH$1,input:{message:e}});return createSession(t.sessionId,this.runtime)}};function expectScheduleRun(e,t,n){let r=e;if(typeof r!=`object`||!r)throw Error(`Schedule export "${n??`default`}" from "${t}" must be an object.`);return expectFunction(r.run,`Expected the schedule export "${n??`default`}" from "${t}" to export a \`run\` handler function.`)}export{SCHEDULE_ADAPTER,SCHEDULE_ADAPTER_KIND,SCHEDULE_APP_AUTH,ScheduleDispatcher,expectScheduleRun};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { CompiledWorkspaceResourceRoot } from "#compiler/manifest.js";
|
|
2
|
+
import type { RuntimeCompiledArtifactsSource } from "#runtime/compiled-artifacts-source.js";
|
|
3
|
+
/** Largest skill file `readSkill` returns. */
|
|
4
|
+
export declare const MAX_SKILL_FILE_BYTES: number;
|
|
5
|
+
/** Canonical file name of a skill package's entry markdown. */
|
|
6
|
+
export declare const SKILL_ENTRY_FILE_NAME = "SKILL.md";
|
|
7
|
+
/**
|
|
8
|
+
* Whether a file name is a skill's entry markdown. Discovery accepts any case
|
|
9
|
+
* variant, such as `skill.md`, and materialization keeps the authored name.
|
|
10
|
+
*/
|
|
11
|
+
export declare function isSkillEntryFileName(name: string): boolean;
|
|
12
|
+
export type SkillReadErrorCode = "invalid-path" | "too-large" | "unavailable" | "unknown-file" | "unknown-skill";
|
|
13
|
+
/** Thrown by `readSkill`. `code` lets a channel map the failure onto its own protocol. */
|
|
14
|
+
export declare class SkillReadError extends Error {
|
|
15
|
+
readonly code: SkillReadErrorCode;
|
|
16
|
+
constructor(code: SkillReadErrorCode, message: string);
|
|
17
|
+
}
|
|
18
|
+
/** One regular file of a skill: its `/`-separated path under the skill root and its size. */
|
|
19
|
+
export interface SkillFileEntry {
|
|
20
|
+
readonly path: string;
|
|
21
|
+
readonly size: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Lookup into the compiled skill files of one agent. Paths are `/`-separated
|
|
25
|
+
* and relative to the skill root, e.g. `SKILL.md` or `references/api.md`.
|
|
26
|
+
*/
|
|
27
|
+
export interface SkillFileSource {
|
|
28
|
+
/** Regular files of one skill, sorted by path. Empty when the skill has no materialized files. */
|
|
29
|
+
listFiles(skill: string): Promise<readonly SkillFileEntry[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Every directory of one skill below its root, sorted by path, including
|
|
32
|
+
* empty ones that no listed file implies.
|
|
33
|
+
*/
|
|
34
|
+
listDirectories(skill: string): Promise<readonly string[]>;
|
|
35
|
+
readFile(skill: string, path: string): Promise<Uint8Array>;
|
|
36
|
+
}
|
|
37
|
+
/** Nitro `serverAssets` base that holds the root agent's shipped skill files. */
|
|
38
|
+
export declare const SKILL_FILES_SERVER_ASSET_BASE = "eve-skills";
|
|
39
|
+
/** Nitro `serverAssets` base that holds {@link SKILL_FILES_INDEX_KEY}. */
|
|
40
|
+
export declare const SKILL_FILES_INDEX_SERVER_ASSET_BASE = "eve-skill-index";
|
|
41
|
+
/** Key of the skill file index inside {@link SKILL_FILES_INDEX_SERVER_ASSET_BASE}. */
|
|
42
|
+
export declare const SKILL_FILES_INDEX_KEY = "skills.json";
|
|
43
|
+
/**
|
|
44
|
+
* One indexed file: `[path, size, sha256]`. `sha256` is `null` for files over
|
|
45
|
+
* {@link MAX_SKILL_FILE_BYTES}, which are listed but not shipped. A shipped
|
|
46
|
+
* file's storage key is {@link skillFileStorageKey} of its digest.
|
|
47
|
+
*/
|
|
48
|
+
export type SkillFilesIndexEntry = readonly [path: string, size: number, sha256: string | null];
|
|
49
|
+
/**
|
|
50
|
+
* Index of the skill files a production build ships, written by `eve build`.
|
|
51
|
+
* eve owns the listing rather than deriving it from storage keys, so real
|
|
52
|
+
* paths never pass through unstorage key normalization. Entries are arrays,
|
|
53
|
+
* not object keys, so names such as `__proto__` stay plain data.
|
|
54
|
+
*/
|
|
55
|
+
export interface SkillFilesIndex {
|
|
56
|
+
readonly version: 1;
|
|
57
|
+
/** `[skill, files, directories]`, sorted by skill then path. */
|
|
58
|
+
readonly skills: readonly (readonly [
|
|
59
|
+
skill: string,
|
|
60
|
+
files: readonly SkillFilesIndexEntry[],
|
|
61
|
+
directories: readonly string[]
|
|
62
|
+
])[];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Storage key of a shipped skill file: its SHA-256 with a `.bin` name. `.bin`
|
|
66
|
+
* makes Nitro inline the file as a `Uint8Array` whatever its real extension,
|
|
67
|
+
* and a hex name is left unchanged by unstorage key normalization.
|
|
68
|
+
*/
|
|
69
|
+
export declare function skillFileStorageKey(sha256: string): string;
|
|
70
|
+
/** The subset of an unstorage `Storage` the server asset source reads with. */
|
|
71
|
+
export interface SkillFileStorage {
|
|
72
|
+
getItemRaw(key: string): Promise<unknown>;
|
|
73
|
+
}
|
|
74
|
+
/** Opens a Nitro server asset storage, e.g. `useStorage("assets:eve-skills")`. */
|
|
75
|
+
export type OpenSkillFileStorage = (base: string) => Promise<SkillFileStorage>;
|
|
76
|
+
/**
|
|
77
|
+
* Selects the skill file source for the active compiled artifacts.
|
|
78
|
+
*
|
|
79
|
+
* Skill files are materialized under the node's workspace resource root by
|
|
80
|
+
* `compiler/workspace-resources.ts`. Disk artifacts (dev) read that tree with
|
|
81
|
+
* {@link createDiskSkillFileSource}; bundled artifacts (production builds)
|
|
82
|
+
* read the Nitro server assets `eve build` registers for the root agent.
|
|
83
|
+
*/
|
|
84
|
+
export declare function createCompiledSkillFileSource(input: {
|
|
85
|
+
readonly compiledArtifactsSource: RuntimeCompiledArtifactsSource;
|
|
86
|
+
readonly workspaceResourceRoot: CompiledWorkspaceResourceRoot;
|
|
87
|
+
readonly openStorage?: OpenSkillFileStorage;
|
|
88
|
+
}): SkillFileSource;
|
|
89
|
+
/**
|
|
90
|
+
* Reads skill files from a materialized `skills/<name>/` tree.
|
|
91
|
+
*
|
|
92
|
+
* Only regular files reached through real directories are served: a
|
|
93
|
+
* symlinked skill root lists nothing, listing skips symlinks, every path
|
|
94
|
+
* component is checked with `lstat` before opening, the leaf is opened with
|
|
95
|
+
* `O_NOFOLLOW` where the platform defines it, and the `realpath` of the
|
|
96
|
+
* target must stay under the `realpath` of the skill root. These checks are
|
|
97
|
+
* not atomic; the tree is the app's own compile output, so a writer that
|
|
98
|
+
* could race them can already change what is served.
|
|
99
|
+
*/
|
|
100
|
+
export declare function createDiskSkillFileSource(skillsRoot: string): SkillFileSource;
|
|
101
|
+
/**
|
|
102
|
+
* Reads one file of one skill, byte for byte, given any caller-supplied path.
|
|
103
|
+
*
|
|
104
|
+
* With no `path`, reads the skill's entry markdown under whatever case variant
|
|
105
|
+
* of `SKILL.md` it was authored with. An explicit top-level `SKILL.md` matches
|
|
106
|
+
* the entry file case-insensitively too; every other path must match a listed
|
|
107
|
+
* file exactly. Files over {@link MAX_SKILL_FILE_BYTES} are `too-large`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function readSkillFile(input: {
|
|
110
|
+
readonly path?: string;
|
|
111
|
+
readonly skill: string;
|
|
112
|
+
readonly source: SkillFileSource;
|
|
113
|
+
}): Promise<Uint8Array>;
|
|
114
|
+
export declare function comparePaths(left: string, right: string): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createHash}from"node:crypto";import{lstat,open,readdir,realpath}from"node:fs/promises";import{constants}from"node:fs";import nodePath from"node:path";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";const MAX_SKILL_FILE_BYTES=524288,SKILL_ENTRY_FILE_NAME=`SKILL.md`;function isSkillEntryFileName(e){return e.toLowerCase()===`skill.md`}var SkillReadError=class extends Error{code;constructor(e,t){super(t),this.name=`SkillReadError`,this.code=e}};const SKILL_FILES_SERVER_ASSET_BASE=`eve-skills`,SKILL_FILES_INDEX_SERVER_ASSET_BASE=`eve-skill-index`,SKILL_FILES_INDEX_KEY=`skills.json`;function skillFileStorageKey(e){return`${e}.bin`}const openNitroStorage=async e=>{let{useStorage:t}=await import(`nitro/storage`);return t(`assets:${e}`)};function createCompiledSkillFileSource(e){if(e.compiledArtifactsSource.kind!==`disk`)return createServerAssetSkillFileSource(e.openStorage??openNitroStorage);let{compileDirectoryPath:t}=resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot);return createDiskSkillFileSource(`${t}/${e.workspaceResourceRoot.logicalPath}/skills`)}function createServerAssetSkillFileSource(e){let t,loadIndex=()=>(t??=e(SKILL_FILES_INDEX_SERVER_ASSET_BASE).then(e=>e.getItemRaw(SKILL_FILES_INDEX_KEY)).then(parseSkillFilesIndex),t.catch(()=>{t=void 0}),t);return{async listFiles(e){return((await loadIndex()).get(e)?.files??[]).map(([e,t])=>({path:e,size:t}))},async listDirectories(e){return(await loadIndex()).get(e)?.directories??[]},async readFile(t,n){let r=(await loadIndex()).get(t)?.files.find(([e])=>e===n);if(r===void 0)throw unknownFile(t,n);let[,i,a]=r;if(a===null)throw tooLarge(t,n,i);let o=await(await e(SKILL_FILES_SERVER_ASSET_BASE)).getItemRaw(skillFileStorageKey(a));if(!(o instanceof Uint8Array)||o.byteLength!==i||createHash(`sha256`).update(o).digest(`hex`)!==a)throw new SkillReadError(`unavailable`,`Skill "${t}" file "${n}" does not match its build index; this build did not ship it byte for byte.`);return o}}}function parseSkillFilesIndex(e){let t=typeof e==`string`?e:e instanceof Uint8Array?new TextDecoder().decode(e):``,n;try{n=t===``?void 0:JSON.parse(t)}catch{n=void 0}if(!isSkillFilesIndex(n))throw new SkillReadError(`unavailable`,"Skill files are not available: this server was not built by `eve build`, so it carries no skill files.");return new Map(n.skills.map(([e,t,n])=>[e,{directories:n,files:t}]))}function isSkillFilesIndex(e){if(typeof e!=`object`||!e)return!1;let{skills:t,version:n}=e;return n===1&&Array.isArray(t)&&t.every(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1])&&e[1].every(e=>Array.isArray(e)&&e.length===3&&typeof e[0]==`string`&&Number.isSafeInteger(e[1])&&(typeof e[2]==`string`||e[2]===null))&&Array.isArray(e[2])&&e[2].every(e=>typeof e==`string`))}function createDiskSkillFileSource(e){return{async listFiles(t){let n=`${e}/${t}`;if(!await isRealDirectory(n))return[];let{files:r}=await walkSkill(n);return r.sort((e,t)=>comparePaths(e.path,t.path))},async listDirectories(t){let n=`${e}/${t}`;if(!await isRealDirectory(n))return[];let{directories:r}=await walkSkill(n);return r.sort(comparePaths)},async readFile(t,n){let r=`${e}/${t}`;if(!await isRealDirectory(r))throw unknownFile(t,n);let i=n.split(`/`),a=r;for(let[e,r]of i.entries()){a=`${a}/${r}`;let o=await lstatOrUndefined(a),s=e===i.length-1;if(o===void 0||(s?!o.isFile():!o.isDirectory()))throw unknownFile(t,n)}let[o,s]=await Promise.all([realpath(r),realpath(a)]),c=nodePath.relative(o,s);if(c===``||nodePath.isAbsolute(c)||c.split(nodePath.sep)[0]===`..`)throw unknownFile(t,n);let l=await open(a,constants.O_RDONLY|(constants.O_NOFOLLOW??0));try{let e=await l.stat();if(!e.isFile())throw unknownFile(t,n);if(e.size>524288)throw tooLarge(t,n,e.size);return new Uint8Array(await l.readFile())}finally{await l.close()}}}}async function lstatOrUndefined(e){try{return await lstat(e)}catch(e){if(e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`))return;throw e}}async function isRealDirectory(e){return(await lstatOrUndefined(e))?.isDirectory()===!0}async function walkSkill(e){let t=[],n=[],walk=async(e,r)=>{for(let i of await readdir(e,{withFileTypes:!0})){let a=r===``?i.name:`${r}/${i.name}`;if(i.isDirectory())n.push(a),await walk(`${e}/${i.name}`,a);else if(i.isFile()){let n=await lstatOrUndefined(`${e}/${i.name}`);n?.isFile()===!0&&t.push({path:a,size:n.size})}}};return await walk(e,``),{directories:n,files:t}}function unknownFile(e,t){return new SkillReadError(`unknown-file`,`Skill "${e}" has no file "${t}".`)}function tooLarge(e,t,n){return new SkillReadError(`too-large`,`Skill "${e}" file "${t}" is ${n} bytes, over the ${MAX_SKILL_FILE_BYTES}-byte limit.`)}async function readSkillFile(e){let t=e.path??`SKILL.md`;assertRelativeSkillPath(t);let n=await e.source.listFiles(e.skill),r=n.find(e=>e.path===t)??(isSkillEntryFileName(t)?n.find(e=>isSkillEntryFileName(e.path)):void 0);if(r===void 0)throw unknownFile(e.skill,t);if(r.size>524288)throw tooLarge(e.skill,r.path,r.size);let i=await e.source.readFile(e.skill,r.path);if(i.byteLength>524288)throw tooLarge(e.skill,r.path,i.byteLength);return i}function assertRelativeSkillPath(e){let invalid=t=>new SkillReadError(`invalid-path`,`Skill file path "${e}" ${t}.`);if(e.length===0)throw invalid(`must not be empty`);if(e.startsWith(`/`)||/^[A-Za-z]:/.test(e))throw invalid(`must be relative to the skill root`);if(e.includes(`\\`)||e.includes(`\0`))throw invalid(`must use "/" separators and contain no NUL bytes`);if(e.split(`/`).some(e=>e===``||e===`.`||e===`..`))throw invalid(`must not contain empty, ".", or ".." segments`)}function comparePaths(e,t){return e<t?-1:+(e>t)}export{MAX_SKILL_FILE_BYTES,SKILL_ENTRY_FILE_NAME,SKILL_FILES_INDEX_KEY,SKILL_FILES_INDEX_SERVER_ASSET_BASE,SKILL_FILES_SERVER_ASSET_BASE,SkillReadError,comparePaths,createCompiledSkillFileSource,createDiskSkillFileSource,isSkillEntryFileName,readSkillFile,skillFileStorageKey};
|
|
@@ -165,6 +165,7 @@ export type SessionCommand = {
|
|
|
165
165
|
/** Initial workflow title when delivering to a prewarmed session. */
|
|
166
166
|
readonly title?: string;
|
|
167
167
|
readonly kind: "send";
|
|
168
|
+
readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
|
|
168
169
|
readonly payload: DeliverPayload;
|
|
169
170
|
readonly delivery?: ChannelDeliveryMetadata;
|
|
170
171
|
readonly requestId?: string;
|
|
@@ -220,6 +221,7 @@ export interface DispatchSessionInput<TCommand extends SessionCommand = SessionC
|
|
|
220
221
|
* metadata so both cross the durable hook boundary outside adapter-owned data.
|
|
221
222
|
*/
|
|
222
223
|
export interface DeliverHookPayload {
|
|
224
|
+
readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
|
|
223
225
|
/** Initial workflow title; ignored once session initialization has run. */
|
|
224
226
|
readonly title?: string;
|
|
225
227
|
readonly auth?: SessionAuthContext | null;
|
|
@@ -357,6 +359,8 @@ export interface SessionCapabilities {
|
|
|
357
359
|
* subagent tool wrapper).
|
|
358
360
|
*/
|
|
359
361
|
export interface RunInput {
|
|
362
|
+
/** Server-supplied provenance inherited by locally delegated scheduled work. */
|
|
363
|
+
readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
|
|
360
364
|
readonly adapter: ChannelAdapter<any>;
|
|
361
365
|
/**
|
|
362
366
|
* Registered channel name for root sessions started from an authored
|
|
@@ -3469,6 +3469,10 @@ function reduceContent(data, event) {
|
|
|
3469
3469
|
}
|
|
3470
3470
|
case "action.result": {
|
|
3471
3471
|
if (conversationProjection(data).calls[event.data.result.callId]?.taskId !== void 0) return data;
|
|
3472
|
+
if (event.data.error?.code === "MODEL_CALL_ATTEMPT_RETRIED") return updateAssistantMessage(data, event.data.turnId, (message) => ({
|
|
3473
|
+
...message,
|
|
3474
|
+
parts: message.parts.filter((part) => part.type !== "dynamic-tool" || part.toolCallId !== event.data.result.callId)
|
|
3475
|
+
}));
|
|
3472
3476
|
const existing = findToolPart(data, event.data.result.callId);
|
|
3473
3477
|
const descriptor = normalizeActionResult(event.data.result);
|
|
3474
3478
|
const succeeded = event.data.status === void 0 || event.data.status === "completed" ? event.data.result.isError !== true && event.data.error === void 0 : false;
|
|
@@ -3570,7 +3574,7 @@ function reduceContent(data, event) {
|
|
|
3570
3574
|
...message.metadata,
|
|
3571
3575
|
status: "complete"
|
|
3572
3576
|
},
|
|
3573
|
-
parts:
|
|
3577
|
+
parts: removeUnsettledToolParts(closeStreamingRuns(message.parts), conversationProjection(data))
|
|
3574
3578
|
}));
|
|
3575
3579
|
default: return data;
|
|
3576
3580
|
}
|
|
@@ -3605,8 +3609,14 @@ function closeStreamingRuns(parts, stepIndex) {
|
|
|
3605
3609
|
state: "done"
|
|
3606
3610
|
} : part);
|
|
3607
3611
|
}
|
|
3608
|
-
function
|
|
3609
|
-
return parts.filter((part) =>
|
|
3612
|
+
function removeUnsettledToolParts(parts, projection) {
|
|
3613
|
+
return parts.filter((part) => {
|
|
3614
|
+
if (part.type !== "dynamic-tool") return true;
|
|
3615
|
+
if (part.state === "input-streaming") return false;
|
|
3616
|
+
if (part.state !== "input-available") return true;
|
|
3617
|
+
const call = projection.calls[part.toolCallId];
|
|
3618
|
+
return call === void 0 || call.taskId !== void 0 || reportedCallStatus(projection, call) !== "running";
|
|
3619
|
+
});
|
|
3610
3620
|
}
|
|
3611
3621
|
function updateAssistantMessage(data, turnId, update) {
|
|
3612
3622
|
const message = data.messages.find((message) => message.role === "assistant" && message.metadata?.turnId === turnId) ?? createAssistantMessage(turnId);
|
|
@@ -3470,6 +3470,10 @@ function reduceContent(data, event) {
|
|
|
3470
3470
|
}
|
|
3471
3471
|
case "action.result": {
|
|
3472
3472
|
if (conversationProjection(data).calls[event.data.result.callId]?.taskId !== void 0) return data;
|
|
3473
|
+
if (event.data.error?.code === "MODEL_CALL_ATTEMPT_RETRIED") return updateAssistantMessage(data, event.data.turnId, (message) => ({
|
|
3474
|
+
...message,
|
|
3475
|
+
parts: message.parts.filter((part) => part.type !== "dynamic-tool" || part.toolCallId !== event.data.result.callId)
|
|
3476
|
+
}));
|
|
3473
3477
|
const existing = findToolPart(data, event.data.result.callId);
|
|
3474
3478
|
const descriptor = normalizeActionResult(event.data.result);
|
|
3475
3479
|
const succeeded = event.data.status === void 0 || event.data.status === "completed" ? event.data.result.isError !== true && event.data.error === void 0 : false;
|
|
@@ -3571,7 +3575,7 @@ function reduceContent(data, event) {
|
|
|
3571
3575
|
...message.metadata,
|
|
3572
3576
|
status: "complete"
|
|
3573
3577
|
},
|
|
3574
|
-
parts:
|
|
3578
|
+
parts: removeUnsettledToolParts(closeStreamingRuns(message.parts), conversationProjection(data))
|
|
3575
3579
|
}));
|
|
3576
3580
|
default: return data;
|
|
3577
3581
|
}
|
|
@@ -3606,8 +3610,14 @@ function closeStreamingRuns(parts, stepIndex) {
|
|
|
3606
3610
|
state: "done"
|
|
3607
3611
|
} : part);
|
|
3608
3612
|
}
|
|
3609
|
-
function
|
|
3610
|
-
return parts.filter((part) =>
|
|
3613
|
+
function removeUnsettledToolParts(parts, projection) {
|
|
3614
|
+
return parts.filter((part) => {
|
|
3615
|
+
if (part.type !== "dynamic-tool") return true;
|
|
3616
|
+
if (part.state === "input-streaming") return false;
|
|
3617
|
+
if (part.state !== "input-available") return true;
|
|
3618
|
+
const call = projection.calls[part.toolCallId];
|
|
3619
|
+
return call === void 0 || call.taskId !== void 0 || reportedCallStatus(projection, call) !== "running";
|
|
3620
|
+
});
|
|
3611
3621
|
}
|
|
3612
3622
|
function updateAssistantMessage(data, turnId, update) {
|
|
3613
3623
|
const message = data.messages.find((message) => message.role === "assistant" && message.metadata?.turnId === turnId) ?? createAssistantMessage(turnId);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{readFileSync}from"node:fs";import{join}from"node:path";import pc from"#compiled/picocolors/index.js";import{DEFAULT_AGENT_MODEL_ID}from"#shared/default-agent-model.js";const SETUP_SECTIONS=[`intro-setup.md`,`collect-intent.md`,`vercel-connect.md`,`scaffold.md`,`build-and-verify.md`],HANDOFF_SECTIONS=[`intro-handoff.md`,`collect-intent.md`,`vercel-connect.md`,`build-and-verify.md`];function compose(e,t){let n=e.map(e=>readFileSync(new URL(`./agent-prompt/${e}`,import.meta.url),`utf8`).trim()).join(`
|
|
2
2
|
|
|
3
3
|
`).replaceAll(`{{devCommand}}`,()=>t.devCommand),{workingDirectory:r}=t;return r===void 0?n:n.replaceAll(`{{workingDirectory}}`,()=>r)}function initAgentInstructions(){return compose(SETUP_SECTIONS,{devCommand:`npx eve dev`})}function initAgentReadySummary(e,t,n={}){let r=e??DEFAULT_AGENT_MODEL_ID,i=e===void 0?pc.dim(` (eve default)`):``,a=n.workspace?`${pc.green(`✓`)} Agents ${pc.bold(join(t,`agents`))}`:`${pc.green(`✓`)} Instructions ${pc.bold(join(t,`agent/instructions.md`))}`;return[`${pc.green(`✓`)} Model ${pc.bold(r)}${i}`,a].join(`
|
|
4
4
|
`)}function initAgentDevHandoff(e){return compose(HANDOFF_SECTIONS,{devCommand:e.devCommand,workingDirectory:e.projectPath})}function initExtensionInstructions(){return[`You are scaffolding an eve extension package (a reusable package of tools,`,`connections, skills, and hooks that a consuming agent mounts under`,`agent/extensions/).`,``,`Ask the user for a package directory name, then run:`,``,` npx eve@latest extension init <name>`,``,`That creates the package, installs dependencies, and initializes Git. It`,`prints what was set up and how to author, build, and mount the extension —`,`it does not start eve dev (extensions are not standalone agents).`,``,"Build with `eve extension build` (or the package `build` script)."].join(`
|