eve 0.67.1 → 0.68.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 +34 -0
- package/dist/src/channel/channel-address.d.ts +2 -2
- package/dist/src/channel/compiled-channel.d.ts +3 -2
- package/dist/src/channel/cross-channel-receive.d.ts +1 -18
- package/dist/src/channel/cross-channel-receive.js +1 -1
- package/dist/src/channel/forwarded-principal.d.ts +3 -2
- package/dist/src/channel/resolve-text.d.ts +2 -1
- package/dist/src/channel/schedule.d.ts +2 -2
- package/dist/src/channel/session-callback.d.ts +2 -1
- package/dist/src/channel/types.d.ts +3 -7
- package/dist/src/cli/acp/command.d.ts +2 -1
- package/dist/src/cli/agent-command.d.ts +2 -1
- package/dist/src/cli/agent-detection.d.ts +0 -1
- package/dist/src/cli/agent-detection.js +1 -1
- package/dist/src/cli/application-command.d.ts +2 -1
- package/dist/src/cli/application-root.d.ts +3 -6
- package/dist/src/cli/application-root.js +1 -1
- package/dist/src/cli/commands/init-target.d.ts +1 -1
- package/dist/src/cli/commands/init-telemetry.d.ts +2 -1
- package/dist/src/cli/commands/registry-declared-setups.d.ts +2 -1
- package/dist/src/cli/commands/registry-install-transaction.d.ts +0 -13
- package/dist/src/cli/commands/registry-install-transaction.js +1 -1
- package/dist/src/cli/commands/registry-pnpm-build-policy-flow.d.ts +1 -1
- package/dist/src/cli/commands/registry-presentation.d.ts +0 -1
- package/dist/src/cli/commands/registry-presentation.js +1 -1
- package/dist/src/cli/commands/registry-project.d.ts +2 -1
- package/dist/src/cli/commands/registry.d.ts +0 -4
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/setup-headless.d.ts +2 -1
- package/dist/src/cli/commands/vercel-non-interactive.d.ts +2 -1
- package/dist/src/cli/dev/command-options.d.ts +1 -0
- package/dist/src/cli/dev/command.js +1 -1
- package/dist/src/cli/dev/diagnostic-dump.d.ts +0 -2
- package/dist/src/cli/dev/diagnostic-dump.js +1 -1
- package/dist/src/cli/dev/diagnostic-sink.d.ts +3 -2
- package/dist/src/cli/dev/local-server-process.js +1 -1
- package/dist/src/cli/dev/tui/agent-header.d.ts +2 -1
- package/dist/src/cli/dev/tui/argument-typeahead.d.ts +2 -1
- package/dist/src/cli/dev/tui/dev-rebuild-status.d.ts +2 -1
- package/dist/src/cli/dev/tui/diagnostic-presentation.d.ts +2 -1
- package/dist/src/cli/dev/tui/errors.d.ts +2 -7
- package/dist/src/cli/dev/tui/errors.js +1 -1
- package/dist/src/cli/dev/tui/flow-drawer.d.ts +2 -1
- package/dist/src/cli/dev/tui/line-editor.d.ts +1 -1
- package/dist/src/cli/dev/tui/mcp-connection-status.d.ts +2 -1
- package/dist/src/cli/dev/tui/message-queue.d.ts +4 -3
- package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +2 -1
- package/dist/src/cli/dev/tui/provider-picker.d.ts +3 -2
- package/dist/src/cli/dev/tui/question-panel.d.ts +2 -1
- package/dist/src/cli/dev/tui/registry-result-message.d.ts +3 -4
- package/dist/src/cli/dev/tui/registry-result-message.js +1 -1
- package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +3 -2
- package/dist/src/cli/dev/tui/setup-panel.d.ts +2 -2
- package/dist/src/cli/dev/tui/setup-selection-input.d.ts +2 -2
- package/dist/src/cli/dev/tui/status-line.d.ts +2 -1
- package/dist/src/cli/dev/tui/stream-format.d.ts +3 -2
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -2
- package/dist/src/cli/dev/tui/theme.d.ts +1 -1
- package/dist/src/cli/dev/tui/tool-block-groups.d.ts +3 -2
- package/dist/src/cli/dev/tui/tool-presentation.d.ts +2 -1
- package/dist/src/cli/dev/tui/traces/trace-content.d.ts +0 -9
- package/dist/src/cli/dev/tui/traces/trace-content.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-view.d.ts +3 -2
- package/dist/src/cli/dev/tui/traces/trace-viewer-session.d.ts +2 -1
- package/dist/src/cli/dev/tui/traces/trace-viewer-state.d.ts +2 -3
- package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/ui-options.d.ts +3 -2
- package/dist/src/cli/dev/url-target.d.ts +2 -1
- package/dist/src/cli/invoke/command.d.ts +0 -11
- package/dist/src/cli/invoke/command.js +1 -1
- package/dist/src/cli/invoke/result.d.ts +1 -1
- package/dist/src/cli/telemetry/index.d.ts +0 -6
- package/dist/src/cli/telemetry/preference.d.ts +2 -1
- package/dist/src/cli/ui/alt-screen.d.ts +3 -2
- package/dist/src/cli/ui/live-region.d.ts +3 -2
- package/dist/src/cli/ui/output.d.ts +1 -1
- package/dist/src/client/eve-agent-store-helpers.d.ts +0 -1
- package/dist/src/client/eve-agent-store-helpers.js +1 -1
- package/dist/src/client/message-action-parts.d.ts +2 -1
- package/dist/src/client/session-utils.d.ts +3 -2
- package/dist/src/compiled/.vendor-stamp.json +6 -6
- package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +55 -55
- package/dist/src/compiled/@vercel/blob/index.js +1 -1
- package/dist/src/compiled/@vercel/oidc/index.js +1 -1
- 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/constants.d.ts +4 -3
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +23 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/hook-wake.d.ts +69 -36
- package/dist/src/compiled/@workflow/core/runtime/lifecycle-hooks.d.ts +25 -22
- package/dist/src/compiled/@workflow/core/runtime/run-spec-version.d.ts +16 -0
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +59 -1
- package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +3 -2
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +34 -12
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/serialization.d.ts +7 -2
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +29 -0
- package/dist/src/compiled/@workflow/core/types.d.ts +1 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +13 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +14 -4
- package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +2 -1
- package/dist/src/compiled/@workflow/world/shared.d.ts +24 -0
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +23 -0
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-DzJovO_f.js → attribute-changes-D721NpZv.js} +3 -3
- package/dist/src/compiled/_chunks/workflow/{dist-BQSf8Hax.js → dist-BUFGAKRb.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-CaNNONeg.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{frames-qKc30rjg.js → frames-Dr9fHWdo.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/{global-BQnKzRXo.js → global-DKbOgrts.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/helpers-DkKxg_yn.js +1 -0
- package/dist/src/compiled/_chunks/workflow/logger-D4GJNTk4.js +14 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-uTW-jBYz.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-5DmiMN9b.js +1 -0
- package/dist/src/compiled/_chunks/workflow/serialization-CNIYl1D3.js +3 -0
- package/dist/src/compiled/_chunks/workflow/sleep-DFKgN7UG.js +1 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-3_1djUuL.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{ws-transport-BrsMYqJg.js → ws-transport--rYOVIaf.js} +1 -1
- package/dist/src/compiler/artifacts.d.ts +4 -27
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/compile-agent.d.ts +2 -1
- package/dist/src/compiler/compile-agent.js +1 -1
- package/dist/src/compiler/diagnostics.d.ts +0 -11
- package/dist/src/compiler/diagnostics.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +6 -6
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +0 -4
- package/dist/src/compiler/module-map.d.ts +1 -5
- package/dist/src/compiler/module-map.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-connection.d.ts +2 -1
- package/dist/src/compiler/normalize-instructions.d.ts +2 -6
- package/dist/src/compiler/normalize-instructions.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.d.ts +0 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-skill.d.ts +2 -1
- package/dist/src/compiler/project-sources.d.ts +0 -14
- package/dist/src/compiler/project-sources.js +1 -1
- package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
- package/dist/src/compiler/source-graph.d.ts +1 -2
- package/dist/src/compiler/source-graph.js +1 -1
- package/dist/src/computer-use/extension/extension.d.ts +2 -0
- package/dist/src/computer-use/extension/extension.js +1 -0
- package/dist/src/computer-use/extension/lib/command-failure.d.ts +7 -0
- package/dist/src/computer-use/extension/lib/command-failure.js +2 -0
- package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-driver-source.d.ts +0 -2
- package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-driver-source.js +57 -57
- package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-sandbox.js +1 -1
- package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use.d.ts +1 -1
- package/dist/src/computer-use/extension/lib/sandbox.d.ts +1 -0
- package/dist/src/computer-use/extension/lib/sandbox.js +1 -0
- package/dist/src/computer-use/extension/lib/shell.d.ts +1 -0
- package/dist/src/computer-use/extension/lib/shell.js +1 -0
- package/dist/src/computer-use/tools.d.ts +1 -0
- package/dist/src/computer-use/tools.js +1 -0
- package/dist/src/context/build-base-tool-context.d.ts +2 -1
- package/dist/src/context/dynamic-tool-lifecycle.d.ts +1 -5
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-metadata.d.ts +0 -1
- package/dist/src/context/dynamic-tool-metadata.js +1 -1
- package/dist/src/context/hook-lifecycle.d.ts +4 -3
- package/dist/src/context/hook-lifecycle.js +1 -1
- package/dist/src/context/memory-lifecycle.d.ts +0 -8
- package/dist/src/context/memory-lifecycle.js +1 -1
- package/dist/src/discover/connections.d.ts +0 -15
- package/dist/src/discover/connections.js +1 -1
- package/dist/src/discover/diagnostics.d.ts +0 -8
- package/dist/src/discover/diagnostics.js +1 -1
- package/dist/src/discover/discover-agent.js +1 -1
- package/dist/src/discover/discover-subagent.d.ts +0 -1
- package/dist/src/discover/discover-subagent.js +1 -1
- package/dist/src/discover/extensions.d.ts +3 -10
- package/dist/src/discover/extensions.js +1 -1
- package/dist/src/discover/filesystem.d.ts +5 -9
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/discover/grammar.d.ts +0 -46
- package/dist/src/discover/grammar.js +1 -1
- package/dist/src/discover/manifest.d.ts +5 -4
- package/dist/src/discover/memory.d.ts +0 -1
- package/dist/src/discover/memory.js +1 -1
- package/dist/src/discover/named-source-directory.js +1 -1
- package/dist/src/discover/project-source.d.ts +2 -1
- package/dist/src/discover/project.js +1 -1
- package/dist/src/discover/sandbox.js +1 -1
- package/dist/src/discover/skills.d.ts +0 -4
- package/dist/src/discover/skills.js +1 -1
- package/dist/src/evals/cli/eval-client.d.ts +2 -1
- package/dist/src/evals/judge.d.ts +2 -1
- package/dist/src/evals/runner/execute-task.d.ts +1 -1
- package/dist/src/evals/types.d.ts +1 -1
- package/dist/src/eve-channel/support.d.ts +1 -3
- package/dist/src/eve-channel/support.js +1 -1
- package/dist/src/execution/continuation-conflict-step.js +1 -1
- package/dist/src/execution/dynamic-workflow/schema.d.ts +2 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/effective-agent-config.d.ts +2 -1
- package/dist/src/execution/eve-workflow-attributes.d.ts +3 -5
- package/dist/src/execution/eve-workflow-attributes.js +1 -1
- package/dist/src/execution/history-view.d.ts +2 -1
- package/dist/src/execution/node-step.d.ts +3 -2
- package/dist/src/execution/proxied-deliver-step.js +1 -1
- package/dist/src/execution/publish-channel-event.js +1 -1
- package/dist/src/execution/sandbox/active-handles.d.ts +2 -4
- package/dist/src/execution/sandbox/active-handles.js +1 -1
- package/dist/src/execution/sandbox/bash.d.ts +2 -1
- package/dist/src/execution/sandbox/bindings/docker.js +1 -1
- package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -6
- package/dist/src/execution/sandbox/bindings/immutable-resources.js +1 -1
- package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +3 -2
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -3
- package/dist/src/execution/sandbox/bindings/microsandbox-options.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
- package/dist/src/execution/sandbox/bindings/vercel.d.ts +1 -1
- package/dist/src/execution/sandbox/dockerfile.d.ts +0 -1
- package/dist/src/execution/sandbox/dockerfile.js +1 -1
- package/dist/src/execution/sandbox/ensure.d.ts +2 -1
- package/dist/src/execution/sandbox/ensure.js +1 -1
- package/dist/src/execution/sandbox/prewarm.d.ts +1 -18
- package/dist/src/execution/sandbox/prewarm.js +1 -1
- package/dist/src/execution/sandbox/require-sandbox.d.ts +0 -11
- package/dist/src/execution/sandbox/require-sandbox.js +1 -1
- package/dist/src/execution/sandbox/truncate-output.d.ts +2 -5
- package/dist/src/execution/sandbox/truncate-output.js +2 -2
- package/dist/src/execution/session/admission.d.ts +3 -2
- package/dist/src/execution/session/event-sink.d.ts +2 -1
- package/dist/src/execution/session/finalization.d.ts +2 -1
- package/dist/src/execution/session/handoff.d.ts +3 -2
- package/dist/src/execution/session/route-selected-delivery.d.ts +2 -1
- package/dist/src/execution/session/timeout-control.d.ts +2 -1
- package/dist/src/execution/session/timeout-steps.js +1 -1
- package/dist/src/execution/session/turn-event-handler.d.ts +27 -0
- package/dist/src/execution/session/turn-event-handler.js +1 -0
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session-activity.d.ts +0 -3
- package/dist/src/execution/session-activity.js +1 -1
- package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
- package/dist/src/execution/session.d.ts +3 -2
- package/dist/src/execution/stable-workflow-names.d.ts +0 -6
- package/dist/src/execution/stable-workflow-names.js +1 -1
- package/dist/src/execution/task-input-response-route.js +1 -1
- package/dist/src/execution/tasks/child/notify.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/ask-question-workflow.js +1 -1
- package/dist/src/execution/tools/connection-search.js +2 -2
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/subagent/emit-event-step.js +1 -1
- package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +2 -1
- package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +4 -3
- package/dist/src/execution/tools/workflow/answer.d.ts +4 -1
- package/dist/src/execution/tools/workflow/answer.js +1 -1
- package/dist/src/execution/tools/workflow/background.d.ts +2 -6
- package/dist/src/execution/tools/workflow/background.js +1 -1
- package/dist/src/execution/tools/workflow/owner-channels.d.ts +1 -1
- package/dist/src/execution/tools/workflow/workflow-owner-background.d.ts +2 -1
- package/dist/src/execution/web-fetch/execute.d.ts +2 -2
- package/dist/src/execution/web-fetch/request.d.ts +2 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/extensions/code/extension/lib/generated-paths.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/grep-search.d.ts +5 -5
- package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
- package/dist/src/extensions/code/extension/lib/guidelines.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/patch.d.ts +3 -2
- package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +1 -2
- package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
- package/dist/src/extensions/code/extension/lib/prwatch-registry.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/sandbox.d.ts +3 -2
- package/dist/src/extensions/code/extension/lib/sandbox.js +1 -1
- package/dist/src/extensions/code/extension/lib/signed-commit.d.ts +1 -1
- package/dist/src/extensions/code/extension/lib/signed-commit.js +2 -2
- package/dist/src/extensions/code/tools.d.ts +2 -1
- package/dist/src/extensions/code/tools.js +1 -1
- package/dist/src/framework/host-inventory.d.ts +3 -2
- package/dist/src/harness/approval-candidates.d.ts +4 -3
- package/dist/src/harness/approval-delivery-coordinator.d.ts +2 -1
- package/dist/src/harness/compaction-prompt.d.ts +2 -1
- package/dist/src/harness/coordination.d.ts +0 -4
- package/dist/src/harness/coordination.js +1 -1
- package/dist/src/harness/input-requests.d.ts +1 -10
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +0 -5
- package/dist/src/harness/pending-input-batches.js +1 -1
- package/dist/src/harness/provider-tools.d.ts +2 -1
- package/dist/src/harness/session-limit-continuation.d.ts +0 -4
- package/dist/src/harness/session-limit-continuation.js +1 -1
- package/dist/src/harness/session-usage-limits.d.ts +2 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tool-model-output.d.ts +2 -1
- package/dist/src/harness/turn-client-context.d.ts +2 -1
- package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
- package/dist/src/instrumentation/lifecycle.d.ts +2 -2
- package/dist/src/instrumentation/lifecycle.js +1 -1
- package/dist/src/instrumentation/state.d.ts +2 -2
- package/dist/src/internal/agent-name.d.ts +0 -2
- package/dist/src/internal/agent-name.js +1 -1
- package/dist/src/internal/application/build-profile.d.ts +2 -2
- package/dist/src/internal/application/dev-environment.d.ts +2 -8
- package/dist/src/internal/application/dev-environment.js +1 -1
- package/dist/src/internal/application/output-publication.d.ts +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.d.ts +0 -5
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/application/tsconfig-dependencies.d.ts +0 -16
- package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-definition/source-identity.d.ts +1 -1
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/bundler/extension-scope-plugin.d.ts +2 -1
- package/dist/src/internal/bundler/nitro-rolldown.d.ts +0 -11
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
- package/dist/src/internal/eve-project-root.d.ts +0 -3
- package/dist/src/internal/eve-project-root.js +1 -1
- package/dist/src/internal/external-resources-snapshot.d.ts +1 -1
- package/dist/src/internal/external-resources.d.ts +0 -1
- package/dist/src/internal/external-resources.js +1 -1
- package/dist/src/internal/helpers/markdown.js +1 -1
- package/dist/src/internal/invocation/metadata.d.ts +1 -1
- package/dist/src/internal/materialized-authored-modules.d.ts +2 -1
- package/dist/src/internal/mcp/protected-resource.d.ts +2 -1
- package/dist/src/internal/mcp/streamable-http-server.d.ts +4 -5
- package/dist/src/internal/mcp/streamable-http-server.js +1 -1
- package/dist/src/internal/model-catalog.d.ts +2 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts-retention.d.ts +2 -2
- package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +2 -8
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-generation-metadata.d.ts +13 -0
- package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -0
- package/dist/src/internal/nitro/dev-runtime-source-snapshot.d.ts +0 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot.js +1 -1
- package/dist/src/internal/nitro/development-generation.d.ts +2 -1
- package/dist/src/internal/nitro/development-generation.js +1 -1
- package/dist/src/internal/nitro/host/channel-routes.d.ts +1 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +3 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-candidate.d.ts +2 -1
- package/dist/src/internal/nitro/host/dev-workflow-world-setup.d.ts +1 -0
- package/dist/src/internal/nitro/host/dev-workflow-world-setup.js +1 -1
- package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +1 -1
- package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
- package/dist/src/internal/nitro/host/schedule-task-routes.d.ts +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +1 -1
- package/dist/src/internal/nitro/host/types.d.ts +2 -0
- package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
- package/dist/src/internal/nitro/routes/channel-request-instrumentation.d.ts +2 -1
- package/dist/src/internal/nitro/routes/channel-route-context.d.ts +1 -1
- package/dist/src/internal/nitro/routes/runtime-stack.d.ts +2 -1
- package/dist/src/internal/resolve-model-endpoint-status.d.ts +2 -1
- package/dist/src/internal/vercel/assemble-eve-services.d.ts +3 -2
- package/dist/src/internal/vercel/eve-service-contribution.d.ts +2 -3
- package/dist/src/internal/vercel/eve-service-contribution.js +1 -1
- package/dist/src/internal/vercel/project-link.d.ts +2 -1
- package/dist/src/internal/vercel/project-link.js +1 -1
- package/dist/src/internal/workflow/cancel-expired-development-run.d.ts +2 -0
- package/dist/src/internal/workflow/cancel-expired-development-run.js +1 -0
- package/dist/src/internal/workflow/development-runtime-compatibility.d.ts +12 -0
- package/dist/src/internal/workflow/development-runtime-compatibility.js +1 -0
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/internal/workflow/development-world-codec.d.ts +2 -1
- package/dist/src/internal/workflow/development-world-protocol.d.ts +9 -0
- package/dist/src/internal/workflow/development-world-server.d.ts +2 -0
- package/dist/src/internal/workflow/development-world-server.js +1 -1
- package/dist/src/internal/workflow/is-inactive-workflow-run-error.d.ts +2 -0
- package/dist/src/internal/workflow/is-inactive-workflow-run-error.js +1 -0
- package/dist/src/internal/workflow/world-compatibility.d.ts +2 -1
- package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -9
- package/dist/src/internal/workflow-bundle/builder-support.js +2 -3
- package/dist/src/internal/workflow-bundle/dynamic-tool-transform.d.ts +0 -1
- package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
- package/dist/src/protocol/activity.d.ts +3 -3
- package/dist/src/protocol/activity.js +1 -1
- package/dist/src/protocol/baggage.d.ts +2 -2
- package/dist/src/protocol/cancel-turn.d.ts +0 -2
- package/dist/src/protocol/event-dedupe.d.ts +2 -1
- package/dist/src/protocol/event-id.d.ts +0 -6
- package/dist/src/protocol/event-id.js +1 -1
- package/dist/src/protocol/traceparent.d.ts +2 -1
- package/dist/src/public/channels/chat-sdk/audience.d.ts +2 -4
- package/dist/src/public/channels/chat-sdk/audience.js +1 -1
- package/dist/src/public/channels/discord/discordChannel.d.ts +1 -1
- package/dist/src/public/channels/github/api.d.ts +2 -12
- package/dist/src/public/channels/github/api.js +1 -1
- package/dist/src/public/channels/github/auth.d.ts +0 -9
- package/dist/src/public/channels/github/auth.js +1 -1
- package/dist/src/public/channels/github/binding.d.ts +3 -2
- package/dist/src/public/channels/github/checkout.d.ts +3 -3
- package/dist/src/public/channels/github/defaults.d.ts +3 -2
- package/dist/src/public/channels/github/githubChannel.d.ts +1 -1
- package/dist/src/public/channels/github/limits.d.ts +0 -2
- package/dist/src/public/channels/github/limits.js +2 -2
- package/dist/src/public/channels/github/pr-context.d.ts +2 -3
- package/dist/src/public/channels/github/pr-context.js +1 -1
- package/dist/src/public/channels/github/state.d.ts +2 -1
- package/dist/src/public/channels/github/verify.d.ts +2 -1
- package/dist/src/public/channels/linear/defaults.d.ts +2 -1
- package/dist/src/public/channels/linear/inbound-images.d.ts +2 -1
- package/dist/src/public/channels/slack/app-manifest.d.ts +3 -4
- package/dist/src/public/channels/slack/app-manifest.js +1 -1
- package/dist/src/public/channels/slack/inbound.d.ts +2 -1
- package/dist/src/public/channels/slack/model-context.d.ts +0 -18
- package/dist/src/public/channels/slack/model-context.js +1 -1
- package/dist/src/public/channels/slack/privacy.d.ts +2 -1
- package/dist/src/public/channels/slack/verify.d.ts +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +1 -1
- package/dist/src/public/channels/telegram/audience.d.ts +2 -3
- package/dist/src/public/channels/telegram/audience.js +1 -1
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +1 -1
- package/dist/src/public/channels/twilio/defaults.d.ts +0 -7
- package/dist/src/public/channels/twilio/defaults.js +1 -1
- package/dist/src/public/channels/twilio/routing.d.ts +2 -1
- package/dist/src/public/channels/twilio/twilioChannel.d.ts +1 -1
- package/dist/src/public/definitions/channel.d.ts +1 -1
- package/dist/src/public/definitions/hook.d.ts +12 -0
- package/dist/src/public/index.js +1 -1
- package/dist/src/public/memory/file/provider.js +1 -1
- package/dist/src/public/models/openai/chatgpt/model.d.ts +2 -1
- package/dist/src/public/models/openai/chatgpt/token-broker.d.ts +1 -1
- package/dist/src/public/nuxt/dev-server.d.ts +3 -2
- package/dist/src/public/skills/index.js +1 -1
- package/dist/src/public/sveltekit/dev-server.d.ts +3 -2
- package/dist/src/public/tools/index.js +1 -1
- package/dist/src/runtime/compiled-artifacts-source.d.ts +0 -4
- package/dist/src/runtime/compiled-artifacts-source.js +1 -1
- package/dist/src/runtime/connections/instance-identity.d.ts +0 -3
- package/dist/src/runtime/connections/instance-identity.js +1 -1
- package/dist/src/runtime/connections/mcp-client.d.ts +7 -0
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/mcp-tracing.d.ts +1 -6
- package/dist/src/runtime/connections/mcp-tracing.js +1 -1
- package/dist/src/runtime/connections/openapi-client.d.ts +1 -1
- package/dist/src/runtime/connections/scoped-authorization.d.ts +0 -9
- package/dist/src/runtime/connections/scoped-authorization.js +1 -1
- package/dist/src/runtime/hooks/registry.d.ts +0 -7
- package/dist/src/runtime/hooks/registry.js +1 -1
- package/dist/src/runtime/loaders/artifact-paths.d.ts +2 -1
- package/dist/src/runtime/loaders/bundled-artifacts.d.ts +0 -1
- package/dist/src/runtime/loaders/bundled-artifacts.js +1 -1
- package/dist/src/runtime/resolve-agent.d.ts +2 -2
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-dynamic-tool.d.ts +0 -16
- package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
- package/dist/src/runtime/sandbox/prepared-artifacts.d.ts +1 -2
- package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
- package/dist/src/runtime/schedules/register.d.ts +0 -4
- package/dist/src/runtime/schedules/register.js +1 -1
- package/dist/src/self-modification/credentials.d.ts +1 -4
- package/dist/src/self-modification/credentials.js +1 -1
- package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.js +1 -1
- package/dist/src/self-modification/filesystem.d.ts +0 -1
- package/dist/src/self-modification/filesystem.js +1 -1
- package/dist/src/self-modification/git-workspace.d.ts +0 -3
- package/dist/src/self-modification/git-workspace.js +1 -1
- package/dist/src/self-modification/github-publisher.d.ts +2 -1
- package/dist/src/self-modification/migration.d.ts +0 -1
- package/dist/src/self-modification/migration.js +1 -1
- package/dist/src/self-modification/mode.d.ts +2 -1
- package/dist/src/self-modification/proposal.d.ts +0 -2
- package/dist/src/self-modification/proposal.js +2 -2
- package/dist/src/self-modification/setup.js +1 -1
- package/dist/src/services/dev-client/agent-info-probe.d.ts +2 -1
- package/dist/src/services/dev-client/request-headers.d.ts +1 -1
- package/dist/src/setup/ai-gateway-api-key.d.ts +2 -1
- package/dist/src/setup/append-env.d.ts +3 -2
- package/dist/src/setup/ask.d.ts +3 -3
- package/dist/src/setup/boxes/apply-ai-gateway-credential.d.ts +2 -1
- package/dist/src/setup/boxes/deploy-project.d.ts +4 -3
- package/dist/src/setup/boxes/link-project.d.ts +2 -1
- package/dist/src/setup/boxes/model-capabilities.d.ts +2 -2
- package/dist/src/setup/boxes/model-capabilities.js +1 -1
- package/dist/src/setup/boxes/resolve-provisioning.d.ts +2 -1
- package/dist/src/setup/boxes/select-model.d.ts +0 -1
- package/dist/src/setup/boxes/select-model.js +1 -1
- package/dist/src/setup/cli/option-row.d.ts +1 -1
- package/dist/src/setup/cli/prompt-ui.d.ts +0 -10
- package/dist/src/setup/cli/prompt-ui.js +1 -1
- package/dist/src/setup/cli/rail-log.d.ts +0 -2
- package/dist/src/setup/cli/rail-log.js +2 -2
- package/dist/src/setup/connect-provisioning.d.ts +2 -1
- package/dist/src/setup/connection-connector.d.ts +2 -1
- package/dist/src/setup/flows/link.d.ts +2 -1
- package/dist/src/setup/flows/model-login.d.ts +1 -1
- package/dist/src/setup/flows/model-source-change.js +1 -1
- package/dist/src/setup/flows/registry-session.d.ts +3 -2
- package/dist/src/setup/integrations/discord/api.d.ts +2 -1
- package/dist/src/setup/integrations/discord/connect.d.ts +3 -3
- package/dist/src/setup/integrations/discord/connect.js +1 -1
- package/dist/src/setup/integrations/discord/setup.d.ts +2 -1
- package/dist/src/setup/integrations/file-memory/vercel.d.ts +1 -1
- package/dist/src/setup/integrations/github/connect.d.ts +3 -3
- package/dist/src/setup/integrations/github/connect.js +1 -1
- package/dist/src/setup/integrations/github/setup.d.ts +1 -1
- package/dist/src/setup/integrations/linear/connect.d.ts +2 -2
- package/dist/src/setup/integrations/linear/connect.js +1 -1
- package/dist/src/setup/integrations/linear/setup.d.ts +1 -1
- package/dist/src/setup/integrations/linq/connect.d.ts +3 -4
- package/dist/src/setup/integrations/linq/connect.js +1 -1
- package/dist/src/setup/integrations/linq/management.d.ts +2 -1
- package/dist/src/setup/integrations/linq/setup.d.ts +1 -9
- package/dist/src/setup/integrations/linq/setup.js +1 -1
- package/dist/src/setup/integrations/photon/connect.d.ts +5 -7
- package/dist/src/setup/integrations/photon/connect.js +1 -1
- package/dist/src/setup/integrations/photon/management.d.ts +5 -4
- package/dist/src/setup/integrations/photon/setup-flow.d.ts +2 -1
- package/dist/src/setup/integrations/registry.d.ts +0 -2
- package/dist/src/setup/integrations/registry.js +1 -1
- package/dist/src/setup/integrations/runner.d.ts +3 -2
- package/dist/src/setup/integrations/shared/scaffold.d.ts +2 -1
- package/dist/src/setup/integrations/shared/vercel-project.d.ts +2 -1
- package/dist/src/setup/integrations/shopify/setup.d.ts +2 -1
- package/dist/src/setup/integrations/teams/connect.d.ts +3 -3
- package/dist/src/setup/integrations/teams/connect.js +1 -1
- package/dist/src/setup/integrations/teams/setup.d.ts +2 -1
- package/dist/src/setup/integrations/web/setup.d.ts +2 -3
- package/dist/src/setup/integrations/web/setup.js +3 -3
- package/dist/src/setup/primitives/pm/process-result.d.ts +2 -1
- package/dist/src/setup/primitives/pm/shared.d.ts +2 -1
- package/dist/src/setup/primitives/process-output.d.ts +2 -1
- package/dist/src/setup/quit-guard.d.ts +3 -2
- package/dist/src/setup/scaffold/create/add-to-project.d.ts +2 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
- package/dist/src/setup/scaffold/create/web-template.js +1 -1
- package/dist/src/setup/scaffold/files.d.ts +2 -1
- package/dist/src/setup/scaffold/update/channels.d.ts +0 -1
- package/dist/src/setup/scaffold/workspace-glob.d.ts +0 -1
- package/dist/src/setup/scaffold/workspace-glob.js +1 -1
- package/dist/src/setup/scaffold/workspace-root.d.ts +2 -1
- package/dist/src/setup/slack-connect-create.d.ts +1 -1
- package/dist/src/setup/slack-connect-lifecycle.d.ts +5 -5
- package/dist/src/setup/slack-connect.d.ts +0 -4
- package/dist/src/setup/slack-connect.js +1 -1
- package/dist/src/setup/slackbot.d.ts +3 -3
- package/dist/src/setup/slackbot.js +1 -1
- package/dist/src/setup/vercel-project-api.d.ts +1 -1
- package/dist/src/setup/vercel-project.d.ts +3 -18
- package/dist/src/setup/vercel-project.js +0 -0
- package/dist/src/shared/action-types.d.ts +1 -58
- package/dist/src/shared/action-types.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +0 -3
- package/dist/src/shared/agent-turn-outcome.d.ts +1 -3
- package/dist/src/shared/agent-turn-outcome.js +1 -1
- package/dist/src/shared/chatgpt-model.d.ts +0 -1
- package/dist/src/shared/chatgpt-model.js +1 -1
- package/dist/src/shared/connection-types.d.ts +5 -0
- package/dist/src/shared/conversation-context.d.ts +2 -1
- package/dist/src/shared/extension-package-contract.d.ts +2 -1
- package/dist/src/shared/forwarded-trace-policy.d.ts +3 -2
- package/dist/src/shared/gateway-model-catalog.d.ts +25 -2
- package/dist/src/shared/gateway-model-catalog.js +1 -1
- package/dist/src/shared/gateway-service-tier.d.ts +2 -1
- package/dist/src/shared/memory-state.d.ts +0 -8
- package/dist/src/shared/memory-state.js +1 -1
- package/dist/src/shared/sandbox-environment.d.ts +0 -1
- package/dist/src/shared/sandbox-environment.js +1 -1
- package/dist/src/shared/skill-package.d.ts +0 -5
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/token-usage.d.ts +0 -7
- package/dist/src/shared/token-usage.js +1 -1
- package/dist/src/shared/ulid.d.ts +2 -8
- package/dist/src/shared/ulid.js +1 -1
- package/dist/src/shared/vercel-project.d.ts +2 -1
- package/dist/src/shared/vercel-services.d.ts +2 -2
- package/dist/src/shared/workflow-sandbox.d.ts +0 -7
- package/dist/src/source-change/agent-config-ast.d.ts +2 -1
- package/dist/src/source-change/agent-config-string-path.d.ts +2 -2
- package/dist/src/source-change/apply-agent-model-settings.d.ts +2 -1
- package/dist/src/source-change/apply-model-selection.d.ts +2 -1
- package/dist/src/source-change/static-source-change.d.ts +4 -3
- package/dist/src/subagents/invocation.d.ts +1 -1
- package/dist/src/subagents/parent-notification.js +1 -1
- package/dist/src/subagents/tool.d.ts +2 -1
- package/dist/src/tasks/types.d.ts +2 -0
- package/dist/src/tools/definition.d.ts +8 -3
- package/dist/src/tools/durable-callbacks.d.ts +1 -2
- package/dist/src/tools/durable-callbacks.js +1 -1
- package/dist/src/tools/framework/agent.js +1 -1
- package/dist/src/tools/framework/task-cancel.d.ts +1 -1
- package/dist/src/tools/native-definition.d.ts +2 -1
- package/dist/src/tracing/agent-action-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-memory-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-otel-provider.d.ts +2 -1
- package/dist/src/tracing/agent-span-id-generator.d.ts +0 -1
- package/dist/src/tracing/agent-span-id-generator.js +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-tool-span-context.d.ts +3 -2
- package/dist/src/tracing/agent-trace-state.d.ts +0 -24
- package/dist/src/tracing/agent-trace-state.js +1 -1
- package/dist/src/tracing/batch-span-processor.d.ts +2 -1
- package/dist/src/tracing/local-trace-analysis.d.ts +4 -3
- package/dist/src/tracing/local-trace-discovery-index.d.ts +0 -2
- package/dist/src/tracing/local-trace-discovery-index.js +1 -1
- package/dist/src/tracing/local-trace-query.d.ts +2 -1
- package/dist/src/tracing/local-trace-retention.d.ts +4 -4
- package/dist/src/tracing/telemetry-budget.d.ts +0 -1
- package/dist/src/tracing/telemetry-budget.js +1 -1
- package/docs/concepts/project-structure.mdx +1 -1
- package/docs/guides/auth-and-route-protection.md +1 -1
- package/docs/guides/deployment/vercel.mdx +1 -1
- package/docs/guides/dynamic-capabilities.md +10 -7
- package/docs/guides/hooks.md +34 -2
- package/docs/install-integrations.mdx +1 -1
- package/docs/reference/cli.md +36 -15
- package/docs/tools/human-in-the-loop.md +2 -0
- package/package.json +31 -10
- package/dist/src/cli/commands/channel-add-conflicts.d.ts +0 -21
- package/dist/src/cli/commands/channel-add-conflicts.js +0 -1
- package/dist/src/cli/commands/registry-search-presentation.d.ts +0 -16
- package/dist/src/cli/commands/registry-search-presentation.js +0 -6
- package/dist/src/compiled/_chunks/workflow/dist-BfMqXLK3.js +0 -3
- package/dist/src/compiled/_chunks/workflow/helpers-CNMO7zB1.js +0 -1
- package/dist/src/compiled/_chunks/workflow/logger-BCEj9caG.js +0 -14
- package/dist/src/compiled/_chunks/workflow/resume-hook-QS_cMwHn.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-CA5wWV2S.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-CJ265vSe.js +0 -3
- package/dist/src/compiled/_chunks/workflow/sleep-CBn94Ayv.js +0 -1
- package/dist/src/compiled/_chunks/workflow/wait-until-Bo2U6ON9.js +0 -1
- package/dist/src/compiler/compile-from-memory.d.ts +0 -44
- package/dist/src/compiler/compile-from-memory.js +0 -1
- package/dist/src/execution/connection-auth-tool-result.d.ts +0 -2
- package/dist/src/execution/connection-auth-tool-result.js +0 -1
- package/dist/src/internal/process/pnpm.d.ts +0 -28
- package/dist/src/internal/process/pnpm.js +0 -1
- package/dist/src/public/channels/slack/api-encoding.d.ts +0 -5
- package/dist/src/public/channels/slack/api-encoding.js +0 -1
- package/dist/src/public/definitions/instrumentation.d.ts +0 -1
- package/dist/src/public/definitions/instrumentation.js +0 -1
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.d.ts +0 -5
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.js +0 -1
- package/dist/src/sandbox/backends/probes.d.ts +0 -7
- package/dist/src/sandbox/backends/probes.js +0 -1
- package/dist/src/setup/channel-add-conflicts.d.ts +0 -28
- package/dist/src/setup/channel-add-conflicts.js +0 -1
- package/dist/src/setup/primitives/run-pnpm.d.ts +0 -1
- package/dist/src/setup/primitives/run-pnpm.js +0 -1
- package/dist/src/shared/boundary-hook-error.d.ts +0 -4
- package/dist/src/shared/boundary-hook-error.js +0 -1
- package/dist/src/shared/dispatch-action.d.ts +0 -30
- package/dist/src/shared/dispatch-action.js +0 -1
- /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-sandbox.d.ts +0 -0
- /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use.js +0 -0
- /package/dist/src/{extensions/code → computer-use}/extension/tools/computer_use.d.ts +0 -0
- /package/dist/src/{extensions/code → computer-use}/extension/tools/computer_use.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{randomBytes}from"node:crypto";import{EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH,EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH}from"#protocol/routes.js";import{isLoopbackServerUrl}from"#shared/network-address.js";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{resolveDiscoveryProject}from"#discover/project.js";import{eveDevArguments}from"#setup/primitives/index.js";import{detectPackageManager}from"#setup/package-manager.js";import{defaultDevelopmentExtensions}from"#compiler/development-extensions.js";import{devBootPhase}from"#internal/dev-boot-progress.js";import{readDevelopmentRuntimeArtifactsRevision}from"#services/dev-client/runtime-artifacts.js";import{EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV,createDevelopmentSandboxRunId}from"#execution/sandbox/development-run.js";import{pruneLocalSandboxTemplatesInBackground,stopDevelopmentSandboxResources}from"#execution/sandbox/bindings/local.js";import{EVE_DEV_ENV_FLAG}from"#internal/application/optional-package-install.js";import{toErrorMessage}from"#shared/errors.js";import{createDevelopmentApplicationNitro}from"#internal/nitro/host/create-application-nitro.js";import{prepareDevelopmentApplicationHost}from"#internal/nitro/host/prepare-application-host.js";import{buildDevelopmentHostCandidate}from"#internal/nitro/host/dev-host-candidate.js";import{removeDevelopmentHostWorkspace}from"#internal/nitro/host/dev-host-workspace.js";import{DrainedNitroDevServer}from"#internal/nitro/host/drained-nitro-dev-server.js";import{activateDevelopmentGeneration,discardDevelopmentGeneration}from"#internal/nitro/development-generation.js";import{DEFAULT_DEVELOPMENT_SERVER_HOST,normalizeDevelopmentServerClientUrl}from"#internal/nitro/host/dev-server-url.js";import{handleDevelopmentModelCredentialRequest}from"#internal/model-auth/development-broker-server.js";import{createDevelopmentAuthoredRebuildCoordinator}from"#internal/nitro/host/dev-authored-rebuild-coordinator.js";import{DevelopmentServerState}from"#internal/nitro/host/dev-server-state.js";import{handleDevRuntimeArtifactsRequest}from"#internal/nitro/routes/dev-runtime-artifacts.js";import{DEFAULT_DEVELOPMENT_SERVER_PORT,MAX_DEVELOPMENT_SERVER_PORT_ATTEMPTS}from"#internal/nitro/host/ports.js";import{installLocalDevCapabilityEnvironment}from"#runtime/local-dev-capability.js";import{createDevelopmentWorkflowWorld,installWorkflowLocalQueueEnvironment,installWorkflowTransportEnvironment}from"#internal/nitro/host/dev-workflow-world-setup.js";const MAX_ALLOWED_DEVELOPMENT_SERVER_PORT=65535,PORT_ENV=`PORT`;async function isDevelopmentServerReady(e){return await readDevelopmentRuntimeArtifactsRevision({serverUrl:e,timeoutMs:1e3})!==void 0}function isAddressInUseError(e){return e instanceof Error&&`code`in e&&e.code===`EADDRINUSE`}function resolveDevelopmentServerPort(e){let t=typeof e==`string`?Number(e):e??DEFAULT_DEVELOPMENT_SERVER_PORT;if(!Number.isInteger(t)||t<0||t>MAX_ALLOWED_DEVELOPMENT_SERVER_PORT)throw Error(`Invalid development server port "${String(e)}". Expected an integer between 0 and ${MAX_ALLOWED_DEVELOPMENT_SERVER_PORT}.`);return t}function readEnvironmentPort(){let e=process.env[PORT_ENV];if(e===void 0||e.trim()===``)return;let t=Number(e);if(!Number.isInteger(t)||t<0||t>MAX_ALLOWED_DEVELOPMENT_SERVER_PORT)throw Error(`Invalid ${PORT_ENV} environment variable "${e}". Expected an integer between 0 and ${MAX_ALLOWED_DEVELOPMENT_SERVER_PORT}.`);return t}async function detectDevelopmentCommandPackageManager(e){try{return(await detectPackageManager(e)).kind}catch{return`pnpm`}}async function formatDevelopmentServerConnectCommand(e,t){let n=await detectDevelopmentCommandPackageManager(e);return[n,...eveDevArguments(n).slice(0,-1),`remote`,`connect`,`--url`,t].join(` `)}async function createDevelopmentServerAlreadyRunningError(e,t){let n=await formatDevelopmentServerConnectCommand(e,t);return Error([`A dev server is already running for this eve agent.`,`To connect to the existing instance, run: ${n}`].join(`
|
|
2
|
-
`))}function resolveDevelopmentServerPorts(e){let t=resolveDevelopmentServerPort(e.port);if(t===0||!e.retryOnAddressInUse)return[t];let n=[];for(let e=0;e<MAX_DEVELOPMENT_SERVER_PORT_ATTEMPTS;e+=1){let r=t+e;if(r>65535)break;n.push(r)}return n}function addDevelopmentControlHandler(e){e.devServer.setControlHandler(async t=>{let n=await handleDevelopmentModelCredentialRequest(t,{appRoot:e.appRoot,secret:e.transportSecret});if(n!==void 0)return n;let r=await e.workflowWorld?.handleRequest(t);if(r!==void 0)return r;let i=new URL(t.url);if(i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH&&t.method===`GET`)return handleDevRuntimeArtifactsRequest({appRoot:e.appRoot});let a=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH&&t.method===`POST`,o=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH&&t.method===`POST`,s=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH&&(t.method===`GET`||t.method===`POST`);if(!a&&!o&&!s)return;let c=e.getWatcher();if(c===void 0)return Response.json({error:`The development server is still starting.`},{status:503});let l=i.searchParams.get(`lease`);return(a||o)&&(l===null||l.length===0)?Response.json({error:`A suspension lease is required.`},{status:400}):a?(await c.suspend(l),Response.json({suspended:!0})):o?(await c.resume(l,{silent:i.searchParams.get(`silent`)===`1`}),handleDevRuntimeArtifactsRequest({appRoot:e.appRoot})):(i.searchParams.get(`force`)===`1`?await c.rebuild():await c.flush(),handleDevRuntimeArtifactsRequest({appRoot:e.appRoot}))})}async function closeDevelopmentServerResources(e){let t=[],attempt=async e=>{try{return await e(),!0}catch(e){return t.push(e),!1}},n=e.authoredSourceWatcher;n!==void 0&&await attempt(()=>n.close());let r=e.workflowWorld;r!==void 0&&await attempt(()=>r.close());let i=e.devServer,a=i===void 0||await attempt(()=>i.close()),o=e.nitro;return o!==void 0&&await attempt(()=>o.close()),await attempt(()=>stopDevelopmentSandboxResources({appRoot:e.appRoot,devRunId:e.developmentSandboxRunId,log:e=>console.warn(`[eve:dev] ${e}`)})),{errors:t,listenerClosed:a}}function createDevelopmentServerCleanupError(e){if(e.length!==0){if(e.length===1){let t=e[0];return t instanceof Error?t:Error(`Failed to close the development server: ${toErrorMessage(t)}`,{cause:t})}return AggregateError(e,`Multiple development-server resources failed to close.`)}}function createDevelopmentServerStartupCleanupError(e,t){return AggregateError([e,...t],`${toErrorMessage(e)} Cleanup also failed.`,{cause:e})}async function listenForDevelopmentServer(e){let t=resolveDevelopmentServerPorts({port:e.port,retryOnAddressInUse:e.retryOnAddressInUse}),n;for(let r of t){let t=e.devServer.listen({hostname:e.host,port:r});try{return await t.ready(),t}catch(r){if(n=r,await t.close().catch(()=>{}),!isAddressInUseError(r)||!e.retryOnAddressInUse)throw r}}throw Error(`Failed to start Nitro dev server after ${t.length} attempts. Tried ports ${t.join(`, `)}.`,{cause:n})}async function startNitroDevelopmentServer(e,t){process.env[EVE_DEV_ENV_FLAG]??=`1`;let n=t.developmentExtensions??defaultDevelopmentExtensions(),r=await resolveDiscoveryProject(e);await loadDevelopmentEnvironmentFiles(r.appRoot);let i=readEnvironmentPort(),a=t.port??i,o=t.developmentExtensions!==void 0||t.host!==void 0||t.port!==void 0||i!==void 0,s=new DevelopmentServerState(r),c=await s.read();if(c!==void 0&&isLoopbackServerUrl(c)&&await isDevelopmentServerReady(c)){if(t.existing===`attach-if-unconfigured`&&!o)return{handle:{kind:`existing`,appRoot:r.appRoot,url:c},close:void 0};throw await createDevelopmentServerAlreadyRunningError(r.appRoot,c)}let l=process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV],u=createDevelopmentSandboxRunId();process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV]=u;let d,f,p,m,h,g,_,v,y=!1,b=!1;try{let e=await devBootPhase(`compiling agent`,()=>prepareDevelopmentApplicationHost(r.appRoot,{developmentExtensions:n}),t.onBootProgress);v=e,pruneLocalSandboxTemplatesInBackground(e.appRoot);let i=await devBootPhase(`creating dev server`,()=>createDevelopmentApplicationNitro(e),t.onBootProgress);d=i,f=new DrainedNitroDevServer(i.logger);let o=f,c=randomBytes(32).toString(`base64url`);o.setClientAddressSecret(c),h=installWorkflowTransportEnvironment(r.appRoot,c),g=createDevelopmentWorkflowWorld({appRoot:r.appRoot,preparedHost:e,transportSecret:c}),addDevelopmentControlHandler({appRoot:r.appRoot,devServer:o,getWatcher:()=>_,workflowWorld:g,transportSecret:c});let
|
|
2
|
+
`))}function resolveDevelopmentServerPorts(e){let t=resolveDevelopmentServerPort(e.port);if(t===0||!e.retryOnAddressInUse)return[t];let n=[];for(let e=0;e<MAX_DEVELOPMENT_SERVER_PORT_ATTEMPTS;e+=1){let r=t+e;if(r>65535)break;n.push(r)}return n}function addDevelopmentControlHandler(e){e.devServer.setControlHandler(async t=>{let n=await handleDevelopmentModelCredentialRequest(t,{appRoot:e.appRoot,secret:e.transportSecret});if(n!==void 0)return n;let r=await e.workflowWorld?.handleRequest(t);if(r!==void 0)return r;let i=new URL(t.url);if(i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_ROUTE_PATH&&t.method===`GET`)return handleDevRuntimeArtifactsRequest({appRoot:e.appRoot});let a=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_SUSPEND_ROUTE_PATH&&t.method===`POST`,o=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_RESUME_ROUTE_PATH&&t.method===`POST`,s=i.pathname===EVE_DEV_RUNTIME_ARTIFACTS_REBUILD_ROUTE_PATH&&(t.method===`GET`||t.method===`POST`);if(!a&&!o&&!s)return;let c=e.getWatcher();if(c===void 0)return Response.json({error:`The development server is still starting.`},{status:503});let l=i.searchParams.get(`lease`);return(a||o)&&(l===null||l.length===0)?Response.json({error:`A suspension lease is required.`},{status:400}):a?(await c.suspend(l),Response.json({suspended:!0})):o?(await c.resume(l,{silent:i.searchParams.get(`silent`)===`1`}),handleDevRuntimeArtifactsRequest({appRoot:e.appRoot})):(i.searchParams.get(`force`)===`1`?await c.rebuild():await c.flush(),handleDevRuntimeArtifactsRequest({appRoot:e.appRoot}))})}async function closeDevelopmentServerResources(e){let t=[],attempt=async e=>{try{return await e(),!0}catch(e){return t.push(e),!1}},n=e.authoredSourceWatcher;n!==void 0&&await attempt(()=>n.close());let r=e.workflowWorld;r!==void 0&&await attempt(()=>r.close());let i=e.devServer,a=i===void 0||await attempt(()=>i.close()),o=e.nitro;return o!==void 0&&await attempt(()=>o.close()),await attempt(()=>stopDevelopmentSandboxResources({appRoot:e.appRoot,devRunId:e.developmentSandboxRunId,log:e=>console.warn(`[eve:dev] ${e}`)})),{errors:t,listenerClosed:a}}function createDevelopmentServerCleanupError(e){if(e.length!==0){if(e.length===1){let t=e[0];return t instanceof Error?t:Error(`Failed to close the development server: ${toErrorMessage(t)}`,{cause:t})}return AggregateError(e,`Multiple development-server resources failed to close.`)}}function createDevelopmentServerStartupCleanupError(e,t){return AggregateError([e,...t],`${toErrorMessage(e)} Cleanup also failed.`,{cause:e})}async function listenForDevelopmentServer(e){let t=resolveDevelopmentServerPorts({port:e.port,retryOnAddressInUse:e.retryOnAddressInUse}),n;for(let r of t){let t=e.devServer.listen({hostname:e.host,port:r});try{return await t.ready(),t}catch(r){if(n=r,await t.close().catch(()=>{}),!isAddressInUseError(r)||!e.retryOnAddressInUse)throw r}}throw Error(`Failed to start Nitro dev server after ${t.length} attempts. Tried ports ${t.join(`, `)}.`,{cause:n})}async function startNitroDevelopmentServer(e,t){process.env[EVE_DEV_ENV_FLAG]??=`1`;let n=t.developmentExtensions??defaultDevelopmentExtensions(),r=await resolveDiscoveryProject(e);await loadDevelopmentEnvironmentFiles(r.appRoot);let i=readEnvironmentPort(),a=t.port??i,o=t.resume===!0||t.developmentExtensions!==void 0||t.host!==void 0||t.port!==void 0||i!==void 0,s=new DevelopmentServerState(r),c=await s.read();if(c!==void 0&&isLoopbackServerUrl(c)&&await isDevelopmentServerReady(c)){if(t.existing===`attach-if-unconfigured`&&!o)return{handle:{kind:`existing`,appRoot:r.appRoot,url:c},close:void 0};throw await createDevelopmentServerAlreadyRunningError(r.appRoot,c)}let l=process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV],u=createDevelopmentSandboxRunId();process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV]=u;let d,f,p,m,h,g,_,v,y=!1,b=!1;try{let e=await devBootPhase(`compiling agent`,()=>prepareDevelopmentApplicationHost(r.appRoot,{developmentExtensions:n}),t.onBootProgress);v=e,pruneLocalSandboxTemplatesInBackground(e.appRoot);let i=await devBootPhase(`creating dev server`,()=>createDevelopmentApplicationNitro(e),t.onBootProgress);d=i,f=new DrainedNitroDevServer(i.logger);let o=f,c=randomBytes(32).toString(`base64url`);o.setClientAddressSecret(c),h=installWorkflowTransportEnvironment(r.appRoot,c),g=createDevelopmentWorkflowWorld({appRoot:r.appRoot,preparedHost:e,resume:t.resume,transportSecret:c});let x=g,S=x===void 0?void 0:()=>x.reconcileExpiredRuns();addDevelopmentControlHandler({appRoot:r.appRoot,devServer:o,getWatcher:()=>_,workflowWorld:g,transportSecret:c});let C=t.host??i.options.devServer.hostname??DEFAULT_DEVELOPMENT_SERVER_HOST,w=a===void 0,T=await devBootPhase(`binding port`,()=>listenForDevelopmentServer({devServer:o,host:C,port:a,retryOnAddressInUse:w}),t.onBootProgress);if(!T.url)throw Error(`Nitro dev server did not expose a URL.`);let E=normalizeDevelopmentServerClientUrl(T.url);m=installWorkflowLocalQueueEnvironment(E),p=installLocalDevCapabilityEnvironment({appRoot:r.appRoot,serverUrl:E}),await devBootPhase(`building dev bundle`,async()=>{let t=await buildDevelopmentHostCandidate({host:e,nitro:i});d=void 0;let n=e.workspace;b=!0,await o.replaceWorker({dispose:async()=>await removeDevelopmentHostWorkspace(n),entry:t.entry,workerData:t.workerData}),await activateDevelopmentGeneration({appRoot:e.appRoot,generation:e.generation,onRuntimePruned:S}),y=!0},t.onBootProgress),await g?.start();let D=await createDevelopmentAuthoredRebuildCoordinator({developmentExtensions:n,devServer:o,initialHost:e,onRuntimePruned:S});_=await devBootPhase(`starting file watcher`,async()=>{let{startAuthoredSourceWatcher:t}=await import(`#internal/nitro/host/dev-authored-source-watcher.js`);return t({coordinator:D,preparedHost:e})},t.onBootProgress),await s.write(E);let O=m;if(O===void 0)throw Error(`Workflow local queue environment was not initialized.`);let k=_,A=f,j=g,M=h,N=p,P;return{handle:{kind:`started`,appRoot:r.appRoot,url:E},close:()=>(P??=(async()=>{let e=await closeDevelopmentServerResources({appRoot:r.appRoot,authoredSourceWatcher:k,devServer:A,developmentSandboxRunId:u,nitro:void 0,workflowWorld:j});e.listenerClosed&&await s.remove().catch(()=>{});try{let t=createDevelopmentServerCleanupError(e.errors);if(t!==void 0)throw t}finally{O(),M?.(),N?.(),restoreDevelopmentSandboxRunId(l)}})(),P)}}catch(e){let t=await closeDevelopmentServerResources({appRoot:r.appRoot,authoredSourceWatcher:_,devServer:f,developmentSandboxRunId:u,nitro:d,workflowWorld:g}),n=[...t.errors];throw v!==void 0&&!y&&await discardDevelopmentGeneration(v.generation).catch(e=>{n.push(e)}),v!==void 0&&!b&&await removeDevelopmentHostWorkspace(v.workspace).catch(e=>{n.push(e)}),m?.(),h?.(),p?.(),t.listenerClosed&&await s.remove().catch(()=>{}),restoreDevelopmentSandboxRunId(l),n.length>0?createDevelopmentServerStartupCleanupError(e,n):e}}function createDevelopmentServer(e,t={}){let n,r;return{start(){if(n!==void 0)throw Error(`DevelopmentServer.start() was already called.`);return n=startNitroDevelopmentServer(e,t).then(({handle:e,close:t})=>(r=t,e)),n},async close(){n!==void 0&&(await n.catch(()=>void 0),await r?.())}}}function restoreDevelopmentSandboxRunId(e){if(e===void 0){delete process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV];return}process.env[EVE_DEVELOPMENT_SANDBOX_RUN_ID_ENV]=e}export{createDevelopmentServer,normalizeDevelopmentServerClientUrl};
|
|
@@ -57,6 +57,8 @@ export interface DevelopmentServer<H extends DevelopmentServerHandle = Developme
|
|
|
57
57
|
close(): Promise<void>;
|
|
58
58
|
}
|
|
59
59
|
export interface DevelopmentServerOptions {
|
|
60
|
+
/** Recover compatible unfinished runs from previous local dev invocations. Defaults to false. */
|
|
61
|
+
readonly resume?: boolean;
|
|
60
62
|
/** Development-only source extensions. Defaults to the framework catalog. */
|
|
61
63
|
readonly developmentExtensions?: DevelopmentExtensionSelection;
|
|
62
64
|
readonly existing?: "attach-if-unconfigured" | "reject";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readdir,realpath,stat}from"node:fs/promises";import{resolveDiscoveryProject}from"#discover/project.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{basename,dirname,join,resolve,sep}from"node:path";import{
|
|
1
|
+
import{readdir,realpath,stat}from"node:fs/promises";import{resolveDiscoveryProject}from"#discover/project.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{basename,dirname,join,resolve,sep}from"node:path";import{buildExtensionPackage,tryReadExtensionBuildConfig}from"#internal/nitro/host/build-extension.js";import{withExtensionBuildLock}from"#internal/nitro/host/extension-build-lock.js";import{toErrorMessage}from"#shared/errors.js";import{locateExtensionMountPackage}from"#discover/extensions.js";import{discoverExtensionMountDeclarations}from"#discover/discover-agent.js";import{createDiskProjectSource}from"#discover/project-source.js";import{EXTENSION_COMPATIBILITY_MANIFEST_FILENAME,readExtensionCompatibilityManifest}from"#compiler/extension-compatibility.js";import{isAuthoredSourcePath,resolveDevelopmentSourceRoot}from"#internal/nitro/dev-runtime-source-snapshot.js";import{resolveTsConfigDependencyPaths}from"#internal/application/tsconfig-dependencies.js";async function prepareDevelopmentWorkspaceExtensions(e){let t=await discoverWorkspaceExtensions(e.appRoot),n=new Map(e.previousExtensions?.map(e=>[e.packageRoot,e])),r=e.changedPaths===void 0?void 0:await Promise.all(e.changedPaths.map(async e=>await toCanonicalPath(e))),i=e.previousExtensions===void 0||r?.length===0;return await Promise.all(t.map(async e=>{let t=n.get(e.packageRoot);(i===!0||t===void 0||!sameBuildInputs(t,e)||r?.some(t=>affectsExtensionBuild(t,e))===!0)&&await withExtensionBuildLock(e.packageRoot,async()=>{await buildExtensionPackage(e.packageRoot,e.config)})})),t}async function buildWorkspaceExtensions(e){let t=await discoverWorkspaceExtensions(e);await Promise.all(t.map(async e=>{if(!await isExtensionDistributionCurrent(e))try{await withExtensionBuildLock(e.packageRoot,async()=>{await isExtensionDistributionCurrent(e)||await buildExtensionPackage(e.packageRoot,e.config)})}catch(t){throw Error(`Failed to build workspace extension "${e.config.packageName}" at ${e.packageRoot}. Fix the error below, then rebuild the agent, or run \`eve extension build\` in that package directory to build it on its own.\n${toErrorMessage(t)}`)}}))}async function discoverWorkspaceExtensions(e){let t=resolve(e),n=await resolveDiscoveryProject(t),r=createDiskProjectSource(),i=await discoverExtensionMountGraph({agentRoot:n.agentRoot,source:r}),a=await toCanonicalPath(resolveDevelopmentSourceRoot(t)),o=new Map;for(let e of i){let n=await resolveWorkspaceExtension({appRoot:t,agentRoot:e.agentRoot,mount:e.mount,source:r,workspaceSourceRoot:a});n!==void 0&&o.set(n.packageRoot,n)}return[...o.values()].sort((e,t)=>e.packageRoot.localeCompare(t.packageRoot))}async function isExtensionDistributionCurrent(e){let t=join(e.config.distRoot,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME),n;try{if((await readExtensionCompatibilityManifest(t)).builtWithEve!==resolveInstalledPackageInfo().version)return!1;n=(await stat(t)).mtimeMs}catch{return!1}let r=await readdir(e.config.sourceRoot,{recursive:!0}),i=[e.config.sourceRoot,...r.map(t=>join(e.config.sourceRoot,t)),...e.buildConfigPaths];return(await Promise.all(i.map(async e=>(await stat(e).catch(()=>void 0))?.mtimeMs??0))).every(e=>e<=n)}async function discoverExtensionMountGraph(e){let t=(await discoverExtensionMountDeclarations(e)).mounts.map(t=>({agentRoot:e.agentRoot,mount:t})),n=join(e.agentRoot,`subagents`);if(await e.source.stat(n)!==`directory`)return t;let r=await e.source.readDirectory(n),i=await Promise.all(r.filter(e=>e.isDirectory()).map(async t=>await discoverExtensionMountGraph({agentRoot:join(n,t.name),source:e.source})));return[...t,...i.flat()]}async function resolveWorkspaceExtension(e){let t=(await locateExtensionMountPackage({source:e.source,agentRoot:e.agentRoot,appRoot:e.appRoot,mount:e.mount.mountRef,namespace:e.mount.namespace})).location;if(t?.authoredSourceRoot===void 0)return;let n=await realpath(t.packageRoot).catch(()=>void 0);if(n===void 0||!isAuthoredSourcePath(n,e.workspaceSourceRoot)||(await stat(t.authoredSourceRoot).catch(()=>void 0))?.isDirectory()!==!0)return;let r=await tryReadExtensionBuildConfig(n);if(r===null)return;let i=[join(n,`package.json`),join(n,`tsconfig.json`),...await resolveTsConfigDependencyPaths(n)];return{config:r,packageRoot:n,buildConfigPaths:[...new Set(i.map(e=>resolve(e)))].sort((e,t)=>e.localeCompare(t))}}function affectsExtensionBuild(e,t){return isPathInsideOrEqual(e,t.config.sourceRoot)||t.buildConfigPaths.includes(e)}function sameBuildConfig(e,t){return e.sourceRoot===t.sourceRoot&&e.distRoot===t.distRoot&&e.outDir===t.outDir&&e.packageName===t.packageName&&e.shortName===t.shortName&&e.runtimeDependencies.length===t.runtimeDependencies.length&&e.runtimeDependencies.every((e,n)=>e===t.runtimeDependencies[n])}function sameBuildInputs(e,t){return sameBuildConfig(e.config,t.config)&&e.buildConfigPaths.length===t.buildConfigPaths.length&&e.buildConfigPaths.every((e,n)=>e===t.buildConfigPaths[n])}function isPathInsideOrEqual(e,t){let n=resolve(e),r=resolve(t);return n===r||n.startsWith(`${r}${sep}`)}async function toCanonicalPath(e){let t=resolve(e),n=[];for(;;)try{return join(await realpath(t),...n.reverse())}catch{let r=dirname(t);if(r===t)return resolve(e);n.push(basename(t)),t=r}}export{buildWorkspaceExtensions,prepareDevelopmentWorkspaceExtensions};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Span } from "#compiled/@opentelemetry/api/index.js";
|
|
2
2
|
/** Inputs for {@link traceChannelRequest}. */
|
|
3
|
-
|
|
3
|
+
interface TraceChannelRequestInput {
|
|
4
4
|
readonly request: Request;
|
|
5
5
|
readonly routeKey: string;
|
|
6
6
|
}
|
|
@@ -30,3 +30,4 @@ export interface TraceChannelRequestInput {
|
|
|
30
30
|
* tracing overhead.
|
|
31
31
|
*/
|
|
32
32
|
export declare function traceChannelRequest<T extends Response>(input: TraceChannelRequestInput, handler: (span: Span | undefined) => Promise<T>): Promise<T>;
|
|
33
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RouteHandlerArgs } from "#channel/routes.js";
|
|
2
2
|
import type { RunHandle, RunInput } from "#channel/types.js";
|
|
3
3
|
type AgentInfoRouteResponse = () => Promise<Response>;
|
|
4
|
-
|
|
4
|
+
interface HomeRouteMetadata {
|
|
5
5
|
readonly agentName: string;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
@@ -11,7 +11,7 @@ import { type NitroArtifactsConfig } from "#internal/nitro/routes/runtime-artifa
|
|
|
11
11
|
* against a registered URL pattern, then calls the matched channel's
|
|
12
12
|
* `fetch` with a `RouteContext` built from `runtime`.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
interface NitroChannelRuntimeBundle {
|
|
15
15
|
readonly agentName: string;
|
|
16
16
|
readonly channels: readonly ResolvedChannelDefinition[];
|
|
17
17
|
readonly resolveRemoteAgentStreamHeaders?: RemoteAgentStreamHeadersResolver;
|
|
@@ -26,3 +26,4 @@ export interface NitroChannelRuntimeBundle {
|
|
|
26
26
|
* compiled bundle on each request.
|
|
27
27
|
*/
|
|
28
28
|
export declare function resolveNitroChannelRuntimeBundle(config: NitroArtifactsConfig): Promise<NitroChannelRuntimeBundle>;
|
|
29
|
+
export {};
|
|
@@ -27,7 +27,7 @@ export type GatewayCredentialSource = {
|
|
|
27
27
|
* whatever their vantage point can see — env files on disk, the process
|
|
28
28
|
* environment, an SDK token lookup — and the resolver ranks it.
|
|
29
29
|
*/
|
|
30
|
-
|
|
30
|
+
interface GatewayCredentialEvidence {
|
|
31
31
|
/** `AI_GATEWAY_API_KEY` found in an app env file (the file's name). */
|
|
32
32
|
readonly apiKeyFile?: string;
|
|
33
33
|
/** `AI_GATEWAY_API_KEY` present in the process environment. */
|
|
@@ -58,3 +58,4 @@ export declare function resolveModelEndpointStatus(routing: ModelRouting, creden
|
|
|
58
58
|
readonly state: ChatGptEndpointState;
|
|
59
59
|
readonly accountLabel?: string;
|
|
60
60
|
}): ModelEndpointStatus;
|
|
61
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type EveVercelAgentTarget, type EveVercelBuildTarget } from "#internal/vercel/eve-service-contribution.js";
|
|
2
2
|
import type { VercelRouteConfig, VercelServiceConfig } from "#internal/vercel/vercel-services-config.js";
|
|
3
|
-
|
|
3
|
+
interface EveVercelServiceTarget {
|
|
4
4
|
readonly agent: EveVercelAgentTarget;
|
|
5
5
|
readonly target: EveVercelBuildTarget;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
interface AssembledEveVercelServices {
|
|
8
8
|
readonly rootDirectories: readonly string[];
|
|
9
9
|
readonly routes: readonly VercelRouteConfig[];
|
|
10
10
|
readonly services: Readonly<Record<string, VercelServiceConfig>>;
|
|
@@ -15,3 +15,4 @@ export declare function assembleEveVercelServices(input: {
|
|
|
15
15
|
readonly routes?: readonly VercelRouteConfig[];
|
|
16
16
|
readonly services?: Readonly<Record<string, VercelServiceConfig>>;
|
|
17
17
|
}): AssembledEveVercelServices;
|
|
18
|
+
export {};
|
|
@@ -11,7 +11,7 @@ export interface EveVercelBuildTarget {
|
|
|
11
11
|
readonly hostOutputDirectory: string;
|
|
12
12
|
readonly projectRoot: string;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
interface EveVercelServiceContribution {
|
|
15
15
|
readonly homeRouteSrc: string | undefined;
|
|
16
16
|
readonly rootDirectory: string;
|
|
17
17
|
readonly routeSrc: string;
|
|
@@ -23,11 +23,10 @@ export declare function createEveServiceName(name: string | undefined): string;
|
|
|
23
23
|
export declare function createEveServiceRouteSrc(publicRoutePrefix: string): string;
|
|
24
24
|
export declare function createEveRequestPathRoute(routeSrc: string): VercelRouteConfig;
|
|
25
25
|
export declare function createEveHomeRouteSrc(publicRoutePrefix: string): string | undefined;
|
|
26
|
-
/** Route a member's public base path to its package-owned home channel. */
|
|
27
|
-
export declare function createEveHomePathRoute(publicRoutePrefix: string): VercelRouteConfig | undefined;
|
|
28
26
|
export declare function createEvePublicRoute(serviceName: string, routeSrc: string): VercelRouteConfig;
|
|
29
27
|
/** Compile one eve agent into its complete Vercel service and ingress contribution. */
|
|
30
28
|
export declare function compileEveVercelService(input: {
|
|
31
29
|
readonly agent: EveVercelAgentTarget;
|
|
32
30
|
readonly target: EveVercelBuildTarget;
|
|
33
31
|
}): EveVercelServiceContribution;
|
|
32
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash}from"node:crypto";import{EVE_ROUTE_PREFIX}from"#protocol/routes.js";import{joinEveRoutePath}from"#shared/eve-route-path.js";import{join}from"node:path";import{EVE_INTERNAL_AGENT_WORKSPACE_MEMBER_ENV,EVE_INTERNAL_BUILD_OUTPUT_DIRECTORY_ENV,EVE_INTERNAL_HOST_BUILD_OUTPUT_DIRECTORY_ENV}from"#internal/application/build-output-environment.js";import{EVE_PUBLIC_ROUTE_PREFIX_ENV,normalizePublicRoutePrefix}from"#shared/public-route-prefix.js";import{quoteVercelShellArgument,toVercelRelativePath}from"#internal/vercel/build-command.js";import{MAX_VERCEL_SERVICE_NAME_LENGTH,assertValidVercelServiceName,isValidVercelServiceName}from"#internal/vercel/vercel-service-name.js";function createServiceNameHash(e){return[...createHash(`sha256`).update(e).digest().subarray(0,10)].map(e=>String.fromCharCode(97+e%26)).join(``)}function createEveServiceName(e){if(e===void 0)return`eve`;let t=`eve-${e}`;if(isValidVercelServiceName(t))return t;let n=createServiceNameHash(e),r=e.replace(/[^a-z_-]+/g,`-`).replace(/^[^a-z]+|[^a-z]+$/g,``)||`agent`,i=MAX_VERCEL_SERVICE_NAME_LENGTH-5-n.length,a=`eve-${r.slice(0,i).replace(/[^a-z]+$/g,``)||`agent`}-${n}`;return assertValidVercelServiceName(a,`Generated eve service name`),a}function escapeVercelRouteLiteral(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function createEveServiceRouteSrc(e){if(e.length===0)return`^${EVE_ROUTE_PREFIX}/(.*)$`;let t=e.startsWith(`/`)?e:`/${e}`;return`^${escapeVercelRouteLiteral(joinEveRoutePath(t,EVE_ROUTE_PREFIX))}/(.*)$`}function createEveRequestPathRoute(e){return{src:e,transforms:[{args:`${EVE_ROUTE_PREFIX}/$1`,op:`set`,type:`request.path`}]}}function createEveHomeRouteSrc(e){return e.length===0?void 0:`^${escapeVercelRouteLiteral(e.startsWith(`/`)?e:`/${e}`)}/?$`}function createEveHomePathRoute(e){let t=createEveHomeRouteSrc(e);return t===void 0?void 0:{src:t,transforms:[{args:`/`,op:`set`,type:`request.path`}]}}function createEvePublicRoute(e,t){return{destination:{service:e,type:`service`},src:t}}function createIsolatedService(e){let t=join(e.projectRoot,`.eve/vercel-services`,e.serviceName),n=join(t,`.vercel`,`output`),r=normalizePublicRoutePrefix(e.agent.publicRoutePrefix),i=r===void 0?``:` && export ${EVE_PUBLIC_ROUTE_PREFIX_ENV}=${quoteVercelShellArgument(r)}`,a=e.agent.workspaceMember===!0?` && export ${EVE_INTERNAL_AGENT_WORKSPACE_MEMBER_ENV}=1`:``,o=quoteVercelShellArgument(toVercelRelativePath(t,e.agent.appRoot));return{buildCommand:`cd ${o} && export ${EVE_INTERNAL_BUILD_OUTPUT_DIRECTORY_ENV}=${quoteVercelShellArgument(toVercelRelativePath(e.agent.appRoot,n))} && export ${EVE_INTERNAL_HOST_BUILD_OUTPUT_DIRECTORY_ENV}=${quoteVercelShellArgument(toVercelRelativePath(e.agent.appRoot,e.hostOutputDirectory))}${i}${a} && ${e.agent.buildCommand}`,...e.agent.devCommand===void 0?{}:{devCommand:`cd ${o}${i}${a} && ${e.agent.devCommand}`},root:toVercelRelativePath(e.projectRoot,t),rootDirectory:t}}function compileEveVercelService(e){let t=createEveServiceName(e.agent.name),n=createEveServiceRouteSrc(e.agent.publicRoutePrefix),r=e.agent.workspaceMember===!0?createEveHomeRouteSrc(e.agent.publicRoutePrefix):void 0,i=e.agent.workspaceMember===!0?createEveHomePathRoute(e.agent.publicRoutePrefix):void 0,a=createIsolatedService({agent:e.agent,hostOutputDirectory:e.target.hostOutputDirectory,projectRoot:e.target.projectRoot,serviceName:t});return{homeRouteSrc:r,rootDirectory:a.rootDirectory,routeSrc:n,service:{buildCommand:a.buildCommand,devCommand:a.devCommand,framework:`eve`,outputDirectory:`.vercel/output`,root:a.root,routes:[...i===void 0?[]:[i],createEveRequestPathRoute(n)],...e.agent.publicRoutePrefix.length>0?{routePrefix:e.agent.publicRoutePrefix}:{}},serviceName:t}}export{compileEveVercelService,
|
|
1
|
+
import{createHash}from"node:crypto";import{EVE_ROUTE_PREFIX}from"#protocol/routes.js";import{joinEveRoutePath}from"#shared/eve-route-path.js";import{join}from"node:path";import{EVE_INTERNAL_AGENT_WORKSPACE_MEMBER_ENV,EVE_INTERNAL_BUILD_OUTPUT_DIRECTORY_ENV,EVE_INTERNAL_HOST_BUILD_OUTPUT_DIRECTORY_ENV}from"#internal/application/build-output-environment.js";import{EVE_PUBLIC_ROUTE_PREFIX_ENV,normalizePublicRoutePrefix}from"#shared/public-route-prefix.js";import{quoteVercelShellArgument,toVercelRelativePath}from"#internal/vercel/build-command.js";import{MAX_VERCEL_SERVICE_NAME_LENGTH,assertValidVercelServiceName,isValidVercelServiceName}from"#internal/vercel/vercel-service-name.js";function createServiceNameHash(e){return[...createHash(`sha256`).update(e).digest().subarray(0,10)].map(e=>String.fromCharCode(97+e%26)).join(``)}function createEveServiceName(e){if(e===void 0)return`eve`;let t=`eve-${e}`;if(isValidVercelServiceName(t))return t;let n=createServiceNameHash(e),r=e.replace(/[^a-z_-]+/g,`-`).replace(/^[^a-z]+|[^a-z]+$/g,``)||`agent`,i=MAX_VERCEL_SERVICE_NAME_LENGTH-5-n.length,a=`eve-${r.slice(0,i).replace(/[^a-z]+$/g,``)||`agent`}-${n}`;return assertValidVercelServiceName(a,`Generated eve service name`),a}function escapeVercelRouteLiteral(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function createEveServiceRouteSrc(e){if(e.length===0)return`^${EVE_ROUTE_PREFIX}/(.*)$`;let t=e.startsWith(`/`)?e:`/${e}`;return`^${escapeVercelRouteLiteral(joinEveRoutePath(t,EVE_ROUTE_PREFIX))}/(.*)$`}function createEveRequestPathRoute(e){return{src:e,transforms:[{args:`${EVE_ROUTE_PREFIX}/$1`,op:`set`,type:`request.path`}]}}function createEveHomeRouteSrc(e){return e.length===0?void 0:`^${escapeVercelRouteLiteral(e.startsWith(`/`)?e:`/${e}`)}/?$`}function createEveHomePathRoute(e){let t=createEveHomeRouteSrc(e);return t===void 0?void 0:{src:t,transforms:[{args:`/`,op:`set`,type:`request.path`}]}}function createEvePublicRoute(e,t){return{destination:{service:e,type:`service`},src:t}}function createIsolatedService(e){let t=join(e.projectRoot,`.eve/vercel-services`,e.serviceName),n=join(t,`.vercel`,`output`),r=normalizePublicRoutePrefix(e.agent.publicRoutePrefix),i=r===void 0?``:` && export ${EVE_PUBLIC_ROUTE_PREFIX_ENV}=${quoteVercelShellArgument(r)}`,a=e.agent.workspaceMember===!0?` && export ${EVE_INTERNAL_AGENT_WORKSPACE_MEMBER_ENV}=1`:``,o=quoteVercelShellArgument(toVercelRelativePath(t,e.agent.appRoot));return{buildCommand:`cd ${o} && export ${EVE_INTERNAL_BUILD_OUTPUT_DIRECTORY_ENV}=${quoteVercelShellArgument(toVercelRelativePath(e.agent.appRoot,n))} && export ${EVE_INTERNAL_HOST_BUILD_OUTPUT_DIRECTORY_ENV}=${quoteVercelShellArgument(toVercelRelativePath(e.agent.appRoot,e.hostOutputDirectory))}${i}${a} && ${e.agent.buildCommand}`,...e.agent.devCommand===void 0?{}:{devCommand:`cd ${o}${i}${a} && ${e.agent.devCommand}`},root:toVercelRelativePath(e.projectRoot,t),rootDirectory:t}}function compileEveVercelService(e){let t=createEveServiceName(e.agent.name),n=createEveServiceRouteSrc(e.agent.publicRoutePrefix),r=e.agent.workspaceMember===!0?createEveHomeRouteSrc(e.agent.publicRoutePrefix):void 0,i=e.agent.workspaceMember===!0?createEveHomePathRoute(e.agent.publicRoutePrefix):void 0,a=createIsolatedService({agent:e.agent,hostOutputDirectory:e.target.hostOutputDirectory,projectRoot:e.target.projectRoot,serviceName:t});return{homeRouteSrc:r,rootDirectory:a.rootDirectory,routeSrc:n,service:{buildCommand:a.buildCommand,devCommand:a.devCommand,framework:`eve`,outputDirectory:`.vercel/output`,root:a.root,routes:[...i===void 0?[]:[i],createEveRequestPathRoute(n)],...e.agent.publicRoutePrefix.length>0?{routePrefix:e.agent.publicRoutePrefix}:{}},serviceName:t}}export{compileEveVercelService,createEveHomeRouteSrc,createEvePublicRoute,createEveRequestPathRoute,createEveServiceName,createEveServiceRouteSrc};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "#compiled/zod/index.js";
|
|
2
|
-
|
|
2
|
+
declare const VercelProjectLinkSchema: z.ZodObject<{
|
|
3
3
|
projectId: z.ZodString;
|
|
4
4
|
orgId: z.ZodString;
|
|
5
5
|
projectName: z.ZodOptional<z.ZodString>;
|
|
@@ -8,3 +8,4 @@ export declare const VercelProjectLinkSchema: z.ZodObject<{
|
|
|
8
8
|
export type VercelProjectLink = z.infer<typeof VercelProjectLinkSchema>;
|
|
9
9
|
/** Reads a validated Vercel project link without mutating local project state. */
|
|
10
10
|
export declare function readVercelProjectLink(projectPath: string): Promise<VercelProjectLink | undefined>;
|
|
11
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readFile}from"node:fs/promises";import{z}from"#compiled/zod/index.js";import{dirname,join,relative}from"node:path";const VercelProjectLinkSchema=z.object({projectId:z.string().min(1),orgId:z.string().min(1),projectName:z.string().min(1).optional()}),VercelRepoProjectSchema=z.object({directory:z.string().min(1),id:z.string().min(1),name:z.string().min(1),orgId:z.string().min(1).optional()}),VercelRepoLinkSchema=z.object({orgId:z.string().min(1).optional(),projects:z.array(VercelRepoProjectSchema)});function normalizeDirectory(e){return e===`.`?e:e.replaceAll(`\\`,`/`).replace(/\/+$/,``)}function containsDirectory(e,t){return e===`.`||t===e||t.startsWith(`${e}/`)}function resolveRepoProject(e,t,n){let r=normalizeDirectory(relative(t,n)),i=e.projects.filter(e=>containsDirectory(normalizeDirectory(e.directory),r)),a=Math.max(...i.map(e=>e.directory.length)),o=i.filter(e=>e.directory.length===a),s=o.length===1?o[0]:void 0;if(s===void 0)return;let c=s.orgId??e.orgId;return c===void 0?void 0:{orgId:c,projectId:s.id,projectName:s.name}}async function readProjectFile(e){try{let t=await readFile(join(e,`.vercel`,`project.json`),`utf8`),n=VercelProjectLinkSchema.safeParse(JSON.parse(t));return n.success?n.data:void 0}catch{return}}async function readRepoFile(e){try{let t=await readFile(join(e,`.vercel`,`repo.json`),`utf8`),n=VercelRepoLinkSchema.safeParse(JSON.parse(t));return n.success?n.data:void 0}catch{return}}async function readRepoProjectLink(e){let t=e;for(;;){let n=await readRepoFile(t);if(n!==void 0)return resolveRepoProject(n,t,e);let r=dirname(t);if(r===t)return;t=r}}async function readVercelProjectLink(e){return await readProjectFile(e)??await readRepoProjectLink(e)}export{
|
|
1
|
+
import{readFile}from"node:fs/promises";import{z}from"#compiled/zod/index.js";import{dirname,join,relative}from"node:path";const VercelProjectLinkSchema=z.object({projectId:z.string().min(1),orgId:z.string().min(1),projectName:z.string().min(1).optional()}),VercelRepoProjectSchema=z.object({directory:z.string().min(1),id:z.string().min(1),name:z.string().min(1),orgId:z.string().min(1).optional()}),VercelRepoLinkSchema=z.object({orgId:z.string().min(1).optional(),projects:z.array(VercelRepoProjectSchema)});function normalizeDirectory(e){return e===`.`?e:e.replaceAll(`\\`,`/`).replace(/\/+$/,``)}function containsDirectory(e,t){return e===`.`||t===e||t.startsWith(`${e}/`)}function resolveRepoProject(e,t,n){let r=normalizeDirectory(relative(t,n)),i=e.projects.filter(e=>containsDirectory(normalizeDirectory(e.directory),r)),a=Math.max(...i.map(e=>e.directory.length)),o=i.filter(e=>e.directory.length===a),s=o.length===1?o[0]:void 0;if(s===void 0)return;let c=s.orgId??e.orgId;return c===void 0?void 0:{orgId:c,projectId:s.id,projectName:s.name}}async function readProjectFile(e){try{let t=await readFile(join(e,`.vercel`,`project.json`),`utf8`),n=VercelProjectLinkSchema.safeParse(JSON.parse(t));return n.success?n.data:void 0}catch{return}}async function readRepoFile(e){try{let t=await readFile(join(e,`.vercel`,`repo.json`),`utf8`),n=VercelRepoLinkSchema.safeParse(JSON.parse(t));return n.success?n.data:void 0}catch{return}}async function readRepoProjectLink(e){let t=e;for(;;){let n=await readRepoFile(t);if(n!==void 0)return resolveRepoProject(n,t,e);let r=dirname(t);if(r===t)return;t=r}}async function readVercelProjectLink(e){return await readProjectFile(e)??await readRepoProjectLink(e)}export{readVercelProjectLink};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{cancelRun}from"#internal/workflow/runtime.js";import{isInactiveWorkflowRunError}from"#internal/workflow/is-inactive-workflow-run-error.js";async function cancelExpiredDevelopmentRun(e,t){try{let n=await e.runs.get(t,{resolveData:`none`});if(n.status!==`pending`&&n.status!==`running`)return;try{await cancelRun(e,t,{cancelReason:`Development runtime snapshot is no longer available`})}catch(n){if(isInactiveWorkflowRunError(n))return;let r=await e.runs.get(t,{resolveData:`none`});if(r.status===`pending`||r.status===`running`)throw n}}catch(e){if(!isInactiveWorkflowRunError(e))throw e}}export{cancelExpiredDevelopmentRun};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type DevelopmentGenerationAvailability = {
|
|
2
|
+
readonly kind: "ready";
|
|
3
|
+
readonly runtimeAppRoot: string;
|
|
4
|
+
} | {
|
|
5
|
+
readonly kind: "missing";
|
|
6
|
+
readonly reason: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: "ineligible";
|
|
9
|
+
readonly reason: string;
|
|
10
|
+
};
|
|
11
|
+
/** Recovery checks snapshot readability, not whether changed code will replay successfully. */
|
|
12
|
+
export declare function readDevelopmentGenerationAvailability(appRoot: string, generationId: string): Promise<DevelopmentGenerationAvailability>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readDevelopmentGenerationMetadata}from"#internal/nitro/dev-runtime-generation-metadata.js";async function readDevelopmentGenerationAvailability(e,t){let n=await readDevelopmentGenerationMetadata(e,t);return n.kind===`missing`?{kind:`missing`,reason:`Development runtime snapshot is no longer available`}:n.kind===`invalid`?{kind:`ineligible`,reason:`Development generation metadata is invalid. Restore the affected snapshot from a backup or start a new session.`}:{kind:`ready`,runtimeAppRoot:n.metadata.runtimeAppRoot}}export{readDevelopmentGenerationAvailability};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{resolvePackageSourceFilePath}from"#internal/application/package.js";import{isMissingWorkflowRunError}from"#internal/workflow/is-inactive-workflow-run-error.js";import{createDiskRuntimeCompiledArtifactsSource}from"#runtime/compiled-artifacts-source.js";import{DEVELOPMENT_WORKER_APP_ROOT_ENV,DEVELOPMENT_WORKFLOW_DELIVERY_HEADER,DEVELOPMENT_WORKFLOW_SECRET_ENV,DEVELOPMENT_WORKFLOW_STREAM_ROUTE,DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER,DEVELOPMENT_WORKFLOW_WORLD_ROUTE,DEVELOPMENT_WORLD_OPERATIONS}from"#internal/workflow/development-world-protocol.js";import{timingSafeEqualStrings}from"#internal/nitro/dev-client-address.js";import{decodeDevelopmentWorldJson,decodeDevelopmentWorldValue,deserializeDevelopmentWorldError,encodeDevelopmentWorldValue}from"#internal/workflow/development-world-codec.js";import{getDevelopmentWorkflowGeneration,withDevelopmentWorkflowGeneration}from"#internal/workflow/development-generation-context.js";import{cancelExpiredDevelopmentRun}from"#internal/workflow/cancel-expired-development-run.js";var MissingDevelopmentGenerationError=class extends Error{constructor(e,t){super(`Workflow run references missing development generation "${e}". Start a new local session.`,t===void 0?void 0:{cause:t}),this.name=`MissingDevelopmentGenerationError`}};async function call(e,t=[]){let n=await fetchDevelopmentWorld(DEVELOPMENT_WORKFLOW_WORLD_ROUTE,{body:encodeDevelopmentWorldValue({arguments:t,operation:e}),method:`POST`});return decodeDevelopmentWorldValue(await n.text())}async function getGenerationAvailability(e){let t=await fetchDevelopmentWorld(DEVELOPMENT_WORKFLOW_WORLD_ROUTE,{body:encodeDevelopmentWorldValue({operation:`eve.getGenerationAvailability`,generationId:e}),method:`POST`});return decodeDevelopmentWorldValue(await t.text())}function createDevelopmentWorkflowWorld(){let e=buildForwardedOperations();return{specVersion:8,async getDeploymentId(){return getDevelopmentWorkflowGeneration()?.generationId??await call(`getDeploymentId`)},resolveLatestDeploymentId:e.topLevel.resolveLatestDeploymentId,queue:e.topLevel.queue,createQueueHandler,runs:e.groups.runs,steps:e.groups.steps,events:e.groups.events,hooks:e.groups.hooks,streams:{...e.groups.streams,get:async(e,t,n)=>{let r=new URL(resolveDevelopmentWorldBaseUrl());r.pathname=DEVELOPMENT_WORKFLOW_STREAM_ROUTE,r.searchParams.set(`runId`,e),r.searchParams.set(`name`,t),n!==void 0&&r.searchParams.set(`startIndex`,String(n));let i=await fetchDevelopmentWorld(r,{method:`GET`});if(i.body===null)throw Error(`Development Workflow stream response had no body.`);return i.body}},async start(){},async close(){}}}function buildForwardedOperations(){let e={},t={};for(let n of DEVELOPMENT_WORLD_OPERATIONS){let forward=async(...e)=>await call(n,e),r=n.indexOf(`.`);r===-1?t[n]=forward:(e[n.slice(0,r)]??={})[n.slice(r+1)]=forward}return{groups:e,topLevel:t}}function createQueueHandler(e,t){return async n=>{let r=readRequiredEnvironment(DEVELOPMENT_WORKFLOW_SECRET_ENV),i=n.headers.get(DEVELOPMENT_WORKFLOW_DELIVERY_HEADER);if(i===null||!timingSafeEqualStrings(i,r))return Response.json({error:`Workflow delivery is not trusted.`},{status:401});let a=n.headers.get(`x-vqs-queue-name`),o=n.headers.get(`x-vqs-message-id`),s=Number(n.headers.get(`x-vqs-message-attempt`));if(a===null||!a.startsWith(e)||o===null||!Number.isInteger(s)||s<1||n.body===null)return Response.json({error:`Workflow delivery is malformed.`},{status:400});let c=decodeDevelopmentWorldJson(await n.text());try{let e=readRequiredEnvironment(DEVELOPMENT_WORKER_APP_ROOT_ENV),n=await resolveDeliveryGenerationId(c);if(n===void 0)return Response.json({ok:!0});let r=await getGenerationAvailability(n);if(r.kind===`missing`)throw new MissingDevelopmentGenerationError(n);if(r.kind===`ineligible`||r.kind===`dormant`)return Response.json({ok:!0});let i=r.runtimeAppRoot,l=await withDevelopmentWorkflowGeneration({generationId:n,source:createDiskRuntimeCompiledArtifactsSource(i,{durableReference:`development-generation`,moduleMapLoaderPath:resolvePackageSourceFilePath(`src/internal/authored-module-map-loader.ts`),sandboxAppRoot:e})},async()=>await t(c,{attempt:s,messageId:o,queueName:a}));return Response.json(l===void 0?{ok:!0}:{timeoutSeconds:l.timeoutSeconds})}catch(e){if(e instanceof MissingDevelopmentGenerationError){let e=resolveDeliveryRunId(c);if(e!==void 0)try{await cancelExpiredDevelopmentRun(createDevelopmentWorkflowWorld(),e)}catch(e){return Response.json(String(e),{status:500})}return Response.json({ok:!0})}return Response.json(String(e),{status:500})}}}async function resolveDeliveryGenerationId(e){if(!isRecord(e)||e.__healthCheck===!0)return await call(`resolveLatestDeploymentId`);let t=isRecord(e.runInput)?e.runInput:void 0;if(t!==void 0)return typeof t.deploymentId==`string`?t.deploymentId:await call(`resolveLatestDeploymentId`);let n=resolveDeliveryRunId(e);if(n===void 0)return await call(`resolveLatestDeploymentId`);try{return(await call(`runs.get`,[n,{resolveData:`none`}])).deploymentId}catch(e){if(!isMissingWorkflowRunError(e))throw e;return}}function resolveDeliveryRunId(e){if(isRecord(e)&&e.__healthCheck!==!0)return typeof e.runId==`string`?e.runId:typeof e.workflowRunId==`string`?e.workflowRunId:void 0}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function fetchDevelopmentWorld(e,t){let n=e instanceof URL?e:new URL(e,resolveDevelopmentWorldBaseUrl()),r=new Headers(t.headers);r.set(DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER,readRequiredEnvironment(DEVELOPMENT_WORKFLOW_SECRET_ENV));let i=await fetch(n,{...t,headers:r});if(!i.ok){let e=await i.text(),t=readDevelopmentWorldError(e);throw t===void 0?Error(`Development Workflow World request failed (${String(i.status)}): ${e}`):t}return i}function readDevelopmentWorldError(e){try{return deserializeDevelopmentWorldError(decodeDevelopmentWorldValue(e))}catch{return}}function resolveDevelopmentWorldBaseUrl(){return readRequiredEnvironment(`WORKFLOW_LOCAL_BASE_URL`)}function readRequiredEnvironment(e){let t=process.env[e];if(t===void 0||t.length===0)throw Error(`Development Workflow transport is missing ${e}.`);return t}export{MissingDevelopmentGenerationError,createDevelopmentWorkflowWorld};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
interface SerializedDevelopmentWorldError {
|
|
2
2
|
readonly details: Readonly<Record<string, unknown>>;
|
|
3
3
|
readonly message: string;
|
|
4
4
|
readonly name: string;
|
|
@@ -9,3 +9,4 @@ export declare function decodeDevelopmentWorldValue(source: string): unknown;
|
|
|
9
9
|
export declare function decodeDevelopmentWorldJson(source: string): unknown;
|
|
10
10
|
export declare function serializeDevelopmentWorldError(error: unknown): SerializedDevelopmentWorldError;
|
|
11
11
|
export declare function deserializeDevelopmentWorldError(value: unknown): Error | undefined;
|
|
12
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DevelopmentGenerationAvailability } from "#internal/workflow/development-runtime-compatibility.js";
|
|
1
2
|
import type { AgentWorkflowWorldDefinition } from "#shared/agent-definition.js";
|
|
2
3
|
export declare const DEVELOPMENT_WORKFLOW_WORLD_ROUTE = "/eve/v1/dev/internal/workflow-world";
|
|
3
4
|
/**
|
|
@@ -29,3 +30,11 @@ export interface DevelopmentWorldCall {
|
|
|
29
30
|
readonly arguments: readonly unknown[];
|
|
30
31
|
readonly operation: DevelopmentWorldOperation;
|
|
31
32
|
}
|
|
33
|
+
export type DevelopmentGenerationAdmission = DevelopmentGenerationAvailability | {
|
|
34
|
+
readonly kind: "dormant";
|
|
35
|
+
};
|
|
36
|
+
export interface DevelopmentGenerationAvailabilityCall {
|
|
37
|
+
readonly operation: "eve.getGenerationAvailability";
|
|
38
|
+
readonly generationId: string;
|
|
39
|
+
}
|
|
40
|
+
export type DevelopmentWorldRequest = DevelopmentWorldCall | DevelopmentGenerationAvailabilityCall;
|
|
@@ -18,10 +18,12 @@ export interface ParentDevelopmentWorkflowWorld {
|
|
|
18
18
|
close(): Promise<void>;
|
|
19
19
|
handleRequest(request: Request): Promise<Response | undefined>;
|
|
20
20
|
start(): Promise<void>;
|
|
21
|
+
reconcileExpiredRuns(): Promise<void>;
|
|
21
22
|
}
|
|
22
23
|
export declare function createParentDevelopmentWorkflowWorld(input: {
|
|
23
24
|
readonly agentName: string;
|
|
24
25
|
readonly appRoot: string;
|
|
25
26
|
readonly resolveActiveGenerationId: () => string;
|
|
27
|
+
readonly resume?: boolean;
|
|
26
28
|
readonly transportSecret: string;
|
|
27
29
|
}): ParentDevelopmentWorkflowWorld;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH,resolveLocalWorkflowWorldDataDirectory}from"#internal/workflow/local-world-data-directory.js";import{DEVELOPMENT_WORKFLOW_DELIVERY_HEADER,DEVELOPMENT_WORKFLOW_STREAM_ROUTE,DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER,DEVELOPMENT_WORKFLOW_WORLD_ROUTE,DEVELOPMENT_WORLD_OPERATIONS}from"#internal/workflow/development-world-protocol.js";import{timingSafeEqualStrings}from"#internal/nitro/dev-client-address.js";import{listDevelopmentGenerationIds}from"#internal/nitro/dev-runtime-generation-metadata.js";import{deriveEveWorkflowQueuePrefix}from"#internal/workflow/queue-namespace.js";import{decodeDevelopmentWorldValue,encodeDevelopmentWorldValue,serializeDevelopmentWorldError}from"#internal/workflow/development-world-codec.js";import{cancelExpiredDevelopmentRun}from"#internal/workflow/cancel-expired-development-run.js";import{readDevelopmentGenerationAvailability}from"#internal/workflow/development-runtime-compatibility.js";import{createWorld}from"#compiled/@workflow/world-local/index.js";import{applyLocalWorkflowWorldDeliveryTimeoutDefaults}from"#internal/workflow/local-world-delivery-timeouts.js";function createParentDevelopmentWorkflowWorld(e){return new LocalParentDevelopmentWorkflowWorld(e)}var LocalParentDevelopmentWorkflowWorld=class{#e;#t;#n;#r;#i;#a;#o=new Map;#s=!1;#c=!1;#l=Promise.resolve();constructor(e){if(e.transportSecret.length<16)throw Error(`Development Workflow transport secret is too short to be trusted.`);this.#a=e.resume===!0,this.#e=e.agentName,this.#t=e.appRoot,this.#n=e.resolveActiveGenerationId,this.#r=e.transportSecret,applyLocalWorkflowWorldDeliveryTimeoutDefaults(),this.#i=createWorld({dataDir:resolveLocalWorkflowWorldDataDirectory(e.appRoot),recoverActiveRuns:!1})}async start(){if(this.#c)return;let e=this.#n();this.#o.clear();for(let t of await listDevelopmentGenerationIds(this.#t)){if(t===e)continue;if(!this.#a){this.#o.set(t,{kind:`dormant`});continue}let n=await readDevelopmentGenerationAvailability(this.#t,t);n.kind===`ineligible`&&this.#o.set(t,n)}await this.#i.start?.(),this.#c=!0;try{if(await this.#u(),!this.#a)return;let e=new Set;await reenqueueActiveDevelopmentRuns({enqueue:this.#m.bind(this),prefix:deriveEveWorkflowQueuePrefix(this.#e),world:this.#i,canRecover:async t=>{let n=await this.#_(t);return n.kind===`ineligible`&&!e.has(t)&&(e.add(t),console.warn(`[eve:dev] Skipping retained Workflow generation "${t}": ${n.reason}`)),n.kind===`ready`}})}catch(e){throw this.#c=!1,e}}async close(){this.#s||(this.#s=!0,this.#c=!1,await this.#l.catch(()=>void 0),await this.#i.close?.())}async handleRequest(e){let t=new URL(e.url);if(t.pathname===DEVELOPMENT_WORKFLOW_WORLD_ROUTE)return await this.#f(e);if(t.pathname===DEVELOPMENT_WORKFLOW_STREAM_ROUTE)return await this.#p(e,t)}async reconcileExpiredRuns(){!this.#c||this.#s||await this.#u()}#u(){return this.#l=this.#l.catch(()=>void 0).then(async()=>{if(this.#s)return;let e=await this.#d();for(let t of e)await cancelExpiredDevelopmentRun(this.#i,t)}),this.#l}async#d(){let e=[];for(let t of[`pending`,`running`]){let n;do{let r;try{r=await this.#i.runs.list({pagination:{cursor:n,limit:1e3},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)(await readDevelopmentGenerationAvailability(this.#t,t.deploymentId)).kind===`missing`&&e.push(t.runId);n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}return e}async#f(e){if(!this.#g(e)||e.method!==`POST`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});try{let t=decodeDevelopmentWorldValue(await e.text()),n=await this.#h(t);return new Response(encodeDevelopmentWorldValue(n))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#p(e,t){if(!this.#g(e)||e.method!==`GET`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});let n=t.searchParams.get(`runId`),r=t.searchParams.get(`name`),i=t.searchParams.get(`startIndex`);if(n===null||r===null)return Response.json({error:`Workflow stream request is malformed.`},{status:400});let a=i===null||i===``?void 0:Number(i);if(i===``||a!==void 0&&!Number.isInteger(a))return Response.json({error:`Workflow stream start index is invalid.`},{status:400});try{return new Response(await this.#i.streams.get(n,r,a))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#m(...e){let[t,n,r]=e;return await this.#i.queue(t,n,{...r,headers:{...r?.headers,[DEVELOPMENT_WORKFLOW_DELIVERY_HEADER]:this.#r}})}async#h(e){if(!isDevelopmentWorldRequest(e))throw Error(`Development Workflow World call is malformed.`);if(e.operation===`eve.getGenerationAvailability`)return await this.#_(e.generationId);let t=[...e.arguments];if(e.operation===`getDeploymentId`||e.operation===`resolveLatestDeploymentId`)return this.#n();if(e.operation===`queue`)return await this.#m(...t);if(e.operation===`hooks.getByToken`||e.operation===`hooks.get`){if(!this.#c)throw Error(`Local Workflow World is still starting.`);let n=e.operation===`hooks.getByToken`?await this.#i.hooks.getByToken(...t):await this.#i.hooks.get(...t),r=await this.#i.runs.get(n.runId,{resolveData:`none`}),i=await this.#_(r.deploymentId);if(i.kind===`dormant`||i.kind===`ineligible`)throw Error(`Local Workflow run was not resumed. Start a new conversation, or restart eve dev with --resume to attempt recovery.`);return n}if(e.operation===`streams.writeMulti`&&this.#i.streams.writeMulti===void 0){for(let e of t[2])await this.#i.streams.write(t[0],t[1],e);return}let n=e.operation.indexOf(`.`),r=this.#i[e.operation.slice(0,n)],i=typeof r==`object`&&r?r[e.operation.slice(n+1)]:void 0;if(typeof i==`function`)return await Reflect.apply(i,r,t)}#g(e){let t=e.headers.get(DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER);return t!==null&&timingSafeEqualStrings(t,this.#r)}async#_(e){let t=await readDevelopmentGenerationAvailability(this.#t,e);return t.kind===`ready`?this.#o.get(e)??t:t}};const DEVELOPMENT_WORLD_OPERATION_SET=new Set(DEVELOPMENT_WORLD_OPERATIONS);function isDevelopmentWorldRequest(e){return isObject(e)&&typeof e.operation==`string`&&(e.operation===`eve.getGenerationAvailability`?typeof e.generationId==`string`:DEVELOPMENT_WORLD_OPERATION_SET.has(e.operation)&&Array.isArray(e.arguments))}function isObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function reenqueueActiveDevelopmentRuns(e){for(let t of[`pending`,`running`]){let n;do{let r;try{r=await e.world.runs.list({pagination:{cursor:n},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)await e.canRecover(t.deploymentId)&&await e.enqueue(`${e.prefix}${t.workflowName}`,{runId:t.runId});n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}}export{createParentDevelopmentWorkflowWorld};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{walkCauseChain}from"#shared/errors.js";import{EntityConflictError,RunExpiredError,WorkflowRunNotFoundError}from"#compiled/@workflow/errors/index.js";function isMissingWorkflowRunError(e){return[...walkCauseChain(e)].some(e=>WorkflowRunNotFoundError.is(e)||RunExpiredError.is(e))}function isInactiveWorkflowRunError(e){return isMissingWorkflowRunError(e)||[...walkCauseChain(e)].some(e=>EntityConflictError.is(e))}export{isInactiveWorkflowRunError,isMissingWorkflowRunError};
|
|
@@ -6,7 +6,7 @@ export interface WorkflowWorldManifest {
|
|
|
6
6
|
readonly dependencies?: Readonly<Record<string, string>>;
|
|
7
7
|
readonly peerDependencies?: Readonly<Record<string, string>>;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
interface AssertWorkflowWorldCompatibilityInput {
|
|
10
10
|
/** Package name of the configured world, used only for the error message. */
|
|
11
11
|
readonly worldPackageName: string;
|
|
12
12
|
/** Parsed `package.json` of the installed configured world. */
|
|
@@ -19,3 +19,4 @@ export interface AssertWorkflowWorldCompatibilityInput {
|
|
|
19
19
|
* prerelease line that is incompatible with the line this eve release bundles.
|
|
20
20
|
*/
|
|
21
21
|
export declare function assertWorkflowWorldCompatibility(input: AssertWorkflowWorldCompatibilityInput): void;
|
|
22
|
+
export {};
|
|
@@ -56,7 +56,6 @@ export declare function collectWorkflowInputFiles(root: string): Promise<string[
|
|
|
56
56
|
export declare function createWorkflowImport(filePath: string, workingDir: string): string;
|
|
57
57
|
export declare function createWorkflowVirtualEntryPlugin(source: string): WorkflowRolldownPlugin;
|
|
58
58
|
export declare function createWorkflowPseudoPackagePlugin(): WorkflowRolldownPlugin;
|
|
59
|
-
export declare function createWorkflowRuntimeAliasPlugin(): WorkflowRolldownPlugin;
|
|
60
59
|
/**
|
|
61
60
|
* `workflow` resolves to the body-side shim. A `workflow/api` import still live
|
|
62
61
|
* after step bodies were stubbed means a body calls the runtime API; fail the
|
|
@@ -73,14 +72,6 @@ export declare function createWorkflowTransformPlugin(input: {
|
|
|
73
72
|
sideEffectFiles?: readonly string[];
|
|
74
73
|
workingDir: string;
|
|
75
74
|
}): WorkflowRolldownPlugin;
|
|
76
|
-
export declare function bundleWorkflowStepRegistrations(input: {
|
|
77
|
-
builtinsPath: string;
|
|
78
|
-
discoveredEntries: WorkflowBundleDiscoveredEntries;
|
|
79
|
-
outfile: string;
|
|
80
|
-
projectRoot: string;
|
|
81
|
-
tsconfigPath?: string;
|
|
82
|
-
workingDir: string;
|
|
83
|
-
}): Promise<void>;
|
|
84
75
|
export declare function createWorkflowNodeBuiltinGuardPlugin(): WorkflowRolldownPlugin;
|
|
85
76
|
export declare function bundleFinalWorkflowOutput(input: {
|
|
86
77
|
code: string;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import{builtinModules}from"node:module";import{mkdir,readFile,readdir}from"node:fs/promises";import{resolvePackageRoot,resolveWorkflowModulePath}from"#internal/application/package.js";import{existsSync}from"node:fs";import{dirname,extname,join,relative,resolve}from"node:path";import{normalizeEsmImportSpecifier}from"#internal/application/import-specifier.js";import{WORKFLOW_REGISTRY_GLOBAL}from"#execution/workflow-registry.js";import{atomicWriteFile}from"#shared/atomic-write-file.js";import{
|
|
2
|
-
`),o=await buildSingleRolldownChunk(`step registrations bundle for "${e.outfile}"`,{cwd:e.workingDir,input:WORKFLOW_VIRTUAL_ENTRY_ID,external:isWorkflowStepExternalPackage,platform:`node`,plugins:[createWorkflowVirtualEntryPlugin(a),createWorkflowPseudoPackagePlugin(),createWorkflowRuntimeAliasPlugin(),createEvePackageImportsPlugin(e.workingDir),createWorkflowTransformPlugin({manifest:i,mode:`step`,projectRoot:e.projectRoot,sideEffectFiles:[...t,...r],workingDir:e.workingDir})],resolve:{conditionNames:[`eve-source`],extensions:WORKFLOW_SOURCE_EXTENSIONS,mainFields:[`module`,`main`]},tsconfig:e.tsconfigPath??!1,output:{comments:!1,format:`esm`,sourcemap:`inline`}});await writeWorkflowBundleAtomically(e.outfile,o.code)}function isWorkflowStepExternalPackage(e){return WORKFLOW_STEP_EXTERNAL_PACKAGES.some(t=>e===t||e.startsWith(`${t}/`))}function createWorkflowNodeBuiltinGuardPlugin(){return{name:`eve-workflow-node-builtins`,resolveId(e,t){let n=e.startsWith(`node:`)?e.slice(5):e;if(!NODE_BUILTIN_MODULES.has(e)&&!NODE_BUILTIN_MODULES.has(n))return;let r=t?` (imported by "${t}")`:``;throw Error(`Workflow bundle cannot import Node.js builtin "${e}"${r}. Move Node.js APIs behind a "use step" function, or keep the importing module out of the workflow driver body (only reachable through a "use step").`)}}}async function bundleFinalWorkflowOutput(e){let t=createWorkflowEntrypointSource({code:e.code,queueNamespace:e.queueNamespace,stepRegistrationsImport:e.stepRegistrationsPath===void 0?void 0:toRelativeImportSpecifier(dirname(e.outfile),e.stepRegistrationsPath)});await writeWorkflowBundleAtomically(e.outfile,t)}const WORKFLOW_REGISTRY_BANNER=`globalThis.${WORKFLOW_REGISTRY_GLOBAL} = new Map();`;function composeWorkflowDriverCode(e){let t=e.map(e=>e.trim()).filter(e=>e.length>0).map(e=>`(function () {\n${e}\n})();`);return[WORKFLOW_REGISTRY_BANNER,...t].join(`
|
|
1
|
+
import{builtinModules}from"node:module";import{mkdir,readFile,readdir}from"node:fs/promises";import{resolvePackageRoot,resolveWorkflowModulePath}from"#internal/application/package.js";import{existsSync}from"node:fs";import{dirname,extname,join,relative,resolve}from"node:path";import{normalizeEsmImportSpecifier}from"#internal/application/import-specifier.js";import{WORKFLOW_REGISTRY_GLOBAL}from"#execution/workflow-registry.js";import{atomicWriteFile}from"#shared/atomic-write-file.js";import{applyWorkflowTransform,getImportPath}from"#internal/workflow-bundle/workflow-builders.js";const WORKFLOW_VIRTUAL_ENTRY_ID=`\0eve-workflow-entry`,PSEUDO_PACKAGES=new Set([`server-only`,`client-only`,`next/dist/compiled/server-only`,`next/dist/compiled/client-only`]),NODE_BUILTIN_MODULES=new Set([...builtinModules,...builtinModules.map(e=>`node:${e}`)]),WORKFLOW_SOURCE_EXTENSIONS=[`.ts`,`.tsx`,`.mts`,`.cts`,`.js`,`.jsx`,`.mjs`,`.cjs`];function isWorkflowSourceFile(e){return WORKFLOW_SOURCE_EXTENSIONS.includes(extname(e))}const IGNORED_INPUT_DIRECTORIES=new Set([`node_modules`,`.git`,`.next`,`.nuxt`,`.output`,`.vercel`,`.workflow-vitest`,`.well-known`,`.svelte-kit`,`.turbo`,`.cache`,`.yarn`,`.pnpm-store`]);async function collectWorkflowInputFiles(e){let t=[];async function visit(e){let n;try{n=await readdir(e,{withFileTypes:!0})}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}for(let r of n){if(r.isDirectory()){IGNORED_INPUT_DIRECTORIES.has(r.name)||await visit(join(e,r.name));continue}r.isFile()&&isWorkflowSourceFile(r.name)&&t.push(join(e,r.name))}}return await visit(e),t}function createWorkflowImport(e,t){let{importPath:n,isPackage:r}=getImportPath(e,t);return r?`import ${JSON.stringify(n)};`:`import ${JSON.stringify(toRelativeImportSpecifier(t,e))};`}function createWorkflowVirtualEntryPlugin(e){return{name:`eve-workflow-virtual-entry`,resolveId(e){if(e===`\0eve-workflow-entry`)return{id:e}},load(t){if(t===`\0eve-workflow-entry`)return{code:e,moduleSideEffects:!0,moduleType:`js`}}}}function createWorkflowPseudoPackagePlugin(){return{name:`eve-workflow-pseudo-packages`,resolveId(e){if(PSEUDO_PACKAGES.has(e))return{id:`\0eve-workflow-pseudo-package:${e}`}},load(e){if(e.startsWith(`\0eve-workflow-pseudo-package:`))return{code:``,moduleType:`js`}}}}function createWorkflowDriverAliasPlugin(e){return{name:`eve-workflow-driver-aliases`,resolveId(t,n){if(t===`workflow/errors`)return resolveWorkflowModulePath(t);if(t===`workflow/api`||t===`workflow/runtime`){let e=n?` (imported by "${n}")`:``;throw Error(`Workflow bundle cannot import "${t}"${e}: the runtime API is not available inside a workflow body. Call it from a "use step" function and await that step from the body.`)}if(t===`workflow`)return resolveFirstExistingPath([join(e,`src`,`internal`,`workflow-bundle`,`workflow-core-shim.ts`),join(e,`dist`,`src`,`internal`,`workflow-bundle`,`workflow-core-shim.js`)])}}}function createEvePackageImportsPlugin(e,t={}){let n=[...new Set([e,resolvePackageRoot()])];return{name:`eve-package-imports`,resolveId(e){let r=e.match(/^#compiled\/(.+)$/)?.[1];if(r!==void 0)return t.workflowCondition===!0&&r===`@workflow/core/index.js`?resolveFirstExistingPath(n.flatMap(e=>[join(e,`src`,`internal`,`workflow-bundle`,`workflow-core-shim.ts`),join(e,`dist`,`src`,`internal`,`workflow-bundle`,`workflow-core-shim.js`)])):resolveFirstExistingPath(n.flatMap(e=>[join(e,`.generated`,`compiled`,r),join(e,`dist`,`src`,`compiled`,r)]));let i=e.match(/^#(.+)\.js$/)?.[1];if(i!==void 0)return resolveFirstExistingPath(n.flatMap(e=>WORKFLOW_SOURCE_EXTENSIONS.flatMap(t=>[join(e,`src`,`${i}${t}`),join(e,`dist`,`src`,`${i}${t}`)])))}}}function createWorkflowTransformPlugin(e){let t=new Set(e.sideEffectFiles?.map(e=>e.replaceAll(`\\`,`/`))??[]);return{name:`eve-workflow-transform`,async load(n){if(!isJavaScriptLikePath(n))return;let r=await readFile(n,`utf8`),i=createManifestRelativeFilepath(e.workingDir,n),a=await applyWorkflowTransform(i,r.replace(/require\(\s*(['"])server-only\1\s*\)/g,`void 0`).replace(/require\(\s*(['"])client-only\1\s*\)/g,`void 0`),e.mode??`workflow`,n,e.projectRoot);return mergeWorkflowManifest(e.manifest,a.workflowManifest),{code:a.code,map:null,moduleSideEffects:t.has(n.replaceAll(`\\`,`/`))||void 0}}}}function createWorkflowNodeBuiltinGuardPlugin(){return{name:`eve-workflow-node-builtins`,resolveId(e,t){let n=e.startsWith(`node:`)?e.slice(5):e;if(!NODE_BUILTIN_MODULES.has(e)&&!NODE_BUILTIN_MODULES.has(n))return;let r=t?` (imported by "${t}")`:``;throw Error(`Workflow bundle cannot import Node.js builtin "${e}"${r}. Move Node.js APIs behind a "use step" function, or keep the importing module out of the workflow driver body (only reachable through a "use step").`)}}}async function bundleFinalWorkflowOutput(e){let t=createWorkflowEntrypointSource({code:e.code,queueNamespace:e.queueNamespace,stepRegistrationsImport:e.stepRegistrationsPath===void 0?void 0:toRelativeImportSpecifier(dirname(e.outfile),e.stepRegistrationsPath)});await writeWorkflowBundleAtomically(e.outfile,t)}const WORKFLOW_REGISTRY_BANNER=`globalThis.${WORKFLOW_REGISTRY_GLOBAL} = new Map();`;function composeWorkflowDriverCode(e){let t=e.map(e=>e.trim()).filter(e=>e.length>0).map(e=>`(function () {\n${e}\n})();`);return[WORKFLOW_REGISTRY_BANNER,...t].join(`
|
|
3
2
|
`)}function createWorkflowEntrypointSource(e){let t=normalizeEsmImportSpecifier(resolveWorkflowModulePath(`workflow/runtime`)),n=Buffer.from(e.code.endsWith(`
|
|
4
3
|
`)?e.code:`${e.code}\n`,`utf8`).toString(`base64`).match(/.{1,16384}/gu)??[``],r=e.stepRegistrationsImport===void 0?``:`import { __steps_registered as __eveWorkflowStepsRegistered } from ${JSON.stringify(e.stepRegistrationsImport)};\nvoid __eveWorkflowStepsRegistered;`;return`// Generated by eve. Do not edit by hand.
|
|
5
4
|
import { workflowEntrypoint } from ${JSON.stringify(t)};
|
|
@@ -8,4 +7,4 @@ ${r}
|
|
|
8
7
|
const workflowCode = Buffer.from(${JSON.stringify(n)}.join(""), "base64").toString("utf8");
|
|
9
8
|
|
|
10
9
|
export const POST = workflowEntrypoint(workflowCode, { namespace: ${JSON.stringify(e.queueNamespace)} });
|
|
11
|
-
`}function convertStepsManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={stepId:i.stepId}}return t}function convertWorkflowsManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={graph:{edges:[],nodes:[]},workflowId:i.workflowId}}return t}function convertClassesManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={classId:i.classId}}return t}function toRelativeImportSpecifier(e,t){let n=relative(e,t).replaceAll(`\\`,`/`);return n.startsWith(`./`)||n.startsWith(`../`)?n:`./${n}`}function resolveFirstExistingPath(e){for(let t of e)if(existsSync(t))return{id:resolve(t)}}async function writeWorkflowBundleAtomically(e,t){await mkdir(dirname(e),{recursive:!0}),await atomicWriteFile(e,t)}function mergeWorkflowManifest(e,t){e.steps=mergeWorkflowManifestSection(e.steps,t.steps),e.workflows=mergeWorkflowManifestSection(e.workflows,t.workflows),e.classes=mergeWorkflowManifestSection(e.classes,t.classes)}function mergeWorkflowManifestSection(e,t){if(t===void 0)return e;let n={...e};for(let[e,r]of Object.entries(t))n[e]={...n[e],...r};return n}function createManifestRelativeFilepath(e,t){let n=t.replaceAll(`\\`,`/`),r=e.replaceAll(`\\`,`/`),i=relative(r,n).replaceAll(`\\`,`/`);return i.startsWith(`../`)&&(i=i.split(`/`).filter(e=>e!==`..`).join(`/`)),i}function isJavaScriptLikePath(e){return/\.(?:[cm]?[jt]sx?)$/.test(e)}export{WORKFLOW_SOURCE_EXTENSIONS,WORKFLOW_VIRTUAL_ENTRY_ID,bundleFinalWorkflowOutput,
|
|
10
|
+
`}function convertStepsManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={stepId:i.stepId}}return t}function convertWorkflowsManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={graph:{edges:[],nodes:[]},workflowId:i.workflowId}}return t}function convertClassesManifest(e){let t={};for(let[n,r]of Object.entries(e??{})){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]={classId:i.classId}}return t}function toRelativeImportSpecifier(e,t){let n=relative(e,t).replaceAll(`\\`,`/`);return n.startsWith(`./`)||n.startsWith(`../`)?n:`./${n}`}function resolveFirstExistingPath(e){for(let t of e)if(existsSync(t))return{id:resolve(t)}}async function writeWorkflowBundleAtomically(e,t){await mkdir(dirname(e),{recursive:!0}),await atomicWriteFile(e,t)}function mergeWorkflowManifest(e,t){e.steps=mergeWorkflowManifestSection(e.steps,t.steps),e.workflows=mergeWorkflowManifestSection(e.workflows,t.workflows),e.classes=mergeWorkflowManifestSection(e.classes,t.classes)}function mergeWorkflowManifestSection(e,t){if(t===void 0)return e;let n={...e};for(let[e,r]of Object.entries(t))n[e]={...n[e],...r};return n}function createManifestRelativeFilepath(e,t){let n=t.replaceAll(`\\`,`/`),r=e.replaceAll(`\\`,`/`),i=relative(r,n).replaceAll(`\\`,`/`);return i.startsWith(`../`)&&(i=i.split(`/`).filter(e=>e!==`..`).join(`/`)),i}function isJavaScriptLikePath(e){return/\.(?:[cm]?[jt]sx?)$/.test(e)}export{WORKFLOW_SOURCE_EXTENSIONS,WORKFLOW_VIRTUAL_ENTRY_ID,bundleFinalWorkflowOutput,collectWorkflowInputFiles,composeWorkflowDriverCode,convertClassesManifest,convertStepsManifest,convertWorkflowsManifest,createEvePackageImportsPlugin,createWorkflowDriverAliasPlugin,createWorkflowEntrypointSource,createWorkflowImport,createWorkflowNodeBuiltinGuardPlugin,createWorkflowPseudoPackagePlugin,createWorkflowTransformPlugin,createWorkflowVirtualEntryPlugin,isWorkflowSourceFile,mergeWorkflowManifest};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{parseWithNitroRolldownAst}from"#internal/bundler/nitro-rolldown.js";import{collectReferencedIdentifierNames,findProperty,walkNode}from"#internal/workflow-bundle/dynamic-tool-ast-references.js";async function transformDynamicToolExecute(e,t,n=NO_WORKFLOW_FUNCTIONS){if(!t.includes(`defineTool`)&&!t.includes(`defineWorkflowTool`))return null;let r=await parseWithNitroRolldownAst(e,t),i=findDefineToolAliases(r);if(i.size===0)return null;let a=[];return walkForCallbacks(t,r,a,[],{defineToolAliases:i,workflowFunctions:n,durableSchemaAliases:findDefineToolAliases(r,[`defineDurableSchema`])}),a.length===0?null:applyTransform(t,a)}const NO_WORKFLOW_FUNCTIONS=new Set;function findDefineToolAliases(e,t=[`defineTool`,`defineWorkflowTool`]){let n=new Set;return walkNode(e,e=>{if(e.type!==`ImportDeclaration`)return!0;let r=e.source?.value;if(typeof r!=`string`||r!==`eve`&&!r.startsWith(`eve/`))return!1;for(let r of e.specifiers??[]){if(r.type===`ImportNamespaceSpecifier`&&r.local?.name)for(let e of t)n.add(`${r.local.name}.${e}`);r.type===`ImportSpecifier`&&t.includes(String(r.imported?.name??r.imported?.value))&&r.local?.name&&n.add(r.local.name)}return!1}),n}function readDefinerName(e){if(e?.type===`Identifier`)return e.name;if(e?.type!==`MemberExpression`||e.object?.type!==`Identifier`)return;let t=e.computed?e.property?.value:e.property?.name;return typeof t==`string`?`${e.object.name}.${t}`:void 0}function walkForCallbacks(e,t,n,r,i){if(t){if(isFunction(t)){let a=t.body;if(!a)return;walkForCallbacks(e,a,n,[...r,{params:extractParamNames(t),vars:collectScopeVarDeclarations(a)}],i);return}if(t.type===`CallExpression`&&i.defineToolAliases.has(readDefinerName(t.callee)??``)&&t.arguments?.length===1&&t.arguments[0]?.type===`ObjectExpression`){collectToolCallbacks(e,t.arguments[0],n,r,i);return}for(let a of Object.values(t))if(Array.isArray(a))for(let t of a)isAstNode(t)&&walkForCallbacks(e,t,n,r,i);else isAstNode(a)&&walkForCallbacks(e,a,n,r,i)}}function isWorkflowExecute(e,t){let n=e?.value;return n?.type===`Identifier`&&n.name!==void 0&&t.workflowFunctions.has(n.name)}function collectToolCallbacks(e,t,n,r,i){let a=findProperty(t,`execute`);isWorkflowExecute(a,i)||collectCallbackProperty(e,a,`execute`,`execute`,n,r),collectCallbackProperty(e,findProperty(t,`approvalKey`),`approvalKey`,`approvalKey`,n,r);let o=findProperty(t,`label`)?.value;o?.type===`ObjectExpression`&&(collectCallbackProperty(e,findProperty(o,`start`),`labelStart`,`start`,n,r),collectCallbackProperty(e,findProperty(o,`complete`),`labelComplete`,`complete`,n,r),collectCallbackProperty(e,findProperty(o,`delta`),`labelDelta`,`delta`,n,r)),collectCallbackProperty(e,findProperty(t,`toModelOutput`),`toModelOutput`,`toModelOutput`,n,r);for(let a of[`inputSchema`,`outputSchema`]){let o=findProperty(t,a),s=o?.value;o?.start!==void 0&&o.end!==void 0&&s?.start!==void 0&&s.end!==void 0&&(s.type!==`ObjectExpression`||findProperty(s,`~standard`))&&(s.type!==`CallExpression`||s.callee?.name!==`__eveDefineDurableSchema`&&!i.durableSchemaAliases.has(readDefinerName(s.callee)??``))&&n.push({body:`{ return ${e.slice(s.start,s.end)}; }`,bodyNode:s,isAsync:!1,isGenerator:!1,isReference:!1,nestedScopes:r,params:``,phase:a,propertyName:a,propEnd:o.end,propStart:o.start})}let s=findProperty(t,`approval`),c=s?.value;c?.type===`ObjectExpression`?(collectCallbackProperty(e,findProperty(c,`request`),`approvalRequest`,`request`,n,r),collectCallbackProperty(e,findProperty(c,`response`),`approvalResponse`,`response`,n,r)):collectCallbackProperty(e,s,`approvalRequest`,`approval`,n,r)}function collectCallbackProperty(e,t,n,r,i,a){if(t?.type!==`Property`||t.start===void 0||t.end===void 0)return;let o=t.value;if(o&&o.start!==void 0&&o.end!==void 0){if(isFunction(o)||t.method===!0){let s=o.body;if(!s)return;i.push({body:extractFnBody(e,o),bodyNode:s,isAsync:o.async===!0,isGenerator:o.generator===!0,isReference:!1,nestedScopes:a,params:extractFnParams(e,o),phase:n,propertyName:r,propEnd:t.end,propStart:t.start});return}o.type===`Identifier`&&i.push({body:`{ return ${e.slice(o.start,o.end)}(...__args); }`,bodyNode:o,isAsync:!1,isGenerator:!1,isReference:!0,nestedScopes:a,params:`...__args`,phase:n,propertyName:r,propEnd:t.end,propStart:t.start})}}function applyTransform(e,t){let n=[],r=[];for(let[e,i]of t.entries()){let t=collectReferencedIdentifierNames(i.bodyNode),a=i.nestedScopes.flatMap(e=>[...e.params,...e.vars]),o=extractCallbackParamNames(i.params),s=dedupeShadowed(a).filter(e=>!o.has(e)&&t.has(e)),c=s.length>0?`{ ${s.join(`, `)} }`:`{}`,l=i.phase.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`),u=i.phase===`execute`?`__eve_dynamic_exec_${e}`:`__eve_dynamic_${l}_${e}`,d=i.params,f=d?`__vars, ${d}`:`__vars`,p=s.length>0?`const ${c} = __vars;\n `:``,m=i.body.slice(1,-1).trim(),h=i.isAsync?`async `:``,g=i.isGenerator?`*`:``;r.push(`${h}function${g} ${u}(${f}) {\n ${p}${m}\n}`);let _=createLiveWrapper(i,u,c),v=i.phase===`inputSchema`||i.phase===`outputSchema`?`__eveDefineDurableSchema({ schema: ${u}, closure: ${c} })`:`__eveStampDynamicCallback(${_}, ${u}, ${c})`;n.push({end:i.propEnd,start:i.propStart,text:`${i.propertyName}: ${v}`})}let i=e;for(let e of n.sort((e,t)=>t.start-e.start))i=i.slice(0,e.start)+e.text+i.slice(e.end);return{code:`${[...t.some(e=>e.phase===`inputSchema`||e.phase===`outputSchema`)?[`import { defineDurableSchema as __eveDefineDurableSchema } from "eve/tools";`]:[],`var __eveDurableCallbackSym = Symbol.for("eve:durable-dynamic-callback");`,`function __eveStampDynamicCallback(callback, impl, closure) {`,` Object.defineProperty(callback, __eveDurableCallbackSym, { configurable: true, value: { callback: impl, closure } });`,` return callback;`,`}`].join(`
|
|
2
2
|
`)}\n${i}\n\n${r.join(`
|
|
3
|
-
`)}\n`}}function createLiveWrapper(e,t,n){if(e.isReference)return`(...__args) => ${t}(${n}, ...__args)`;let r=e.isAsync?`async `:``;return e.isGenerator?`${r}function* (...__args) { yield* ${t}(${n}, ...__args); }`:`${r}(...__args) => ${e.isAsync?`await `:``}${t}(${n}, ...__args)`}function dedupeShadowed(e){let t=new Set,n=[];for(let r=e.length-1;r>=0;r--){let i=e[r];t.has(i)||(t.add(i),n.unshift(i))}return n}function collectScopeVarDeclarations(e){let t=[];return walkNode(e,n=>n!==e&&isFunction(n)?!1:(n.type===`VariableDeclarator`&&collectPatternNames(n.id,t),n.type===`FunctionDeclaration`&&n.id?.name&&t.push(n.id.name),!0)),t}function collectPatternNames(e,t){if(e){if(e.type===`Identifier`&&e.name){t.push(e.name);return}if(e.type===`ObjectPattern`)for(let n of e.properties??[])collectPatternNames(n.type===`RestElement`?n.argument:n.value,t);if(e.type===`ArrayPattern`)for(let n of e.elements??[])collectPatternNames(n,t);e.type===`AssignmentPattern`&&collectPatternNames(e.left,t)}}function extractParamNames(e){let t=[];for(let n of e.params??[])collectPatternNames(n,t);return t}function extractFnParams(e,t){if(!t.params||t.params.length===0)return``;let n=t.params[0],r=t.params[t.params.length-1];return n.start===void 0||r.end===void 0?``:e.slice(n.start,r.end)}function extractFnBody(e,t){let n=t.body;if(!n||n.start===void 0||n.end===void 0)return`{}`;let r=e.slice(n.start,n.end);return t.type===`ArrowFunctionExpression`&&n.type!==`BlockStatement`?`{ return ${r}; }`:r}function splitParamsTopLevel(e){let t=[],n=0,r=0;for(let i=0;i<e.length;i++){let a=e[i];a===`<`||a===`(`||a===`[`||a===`{`?n++:a===`>`||a===`)`||a===`]`||a===`}`?n--:a===`,`&&n===0&&(t.push(e.slice(r,i)),r=i+1)}return t.push(e.slice(r)),t}function extractParamBindingName(e){let t=e.trim(),n=0;for(let e=0;e<t.length;e++){let r=t[e];if(r===`<`||r===`(`||r===`[`||r===`{`)n++;else if(r===`>`||r===`)`||r===`]`||r===`}`)n--;else if(n===0&&(r===`:`||r===`=`))return t.slice(0,e).trim()}return t}function extractCallbackParamNames(e){let t=[];if(!e)return new Set;for(let n of splitParamsTopLevel(e)){let e=extractParamBindingName(n);e.startsWith(`...`)?t.push(e.slice(3)):t.push(e)}return new Set(t)}function isFunction(e){return e.type===`ArrowFunctionExpression`||e.type===`FunctionDeclaration`||e.type===`FunctionExpression`}function isAstNode(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}export{transformDynamicToolExecute
|
|
3
|
+
`)}\n`}}function createLiveWrapper(e,t,n){if(e.isReference)return`(...__args) => ${t}(${n}, ...__args)`;let r=e.isAsync?`async `:``;return e.isGenerator?`${r}function* (...__args) { yield* ${t}(${n}, ...__args); }`:`${r}(...__args) => ${e.isAsync?`await `:``}${t}(${n}, ...__args)`}function dedupeShadowed(e){let t=new Set,n=[];for(let r=e.length-1;r>=0;r--){let i=e[r];t.has(i)||(t.add(i),n.unshift(i))}return n}function collectScopeVarDeclarations(e){let t=[];return walkNode(e,n=>n!==e&&isFunction(n)?!1:(n.type===`VariableDeclarator`&&collectPatternNames(n.id,t),n.type===`FunctionDeclaration`&&n.id?.name&&t.push(n.id.name),!0)),t}function collectPatternNames(e,t){if(e){if(e.type===`Identifier`&&e.name){t.push(e.name);return}if(e.type===`ObjectPattern`)for(let n of e.properties??[])collectPatternNames(n.type===`RestElement`?n.argument:n.value,t);if(e.type===`ArrayPattern`)for(let n of e.elements??[])collectPatternNames(n,t);e.type===`AssignmentPattern`&&collectPatternNames(e.left,t)}}function extractParamNames(e){let t=[];for(let n of e.params??[])collectPatternNames(n,t);return t}function extractFnParams(e,t){if(!t.params||t.params.length===0)return``;let n=t.params[0],r=t.params[t.params.length-1];return n.start===void 0||r.end===void 0?``:e.slice(n.start,r.end)}function extractFnBody(e,t){let n=t.body;if(!n||n.start===void 0||n.end===void 0)return`{}`;let r=e.slice(n.start,n.end);return t.type===`ArrowFunctionExpression`&&n.type!==`BlockStatement`?`{ return ${r}; }`:r}function splitParamsTopLevel(e){let t=[],n=0,r=0;for(let i=0;i<e.length;i++){let a=e[i];a===`<`||a===`(`||a===`[`||a===`{`?n++:a===`>`||a===`)`||a===`]`||a===`}`?n--:a===`,`&&n===0&&(t.push(e.slice(r,i)),r=i+1)}return t.push(e.slice(r)),t}function extractParamBindingName(e){let t=e.trim(),n=0;for(let e=0;e<t.length;e++){let r=t[e];if(r===`<`||r===`(`||r===`[`||r===`{`)n++;else if(r===`>`||r===`)`||r===`]`||r===`}`)n--;else if(n===0&&(r===`:`||r===`=`))return t.slice(0,e).trim()}return t}function extractCallbackParamNames(e){let t=[];if(!e)return new Set;for(let n of splitParamsTopLevel(e)){let e=extractParamBindingName(n);e.startsWith(`...`)?t.push(e.slice(3)):t.push(e)}return new Set(t)}function isFunction(e){return e.type===`ArrowFunctionExpression`||e.type===`FunctionDeclaration`||e.type===`FunctionExpression`}function isAstNode(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}export{transformDynamicToolExecute};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export declare const MAX_ACTIVITY_EVENTS_PER_BATCH = 100;
|
|
2
1
|
export type ActivityWorkKind = "root-turn" | "subagent" | "remote-agent" | "task";
|
|
3
2
|
export type ActivityWorkPhase = "running" | "completed" | "failed" | "cancelled";
|
|
4
|
-
|
|
3
|
+
type ActivityActionKind = "tool" | "skill";
|
|
5
4
|
export type ActivityActionPhase = "running" | "completed" | "failed" | "rejected" | "cancelled";
|
|
6
|
-
|
|
5
|
+
type ActivityBlockerKind = "approval" | "authorization" | "input";
|
|
7
6
|
export type ActivityBlockerPhase = "blocked" | "completed" | "cancelled" | "failed";
|
|
8
7
|
export interface ActivityWorkIdentityV1 {
|
|
9
8
|
readonly callId?: string;
|
|
@@ -110,3 +109,4 @@ export interface ActivitySnapshotV1 {
|
|
|
110
109
|
export declare function parseActivityWorkIdentityV1(value: unknown): ActivityWorkIdentityV1 | undefined;
|
|
111
110
|
/** Parses known lifecycle events while ignoring additive unknown event kinds. */
|
|
112
111
|
export declare function parseActivityBatchV1(value: unknown): ActivityBatchV1 | undefined;
|
|
112
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function parseActivityWorkIdentityV1(e){if(!isRecord(e))return;let t=e.kind;if(isOneOf(t,[`root-turn`,`subagent`,`remote-agent`,`task`])&&isIdentity(e.id)&&isIdentity(e.rootSessionId)&&isIdentity(e.rootTurnId)&&isOptionalIdentity(e.callId)&&isOptionalBoundedString(e.label)&&isOptionalBoundedString(e.name)&&isOptionalIdentity(e.parentId)&&isOptionalIdentity(e.sessionId)&&isOptionalIdentity(e.turnId))return{...e,callId:e.callId,id:e.id,kind:t,label:e.label,name:e.name,parentId:e.parentId,rootSessionId:e.rootSessionId,rootTurnId:e.rootTurnId,sessionId:e.sessionId,turnId:e.turnId}}function parseActivityBatchV1(e){if(!isRecord(e)||!hasOnlyKeys(e,[`events`,`version`])||e.version!==1||!Array.isArray(e.events)||e.events.length>100)return;let t=[];for(let n of e.events){if(!isRecord(n)||!isBoundedString(n.kind))return;let e=parseKnownEvent(n);if(e!==null){if(e===void 0)return;t.push(e)}}return{events:t,version:1}}function parseKnownEvent(e){switch(e.kind){case`work.started`:{if(!hasOnlyKeys(e,[`eventId`,`kind`,`startedAt`,`work`]))return;let t=parseActivityWorkIdentityV1(e.work);return!isIdentity(e.eventId)||!isBoundedString(e.startedAt)||t===void 0?void 0:{eventId:e.eventId,kind:`work.started`,startedAt:e.startedAt,work:t}}case`work.settled`:return!hasOnlyKeys(e,[`eventId`,`kind`,`outcome`,`settledAt`,`workId`])||!isIdentity(e.eventId)||!isOneOf(e.outcome,[`completed`,`failed`,`cancelled`])||!isBoundedString(e.settledAt)||!isIdentity(e.workId)?void 0:{eventId:e.eventId,kind:`work.settled`,outcome:e.outcome,settledAt:e.settledAt,workId:e.workId};case`action.started`:{if(!hasOnlyKeys(e,[`action`,`eventId`,`kind`,`startedAt`]))return;let t=parseActionIdentity(e.action);return!isIdentity(e.eventId)||!isBoundedString(e.startedAt)||t===void 0?void 0:{action:t,eventId:e.eventId,kind:`action.started`,startedAt:e.startedAt}}case`action.settled`:return!hasOnlyKeys(e,[`actionId`,`eventId`,`kind`,`outcome`,`settledAt`])||!isIdentity(e.actionId)||!isIdentity(e.eventId)||!isOneOf(e.outcome,[`completed`,`failed`,`rejected`,`cancelled`])||!isBoundedString(e.settledAt)?void 0:{actionId:e.actionId,eventId:e.eventId,kind:`action.settled`,outcome:e.outcome,settledAt:e.settledAt};case`action.label.updated`:return!hasOnlyKeys(e,[`actionId`,`eventId`,`kind`,`label`])||!isIdentity(e.actionId)||!isIdentity(e.eventId)||!isBoundedString(e.label)?void 0:{actionId:e.actionId,eventId:e.eventId,kind:`action.label.updated`,label:e.label};case`blocker.started`:{if(!hasOnlyKeys(e,[`blocker`,`eventId`,`kind`,`startedAt`]))return;let t=parseBlockerIdentity(e.blocker);return!isIdentity(e.eventId)||!isBoundedString(e.startedAt)||t===void 0?void 0:{blocker:t,eventId:e.eventId,kind:`blocker.started`,startedAt:e.startedAt}}case`blocker.settled`:return!hasOnlyKeys(e,[`blockerId`,`eventId`,`kind`,`outcome`,`settledAt`])||!isIdentity(e.blockerId)||!isIdentity(e.eventId)||!isOneOf(e.outcome,[`completed`,`cancelled`,`failed`])||!isBoundedString(e.settledAt)?void 0:{blockerId:e.blockerId,eventId:e.eventId,kind:`blocker.settled`,outcome:e.outcome,settledAt:e.settledAt};default:return null}}function parseActionIdentity(e){if(isRecord(e)&&hasOnlyKeys(e,[`id`,`kind`,`name`,`parentWorkId`,`rootTurnId`,`stepIndex`])&&!(!isIdentity(e.id)||!isOneOf(e.kind,[`tool`,`skill`])||!isBoundedString(e.name)||!isIdentity(e.parentWorkId)||!isIdentity(e.rootTurnId)||!Number.isInteger(e.stepIndex)||e.stepIndex<0))return{id:e.id,kind:e.kind,name:e.name,parentWorkId:e.parentWorkId,rootTurnId:e.rootTurnId,stepIndex:e.stepIndex}}function parseBlockerIdentity(e){if(isRecord(e)&&hasOnlyKeys(e,[`id`,`kind`,`label`,`parentActionId`,`parentWorkId`,`rootTurnId`])&&isIdentity(e.id)&&isOneOf(e.kind,[`approval`,`authorization`,`input`])&&isOptionalBoundedString(e.label)&&isOptionalIdentity(e.parentActionId)&&isIdentity(e.parentWorkId)&&isIdentity(e.rootTurnId))return{id:e.id,kind:e.kind,label:e.label,parentActionId:e.parentActionId,parentWorkId:e.parentWorkId,rootTurnId:e.rootTurnId}}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function hasOnlyKeys(e,t){return Object.keys(e).every(e=>t.includes(e))}function isBoundedString(e){return typeof e==`string`&&e.length>0&&e.length<=500}function isIdentity(e){return typeof e==`string`&&e.length>0&&e.length<=1e3}function isOptionalIdentity(e){return e===void 0||isIdentity(e)}function isOptionalBoundedString(e){return e===void 0||isBoundedString(e)}function isOneOf(e,t){return typeof e==`string`&&t.includes(e)}export{parseActivityBatchV1,parseActivityWorkIdentityV1};
|
|
@@ -8,8 +8,8 @@ interface BaggageMember {
|
|
|
8
8
|
readonly value: string;
|
|
9
9
|
readonly properties: readonly BaggageProperty[];
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
type ForwardedTraceBaggage = "absent" | "malformed" | ForwardedTraceAssertion;
|
|
12
|
+
type ForwardedParentSessionBaggage = "absent" | "malformed" | SessionParent;
|
|
13
13
|
/** Reads remote parent lineage without trusting the caller that supplied it. */
|
|
14
14
|
export declare function readForwardedParentSessionBaggage(value: string | null): ForwardedParentSessionBaggage;
|
|
15
15
|
/** Replaces Eve's remote parent lineage while preserving unrelated baggage. */
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { z } from "#compiled/zod/index.js";
|
|
2
|
-
/** Outcome of requesting cooperative turn cancellation. */
|
|
3
|
-
export type CancelTurnStatus = "accepted" | "no_active_turn";
|
|
4
2
|
/** Transport-independent result of requesting cooperative turn cancellation. */
|
|
5
3
|
export type CancelTurnResult = {
|
|
6
4
|
readonly sessionId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MessageStreamEvent } from "#protocol/message.js";
|
|
2
2
|
/** Remembers which session-stream events have already been consumed. */
|
|
3
|
-
|
|
3
|
+
type EventDeduper = {
|
|
4
4
|
/**
|
|
5
5
|
* Records `event` and returns true when it is new — false when its id was
|
|
6
6
|
* already admitted, so the caller should drop it.
|
|
@@ -23,3 +23,4 @@ export type EventDeduper = {
|
|
|
23
23
|
* with the `startIndex` cursor instead.
|
|
24
24
|
*/
|
|
25
25
|
export declare function createEventDeduper(): EventDeduper;
|
|
26
|
+
export {};
|
|
@@ -8,9 +8,3 @@ export declare const EVENT_ID_PREFIX = "evt_";
|
|
|
8
8
|
* process, not across the separate steps of one session.
|
|
9
9
|
*/
|
|
10
10
|
export declare function createEventId(): string;
|
|
11
|
-
/**
|
|
12
|
-
* Returns true when `value` has the shape {@link createEventId} produces.
|
|
13
|
-
*
|
|
14
|
-
* Shape-only: this does not prove eve minted the id.
|
|
15
|
-
*/
|
|
16
|
-
export declare function isEventId(value: string): boolean;
|