eve 0.82.0 → 0.83.1
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 +81 -0
- package/NOTICE +1 -1
- package/dist/src/channel/pending-authorization.d.ts +5 -0
- package/dist/src/channel/pending-authorization.js +1 -1
- package/dist/src/channel/session.d.ts +2 -0
- package/dist/src/channel/session.js +1 -1
- package/dist/src/channel/types.d.ts +5 -0
- package/dist/src/chunks/{use-eve-agent-DTu78IAF.js → use-eve-agent-DnbG9c7c.js} +73 -14
- package/dist/src/chunks/{use-eve-agent-DlznYwQk.js → use-eve-agent-ZY7NQ2VW.js} +73 -14
- package/dist/src/cli/dev/local-server-child.js +1 -1
- package/dist/src/cli/dev/local-server-cleanup.js +1 -1
- package/dist/src/cli/dev/tui/question-panel.d.ts +4 -1
- package/dist/src/cli/dev/tui/question-panel.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +4 -4
- package/dist/src/cli/run.js +1 -1
- package/dist/src/client/eve-agent-store.d.ts +1 -1
- package/dist/src/client/eve-agent-store.js +1 -1
- package/dist/src/client/index.d.ts +1 -0
- package/dist/src/client/message-response.d.ts +18 -0
- package/dist/src/client/message-response.js +1 -1
- package/dist/src/client/session-controls.d.ts +6 -0
- package/dist/src/client/session-controls.js +1 -1
- package/dist/src/client/session.d.ts +4 -0
- package/dist/src/client/session.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +8 -8
- package/dist/src/compiled/@eve/catalog/index.js +1 -1
- package/dist/src/compiled/@workflow/core/events-consumer.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.d.ts +5 -3
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +1 -37
- package/dist/src/compiled/@workflow/core/runtime/event-limit-warning.d.ts +32 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +5 -6
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +16 -0
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +15 -18
- package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +20 -0
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/seeded-nanoid.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +14 -3
- package/dist/src/compiled/@workflow/core/serialization.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +0 -18
- 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 +48 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/env-config.d.ts +24 -0
- package/dist/src/compiled/@workflow/world/events.d.ts +126 -7
- package/dist/src/compiled/@workflow/world/index.d.ts +3 -3
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +59 -8
- package/dist/src/compiled/@workflow/world/queue.d.ts +71 -9
- package/dist/src/compiled/@workflow/world/recovery.d.ts +6 -0
- package/dist/src/compiled/@workflow/world/test-support/duplicate-event-fixtures.d.ts +3 -0
- package/dist/src/compiled/@workflow/world/test-support/in-band-fence-conformance.d.ts +46 -0
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +18 -18
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-BW-kbMMn.js → attribute-changes-7se_SE2q.js} +3 -3
- package/dist/src/compiled/_chunks/workflow/dist-CcnNPAp4.js +1 -0
- package/dist/src/compiled/_chunks/workflow/dist-S9cZRway.js +3 -0
- package/dist/src/compiled/_chunks/workflow/helpers-CxNRXH0a.js +1 -0
- package/dist/src/compiled/_chunks/workflow/private-DLYTSBbu.js +1 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-CPiIfe8r.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{run-DzdAqdb1.js → run-BJSLCXR4.js} +6 -6
- package/dist/src/compiled/_chunks/workflow/serialization-B9gneT9Z.js +15 -0
- package/dist/src/compiled/_chunks/workflow/sleep-BL0oQs3R.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{wait-until-xbRRDuUf.js → wait-until-BPou0RGO.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/workflow-routes-BaljomCk.js +1 -0
- package/dist/src/compiled/{@ai-sdk/code-mode → run}/LICENSE +1 -1
- package/dist/src/compiled/run/index.d.ts +384 -0
- package/dist/src/compiled/run/index.js +650 -0
- package/dist/src/compiler/extension-compatibility.d.ts +21 -14
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-sandbox.js +1 -1
- package/dist/src/compiler/workspace-resources.js +1 -1
- package/dist/src/context/build-callback-context.js +1 -1
- package/dist/src/context/build-dynamic-tools.js +1 -1
- package/dist/src/context/dynamic-skill-lifecycle.d.ts +2 -2
- package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/prewarm.d.ts +27 -0
- package/dist/src/context/prewarm.js +1 -0
- package/dist/src/context/providers/sandbox.d.ts +7 -0
- package/dist/src/context/providers/sandbox.js +1 -1
- package/dist/src/context/run-step.js +1 -1
- package/dist/src/discover/extension-specifier.d.ts +1 -0
- package/dist/src/discover/extension-specifier.js +1 -1
- package/dist/src/discover/lib.d.ts +4 -3
- package/dist/src/discover/lib.js +1 -1
- package/dist/src/discover/named-source-directory.d.ts +3 -2
- package/dist/src/evals/cli/eval.d.ts +2 -0
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/evals/define-eval-config.d.ts +5 -4
- package/dist/src/evals/define-eval-config.js +1 -1
- package/dist/src/evals/index.d.ts +1 -1
- package/dist/src/evals/runner/artifacts.js +2 -2
- package/dist/src/evals/runner/attempt-label.d.ts +2 -0
- package/dist/src/evals/runner/attempt-label.js +1 -0
- package/dist/src/evals/runner/derive-run-facts.d.ts +12 -0
- package/dist/src/evals/runner/derive-run-facts.js +1 -1
- package/dist/src/evals/runner/execute-task.js +1 -1
- package/dist/src/evals/runner/reporters/braintrust.js +1 -1
- package/dist/src/evals/runner/reporters/console.js +1 -1
- package/dist/src/evals/runner/reporters/datadog.js +1 -1
- package/dist/src/evals/runner/reporters/junit.js +2 -2
- package/dist/src/evals/runner/reporters/types.d.ts +2 -0
- package/dist/src/evals/runner/run-evals.d.ts +5 -0
- package/dist/src/evals/runner/run-evals.js +1 -1
- package/dist/src/evals/session-manager.js +1 -1
- package/dist/src/evals/session.d.ts +4 -1
- package/dist/src/evals/session.js +2 -2
- package/dist/src/evals/types.d.ts +39 -2
- package/dist/src/eve-channel/index.js +1 -1
- package/dist/src/eve-channel/request.d.ts +0 -1
- package/dist/src/eve-channel/request.js +2 -2
- package/dist/src/execution/agent-sessions/context.d.ts +1 -1
- package/dist/src/execution/agent-sessions/context.js +1 -1
- package/dist/src/execution/coordination-dispatch-shared.d.ts +3 -0
- package/dist/src/execution/coordination-dispatch-shared.js +1 -1
- package/dist/src/execution/dynamic-workflow/program-step.d.ts +7 -7
- package/dist/src/execution/dynamic-workflow/program-step.js +1 -1
- package/dist/src/execution/dynamic-workflow/schema.d.ts +18 -11
- package/dist/src/execution/dynamic-workflow/schema.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/dynamic-workflow/workflow.js +1 -1
- package/dist/src/execution/eve-workflow-attributes.d.ts +3 -1
- package/dist/src/execution/eve-workflow-attributes.js +1 -1
- package/dist/src/execution/invoke-tool.js +1 -1
- package/dist/src/execution/sandbox/abort-bound-session.js +1 -1
- package/dist/src/execution/sandbox/active-connections.d.ts +28 -0
- package/dist/src/execution/sandbox/active-connections.js +1 -0
- package/dist/src/execution/sandbox/bindings/docker-cli.d.ts +10 -2
- package/dist/src/execution/sandbox/bindings/docker-cli.js +2 -2
- package/dist/src/execution/sandbox/bindings/docker-connection.d.ts +15 -0
- package/dist/src/execution/sandbox/bindings/docker-connection.js +2 -0
- package/dist/src/execution/sandbox/bindings/docker-container.d.ts +2 -0
- package/dist/src/execution/sandbox/bindings/docker-container.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker-network.d.ts +5 -0
- package/dist/src/execution/sandbox/bindings/docker-network.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker.d.ts +12 -15
- package/dist/src/execution/sandbox/bindings/docker.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +19 -29
- package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash.d.ts +2 -4
- package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
- package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +0 -20
- package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -1
- package/dist/src/execution/sandbox/bindings/local.d.ts +4 -6
- package/dist/src/execution/sandbox/bindings/local.js +1 -1
- package/dist/src/execution/sandbox/bindings/vercel-base-runtime.d.ts +2 -0
- package/dist/src/execution/sandbox/bindings/vercel-base-runtime.js +2 -2
- package/dist/src/execution/sandbox/bindings/vercel-errors.js +2 -2
- package/dist/src/execution/sandbox/bindings/vercel-lifecycle.d.ts +7 -5
- package/dist/src/execution/sandbox/bindings/vercel-lifecycle.js +1 -1
- package/dist/src/execution/sandbox/bindings/vercel.d.ts +5 -11
- package/dist/src/execution/sandbox/bindings/vercel.js +1 -2
- package/dist/src/execution/sandbox/development-cleanup.d.ts +0 -1
- package/dist/src/execution/sandbox/development-cleanup.js +1 -1
- package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -1
- package/dist/src/execution/sandbox/development-run.d.ts +0 -2
- package/dist/src/execution/sandbox/development-run.js +1 -1
- package/dist/src/execution/sandbox/dockerfile.d.ts +0 -4
- package/dist/src/execution/sandbox/dockerfile.js +1 -1
- package/dist/src/execution/sandbox/ensure.d.ts +31 -11
- package/dist/src/execution/sandbox/ensure.js +1 -1
- package/dist/src/execution/sandbox/glob-tool.js +3 -3
- package/dist/src/execution/sandbox/grep-tool.js +1 -1
- package/dist/src/execution/sandbox/logging-session.js +1 -1
- package/dist/src/execution/sandbox/prewarm.d.ts +23 -3
- package/dist/src/execution/sandbox/prewarm.js +2 -1
- package/dist/src/execution/sandbox/read-file.js +1 -1
- package/dist/src/execution/sandbox/require-sandbox.d.ts +3 -2
- package/dist/src/execution/sandbox/require-sandbox.js +1 -1
- package/dist/src/execution/sandbox/ripgrep-probe.js +1 -1
- package/dist/src/execution/sandbox/session.d.ts +10 -20
- package/dist/src/execution/sandbox/session.js +2 -2
- package/dist/src/execution/session/admission.js +1 -1
- package/dist/src/execution/session/checkpoint-migrations.js +1 -1
- package/dist/src/execution/session/entry-input.d.ts +5 -4
- package/dist/src/execution/session/entry.js +1 -1
- package/dist/src/execution/session/handoff-state.d.ts +5 -0
- package/dist/src/execution/session/handoff-state.js +1 -0
- package/dist/src/execution/session/handoff-steps.d.ts +1 -5
- package/dist/src/execution/session/handoff-steps.js +1 -1
- package/dist/src/execution/session/handoff.d.ts +2 -1
- package/dist/src/execution/session/handoff.js +1 -1
- package/dist/src/execution/session/handover-tracing.d.ts +3 -0
- package/dist/src/execution/session/handover-tracing.js +1 -0
- package/dist/src/execution/session/input-queue.d.ts +3 -0
- package/dist/src/execution/session/input-queue.js +1 -1
- package/dist/src/execution/session/next-input.d.ts +3 -0
- package/dist/src/execution/session/next-input.js +1 -1
- package/dist/src/execution/session/prewarm-step.d.ts +13 -0
- package/dist/src/execution/session/prewarm-step.js +1 -0
- package/dist/src/execution/session/program.d.ts +4 -1
- package/dist/src/execution/session/program.js +1 -1
- package/dist/src/execution/session/state-cursor.d.ts +11 -0
- package/dist/src/execution/session/state-cursor.js +1 -1
- package/dist/src/execution/session/timeout-control.d.ts +4 -0
- package/dist/src/execution/session/timeout-control.js +1 -1
- package/dist/src/execution/session/turn-control.d.ts +5 -2
- package/dist/src/execution/session/turn-control.js +1 -1
- package/dist/src/execution/session/turn-step-types.d.ts +2 -0
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +1 -0
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/session-inbox/inbox.d.ts +17 -1
- package/dist/src/execution/session-inbox/inbox.js +1 -1
- package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
- package/dist/src/execution/session-inbox/protocol.js +1 -1
- package/dist/src/execution/session-inbox/resume.d.ts +2 -1
- package/dist/src/execution/session-inbox/resume.js +1 -1
- package/dist/src/execution/session-prewarm.d.ts +8 -0
- package/dist/src/execution/session-prewarm.js +1 -0
- package/dist/src/execution/skills/instructions.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/workflow/body.js +1 -1
- package/dist/src/execution/tools/workflow/step-context.d.ts +11 -0
- package/dist/src/execution/tools/workflow/step-execution.js +1 -1
- package/dist/src/execution/tools/workflow/step.js +1 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/extensions/git/extension/lib/github-shell-schema.js +1 -1
- package/dist/src/framework/sources/modules/sandbox.d.ts +1 -1
- package/dist/src/harness/attachment-staging.d.ts +3 -7
- package/dist/src/harness/attachment-staging.js +1 -1
- package/dist/src/harness/hitl/index.d.ts +2 -1
- package/dist/src/harness/hitl/index.js +1 -1
- package/dist/src/harness/hitl/view.d.ts +1 -0
- package/dist/src/harness/hitl/view.js +1 -0
- package/dist/src/harness/model-call/run.js +1 -1
- package/dist/src/harness/semantic-errors/rules/sandbox.d.ts +3 -5
- package/dist/src/harness/semantic-errors/rules/sandbox.js +1 -1
- package/dist/src/harness/step/prompt.js +1 -1
- package/dist/src/harness/tool-history-repair.d.ts +9 -0
- package/dist/src/harness/tool-history-repair.js +1 -0
- package/dist/src/harness/tool-model-output.d.ts +19 -3
- package/dist/src/harness/tool-model-output.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +8 -4
- package/dist/src/internal/application/optional-package-import.d.ts +10 -0
- package/dist/src/internal/application/optional-package-import.js +1 -1
- package/dist/src/internal/application/stamped-package-version.js +1 -1
- package/dist/src/internal/attachments/limited-read.d.ts +2 -2
- package/dist/src/internal/authored-module-build-options.d.ts +6 -0
- package/dist/src/internal/authored-module-build-options.js +1 -1
- package/dist/src/internal/authored-module-cache.d.ts +10 -0
- package/dist/src/internal/authored-module-cache.js +1 -0
- package/dist/src/internal/authored-module-graph.js +1 -1
- package/dist/src/internal/authored-module-loader.js +1 -1
- package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
- package/dist/src/internal/bundler/nitro-rolldown.d.ts +3 -1
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
- package/dist/src/internal/bundler/pseudo-packages.d.ts +11 -0
- package/dist/src/internal/bundler/pseudo-packages.js +1 -0
- package/dist/src/internal/nitro/host/build-extension.d.ts +6 -0
- package/dist/src/internal/nitro/host/build-extension.js +2 -2
- package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.d.ts +3 -1
- package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.js +3 -5
- package/dist/src/internal/nitro/host/create-application-nitro.d.ts +2 -3
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -0
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/dev-build-host.d.ts +83 -0
- package/dist/src/internal/nitro/host/dev-build-host.js +1 -0
- package/dist/src/internal/nitro/host/dev-build-operations.d.ts +6 -0
- package/dist/src/internal/nitro/host/dev-build-operations.js +1 -0
- package/dist/src/internal/nitro/host/dev-build-process.d.ts +1 -0
- package/dist/src/internal/nitro/host/dev-build-process.js +1 -0
- package/dist/src/internal/nitro/host/development-runtime-prune-plugin.d.ts +4 -1
- package/dist/src/internal/nitro/host/development-runtime-prune-plugin.js +3 -2
- package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +13 -0
- package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
- package/dist/src/internal/nitro/host/optional-engine-dependency-plugin.js +1 -1
- package/dist/src/internal/nitro/host/prepare-application-host.d.ts +3 -0
- package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
- package/dist/src/internal/nitro/host/sandbox-shutdown-plugin.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host/start-production-server.js +3 -3
- package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.js +1 -1
- package/dist/src/internal/nitro/host.js +1 -1
- package/dist/src/internal/workflow/local-world-delivery-auth.d.ts +17 -0
- package/dist/src/internal/workflow/local-world-delivery-auth.js +1 -0
- package/dist/src/internal/workflow/queue-namespace.d.ts +2 -0
- package/dist/src/internal/workflow/queue-namespace.js +1 -1
- package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -1
- package/dist/src/internal/workflow-bundle/builder-support.js +2 -2
- package/dist/src/internal/workflow-bundle/builder.js +2 -2
- package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +1 -1
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/protocol/prewarm-session.d.ts +14 -0
- package/dist/src/protocol/prewarm-session.js +1 -0
- package/dist/src/protocol/routes.d.ts +2 -2
- package/dist/src/public/channels/discord/authorization.d.ts +45 -0
- package/dist/src/public/channels/discord/authorization.js +3 -0
- package/dist/src/public/channels/discord/defaults.d.ts +14 -3
- package/dist/src/public/channels/discord/defaults.js +2 -2
- package/dist/src/public/channels/discord/discordChannel.d.ts +15 -1
- package/dist/src/public/channels/discord/discordChannel.js +1 -1
- package/dist/src/public/channels/discord/gateway/connection.d.ts +26 -0
- package/dist/src/public/channels/discord/gateway/connection.js +1 -0
- package/dist/src/public/channels/discord/gateway/forwarder.d.ts +14 -0
- package/dist/src/public/channels/discord/gateway/forwarder.js +1 -0
- package/dist/src/public/channels/discord/gateway/index.d.ts +59 -0
- package/dist/src/public/channels/discord/gateway/index.js +1 -0
- package/dist/src/public/channels/discord/inbound.d.ts +10 -3
- package/dist/src/public/channels/discord/inbound.js +2 -2
- package/dist/src/public/channels/discord/index.d.ts +3 -2
- package/dist/src/public/channels/discord/index.js +1 -1
- package/dist/src/public/channels/discord/messages.d.ts +116 -0
- package/dist/src/public/channels/discord/messages.js +2 -0
- package/dist/src/public/channels/github/checkout.js +1 -1
- package/dist/src/public/channels/linq/linqChannel.d.ts +4 -1
- package/dist/src/public/channels/linq/linqChannel.js +1 -1
- package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
- package/dist/src/public/channels/same-environment-oidc.d.ts +7 -0
- package/dist/src/public/channels/same-environment-oidc.js +1 -0
- package/dist/src/public/definitions/channel.js +1 -1
- package/dist/src/public/definitions/sandbox.d.ts +1 -1
- package/dist/src/public/next/server.js +1 -1
- package/dist/src/public/sandbox/docker-sandbox.d.ts +6 -1
- package/dist/src/public/sandbox/docker.d.ts +1 -8
- package/dist/src/public/sandbox/index.d.ts +3 -3
- package/dist/src/public/sandbox/just-bash-sandbox.d.ts +87 -7
- package/dist/src/public/sandbox/just-bash.d.ts +1 -1
- package/dist/src/public/sandbox/provider.d.ts +5 -1
- package/dist/src/public/sandbox/provider.js +1 -1
- package/dist/src/public/sandbox/vercel-sandbox.d.ts +16 -9
- package/dist/src/public/sandbox/vercel.d.ts +0 -1
- package/dist/src/public/sandbox/vercel.js +1 -1
- package/dist/src/public/tools/agent.d.ts +8 -1
- package/dist/src/public/tools/agent.js +1 -1
- package/dist/src/react/use-eve-agent.d.ts +1 -1
- package/dist/src/runtime/agent/resolve-model.js +1 -1
- package/dist/src/runtime/connections/openapi-client.d.ts +2 -0
- package/dist/src/runtime/connections/openapi-client.js +1 -1
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-channel.js +1 -1
- package/dist/src/runtime/resolve-sandbox.js +1 -1
- package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
- package/dist/src/runtime/sandbox/registry.d.ts +2 -0
- package/dist/src/runtime/sandbox/registry.js +1 -1
- package/dist/src/runtime/subagents/workflow.d.ts +6 -0
- package/dist/src/runtime/subagents/workflow.js +1 -1
- package/dist/src/runtime/workspace/seed-files.d.ts +9 -12
- package/dist/src/runtime/workspace/seed-files.js +1 -1
- package/dist/src/runtime/workspace/spec.d.ts +1 -1
- package/dist/src/runtime/workspace/spec.js +1 -1
- package/dist/src/runtime/workspace/types.d.ts +2 -6
- package/dist/src/sandbox/provider.d.ts +185 -0
- package/dist/src/sandbox/provider.js +1 -0
- package/dist/src/sandbox/providers/default.d.ts +20 -19
- package/dist/src/sandbox/providers/default.js +1 -1
- package/dist/src/sandbox/providers/docker.d.ts +5 -2
- package/dist/src/sandbox/providers/docker.js +1 -1
- package/dist/src/sandbox/providers/just-bash.d.ts +4 -3
- package/dist/src/sandbox/providers/just-bash.js +1 -1
- package/dist/src/sandbox/providers/vercel.d.ts +4 -10
- package/dist/src/sandbox/providers/vercel.js +1 -1
- package/dist/src/sandbox/providers.d.ts +0 -1
- package/dist/src/sandbox/providers.js +1 -1
- package/dist/src/sandbox/state.d.ts +61 -0
- package/dist/src/sandbox/state.js +1 -1
- package/dist/src/self-modification/deployed-sandbox.d.ts +4 -9
- package/dist/src/self-modification/deployed-sandbox.js +1 -1
- package/dist/src/self-modification/filesystem.d.ts +3 -3
- package/dist/src/self-modification/remote/config.d.ts +2 -2
- package/dist/src/self-modification/remote/config.js +1 -1
- package/dist/src/self-modification/setup.d.ts +0 -1
- package/dist/src/self-modification/setup.js +8 -8
- package/dist/src/setup/integrations/discord/api.d.ts +7 -0
- package/dist/src/setup/integrations/discord/api.js +1 -1
- package/dist/src/setup/integrations/discord/daemon.d.ts +18 -0
- package/dist/src/setup/integrations/discord/daemon.js +21 -0
- package/dist/src/setup/integrations/discord/setup.d.ts +24 -4
- package/dist/src/setup/integrations/discord/setup.js +5 -4
- package/dist/src/setup/integrations/self-modification/setup.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/update/web-options.js +1 -1
- package/dist/src/setup/scaffold/version-tokens.d.ts +0 -1
- package/dist/src/setup/scaffold/version-tokens.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +2 -0
- package/dist/src/shared/built-server-start-failure.d.ts +12 -0
- package/dist/src/shared/built-server-start-failure.js +3 -0
- package/dist/src/shared/framework-eve-server.d.ts +2 -0
- package/dist/src/shared/framework-eve-server.js +2 -2
- package/dist/src/shared/sandbox-environment.d.ts +4 -10
- package/dist/src/shared/sandbox-environment.js +1 -1
- package/dist/src/shared/sandbox-network-policy.d.ts +45 -9
- package/dist/src/shared/sandbox-provider.d.ts +0 -103
- package/dist/src/shared/sandbox-provider.js +1 -1
- package/dist/src/shared/sandbox-recorded-data-error.d.ts +4 -0
- package/dist/src/shared/sandbox-recorded-data-error.js +1 -0
- package/dist/src/shared/sandbox-session-gone-error.d.ts +12 -0
- package/dist/src/shared/sandbox-session-gone-error.js +1 -0
- package/dist/src/shared/sandbox-session.d.ts +97 -83
- package/dist/src/shared/sandbox-template-error.d.ts +19 -4
- package/dist/src/shared/sandbox-template-error.js +1 -1
- package/dist/src/shared/sandbox-tool-session-error.d.ts +4 -0
- package/dist/src/shared/sandbox-tool-session-error.js +1 -0
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/skill-paths.d.ts +4 -5
- package/dist/src/shared/skill-paths.js +2 -2
- package/dist/src/shared/workflow-sandbox.d.ts +4 -41
- package/dist/src/shared/workflow-sandbox.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.d.ts +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/definition.js +1 -1
- package/dist/src/tools/durable-callbacks.d.ts +5 -1
- package/dist/src/tools/durable-callbacks.js +1 -1
- package/dist/src/tools/dynamic.d.ts +3 -3
- package/dist/src/tools/model-output.d.ts +23 -5
- package/dist/src/tools/model-output.js +1 -1
- package/dist/src/tools/provided/ask-question-workflow.js +1 -1
- package/dist/src/tools/provided/glob.js +1 -1
- package/dist/src/tools/provided/grep.js +1 -1
- package/dist/src/tools/provided/read-file.js +1 -1
- package/dist/src/tools/provided/sleep-workflow.js +1 -1
- package/dist/src/tools/provided/workflow.js +1 -1
- package/dist/src/tools/provided/write-file.js +1 -1
- package/dist/src/tools/workflow-definition.d.ts +19 -4
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.d.ts +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/custom.mdx +3 -3
- package/docs/channels/discord.mdx +279 -7
- package/docs/channels/eve.mdx +13 -2
- package/docs/channels/linq.mdx +2 -2
- package/docs/channels/mcp.mdx +2 -2
- package/docs/channels/overview.mdx +1 -1
- package/docs/channels/photon.mdx +1 -1
- package/docs/concepts/built-in-tools.md +31 -8
- package/docs/concepts/execution-model-and-durability.mdx +6 -101
- package/docs/concepts/security-model.md +2 -0
- package/docs/concepts/sessions-runs-and-streaming.md +44 -36
- package/docs/connections/openapi.mdx +2 -0
- package/docs/evals/overview.mdx +1 -1
- package/docs/evals/reporters.mdx +5 -5
- package/docs/evals/running.mdx +19 -1
- package/docs/guides/client/messages.mdx +1 -1
- package/docs/guides/deployment/overview.md +4 -4
- package/docs/guides/deployment/self-hosting.md +50 -1
- package/docs/guides/dev-tui.md +1 -1
- package/docs/guides/dynamic-capabilities.md +2 -2
- package/docs/guides/frontend/overview.mdx +34 -10
- package/docs/guides/instrumentation/agent-runs.mdx +16 -0
- package/docs/guides/instrumentation/otel.mdx +23 -0
- package/docs/guides/self-modification.md +1 -1
- package/docs/guides/session-context.md +1 -1
- package/docs/instructions.mdx +1 -1
- package/docs/meta.json +1 -0
- package/docs/reference/agent-files.md +4 -4
- package/docs/reference/cli.md +24 -17
- package/docs/reference/typescript-api.md +9 -3
- package/docs/sandbox/custom-providers.mdx +254 -0
- package/docs/sandbox/default.mdx +71 -4
- package/docs/sandbox/docker.mdx +15 -3
- package/docs/sandbox/index.mdx +32 -106
- package/docs/sandbox/just-bash.mdx +54 -0
- package/docs/sandbox/meta.json +9 -1
- package/docs/sandbox/troubleshooting.mdx +215 -0
- package/docs/sandbox/vercel.mdx +48 -7
- package/docs/skills.mdx +1 -1
- package/docs/subagents/index.mdx +2 -2
- package/docs/tools/overview.mdx +20 -1
- package/docs/tools/workflows.mdx +73 -5
- package/docs/tutorial/run-analysis.mdx +2 -2
- package/docs/use-cases.mdx +250 -0
- package/package.json +14 -20
- package/dist/src/compiled/@ai-sdk/code-mode/_run.d.ts +0 -1
- package/dist/src/compiled/@ai-sdk/code-mode/index.d.ts +0 -325
- package/dist/src/compiled/@ai-sdk/code-mode/index.js +0 -660
- package/dist/src/compiled/_chunks/workflow/dist-CyBgVS7g.js +0 -1
- package/dist/src/compiled/_chunks/workflow/dist-T5NnW-0k.js +0 -3
- package/dist/src/compiled/_chunks/workflow/helpers-DlLD3ov_.js +0 -1
- package/dist/src/compiled/_chunks/workflow/private-tQUuwBoQ.js +0 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-DMsV_b4n.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-DPdYS_w2.js +0 -16
- package/dist/src/compiled/_chunks/workflow/sleep-BY6leHh8.js +0 -1
- package/dist/src/compiled/_chunks/workflow/workflow-routes-CwqB063q.js +0 -1
- package/dist/src/execution/sandbox/active-handles.d.ts +0 -32
- package/dist/src/execution/sandbox/active-handles.js +0 -1
- package/dist/src/execution/sandbox/bindings/docker-session.d.ts +0 -6
- package/dist/src/execution/sandbox/bindings/docker-session.js +0 -2
- package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -15
- package/dist/src/execution/sandbox/bindings/immutable-resources.js +0 -2
- package/dist/src/execution/sandbox/bindings/microsandbox-create.d.ts +0 -12
- package/dist/src/execution/sandbox/bindings/microsandbox-create.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -42
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-metadata.d.ts +0 -29
- package/dist/src/execution/sandbox/bindings/microsandbox-metadata.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +0 -18
- package/dist/src/execution/sandbox/bindings/microsandbox-network.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -37
- package/dist/src/execution/sandbox/bindings/microsandbox-options.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-platform.d.ts +0 -21
- package/dist/src/execution/sandbox/bindings/microsandbox-platform.js +0 -21
- package/dist/src/execution/sandbox/bindings/microsandbox-process.d.ts +0 -3
- package/dist/src/execution/sandbox/bindings/microsandbox-process.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.d.ts +0 -11
- package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-runtime.d.ts +0 -82
- package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -12
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +0 -16
- package/dist/src/execution/sandbox/bindings/microsandbox.js +0 -1
- package/dist/src/execution/sandbox/provider-host-development.d.ts +0 -2
- package/dist/src/execution/sandbox/provider-host-development.js +0 -1
- package/dist/src/execution/sandbox/provider-host.d.ts +0 -2
- package/dist/src/execution/sandbox/provider-host.js +0 -1
- package/dist/src/execution/tool-session/sandbox.d.ts +0 -22
- package/dist/src/execution/tool-session/sandbox.js +0 -1
- package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +0 -48
- package/dist/src/public/sandbox/microsandbox-sandbox.js +0 -1
- package/dist/src/public/sandbox/microsandbox.d.ts +0 -9
- package/dist/src/public/sandbox/microsandbox.js +0 -1
- package/dist/src/sandbox/providers/microsandbox.d.ts +0 -12
- package/dist/src/sandbox/providers/microsandbox.js +0 -1
- package/docs/sandbox/microsandbox.mdx +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash}from"node:crypto";import{expectObjectRecord,interopAuthoredModuleNamespace}from"#internal/authored-module.js";import{existsSync,mkdirSync,realpathSync,writeFileSync}from"node:fs";import{dirname,join,relative,resolve,sep}from"node:path";import{resolvePackageSourceFilePath}from"#internal/application/package.js";import{createCompiledModuleMapSource}from"#compiler/module-map.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{normalizeEsmImportSpecifier}from"#internal/application/import-specifier.js";import{createAuthoredAssetImportPlugin}from"#internal/authored-asset-import-plugin.js";import{authoredModuleConditions}from"#internal/authored-module-conditions.js";import{RESOLVE_EXTENSIONS,createDistributionPackageBoundaryPlugin,createGenerationPackageBoundaryPlugin,createRuntimeLoaderPackageBoundaryPlugin,isNodeModulesPath,normalizeExternalDependencies}from"#internal/authored-package-boundary.js";import{createAuthoredPackageTsConfigPathsPlugin}from"#internal/authored-package-tsconfig-paths.js";import{createAuthoredRelativeExtensionResolverPlugin}from"#internal/authored-relative-extension-resolver.js";import{createNodeEsmCompatBannerPlugin}from"#internal/node-esm-compat-banner.js";import{buildSingleRolldownChunk,buildWithNitroRolldown}from"#internal/bundler/nitro-rolldown.js";import{createAuthoredModuleBuildOptions,resolveAuthoredTsConfigPath}from"#internal/authored-module-build-options.js";import{EXTENSION_CHUNK_DIRECTORY,createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createAuthoredModuleBundleError}from"#internal/authored-module-bundle.js";import{createAuthoredModuleEvaluationError}from"#internal/authored-module-evaluation-error.js";import{createExtensionScopePlugin,createFixedMountScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{prepareAuthoredWorkflowDirectives}from"#internal/workflow-bundle/authored-workflow-directives.js";import{createDynamicCapabilityTransformPlugin}from"#internal/workflow-bundle/dynamic-capability-transform-plugin.js";import{applyWorkflowTransform,isAuthoredApplicationModule}from"#internal/workflow-bundle/workflow-builders.js";const AUTHORED_BUNDLED_MODULE_EXTENSION=/\.[cm]?[jt]sx?$/,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH=join(`node_modules`,`.cache`,`eve`,`authored-modules`),inFlightModuleLoads=new Map;function loadAuthoredModuleNamespace(e,t={}){let n=createInFlightModuleLoadKey(resolve(e),t),r=inFlightModuleLoads.get(n);if(r!==void 0)return r;let i=(async()=>{try{return await doLoadAuthoredModuleNamespace(e,t)}finally{inFlightModuleLoads.delete(n)}})();return inFlightModuleLoads.set(n,i),i}async function doLoadAuthoredModuleNamespace(e,t){let n=AUTHORED_BUNDLED_MODULE_EXTENSION.test(e)?await loadBundledAuthoredModule(e,t):await import(createFileImportSpecifier(e));return expectObjectRecord(interopAuthoredModuleNamespace(n),`Expected "${e}" to export a module namespace object.`)}function createFileImportSpecifier(e){let t=e.replaceAll(`\\`,`/`);return/^[A-Za-z]:\//.test(t)?`file:///${encodeURI(t)}`:t.startsWith(`/`)?`file://${encodeURI(t)}`:t}async function bundleAuthoredModuleCode(e,t={}){let n=resolveAuthoredPackageRoot(e),r=t.extension?.entry,i=t.extension?.mountId,a=r===void 0?[]:[...t.extension?.ancestors??[],{...r,mountId:i}];return await buildAuthoredModuleBundle(e,t,{packageBoundaryPlugin:createRuntimeLoaderPackageBoundaryPlugin({externalDependencies:normalizeExternalDependencies(t.externalDependencies),packageRoot:n,extensionSpecifiers:new Set(a.map(e=>e.specifier))}),plugins:[...r===void 0?[]:[{name:`eve-compile-mount-entry`,resolveId(e){return e===`\0eve-compile-mount-entry`?e:void 0},load(t){if(t!==`\0eve-compile-mount-entry`)return;let n=a.map(e=>`import ${JSON.stringify(`${e.mountSourcePath}?eve-mount=${encodeURIComponent(e.mountId)}`)};`),r=`${e}?eve-mount=${encodeURIComponent(i)}`;return`${n.join(` `)} export * from ${JSON.stringify(r)}; import entry from ${JSON.stringify(r)}; export default entry;`}}],createAuthoredWorkflowDirectivePlugin({appRoot:t.appRoot??n}),...r===void 0?[]:[createExtensionMountPlugin(a)]],sourcemap:`inline`})}async function bundleAuthoredModuleForGeneration(e,t={}){return await buildAuthoredModuleBundle(e,t,{packageBoundaryPlugin:createGenerationPackageBoundaryPlugin({externalDependencies:normalizeExternalDependencies(t.externalDependencies),packageRoot:resolveAuthoredPackageRoot(e)}),plugins:[createAuthoredDirectiveGuardPlugin()],sourcemap:!1})}async function bundleExtensionDistributionGraph(e){let t=[createAuthoredDirectiveGuardPlugin(),createAuthoredRelativeExtensionResolverPlugin({extensions:RESOLVE_EXTENSIONS}),createAuthoredAssetImportPlugin({packageRoot:e.packageRoot}),createAuthoredPackageTsConfigPathsPlugin({appPackageRoot:e.packageRoot,extensions:RESOLVE_EXTENSIONS}),createNodeEsmCompatBannerPlugin({includeRequire:!0}),createDistributionPackageBoundaryPlugin({packageRoot:e.packageRoot,runtimeDependencies:e.runtimeDependencies})];try{let n=await buildWithNitroRolldown({cwd:e.packageRoot,input:Object.fromEntries(e.entries.map(e=>[e.name,e.path])),platform:`node`,plugins:t,resolve:{extensions:[...RESOLVE_EXTENSIONS]},tsconfig:resolveAuthoredTsConfigPath(e.packageRoot),write:!1,output:{chunkFileNames:`${EXTENSION_CHUNK_DIRECTORY}/[name]-[hash].mjs`,codeSplitting:!0,comments:!1,entryFileNames:`[name].mjs`,format:`esm`,sourcemap:!1}}),r=new Map,i=new Set;for(let e of n.output)if(e.type===`chunk`){r.set(e.fileName,e.code);for(let t of[...e.imports,...e.dynamicImports])i.add(t)}return{files:r,imports:[...i]}}catch(t){throw createAuthoredModuleBundleError(e.packageRoot,t)}}async function bundleAuthoredModuleMapForGeneration(e){let t=resolveAuthoredPackageRoot(e.manifest.agentRoot),n=resolvePackageSourceFilePath(usesDevelopmentExtensionModules(e.manifest)?`src/internal/development-programmatic-source-loader.ts`:`src/internal/programmatic-source-loader.ts`),r=normalizeExternalDependencies([...e.manifest.config.build?.externalDependencies??[],...e.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])]),i=createCompiledModuleMapSource({manifest:e.manifest,moduleMapPath:e.moduleMapPath,programmaticLoaderImportSpecifier:n}),a=[e.manifest,...e.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),o=createExtensionScopePlugin([e.manifest,...e.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})))),s=new AuthoredWorkflowSourceRecorder(e.appRoot),c=[createVirtualGenerationModuleMapPlugin({id:e.moduleMapPath,source:i}),createExternalRuntimeImportPlugin(n),createAuthoredWorkflowDirectivePlugin({appRoot:e.appRoot,recorder:s}),createDynamicCapabilityTransformPlugin({workflowFunctions:e=>s.workflowFunctions(e)}),s.graphPlugin(),createExtensionMountPlugin(a,extensionOverridePaths(e.manifest)),o,createAuthoredRelativeExtensionResolverPlugin({extensions:RESOLVE_EXTENSIONS}),createAuthoredAssetImportPlugin({packageRoot:t}),createAuthoredPackageTsConfigPathsPlugin({appPackageRoot:t,extensions:RESOLVE_EXTENSIONS}),createNodeEsmCompatBannerPlugin({includeRequire:!0}),createGenerationPackageBoundaryPlugin({externalDependencies:r,packageRoot:t,extensionSpecifiers:new Set(a.map(e=>e.specifier)),resolveExternalPaths:e.resolveExternalPaths})].filter(e=>e!==null);try{let n=await buildSingleRolldownChunk(`authored module map`,{cwd:t,input:e.moduleMapPath,platform:`node`,plugins:c,resolve:{conditionNames:authoredModuleConditions(),extensions:[...RESOLVE_EXTENSIONS]},tsconfig:resolveAuthoredTsConfigPath(t),output:{comments:!1,format:`esm`,sourcemap:!1}});return{authoredWorkflowModules:s.modules(),code:n.code,sourceModules:s.sourceModules().filter(t=>t!==e.moduleMapPath),workflowSourceFingerprint:s.fingerprint()}}catch(t){throw createAuthoredModuleBundleError(e.moduleMapPath,t)}}function usesDevelopmentExtensionModules(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>Object.values(e.bindings).some(e=>e.backing.kind===`programmatic`&&e.backing.registryId.startsWith(`eve:development-extension:`)))}function createExternalRuntimeImportPlugin(e){let t=normalizeEsmImportSpecifier(e);return{name:`eve-external-runtime-import`,resolveId(e){return e===t?{external:!0,id:t}:void 0}}}var AuthoredWorkflowSourceRecorder=class{#e;#t=new Set;#n=new Map;#r=new Map;#i=new Map;constructor(e){this.#e=e}record(e,t,n){this.#r.set(e,t),(n.steps!==void 0||n.workflows!==void 0)&&this.#t.add(e);let r=Object.values(n.workflows??{})[0];r!==void 0&&this.#i.set(e,new Set(Object.keys(r)))}workflowFunctions(e){return this.#i.get(e)}sourceModules(){return[...this.#r.keys()].sort()}graphPlugin(){let e=this.#n;return{name:`eve-authored-module-graph`,buildEnd(){for(let t of this.getModuleIds()){let n=this.getModuleInfo(t);n!==null&&e.set(t,[...n.importedIds,...n.dynamicallyImportedIds])}}}}modules(){return{directiveModules:[...this.#t].sort(),workflowModules:[...this.#i.keys()].sort()}}fingerprint(){if(this.#t.size===0)return;let e=new Set,t=[...this.#t];for(let n=t.shift();n!==void 0;n=t.shift())!e.has(n)&&this.#r.has(n)&&(e.add(n),t.push(...this.#n.get(n)??[]));let n=createHash(`sha256`);for(let t of[...e].sort())n.update(relative(this.#e,t).split(sep).join(`/`)).update(`\0`).update(this.#r.get(t)??``).update(`\0`);return n.digest(`hex`)}};function createVirtualGenerationModuleMapPlugin(e){return{name:`eve-generation-module-map`,resolveId(t){return t===e.id?t:void 0},load(t){return t===e.id?{code:e.source,moduleType:`js`}:void 0}}}async function buildAuthoredModuleBundle(e,t,n){let r=resolveAuthoredPackageRoot(e);try{return(await buildSingleRolldownChunk(`authored module for "${e}"`,{...createAuthoredModuleBuildOptions({packageBoundaryPlugin:n.packageBoundaryPlugin,packageRoot:r,plugins:[...n.plugins,t.extension===void 0?null:createFixedMountScopePlugin(t.extension.mountId)]}),input:t.extension?.entry===void 0?e:`\0eve-compile-mount-entry`,output:{comments:!1,format:`esm`,sourcemap:n.sourcemap}})).code}catch(t){throw createAuthoredModuleBundleError(e,t)}}function createAuthoredDirectiveGuardPlugin(){return{name:`eve-authored-directive-guard`,async transform(e,t){if(!AUTHORED_BUNDLED_MODULE_EXTENSION.test(t)||isNodeModulesPath(t))return;let{hasDirectives:n}=await prepareAuthoredWorkflowDirectives({filePath:t,source:e});if(n)throw Error(`Module "${t}" uses Workflow directives ("use step" or "use workflow"). Workflow directives are supported in application modules only, not in extensions or instrumentation.`)}}}function createAuthoredWorkflowDirectivePlugin(e){return{name:`eve-authored-workflow-directives`,async transform(t,n){if(!AUTHORED_BUNDLED_MODULE_EXTENSION.test(n)||isNodeModulesPath(n)||!isAuthoredApplicationModule(n,e.appRoot))return;let r=await applyWorkflowTransform(n,t,`client`,n,e.appRoot);return e.recorder?.record(n,t,r.workflowManifest),r.code===t?void 0:{code:r.code,map:null}}}}async function loadBundledAuthoredModule(e,t){let n=t.extension===void 0?await t.graph?.entryPath(e,t.externalDependencies??[]):void 0,r=n===void 0?await writeAuthoredModuleBundle(e,t):createFileImportSpecifier(n);try{return await import(r)}catch(t){throw createAuthoredModuleEvaluationError(e,t)}}async function writeAuthoredModuleBundle(e,t){let n=await bundleAuthoredModuleCode(e,t),r=normalizeExternalDependencies(t.externalDependencies),i=createHash(`sha1`).update(e).update(`\0`).update(r.join(`\0`)).update(`\0`).update(t.extension?.mountId??``).update(`\0`).update(n).digest(`hex`),a=join(resolveAuthoredPackageRoot(e),AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH),o=join(a,`${i}.mjs`);existsSync(o)||(mkdirSync(a,{recursive:!0}),writeFileSync(o,n));let s=t.extension?.evaluationId??``;return`${createFileImportSpecifier(o)}?v=${i}&instance=${encodeURIComponent(s)}`}function createInFlightModuleLoadKey(e,t){return`${e}\0${normalizeExternalDependencies(t.externalDependencies).join(`\0`)}\0${t.extension?.mountId??``}\0${t.extension?.evaluationId??``}\0${t.appRoot??``}`}function resolveAuthoredPackageRoot(e){let t=dirname(e);for(;;){if(existsSync(join(t,`package.json`)))return realpathSync(t);let n=dirname(t);if(n===t)throw Error(`Failed to resolve the authored package root for "${e}".`);t=n}}export{AUTHORED_BUNDLED_MODULE_EXTENSION,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH,bundleAuthoredModuleCode,bundleAuthoredModuleForGeneration,bundleAuthoredModuleMapForGeneration,bundleExtensionDistributionGraph,createAuthoredWorkflowDirectivePlugin,loadAuthoredModuleNamespace,resolveAuthoredPackageRoot};
|
|
1
|
+
import{createHash}from"node:crypto";import{expectObjectRecord,interopAuthoredModuleNamespace}from"#internal/authored-module.js";import{existsSync,realpathSync}from"node:fs";import{dirname,join,relative,resolve,sep}from"node:path";import{resolvePackageSourceFilePath}from"#internal/application/package.js";import{createCompiledModuleMapSource}from"#compiler/module-map.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{normalizeEsmImportSpecifier}from"#internal/application/import-specifier.js";import{writeAuthoredModuleCacheFile}from"#internal/authored-module-cache.js";import{createAuthoredAssetImportPlugin}from"#internal/authored-asset-import-plugin.js";import{authoredModuleConditions}from"#internal/authored-module-conditions.js";import{RESOLVE_EXTENSIONS,createDistributionPackageBoundaryPlugin,createGenerationPackageBoundaryPlugin,createRuntimeLoaderPackageBoundaryPlugin,isNodeModulesPath,normalizeExternalDependencies}from"#internal/authored-package-boundary.js";import{createAuthoredPackageTsConfigPathsPlugin}from"#internal/authored-package-tsconfig-paths.js";import{createAuthoredRelativeExtensionResolverPlugin}from"#internal/authored-relative-extension-resolver.js";import{createNodeEsmCompatBannerPlugin}from"#internal/node-esm-compat-banner.js";import{buildSingleRolldownChunk,buildWithNitroRolldown}from"#internal/bundler/nitro-rolldown.js";import{createAuthoredModuleBuildOptions,evaluatedBundleSourcemap,resolveAuthoredTsConfigPath}from"#internal/authored-module-build-options.js";import{EXTENSION_CHUNK_DIRECTORY,createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createAuthoredModuleBundleError}from"#internal/authored-module-bundle.js";import{createAuthoredModuleEvaluationError}from"#internal/authored-module-evaluation-error.js";import{createExtensionScopePlugin,createFixedMountScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{prepareAuthoredWorkflowDirectives}from"#internal/workflow-bundle/authored-workflow-directives.js";import{createDynamicCapabilityTransformPlugin}from"#internal/workflow-bundle/dynamic-capability-transform-plugin.js";import{applyWorkflowTransform,isAuthoredApplicationModule}from"#internal/workflow-bundle/workflow-builders.js";const AUTHORED_BUNDLED_MODULE_EXTENSION=/\.[cm]?[jt]sx?$/,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH=join(`node_modules`,`.cache`,`eve`,`authored-modules`),inFlightModuleLoads=new Map;function loadAuthoredModuleNamespace(e,t={}){let n=createInFlightModuleLoadKey(resolve(e),t),r=inFlightModuleLoads.get(n);if(r!==void 0)return r;let i=(async()=>{try{return await doLoadAuthoredModuleNamespace(e,t)}finally{inFlightModuleLoads.delete(n)}})();return inFlightModuleLoads.set(n,i),i}async function doLoadAuthoredModuleNamespace(e,t){let n=AUTHORED_BUNDLED_MODULE_EXTENSION.test(e)?await loadBundledAuthoredModule(e,t):await import(createFileImportSpecifier(e));return expectObjectRecord(interopAuthoredModuleNamespace(n),`Expected "${e}" to export a module namespace object.`)}function createFileImportSpecifier(e){let t=e.replaceAll(`\\`,`/`);return/^[A-Za-z]:\//.test(t)?`file:///${encodeURI(t)}`:t.startsWith(`/`)?`file://${encodeURI(t)}`:t}async function bundleAuthoredModuleCode(e,t={}){let n=resolveAuthoredPackageRoot(e),r=t.extension?.entry,i=t.extension?.mountId,a=r===void 0?[]:[...t.extension?.ancestors??[],{...r,mountId:i}];return await buildAuthoredModuleBundle(e,t,{packageBoundaryPlugin:createRuntimeLoaderPackageBoundaryPlugin({externalDependencies:normalizeExternalDependencies(t.externalDependencies),packageRoot:n,extensionSpecifiers:new Set(a.map(e=>e.specifier))}),plugins:[...r===void 0?[]:[{name:`eve-compile-mount-entry`,resolveId(e){return e===`\0eve-compile-mount-entry`?e:void 0},load(t){if(t!==`\0eve-compile-mount-entry`)return;let n=a.map(e=>`import ${JSON.stringify(`${e.mountSourcePath}?eve-mount=${encodeURIComponent(e.mountId)}`)};`),r=`${e}?eve-mount=${encodeURIComponent(i)}`;return`${n.join(` `)} export * from ${JSON.stringify(r)}; import entry from ${JSON.stringify(r)}; export default entry;`}}],createAuthoredWorkflowDirectivePlugin({appRoot:t.appRoot??n}),...r===void 0?[]:[createExtensionMountPlugin(a)]],sourcemap:evaluatedBundleSourcemap()})}async function bundleAuthoredModuleForGeneration(e,t={}){return await buildAuthoredModuleBundle(e,t,{packageBoundaryPlugin:createGenerationPackageBoundaryPlugin({externalDependencies:normalizeExternalDependencies(t.externalDependencies),packageRoot:resolveAuthoredPackageRoot(e)}),plugins:[createAuthoredDirectiveGuardPlugin()],sourcemap:!1})}async function bundleExtensionDistributionGraph(e){let t=[createAuthoredDirectiveGuardPlugin(),createAuthoredRelativeExtensionResolverPlugin({extensions:RESOLVE_EXTENSIONS}),createAuthoredAssetImportPlugin({packageRoot:e.packageRoot}),createAuthoredPackageTsConfigPathsPlugin({appPackageRoot:e.packageRoot,extensions:RESOLVE_EXTENSIONS}),createNodeEsmCompatBannerPlugin({includeRequire:!0}),createDistributionPackageBoundaryPlugin({packageRoot:e.packageRoot,runtimeDependencies:e.runtimeDependencies})];try{let n=await buildWithNitroRolldown({cwd:e.packageRoot,input:Object.fromEntries(e.entries.map(e=>[e.name,e.path])),platform:`node`,plugins:t,resolve:{extensions:[...RESOLVE_EXTENSIONS]},tsconfig:resolveAuthoredTsConfigPath(e.packageRoot),write:!1,output:{chunkFileNames:`${EXTENSION_CHUNK_DIRECTORY}/[name]-[hash].mjs`,codeSplitting:!0,comments:!1,entryFileNames:`[name].mjs`,format:`esm`,sourcemap:!1}}),r=new Map,i=new Set;for(let e of n.output)if(e.type===`chunk`){r.set(e.fileName,e.code);for(let t of[...e.imports,...e.dynamicImports])i.add(t)}return{files:r,imports:[...i]}}catch(t){throw createAuthoredModuleBundleError(e.packageRoot,t)}}async function bundleAuthoredModuleMapForGeneration(e){let t=resolveAuthoredPackageRoot(e.manifest.agentRoot),n=resolvePackageSourceFilePath(usesDevelopmentExtensionModules(e.manifest)?`src/internal/development-programmatic-source-loader.ts`:`src/internal/programmatic-source-loader.ts`),r=normalizeExternalDependencies([...e.manifest.config.build?.externalDependencies??[],...e.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])]),i=createCompiledModuleMapSource({manifest:e.manifest,moduleMapPath:e.moduleMapPath,programmaticLoaderImportSpecifier:n}),a=[e.manifest,...e.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),o=createExtensionScopePlugin([e.manifest,...e.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})))),s=new AuthoredWorkflowSourceRecorder(e.appRoot),c=[createVirtualGenerationModuleMapPlugin({id:e.moduleMapPath,source:i}),createExternalRuntimeImportPlugin(n),createAuthoredWorkflowDirectivePlugin({appRoot:e.appRoot,recorder:s}),createDynamicCapabilityTransformPlugin({workflowFunctions:e=>s.workflowFunctions(e)}),s.graphPlugin(),createExtensionMountPlugin(a,extensionOverridePaths(e.manifest)),o,createAuthoredRelativeExtensionResolverPlugin({extensions:RESOLVE_EXTENSIONS}),createAuthoredAssetImportPlugin({packageRoot:t}),createAuthoredPackageTsConfigPathsPlugin({appPackageRoot:t,extensions:RESOLVE_EXTENSIONS}),createNodeEsmCompatBannerPlugin({includeRequire:!0}),createGenerationPackageBoundaryPlugin({externalDependencies:r,packageRoot:t,extensionSpecifiers:new Set(a.map(e=>e.specifier)),resolveExternalPaths:e.resolveExternalPaths})].filter(e=>e!==null);try{let n=await buildSingleRolldownChunk(`authored module map`,{cwd:t,input:e.moduleMapPath,platform:`node`,plugins:c,resolve:{conditionNames:authoredModuleConditions(),extensions:[...RESOLVE_EXTENSIONS]},tsconfig:resolveAuthoredTsConfigPath(t),output:{comments:!1,format:`esm`,sourcemap:!1}});return{authoredWorkflowModules:s.modules(),code:n.code,sourceModules:s.sourceModules().filter(t=>t!==e.moduleMapPath),workflowSourceFingerprint:s.fingerprint()}}catch(t){throw createAuthoredModuleBundleError(e.moduleMapPath,t)}}function usesDevelopmentExtensionModules(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>Object.values(e.bindings).some(e=>e.backing.kind===`programmatic`&&e.backing.registryId.startsWith(`eve:development-extension:`)))}function createExternalRuntimeImportPlugin(e){let t=normalizeEsmImportSpecifier(e);return{name:`eve-external-runtime-import`,resolveId(e){return e===t?{external:!0,id:t}:void 0}}}var AuthoredWorkflowSourceRecorder=class{#e;#t=new Set;#n=new Map;#r=new Map;#i=new Map;constructor(e){this.#e=e}record(e,t,n){this.#r.set(e,t),(n.steps!==void 0||n.workflows!==void 0)&&this.#t.add(e);let r=Object.values(n.workflows??{})[0];r!==void 0&&this.#i.set(e,new Set(Object.keys(r)))}workflowFunctions(e){return this.#i.get(e)}sourceModules(){return[...this.#r.keys()].sort()}graphPlugin(){let e=this.#n;return{name:`eve-authored-module-graph`,buildEnd(){for(let t of this.getModuleIds()){let n=this.getModuleInfo(t);n!==null&&e.set(t,[...n.importedIds,...n.dynamicallyImportedIds])}}}}modules(){return{directiveModules:[...this.#t].sort(),workflowModules:[...this.#i.keys()].sort()}}fingerprint(){if(this.#t.size===0)return;let e=new Set,t=[...this.#t];for(let n=t.shift();n!==void 0;n=t.shift())!e.has(n)&&this.#r.has(n)&&(e.add(n),t.push(...this.#n.get(n)??[]));let n=createHash(`sha256`);for(let t of[...e].sort())n.update(relative(this.#e,t).split(sep).join(`/`)).update(`\0`).update(this.#r.get(t)??``).update(`\0`);return n.digest(`hex`)}};function createVirtualGenerationModuleMapPlugin(e){return{name:`eve-generation-module-map`,resolveId(t){return t===e.id?t:void 0},load(t){return t===e.id?{code:e.source,moduleType:`js`}:void 0}}}async function buildAuthoredModuleBundle(e,t,n){let r=resolveAuthoredPackageRoot(e);try{return(await buildSingleRolldownChunk(`authored module for "${e}"`,{...createAuthoredModuleBuildOptions({packageBoundaryPlugin:n.packageBoundaryPlugin,packageRoot:r,plugins:[...n.plugins,t.extension===void 0?null:createFixedMountScopePlugin(t.extension.mountId)]}),input:t.extension?.entry===void 0?e:`\0eve-compile-mount-entry`,output:{comments:!1,format:`esm`,sourcemap:n.sourcemap}})).code}catch(t){throw createAuthoredModuleBundleError(e,t)}}function createAuthoredDirectiveGuardPlugin(){return{name:`eve-authored-directive-guard`,async transform(e,t){if(!AUTHORED_BUNDLED_MODULE_EXTENSION.test(t)||isNodeModulesPath(t))return;let{hasDirectives:n}=await prepareAuthoredWorkflowDirectives({filePath:t,source:e});if(n)throw Error(`Module "${t}" uses Workflow directives ("use step" or "use workflow"). Workflow directives are supported in application modules only, not in extensions or instrumentation.`)}}}function createAuthoredWorkflowDirectivePlugin(e){return{name:`eve-authored-workflow-directives`,async transform(t,n){if(!AUTHORED_BUNDLED_MODULE_EXTENSION.test(n)||isNodeModulesPath(n)||!isAuthoredApplicationModule(n,e.appRoot))return;let r=await applyWorkflowTransform(n,t,`client`,n,e.appRoot);return e.recorder?.record(n,t,r.workflowManifest),r.code===t?void 0:{code:r.code,map:null}}}}async function loadBundledAuthoredModule(e,t){let n=t.extension===void 0?await t.graph?.entryPath(e,t.externalDependencies??[]):void 0,r=n===void 0?await writeAuthoredModuleBundle(e,t):createFileImportSpecifier(n);try{return await import(r)}catch(t){throw createAuthoredModuleEvaluationError(e,t)}}async function writeAuthoredModuleBundle(e,t){let n=await bundleAuthoredModuleCode(e,t),r=normalizeExternalDependencies(t.externalDependencies),i=createHash(`sha1`).update(e).update(`\0`).update(r.join(`\0`)).update(`\0`).update(t.extension?.mountId??``).update(`\0`).update(n).digest(`hex`),a=join(resolveAuthoredPackageRoot(e),AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH),o=writeAuthoredModuleCacheFile(a,`${i}.mjs`,n),s=t.extension?.evaluationId??``;return`${createFileImportSpecifier(o)}?v=${i}&instance=${encodeURIComponent(s)}`}function createInFlightModuleLoadKey(e,t){return`${e}\0${normalizeExternalDependencies(t.externalDependencies).join(`\0`)}\0${t.extension?.mountId??``}\0${t.extension?.evaluationId??``}\0${t.appRoot??``}`}function resolveAuthoredPackageRoot(e){let t=dirname(e);for(;;){if(existsSync(join(t,`package.json`)))return realpathSync(t);let n=dirname(t);if(n===t)throw Error(`Failed to resolve the authored package root for "${e}".`);t=n}}export{AUTHORED_BUNDLED_MODULE_EXTENSION,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH,bundleAuthoredModuleCode,bundleAuthoredModuleForGeneration,bundleAuthoredModuleMapForGeneration,bundleExtensionDistributionGraph,createAuthoredWorkflowDirectivePlugin,loadAuthoredModuleNamespace,resolveAuthoredPackageRoot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{realpathSync,statSync}from"node:fs";import{dirname,isAbsolute,join,resolve}from"node:path";import{isNodeModulesPath,isPathImport}from"#internal/authored-package-boundary.js";const PATH_IMPORT_FILTER=/^(?:\.|\/|[A-Za-z]:[\\/])/;function createAuthoredRelativeExtensionResolverPlugin(e){let t=createCachedFileProbe();return{name:`eve-authored-relative-extension-resolver`,resolveId:{filter:{id:PATH_IMPORT_FILTER},handler(n,r){if(r===void 0||r.startsWith(`\0`)||!isPathImport(n))return;let i=resolveExistingImportPath(isAbsolute(n)?n:resolve(dirname(r),n),e.extensions,t);if(i
|
|
1
|
+
import{realpathSync,statSync}from"node:fs";import{dirname,isAbsolute,join,resolve}from"node:path";import{isNodeModulesPath,isPathImport}from"#internal/authored-package-boundary.js";const PATH_IMPORT_FILTER=/^(?:\.|\/|[A-Za-z]:[\\/])/;function createAuthoredRelativeExtensionResolverPlugin(e){let t=createCachedFileProbe();return{name:`eve-authored-relative-extension-resolver`,resolveId:{filter:{id:PATH_IMPORT_FILTER},handler(n,r){if(r===void 0||r.startsWith(`\0`)||!isPathImport(n))return;let i=resolveExistingImportPath(isAbsolute(n)?n:resolve(dirname(r),n),e.extensions,t);if(i===void 0)return;let a=isNodeModulesPath(i)?toRealModulePath(i):i,o=findPackageJsonPath(a,t);return o===void 0?{id:a}:{id:a,packageJsonPath:o}}}}}function findPackageJsonPath(e,t){for(let n=dirname(e);;n=dirname(n)){let e=join(n,`package.json`);if(t(e))return e;if(dirname(n)===n)return}}function createCachedFileProbe(){let e=new Map;return t=>{let n=e.get(t);if(n!==void 0)return n;let r=!1;try{r=statSync(t).isFile()}catch{}return e.set(t,r),r}}function resolveExistingImportPath(e,t,n){if(n(e))return e;for(let r of t){let t=`${e}${r}`;if(n(t))return t}for(let r of t){let t=join(e,`index${r}`);if(n(t))return t}}function toRealModulePath(e){try{return realpathSync(e)}catch{return e}}export{createAuthoredRelativeExtensionResolverPlugin};
|
|
@@ -21,10 +21,12 @@ export declare function parseWithNitroRolldownAst(filename: string, sourceText:
|
|
|
21
21
|
* bundle whose consumer expects one in-memory file; use this directly only
|
|
22
22
|
* for multi-file, written-to-disk output. Warnings raised only by dependency
|
|
23
23
|
* code are dropped unless the caller supplies its own `onLog`, except
|
|
24
|
-
* unresolved imports.
|
|
24
|
+
* unresolved imports. Pseudo-packages such as `server-only` load as empty
|
|
25
|
+
* modules ahead of every caller plugin.
|
|
25
26
|
*/
|
|
26
27
|
export declare function buildWithNitroRolldown(options: Record<string, unknown> & {
|
|
27
28
|
readonly experimental?: Record<string, unknown>;
|
|
29
|
+
readonly plugins?: readonly unknown[];
|
|
28
30
|
}): Promise<RolldownOutput>;
|
|
29
31
|
export declare const ROLLDOWN_STANDARD_CONDITION_NAMES: ReadonlySet<string>;
|
|
30
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire}from"node:module";import{pathToFileURL}from"node:url";import{onVendoredDependencyLog}from"#internal/bundler/vendored-dependency-log.js";let rolldownPromise,rolldownParseAstPromise;function loadNitroRolldown(){return rolldownPromise??=(async()=>{let e=createRequire(import.meta.url),t=createRequire(e.resolve(`nitro/package.json`)).resolve(`rolldown`);return await import(pathToFileURL(t).href)})(),rolldownPromise}function loadNitroRolldownParseAst(){return rolldownParseAstPromise??=(async()=>{let e=createRequire(import.meta.url),t=createRequire(e.resolve(`nitro/package.json`)).resolve(`rolldown/parseAst`);return await import(pathToFileURL(t).href)})(),rolldownParseAstPromise}function inferRolldownParserLanguage(e){return e.endsWith(`.tsx`)?`tsx`:e.endsWith(`.jsx`)?`jsx`:/\.[cm]?ts$/.test(e)?`ts`:`js`}async function parseWithNitroRolldownAst(e,t){let{parseAst:n}=await loadNitroRolldownParseAst();return n(t,{astType:`ts`,lang:inferRolldownParserLanguage(e),range:!0,sourceType:`module`},e)}async function buildWithNitroRolldown(e){assertCustomRolldownConditionNames(e);let{build:t}=await loadNitroRolldown();return await t({onLog:onRolldownBuildLog,...e,experimental:{...e.experimental,attachDebugInfo:`none`}})}function onRolldownBuildLog(e,t,n){if(e===`warn`&&t?.code===`UNRESOLVED_IMPORT`){n(e,t);return}onVendoredDependencyLog(e,t,n)}const ROLLDOWN_STANDARD_CONDITION_NAMES=new Set([`browser`,`default`,`import`,`node`,`require`]);function assertCustomRolldownConditionNames(e){let t=e.resolve;if(typeof t!=`object`||!t)return;let n=Reflect.get(t,`conditionNames`);if(Array.isArray(n)){for(let e of n)if(typeof e==`string`&&ROLLDOWN_STANDARD_CONDITION_NAMES.has(e))throw Error(`Rolldown resolves the standard condition ${JSON.stringify(e)} per import edge; conditionNames may contain only eve-specific additions.`)}}async function buildSingleRolldownChunk(e,t){return getSingleRolldownChunk(await buildWithNitroRolldown({...t,write:!1,output:{...t.output,codeSplitting:!1}}),e)}function getSingleRolldownChunk(e,t){let n=e.output.filter(e=>e.type===`chunk`),r=n[0];if(r===void 0||n.length!==1)throw Error(`Expected one bundled ${t}.`);return r}export{ROLLDOWN_STANDARD_CONDITION_NAMES,buildSingleRolldownChunk,buildWithNitroRolldown,parseWithNitroRolldownAst};
|
|
1
|
+
import{createRequire}from"node:module";import{pathToFileURL}from"node:url";import{createPseudoPackagePlugin}from"#internal/bundler/pseudo-packages.js";import{onVendoredDependencyLog}from"#internal/bundler/vendored-dependency-log.js";let rolldownPromise,rolldownParseAstPromise;function loadNitroRolldown(){return rolldownPromise??=(async()=>{let e=createRequire(import.meta.url),t=createRequire(e.resolve(`nitro/package.json`)).resolve(`rolldown`);return await import(pathToFileURL(t).href)})(),rolldownPromise}function loadNitroRolldownParseAst(){return rolldownParseAstPromise??=(async()=>{let e=createRequire(import.meta.url),t=createRequire(e.resolve(`nitro/package.json`)).resolve(`rolldown/parseAst`);return await import(pathToFileURL(t).href)})(),rolldownParseAstPromise}function inferRolldownParserLanguage(e){return e.endsWith(`.tsx`)?`tsx`:e.endsWith(`.jsx`)?`jsx`:/\.[cm]?ts$/.test(e)?`ts`:`js`}async function parseWithNitroRolldownAst(e,t){let{parseAst:n}=await loadNitroRolldownParseAst();return n(t,{astType:`ts`,lang:inferRolldownParserLanguage(e),range:!0,sourceType:`module`},e)}async function buildWithNitroRolldown(e){assertCustomRolldownConditionNames(e);let{build:t}=await loadNitroRolldown();return await t({onLog:onRolldownBuildLog,...e,plugins:[createPseudoPackagePlugin(),...e.plugins??[]],experimental:{...e.experimental,attachDebugInfo:`none`}})}function onRolldownBuildLog(e,t,n){if(e===`warn`&&t?.code===`UNRESOLVED_IMPORT`){n(e,t);return}onVendoredDependencyLog(e,t,n)}const ROLLDOWN_STANDARD_CONDITION_NAMES=new Set([`browser`,`default`,`import`,`node`,`require`]);function assertCustomRolldownConditionNames(e){let t=e.resolve;if(typeof t!=`object`||!t)return;let n=Reflect.get(t,`conditionNames`);if(Array.isArray(n)){for(let e of n)if(typeof e==`string`&&ROLLDOWN_STANDARD_CONDITION_NAMES.has(e))throw Error(`Rolldown resolves the standard condition ${JSON.stringify(e)} per import edge; conditionNames may contain only eve-specific additions.`)}}async function buildSingleRolldownChunk(e,t){return getSingleRolldownChunk(await buildWithNitroRolldown({...t,write:!1,output:{...t.output,codeSplitting:!1}}),e)}function getSingleRolldownChunk(e,t){let n=e.output.filter(e=>e.type===`chunk`),r=n[0];if(r===void 0||n.length!==1)throw Error(`Expected one bundled ${t}.`);return r}export{ROLLDOWN_STANDARD_CONDITION_NAMES,buildSingleRolldownChunk,buildWithNitroRolldown,parseWithNitroRolldownAst};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Must run before any plugin that externalizes or resolves package imports. */
|
|
2
|
+
export declare function createPseudoPackagePlugin(): {
|
|
3
|
+
name: string;
|
|
4
|
+
resolveId(source: string): {
|
|
5
|
+
id: string;
|
|
6
|
+
} | undefined;
|
|
7
|
+
load(id: string): {
|
|
8
|
+
code: string;
|
|
9
|
+
moduleType: "js";
|
|
10
|
+
} | undefined;
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const PSEUDO_PACKAGES=new Set([`server-only`,`client-only`,`next/dist/compiled/server-only`,`next/dist/compiled/client-only`]),PSEUDO_PACKAGE_ID_PREFIX=`\0eve-pseudo-package:`;function createPseudoPackagePlugin(){return{name:`eve-pseudo-packages`,resolveId(e){return PSEUDO_PACKAGES.has(e)?{id:`${PSEUDO_PACKAGE_ID_PREFIX}${e}`}:void 0},load(e){return e.startsWith(PSEUDO_PACKAGE_ID_PREFIX)?{code:``,moduleType:`js`}:void 0}}}export{createPseudoPackagePlugin};
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { tryReadExtensionBuildConfig, type ExtensionBuildConfig } from "#internal/nitro/host/extension-build-config.js";
|
|
2
2
|
export { tryReadExtensionBuildConfig };
|
|
3
3
|
export type { ExtensionBuildConfig };
|
|
4
|
+
/**
|
|
5
|
+
* Prefix of the per-build staging directory created inside the extension
|
|
6
|
+
* package. It must share a filesystem with the output directory so the final
|
|
7
|
+
* swap is a rename.
|
|
8
|
+
*/
|
|
9
|
+
export declare const EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX = ".eve-extension-build-";
|
|
4
10
|
/**
|
|
5
11
|
* Builds a dist-only extension package. Authored modules are transformed as a
|
|
6
12
|
* path-preserving graph, declarations and assets are emitted beside them, and
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{mkdir,mkdtemp,rm}from"node:fs/promises";import{join,relative,resolve}from"node:path";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{discoverAgent}from"#discover/discover-agent.js";import{createDiskProjectSource}from"#discover/project-source.js";import{discoverFlatModuleSource,readSortedDirectoryEntries}from"#discover/grammar.js";import{EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION,EXTENSION_COMPATIBILITY_MANIFEST_KIND,writeExtensionCompatibilityManifest}from"#compiler/extension-compatibility.js";import{ensureExtensionExports,tryReadExtensionBuildConfig}from"#internal/nitro/host/extension-build-config.js";import{deriveExtensionCapabilityRequirements}from"#internal/nitro/host/extension-capability-requirements.js";import{ExtensionOutputRestoreError,emitExtensionDistribution,replaceExtensionBuildOutput}from"#internal/nitro/host/extension-distribution.js";async function buildExtensionPackage(e,t){let n=resolve(e),r=createDiskProjectSource(),{diagnostics:i,manifest:a}=await discoverAgent({agentRoot:t.sourceRoot,appRoot:n,source:r,role:`extension`}),o=i.filter(e=>e.severity===`error`);if(o.length>0)throw Error(`Cannot build extension "${t.packageName}":\n${o.map(e=>` - ${e.message}`).join(`
|
|
2
|
-
`)}`);let s=discoverFlatModuleSource({rootEntries:await readSortedDirectoryEntries(r,t.sourceRoot),rootPath:t.sourceRoot,slotName:`extension`}).module;if(s===void 0)throw Error(`Cannot build extension "${t.packageName}": its source root "${t.sourceRoot}" is missing an "extension.<ext>" declaration. Add \`export default defineExtension(...)\` there (with or without config).`);let c=await mkdtemp(join(n
|
|
1
|
+
import{mkdir,mkdtemp,rm}from"node:fs/promises";import{join,relative,resolve}from"node:path";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{discoverAgent}from"#discover/discover-agent.js";import{createDiskProjectSource}from"#discover/project-source.js";import{discoverFlatModuleSource,readSortedDirectoryEntries}from"#discover/grammar.js";import{EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION,EXTENSION_COMPATIBILITY_MANIFEST_KIND,writeExtensionCompatibilityManifest}from"#compiler/extension-compatibility.js";import{ensureExtensionExports,tryReadExtensionBuildConfig}from"#internal/nitro/host/extension-build-config.js";import{deriveExtensionCapabilityRequirements}from"#internal/nitro/host/extension-capability-requirements.js";import{ExtensionOutputRestoreError,emitExtensionDistribution,replaceExtensionBuildOutput}from"#internal/nitro/host/extension-distribution.js";const EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX=`.eve-extension-build-`;async function buildExtensionPackage(e,t){let n=resolve(e),r=createDiskProjectSource(),{diagnostics:i,manifest:a}=await discoverAgent({agentRoot:t.sourceRoot,appRoot:n,source:r,role:`extension`}),o=i.filter(e=>e.severity===`error`);if(o.length>0)throw Error(`Cannot build extension "${t.packageName}":\n${o.map(e=>` - ${e.message}`).join(`
|
|
2
|
+
`)}`);let s=discoverFlatModuleSource({rootEntries:await readSortedDirectoryEntries(r,t.sourceRoot),rootPath:t.sourceRoot,slotName:`extension`}).module;if(s===void 0)throw Error(`Cannot build extension "${t.packageName}": its source root "${t.sourceRoot}" is missing an "extension.<ext>" declaration. Add \`export default defineExtension(...)\` there (with or without config).`);let c=await mkdtemp(join(n,EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX)),l=join(c,`output`),u=join(l,relative(t.outDir,t.distRoot)),d=!1;try{await mkdir(u,{recursive:!0});let e=await emitExtensionDistribution({appRoot:n,declarationModule:s,declarationsRoot:join(c,`declarations`),manifest:a,runtimeDependencies:t.runtimeDependencies,shortName:t.shortName,sourceRoot:t.sourceRoot,stagedDistRoot:u,stagedOutDir:l,transactionRoot:c});return await ensureExtensionExports(n,t.outDir),await writeExtensionCompatibilityManifest(u,{kind:EXTENSION_COMPATIBILITY_MANIFEST_KIND,formatVersion:EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION,builtWithEve:resolveInstalledPackageInfo().version,...t.externalDependencies.length===0?{}:{build:{externalDependencies:t.externalDependencies}},requires:await deriveExtensionCapabilityRequirements({runtimeImports:e,runtimeRoot:l,declarationModule:s,manifest:a,packageName:t.packageName,runtimeDependencies:t.runtimeDependencies,shortName:t.shortName,sourceRoot:t.sourceRoot})}),await replaceExtensionBuildOutput({outDir:t.outDir,stagedOutDir:l,transactionRoot:c}),t.outDir}catch(e){throw d=e instanceof ExtensionOutputRestoreError,e}finally{d||await rm(c,{force:!0,recursive:!0})}}export{EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX,buildExtensionPackage,tryReadExtensionBuildConfig};
|
|
@@ -8,9 +8,11 @@ interface BundlerPluginShape {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Creates the bundler plugin that prunes the local sandbox providers
|
|
11
|
-
* (Docker, just-bash
|
|
11
|
+
* (Docker, just-bash) from hosted Nitro server bundles.
|
|
12
12
|
* Stubs both the aggregate local facade and individual provider bindings so
|
|
13
13
|
* framework default selection cannot retain local engine implementations.
|
|
14
|
+
* `DefaultSandbox` stays real: on Vercel its build records Vercel Sandbox, so
|
|
15
|
+
* it never constructs a stubbed local provider.
|
|
14
16
|
*/
|
|
15
17
|
export declare function createCompiledSandboxProviderPrunePlugin(): BundlerPluginShape;
|
|
16
18
|
export {};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
const
|
|
2
|
-
`):e
|
|
3
|
-
`)
|
|
4
|
-
`):e!==PRUNED_LOCAL_SANDBOX_MODULE_ID&&!LOCAL_BINDING_SOURCE_RE.test(t)?null:[`function pruned() {`,` throw new Error("Local sandbox providers are pruned from hosted server bundles.");`,`}`,`export const createDockerSandboxProvider = pruned;`,`export const createJustBashSandboxProvider = pruned;`,`export const createMicrosandboxSandboxProvider = pruned;`,`export const DOCKER_PROVIDER_NAME = "docker";`,`export const DOCKER_TEMPLATE_IMAGE_REPOSITORY = "eve-sandbox-template";`,`export const JUST_BASH_PROVIDER_NAME = "just-bash";`,`export const MICROSANDBOX_PROVIDER_NAME = "microsandbox";`,`export const isLinuxDockerDaemonAvailableSync = () => false;`,`export const isMicrosandboxPlatformSupported = () => false;`,`export const pruneDockerSandboxTemplates = pruned;`,`export const pruneJustBashSandboxTemplates = pruned;`,`export const pruneMicrosandboxTemplates = pruned;`,`export const pruneLocalSandboxTemplates = pruned;`,`export const pruneLocalSandboxTemplatesInBackground = pruned;`,`export const stopDevelopmentSandboxResources = pruned;`,``].join(`
|
|
5
|
-
`)},resolveId(e){let t=e.split(/[?#]/u,1)[0]??e;return DEFAULT_PROVIDER_SOURCE_RE.test(t)?PRUNED_DEFAULT_SANDBOX_MODULE_ID:LOCAL_PROVIDER_SOURCE_RE.test(t)?PRUNED_LOCAL_SANDBOX_PROVIDER_MODULE_ID:OPTIONAL_ENGINE_INSTALL_SOURCE_RE.test(t)?PRUNED_OPTIONAL_ENGINE_INSTALL_MODULE_ID:LOCAL_BINDING_SOURCE_RE.test(t)?PRUNED_LOCAL_SANDBOX_MODULE_ID:null}}}export{createCompiledSandboxProviderPrunePlugin};
|
|
1
|
+
const PRUNED_LOCAL_SANDBOX_MODULE_ID=`\0eve-pruned-local-sandbox-providers`,PRUNED_LOCAL_SANDBOX_PROVIDER_MODULE_ID=`\0eve-pruned-local-sandbox-provider-constructors`,LOCAL_BINDING_SOURCE_RE=/[/\\]bindings[/\\](?:docker|just-bash|local)\.(?:js|ts)$/,LOCAL_PROVIDER_SOURCE_RE=/(?:^|[/\\#])sandbox[/\\]providers[/\\](?:docker|just-bash)\.(?:js|ts)$/;function createCompiledSandboxProviderPrunePlugin(){return{enforce:`pre`,name:`eve-hosted-sandbox-provider-prune`,load(e){let t=e.split(/[?#]/u,1)[0]??e;return e===PRUNED_LOCAL_SANDBOX_PROVIDER_MODULE_ID||LOCAL_PROVIDER_SOURCE_RE.test(t)?[`function pruned() {`,` throw new Error("Local sandbox providers are pruned from hosted server bundles.");`,`}`,`export const DockerSandbox = { name: "docker", environment: pruned, dockerfile: pruned, image: pruned };`,`export const JustBashSandbox = { name: "just-bash", environment: pruned };`,``].join(`
|
|
2
|
+
`):e!==PRUNED_LOCAL_SANDBOX_MODULE_ID&&!LOCAL_BINDING_SOURCE_RE.test(t)?null:[`function pruned() {`,` throw new Error("Local sandbox providers are pruned from hosted server bundles.");`,`}`,`export const createDockerSandboxProvider = pruned;`,`export const createJustBashSandboxProvider = pruned;`,`export const DOCKER_PROVIDER_NAME = "docker";`,`export const DOCKER_TEMPLATE_IMAGE_REPOSITORY = "eve-sandbox-template";`,`export const JUST_BASH_PROVIDER_NAME = "just-bash";`,`export const isLinuxDockerDaemonAvailableSync = () => false;`,`export const pruneDockerSandboxTemplates = pruned;`,`export const pruneJustBashSandboxTemplates = pruned;`,`export const pruneLocalSandboxTemplates = pruned;`,`export const pruneLocalSandboxTemplatesInBackground = pruned;`,`export const stopDevelopmentSandboxResources = pruned;`,``].join(`
|
|
3
|
+
`)},resolveId(e){let t=e.split(/[?#]/u,1)[0]??e;return LOCAL_PROVIDER_SOURCE_RE.test(t)?PRUNED_LOCAL_SANDBOX_PROVIDER_MODULE_ID:LOCAL_BINDING_SOURCE_RE.test(t)?PRUNED_LOCAL_SANDBOX_MODULE_ID:null}}}export{createCompiledSandboxProviderPrunePlugin};
|
|
@@ -2,9 +2,8 @@ import type { Nitro } from "nitro/types";
|
|
|
2
2
|
import type { PreparedApplicationHost, PreparedDevelopmentApplicationHost } from "#internal/nitro/host/types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Hosted Vercel builds can prune local sandbox providers only when the
|
|
5
|
-
* app did not explicitly configure one.
|
|
6
|
-
*
|
|
7
|
-
* needs local runtime code there.
|
|
5
|
+
* app did not explicitly configure one. `DefaultSandbox.environment()` records
|
|
6
|
+
* Vercel Sandbox when built on Vercel, so it never needs local runtime code there.
|
|
8
7
|
*/
|
|
9
8
|
export declare function shouldPruneLocalSandboxProviders(input: {
|
|
10
9
|
readonly configuredBackendNames: ReadonlySet<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readFile}from"node:fs/promises";import{dirname,isAbsolute,join,relative,resolve}from"node:path";import{resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath}from"#internal/application/package.js";import{fileURLToPath}from"node:url";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{resolveAuthoredTsConfigPath}from"#internal/authored-module-build-options.js";import{createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createExtensionScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{applyWorkflowTransform}from"#internal/workflow-bundle/workflow-builders.js";import{createExtensionExternalDependencyPlugin,resolveExtensionExternalDependencyPaths}from"#internal/nitro/host/extension-external-dependency-plugin.js";import{createNitro}from"nitro/builder";import{prepareEveVersionedCacheDirectory,writeEveVersionedCacheMetadata}from"#internal/application/cache-metadata.js";import{createProductionNitroArtifactsConfig}from"#internal/nitro/host/artifacts-config.js";import{hasVercelScheduleCollections,usesLocalVercelSchedules}from"#internal/schedules/consumer-route.js";import{configureInstrumentationEntry}from"#internal/nitro/host/instrumentation-entry.js";import{createCompiledSandboxProviderPrunePlugin}from"#internal/nitro/host/compiled-sandbox-provider-prune-plugin.js";import{createDevelopmentRuntimePrunePlugin}from"#internal/nitro/host/development-runtime-prune-plugin.js";import{prepareSkillServerAssets}from"#internal/nitro/host/skill-server-assets.js";import{configureDevelopmentNitroRoutes,configureProductionNitroRoutes}from"#internal/nitro/host/configure-nitro-routes.js";import{applyEveCronHandlerRoute}from"#internal/nitro/host/cron-handler-route.js";import{createExternalDependencyOutputCheckPlugin}from"#internal/nitro/host/external-dependency-output-check-plugin.js";import{createNitroBundlerConfig}from"#internal/nitro/host/nitro-bundler-config.js";import{OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME,createOptionalEngineDependencyPlugin}from"#internal/nitro/host/optional-engine-dependency-plugin.js";import{addNitroRoutingImportSpecifierPlugin}from"#internal/nitro/host/nitro-routing-import-specifier-plugin.js";import{registerScheduleTaskHandlers}from"#internal/nitro/host/schedule-task-routes.js";import{createEveVercelOptions}from"#internal/nitro/host/vercel-build-output-config.js";const WORKFLOW_ALIAS_SPECIFIERS=[`workflow`,`workflow/api`,`workflow/errors`,`workflow/internal/builtins`,`workflow/internal/private`,`workflow/runtime`],INSTRUMENTATION_ALIAS_PATHS={"eve/instrumentation":`src/public/instrumentation/index.ts`,"eve/instrumentation/otel":`src/public/instrumentation/otel.ts`},WORKFLOW_TRANSFORM_PATCHED=Symbol(`eve.workflow-transform-patched`),EVE_NITRO_BUILDER=`rolldown`,LOCAL_SANDBOX_BACKEND_NAMES=new Set([`docker`,...Object.keys(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME)]);function resolveWorkflowAliases(){let e={};for(let t of WORKFLOW_ALIAS_SPECIFIERS)e[t]=resolveWorkflowModulePath(t);return e}function resolveProductionNitroPreset(){return process.env.VERCEL?`vercel`:void 0}function manifestHasWorkflowProgram(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>e.tools.some(e=>e.workflowProgram!==void 0))}function manifestHasWebSocketChannel(e){return e.channelRoutes.effective.some(e=>e.method===`WEBSOCKET`)}function collectHostedTraceDependencies(e,t){let n=new Set(collectExtensionExternalDependencies(e.compileResult.manifest)),r=collectConfiguredExternalDependencies(e.compileResult.manifest);return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}function collectConfiguredExternalDependencies(e){return[...e.config.build?.externalDependencies??[],...e.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])]}function collectExtensionExternalDependencies(e){return[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.flatMap(e=>e.externalDependencies))}function collectConfiguredSandboxProviderNames(e){let t=[e,...e.subagents.map(e=>e.agent)];return new Set(t.map(e=>e.sandbox?.providerName).filter(e=>typeof e==`string`))}function shouldPruneLocalSandboxProviders(e){return e.preset===`vercel`&&![...e.configuredBackendNames].some(e=>LOCAL_SANDBOX_BACKEND_NAMES.has(e))}function createDevelopmentWatchOptions(e){return{ignored:[e,join(e,`**`)]}}function normalizePath(e){return e.replaceAll(`\\`,`/`)}function stripPathQueryAndHash(e){let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n:n===-1?t:Math.min(t,n);return r===-1?e:e.slice(0,r)}function stripFileSystemPrefix(e){return e.startsWith(`/@fs/`)?e.slice(4):e}function resolveNitroModuleComparisonPath(e,t){return t.startsWith(`file://`)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(fileURLToPath(t)))):isAbsolute(t)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(t))):normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(resolve(e,t))))}function isWorkflowBundlePath(e,t){let n=normalizePath(e);return n.startsWith(t)||n.includes(`/.eve/workflow-cache/`)}function normalizeStepTransformComparisonPath(e){let t=normalizePath(e);return process.platform===`win32`?t.toLowerCase():t}function parseImportedModuleSpecifiers(e){let t=/^\s*import\s+(?:.+?\s+from\s+)?["']([^"']+)["'];?\s*$/gm,n=[];for(let r of e.matchAll(t)){let e=r[1];e!==void 0&&n.push(e)}return n}function resolveNitroImportPath(e,t,n){return t.startsWith(`workflow`)?resolveWorkflowModulePath(t):t.startsWith(`.`)||t.startsWith(`/`)||t.startsWith(`file://`)?resolveNitroModuleComparisonPath(n===void 0?e:dirname(resolveNitroModuleComparisonPath(e,n)),t):null}async function collectNitroStepTransformTargets(e,t){let n=await readFile(e,`utf8`),r=new Set;for(let i of parseImportedModuleSpecifiers(n)){let n=resolveNitroImportPath(t,i,e);n!==null&&r.add(normalizeStepTransformComparisonPath(n))}return r}async function addNitroStepNoExternals(e,t){if(e.options.noExternals===!0)return;let n;try{n=await collectNitroStepTransformTargets(t,e.options.rootDir)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}let r=Array.isArray(e.options.noExternals)?[...e.options.noExternals]:[];e.options.noExternals=[...new Set([...r,...n])]}function createRelativeTransformFilename(e,t){let n=createPackageRelativeTransformFilename(t);if(n!==void 0)return n;let r=normalizePath(e).replace(/\/$/,``),i=normalizePath(t),a=r.toLowerCase(),o=i.toLowerCase();if(o.startsWith(`${a}/`))return i.slice(r.length+1);if(o===a)return`.`;let s=relative(r,i).replaceAll(`\\`,`/`);if(s.startsWith(`../`)&&(s=s.split(`/`).filter(e=>e!==`..`).join(`/`)),s.includes(`:`)||s.startsWith(`/`)){let e=i.split(`/`).pop();return e===void 0||e.length===0?`unknown.ts`:e}return s}function createPackageRelativeTransformFilename(e){let t=normalizePath(resolvePackageRoot()).replace(/\/$/,``),n=normalizePath(e),r=t.toLowerCase(),i=n.toLowerCase(),a=`${t}/src/`,o=`${r}/src/`,s=`${t}/dist/src/`,c=`${r}/dist/src/`;if(i.startsWith(o))return`src/${n.slice(a.length)}`;if(i.startsWith(c))return`src/${n.slice(s.length)}`}function addWorkflowModuleSideEffectsPlugin(e,t){let n=[t,join(e.options.buildDir,`workflow`)].map(t=>resolveNitroModuleComparisonPath(e.options.rootDir,t));e.hooks.hook(`rollup:before`,(t,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-module-side-effects`,resolveId(t,r){let i=resolveNitroImportPath(e.options.rootDir,t,r)??resolveNitroModuleComparisonPath(e.options.rootDir,t);return n.some(e=>isWorkflowBundlePath(i,e))?{id:i,moduleSideEffects:`no-treeshake`}:null}})})}function addNitroStepModuleSideEffectsPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-step-module-side-effects`,async resolveId(n,r){let i=resolveNitroImportPath(e.options.rootDir,n,r);return i===null||!(await t()).has(normalizeStepTransformComparisonPath(i))?null:{id:i,moduleSideEffects:`no-treeshake`}}})})}function addNitroStepTransformPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({async transform(n,r){let i=await t(),a=resolveNitroModuleComparisonPath(e.options.rootDir,r);return i.has(normalizeStepTransformComparisonPath(a))?{code:(await applyWorkflowTransform(createRelativeTransformFilename(e.options.rootDir,a),n,`step`,a,e.options.rootDir)).code,map:null}:null},name:`eve:workflow-step-transform`})})}function addInstrumentationModuleSideEffectsPlugin(e,t){let n=new Set(t.map(normalizePath));e.hooks.hook(`rollup:before`,(e,t)=>{Array.isArray(t.plugins)&&t.plugins.unshift({name:`eve:instrumentation-module-side-effects`,resolveId(e){return n.has(normalizePath(e))?{id:e,moduleSideEffects:`no-treeshake`}:null}})})}function patchWorkflowTransformExcludePath(e,t){let n=normalizePath(t);e.hooks.hook(`rollup:before`,(e,t)=>{if(Array.isArray(t.plugins))for(let e of t.plugins){if(typeof e!=`object`||!e)continue;let t=e;if(t.name!==`workflow:transform`||t[WORKFLOW_TRANSFORM_PATCHED]===!0||typeof t.transform!=`function`)continue;let r=t.transform;t.transform=function(e,t,...i){return isWorkflowBundlePath(t,n)?null:r.call(this,e,t,...i)},t[WORKFLOW_TRANSFORM_PATCHED]=!0}})}function createApplicationNitroBundlerConfiguration(e,t){let{preset:n}=t,r=collectConfiguredSandboxProviderNames(e.compileResult.manifest),i=shouldPruneLocalSandboxProviders({configuredBackendNames:r,preset:n})?createCompiledSandboxProviderPrunePlugin():null,a=[],o=[];for(let[e,t]of Object.entries(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME))(r.has(e)?a:o).push(t);let s=createExtensionScopePlugin([e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({sourceRoot:e.sourceRoot,mountId:e.mountId})))),c=[e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),l=[t.development?null:createDevelopmentRuntimePrunePlugin(),i,createOptionalEngineDependencyPlugin(o),createExtensionExternalDependencyPlugin(c),t.development?null:createExternalDependencyOutputCheckPlugin({appRoot:e.appRoot,externalDependencies:collectConfiguredExternalDependencies(e.compileResult.manifest)}),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{output:{sourcemapIgnoreList:/node_modules/},tsconfig:resolveAuthoredTsConfigPath(e.appRoot)},nitroRollupConfig:createNitroBundlerConfig(l),tracedAppDependencies:collectHostedTraceDependencies(e,a),tracedAppDependencyPaths:resolveExtensionExternalDependencyPaths(c)}}function createApplicationNitroPlugins(e){let t=[e.compiledArtifacts.bootstrapPath,e.compiledArtifacts.workflowWorldPluginPath];return manifestHasWorkflowProgram(e.compileResult.manifest)&&t.push(resolvePackageSourceFilePath(`src/internal/nitro/host/workflow-sandbox-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath!==void 0&&t.push(e.compiledArtifacts.instrumentationPluginPath),t}function configureSharedApplicationNitro(e,t){t.compiledArtifacts.instrumentationPluginPath!==void 0&&configureInstrumentationEntry(e,t.compiledArtifacts.instrumentationPluginPath),addNitroRoutingImportSpecifierPlugin(e);let n=resolveWorkflowAliases();for(let[t,r]of Object.entries(n))e.options.alias[t]=r;for(let[t,n]of Object.entries(INSTRUMENTATION_ALIAS_PATHS))e.options.alias[t]=resolvePackageSourceFilePath(n);addWorkflowModuleSideEffectsPlugin(e,t.workflowBuildDir),patchWorkflowTransformExcludePath(e,t.workflowBuildDir),t.compiledArtifacts.instrumentationSourcePaths!==void 0&&addInstrumentationModuleSideEffectsPlugin(e,t.compiledArtifacts.instrumentationSourcePaths)}function configureNitroStepPlugins(e,t){let n,getTargets=()=>n??=collectNitroStepTransformTargets(t,e.options.rootDir),invalidate=()=>{n=void 0};return e.hooks.hook(`build:before`,invalidate),addNitroStepModuleSideEffectsPlugin(e,getTargets),addNitroStepTransformPlugin(e,getTargets),[invalidate]}function externalizeDevelopmentWorkflowBundle(e,t){let n=new Set([normalizePath(join(t.workflowBuildDir,`workflows.mjs`))]);e.hooks.hook(`rollup:before`,(e,t)=>{let r=t.external;t.external=(e,...t)=>{if(n.has(normalizePath(e)))return!0;if(typeof r==`function`)return r(e,...t)}})}async function createDevelopmentApplicationNitro(e){let t=e.workspace.nitroBuildDir,n=createApplicationNitroBundlerConfiguration(e,{development:!0,preset:void 0}),r=createApplicationNitroPlugins(e);usesLocalVercelSchedules(e.compileResult.manifest)&&r.push(resolvePackageSourceFilePath(`src/internal/nitro/host/local-schedules-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath===void 0&&r.unshift(resolvePackageSourceFilePath(`src/internal/nitro/host/local-tracing-runtime-plugin.ts`)),await prepareEveVersionedCacheDirectory(t);let i=await createNitro({_cli:{command:`dev`},builder:EVE_NITRO_BUILDER,buildDir:t,dev:!0,features:{websocket:!0},logLevel:1,output:{dir:e.workspace.nitroOutputDir},plugins:r,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:n.nitroRolldownConfig,rollupConfig:n.nitroRollupConfig,rootDir:e.appRoot,serverDir:!1,traceDeps:n.tracedAppDependencies,traceOpts:{nft:{paths:n.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:!1}),watchOptions:createDevelopmentWatchOptions(e.appRoot)},{watch:!0});await writeEveVersionedCacheMetadata(t);let a=join(i.options.buildDir,`workflow`,`steps.mjs`);configureSharedApplicationNitro(i,e);let o=configureNitroStepPlugins(i,a);return i.hooks.hook(`dev:reload`,()=>{for(let e of o)e()}),externalizeDevelopmentWorkflowBundle(i,e),await configureDevelopmentNitroRoutes(i,e),await addNitroStepNoExternals(i,a),i}async function createProductionApplicationNitro(e,t){let n=resolveProductionNitroPreset(),r=createApplicationNitroBundlerConfiguration(e,{development:!1,preset:n}),i=createApplicationNitroPlugins(e);i.push(resolvePackageSourceFilePath(`src/internal/nitro/host/sandbox-shutdown-plugin.ts`)),await prepareEveVersionedCacheDirectory(t.buildDir);let{manifest:a,paths:o}=e.compileResult,s=await prepareSkillServerAssets({stagingDirectory:join(t.buildDir,`eve-skill-assets`),skills:a.skills.map(e=>e.name),skillsRoot:join(o.compileDirectoryPath,a.workspaceResourceRoot.logicalPath,`skills`)}),c=await createNitro({_cli:{command:`build`},builder:EVE_NITRO_BUILDER,buildDir:t.buildDir,dev:!1,features:{websocket:manifestHasWebSocketChannel(e.compileResult.manifest)},logging:{compressedSizes:!1},output:{dir:t.outputDir},preset:n,plugins:i,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:{...r.nitroRolldownConfig,experimental:{attachDebugInfo:`none`}},rollupConfig:r.nitroRollupConfig,rootDir:e.appRoot,serverAssets:s,serverDir:!1,traceDeps:r.tracedAppDependencies,traceOpts:{nft:{paths:r.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:n===`vercel`,hasVercelScheduleCollections:hasVercelScheduleCollections(e.compileResult.manifest),publicRoutePrefix:t.publicRoutePrefix,workspaceMember:t.workspaceMember})});if(await writeEveVersionedCacheMetadata(t.buildDir),c.options.serverAssets=c.options.serverAssets.filter(e=>e.baseName!==`server`),configureSharedApplicationNitro(c,e),configureNitroStepPlugins(c,join(e.workflowBuildDir,`steps.mjs`)),e.scheduleRegistrations.length>0){applyEveCronHandlerRoute(c);let t=createProductionNitroArtifactsConfig(e.appRoot);registerScheduleTaskHandlers(c,{artifactsConfig:t,dispatchModulePath:resolvePackageSourceFilePath(`src/internal/nitro/routes/schedule-task.ts`),registrations:e.scheduleRegistrations})}return await configureProductionNitroRoutes(c,e),await addNitroStepNoExternals(c,join(e.workflowBuildDir,`steps.mjs`)),c}export{createDevelopmentApplicationNitro,createProductionApplicationNitro,shouldPruneLocalSandboxProviders};
|
|
1
|
+
import{readFile}from"node:fs/promises";import{dirname,isAbsolute,join,relative,resolve}from"node:path";import{resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath}from"#internal/application/package.js";import{fileURLToPath}from"node:url";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{resolveAuthoredTsConfigPath}from"#internal/authored-module-build-options.js";import{createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createExtensionScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{applyWorkflowTransform}from"#internal/workflow-bundle/workflow-builders.js";import{createPseudoPackagePlugin}from"#internal/bundler/pseudo-packages.js";import{createExtensionExternalDependencyPlugin,resolveExtensionExternalDependencyPaths}from"#internal/nitro/host/extension-external-dependency-plugin.js";import{createNitro}from"nitro/builder";import{prepareEveVersionedCacheDirectory,writeEveVersionedCacheMetadata}from"#internal/application/cache-metadata.js";import{createProductionNitroArtifactsConfig}from"#internal/nitro/host/artifacts-config.js";import{hasVercelScheduleCollections,usesLocalVercelSchedules}from"#internal/schedules/consumer-route.js";import{configureInstrumentationEntry}from"#internal/nitro/host/instrumentation-entry.js";import{createCompiledSandboxProviderPrunePlugin}from"#internal/nitro/host/compiled-sandbox-provider-prune-plugin.js";import{createDevelopmentRuntimePrunePlugin}from"#internal/nitro/host/development-runtime-prune-plugin.js";import{prepareSkillServerAssets}from"#internal/nitro/host/skill-server-assets.js";import{configureDevelopmentNitroRoutes,configureProductionNitroRoutes}from"#internal/nitro/host/configure-nitro-routes.js";import{applyEveCronHandlerRoute}from"#internal/nitro/host/cron-handler-route.js";import{createExternalDependencyOutputCheckPlugin}from"#internal/nitro/host/external-dependency-output-check-plugin.js";import{createNitroBundlerConfig}from"#internal/nitro/host/nitro-bundler-config.js";import{OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME,createOptionalEngineDependencyPlugin}from"#internal/nitro/host/optional-engine-dependency-plugin.js";import{addNitroRoutingImportSpecifierPlugin}from"#internal/nitro/host/nitro-routing-import-specifier-plugin.js";import{registerScheduleTaskHandlers}from"#internal/nitro/host/schedule-task-routes.js";import{createEveVercelOptions}from"#internal/nitro/host/vercel-build-output-config.js";const WORKFLOW_ALIAS_SPECIFIERS=[`workflow`,`workflow/api`,`workflow/errors`,`workflow/internal/builtins`,`workflow/internal/private`,`workflow/runtime`],INSTRUMENTATION_ALIAS_PATHS={"eve/instrumentation":`src/public/instrumentation/index.ts`,"eve/instrumentation/otel":`src/public/instrumentation/otel.ts`},WORKFLOW_TRANSFORM_PATCHED=Symbol(`eve.workflow-transform-patched`),EVE_NITRO_BUILDER=`rolldown`,LOCAL_SANDBOX_BACKEND_NAMES=new Set([`docker`,...Object.keys(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME)]);function resolveWorkflowAliases(){let e={};for(let t of WORKFLOW_ALIAS_SPECIFIERS)e[t]=resolveWorkflowModulePath(t);return e}function resolveProductionNitroPreset(){return process.env.VERCEL?`vercel`:void 0}function manifestHasWorkflowProgram(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>e.tools.some(e=>e.workflowProgram!==void 0))}function manifestHasWebSocketChannel(e){return e.channelRoutes.effective.some(e=>e.method===`WEBSOCKET`)}function collectHostedTraceDependencies(e,t){let n=new Set(collectExtensionExternalDependencies(e.compileResult.manifest)),r=collectConfiguredExternalDependencies(e.compileResult.manifest);return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}function collectConfiguredExternalDependencies(e){return[...e.config.build?.externalDependencies??[],...e.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])]}function collectExtensionExternalDependencies(e){return[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.flatMap(e=>e.externalDependencies))}function collectConfiguredSandboxProviderNames(e){let t=[e,...e.subagents.map(e=>e.agent)];return new Set(t.map(e=>e.sandbox?.providerName).filter(e=>typeof e==`string`))}function shouldPruneLocalSandboxProviders(e){return e.preset===`vercel`&&![...e.configuredBackendNames].some(e=>LOCAL_SANDBOX_BACKEND_NAMES.has(e))}function createDevelopmentWatchOptions(e){return{ignored:[e,join(e,`**`)]}}function normalizePath(e){return e.replaceAll(`\\`,`/`)}function stripPathQueryAndHash(e){let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n:n===-1?t:Math.min(t,n);return r===-1?e:e.slice(0,r)}function stripFileSystemPrefix(e){return e.startsWith(`/@fs/`)?e.slice(4):e}function resolveNitroModuleComparisonPath(e,t){return t.startsWith(`file://`)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(fileURLToPath(t)))):isAbsolute(t)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(t))):normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(resolve(e,t))))}function isWorkflowBundlePath(e,t){let n=normalizePath(e);return n.startsWith(t)||n.includes(`/.eve/workflow-cache/`)}function normalizeStepTransformComparisonPath(e){let t=normalizePath(e);return process.platform===`win32`?t.toLowerCase():t}function parseImportedModuleSpecifiers(e){let t=/^\s*import\s+(?:.+?\s+from\s+)?["']([^"']+)["'];?\s*$/gm,n=[];for(let r of e.matchAll(t)){let e=r[1];e!==void 0&&n.push(e)}return n}function resolveNitroImportPath(e,t,n){return t.startsWith(`workflow`)?resolveWorkflowModulePath(t):t.startsWith(`.`)||t.startsWith(`/`)||t.startsWith(`file://`)?resolveNitroModuleComparisonPath(n===void 0?e:dirname(resolveNitroModuleComparisonPath(e,n)),t):null}async function collectNitroStepTransformTargets(e,t){let n=await readFile(e,`utf8`),r=new Set;for(let i of parseImportedModuleSpecifiers(n)){let n=resolveNitroImportPath(t,i,e);n!==null&&r.add(normalizeStepTransformComparisonPath(n))}return r}async function addNitroStepNoExternals(e,t){if(e.options.noExternals===!0)return;let n;try{n=await collectNitroStepTransformTargets(t,e.options.rootDir)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}let r=Array.isArray(e.options.noExternals)?[...e.options.noExternals]:[];e.options.noExternals=[...new Set([...r,...n])]}function createRelativeTransformFilename(e,t){let n=createPackageRelativeTransformFilename(t);if(n!==void 0)return n;let r=normalizePath(e).replace(/\/$/,``),i=normalizePath(t),a=r.toLowerCase(),o=i.toLowerCase();if(o.startsWith(`${a}/`))return i.slice(r.length+1);if(o===a)return`.`;let s=relative(r,i).replaceAll(`\\`,`/`);if(s.startsWith(`../`)&&(s=s.split(`/`).filter(e=>e!==`..`).join(`/`)),s.includes(`:`)||s.startsWith(`/`)){let e=i.split(`/`).pop();return e===void 0||e.length===0?`unknown.ts`:e}return s}function createPackageRelativeTransformFilename(e){let t=normalizePath(resolvePackageRoot()).replace(/\/$/,``),n=normalizePath(e),r=t.toLowerCase(),i=n.toLowerCase(),a=`${t}/src/`,o=`${r}/src/`,s=`${t}/dist/src/`,c=`${r}/dist/src/`;if(i.startsWith(o))return`src/${n.slice(a.length)}`;if(i.startsWith(c))return`src/${n.slice(s.length)}`}function addWorkflowModuleSideEffectsPlugin(e,t){let n=[t,join(e.options.buildDir,`workflow`)].map(t=>resolveNitroModuleComparisonPath(e.options.rootDir,t));e.hooks.hook(`rollup:before`,(t,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-module-side-effects`,resolveId(t,r){let i=resolveNitroImportPath(e.options.rootDir,t,r)??resolveNitroModuleComparisonPath(e.options.rootDir,t);return n.some(e=>isWorkflowBundlePath(i,e))?{id:i,moduleSideEffects:`no-treeshake`}:null}})})}function addNitroStepModuleSideEffectsPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-step-module-side-effects`,async resolveId(n,r){let i=resolveNitroImportPath(e.options.rootDir,n,r);return i===null||!(await t()).has(normalizeStepTransformComparisonPath(i))?null:{id:i,moduleSideEffects:`no-treeshake`}}})})}function addNitroStepTransformPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({async transform(n,r){let i=await t(),a=resolveNitroModuleComparisonPath(e.options.rootDir,r);return i.has(normalizeStepTransformComparisonPath(a))?{code:(await applyWorkflowTransform(createRelativeTransformFilename(e.options.rootDir,a),n,`step`,a,e.options.rootDir)).code,map:null}:null},name:`eve:workflow-step-transform`})})}function addInstrumentationModuleSideEffectsPlugin(e,t){let n=new Set(t.map(normalizePath));e.hooks.hook(`rollup:before`,(e,t)=>{Array.isArray(t.plugins)&&t.plugins.unshift({name:`eve:instrumentation-module-side-effects`,resolveId(e){return n.has(normalizePath(e))?{id:e,moduleSideEffects:`no-treeshake`}:null}})})}function patchWorkflowTransformExcludePath(e,t){let n=normalizePath(t);e.hooks.hook(`rollup:before`,(e,t)=>{if(Array.isArray(t.plugins))for(let e of t.plugins){if(typeof e!=`object`||!e)continue;let t=e;if(t.name!==`workflow:transform`||t[WORKFLOW_TRANSFORM_PATCHED]===!0||typeof t.transform!=`function`)continue;let r=t.transform;t.transform=function(e,t,...i){return isWorkflowBundlePath(t,n)?null:r.call(this,e,t,...i)},t[WORKFLOW_TRANSFORM_PATCHED]=!0}})}function createApplicationNitroBundlerConfiguration(e,t){let{preset:n}=t,r=collectConfiguredSandboxProviderNames(e.compileResult.manifest),i=shouldPruneLocalSandboxProviders({configuredBackendNames:r,preset:n})?createCompiledSandboxProviderPrunePlugin():null,a=[],o=[];for(let[e,t]of Object.entries(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME))(r.has(e)?a:o).push(t);let s=createExtensionScopePlugin([e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({sourceRoot:e.sourceRoot,mountId:e.mountId})))),c=[e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),l=[createPseudoPackagePlugin(),t.development?null:createDevelopmentRuntimePrunePlugin(),i,createOptionalEngineDependencyPlugin(o),createExtensionExternalDependencyPlugin(c),t.development?null:createExternalDependencyOutputCheckPlugin({appRoot:e.appRoot,externalDependencies:collectConfiguredExternalDependencies(e.compileResult.manifest)}),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{output:{sourcemapIgnoreList:/node_modules/},tsconfig:resolveAuthoredTsConfigPath(e.appRoot)},nitroRollupConfig:createNitroBundlerConfig(l),tracedAppDependencies:collectHostedTraceDependencies(e,a),tracedAppDependencyPaths:resolveExtensionExternalDependencyPaths(c)}}function createApplicationNitroPlugins(e){let t=[e.compiledArtifacts.bootstrapPath,e.compiledArtifacts.workflowWorldPluginPath];return manifestHasWorkflowProgram(e.compileResult.manifest)&&t.push(resolvePackageSourceFilePath(`src/internal/nitro/host/workflow-sandbox-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath!==void 0&&t.push(e.compiledArtifacts.instrumentationPluginPath),t}function configureSharedApplicationNitro(e,t){t.compiledArtifacts.instrumentationPluginPath!==void 0&&configureInstrumentationEntry(e,t.compiledArtifacts.instrumentationPluginPath),addNitroRoutingImportSpecifierPlugin(e);let n=resolveWorkflowAliases();for(let[t,r]of Object.entries(n))e.options.alias[t]=r;for(let[t,n]of Object.entries(INSTRUMENTATION_ALIAS_PATHS))e.options.alias[t]=resolvePackageSourceFilePath(n);addWorkflowModuleSideEffectsPlugin(e,t.workflowBuildDir),patchWorkflowTransformExcludePath(e,t.workflowBuildDir),t.compiledArtifacts.instrumentationSourcePaths!==void 0&&addInstrumentationModuleSideEffectsPlugin(e,t.compiledArtifacts.instrumentationSourcePaths)}function configureNitroStepPlugins(e,t){let n,getTargets=()=>n??=collectNitroStepTransformTargets(t,e.options.rootDir),invalidate=()=>{n=void 0};return e.hooks.hook(`build:before`,invalidate),addNitroStepModuleSideEffectsPlugin(e,getTargets),addNitroStepTransformPlugin(e,getTargets),[invalidate]}function externalizeDevelopmentWorkflowBundle(e,t){let n=new Set([normalizePath(join(t.workflowBuildDir,`workflows.mjs`))]);e.hooks.hook(`rollup:before`,(e,t)=>{let r=t.external;t.external=(e,...t)=>{if(n.has(normalizePath(e)))return!0;if(typeof r==`function`)return r(e,...t)}})}async function createDevelopmentApplicationNitro(e){let t=e.workspace.nitroBuildDir,n=createApplicationNitroBundlerConfiguration(e,{development:!0,preset:void 0}),r=createApplicationNitroPlugins(e);usesLocalVercelSchedules(e.compileResult.manifest)&&r.push(resolvePackageSourceFilePath(`src/internal/nitro/host/local-schedules-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath===void 0&&r.unshift(resolvePackageSourceFilePath(`src/internal/nitro/host/local-tracing-runtime-plugin.ts`)),await prepareEveVersionedCacheDirectory(t);let i=await createNitro({_cli:{command:`dev`},builder:EVE_NITRO_BUILDER,buildDir:t,dev:!0,features:{websocket:!0},logLevel:1,output:{dir:e.workspace.nitroOutputDir},plugins:r,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:n.nitroRolldownConfig,rollupConfig:n.nitroRollupConfig,rootDir:e.appRoot,serverDir:!1,traceDeps:n.tracedAppDependencies,traceOpts:{nft:{paths:n.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:!1}),watchOptions:createDevelopmentWatchOptions(e.appRoot)},{watch:!0});await writeEveVersionedCacheMetadata(t);let a=join(i.options.buildDir,`workflow`,`steps.mjs`);configureSharedApplicationNitro(i,e);let o=configureNitroStepPlugins(i,a);return i.hooks.hook(`dev:reload`,()=>{for(let e of o)e()}),externalizeDevelopmentWorkflowBundle(i,e),await configureDevelopmentNitroRoutes(i,e),await addNitroStepNoExternals(i,a),i}async function createProductionApplicationNitro(e,t){let n=resolveProductionNitroPreset(),r=createApplicationNitroBundlerConfiguration(e,{development:!1,preset:n}),i=createApplicationNitroPlugins(e);i.push(resolvePackageSourceFilePath(`src/internal/nitro/host/sandbox-shutdown-plugin.ts`)),await prepareEveVersionedCacheDirectory(t.buildDir);let{manifest:a,paths:o}=e.compileResult,s=await prepareSkillServerAssets({stagingDirectory:join(t.buildDir,`eve-skill-assets`),skills:a.skills.map(e=>e.name),skillsRoot:join(o.compileDirectoryPath,a.workspaceResourceRoot.logicalPath,`skills`)}),c=await createNitro({_cli:{command:`build`},builder:EVE_NITRO_BUILDER,buildDir:t.buildDir,dev:!1,features:{websocket:manifestHasWebSocketChannel(e.compileResult.manifest)},logging:{compressedSizes:!1},output:{dir:t.outputDir},preset:n,plugins:i,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:{...r.nitroRolldownConfig,experimental:{attachDebugInfo:`none`}},rollupConfig:r.nitroRollupConfig,rootDir:e.appRoot,serverAssets:s,serverDir:!1,traceDeps:r.tracedAppDependencies,traceOpts:{nft:{paths:r.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:n===`vercel`,hasVercelScheduleCollections:hasVercelScheduleCollections(e.compileResult.manifest),publicRoutePrefix:t.publicRoutePrefix,workspaceMember:t.workspaceMember})});if(await writeEveVersionedCacheMetadata(t.buildDir),c.options.serverAssets=c.options.serverAssets.filter(e=>e.baseName!==`server`),configureSharedApplicationNitro(c,e),configureNitroStepPlugins(c,join(e.workflowBuildDir,`steps.mjs`)),e.scheduleRegistrations.length>0){applyEveCronHandlerRoute(c);let t=createProductionNitroArtifactsConfig(e.appRoot);registerScheduleTaskHandlers(c,{artifactsConfig:t,dispatchModulePath:resolvePackageSourceFilePath(`src/internal/nitro/routes/schedule-task.ts`),registrations:e.scheduleRegistrations})}return await configureProductionNitroRoutes(c,e),await addNitroStepNoExternals(c,join(e.workflowBuildDir,`steps.mjs`)),c}export{createDevelopmentApplicationNitro,createProductionApplicationNitro,shouldPruneLocalSandboxProviders};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DevelopmentBuilds } from "#internal/nitro/host/dev-build-host.js";
|
|
1
2
|
import type { DevelopmentExtensionSelection } from "#compiler/development-extensions.js";
|
|
2
3
|
import { DrainedNitroDevServer } from "#internal/nitro/host/drained-nitro-dev-server.js";
|
|
3
4
|
import type { PreparedDevelopmentApplicationHost } from "#internal/nitro/host/types.js";
|
|
@@ -28,6 +29,7 @@ export interface DevelopmentAuthoredRebuildCoordinator {
|
|
|
28
29
|
}): Promise<DevelopmentRebuildResult>;
|
|
29
30
|
}
|
|
30
31
|
export declare function createDevelopmentAuthoredRebuildCoordinator(input: {
|
|
32
|
+
readonly builds: DevelopmentBuilds;
|
|
31
33
|
readonly developmentExtensions?: DevelopmentExtensionSelection;
|
|
32
34
|
readonly devServer: DrainedNitroDevServer;
|
|
33
35
|
readonly initialHost: PreparedDevelopmentApplicationHost;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{stageDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{
|
|
1
|
+
import{stageDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{toErrorMessage}from"#shared/errors.js";import{usesParentDevelopmentWorkflowWorld}from"#internal/workflow/development-world-protocol.js";import{computeDevelopmentHostFingerprint}from"#internal/nitro/host/dev-host-fingerprint.js";import{removeDevelopmentHostWorkspace}from"#internal/nitro/host/dev-host-workspace.js";import"#internal/nitro/host/drained-nitro-dev-server.js";import{activateDevelopmentGeneration,discardDevelopmentGeneration}from"#internal/nitro/development-generation.js";var PostCommitDevelopmentRebuildError=class extends Error{constructor(e){super(`The development worker was replaced but its generation failed to activate. The server keeps serving the previous generation; the next rebuild retries activation.`,{cause:e}),this.name=`PostCommitDevelopmentRebuildError`}},DevelopmentWorkflowWorldChangeRequiresRestartError=class extends Error{constructor(){super(`Changing experimental.workflow.world between the parent-owned local World and a custom World requires restarting eve dev.`),this.name=`DevelopmentWorkflowWorldChangeRequiresRestartError`}};async function createDevelopmentAuthoredRebuildCoordinator(e){return new TransactionalDevelopmentAuthoredRebuildCoordinator({builds:e.builds,currentHostFingerprint:await computeDevelopmentHostFingerprint(e.initialHost),developmentExtensions:e.developmentExtensions,currentRuntimeFingerprint:e.initialHost.generation.fingerprint,devServer:e.devServer,initialHost:e.initialHost,onRuntimePruned:e.onRuntimePruned})}var TransactionalDevelopmentAuthoredRebuildCoordinator=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){this.#e=e.builds,this.#t=e.initialHost,this.#s=e.onRuntimePruned,this.#n=e.currentHostFingerprint,this.#i=e.developmentExtensions,this.#r=e.currentRuntimeFingerprint,this.#a=e.devServer,this.#o=usesParentDevelopmentWorkflowWorld(e.initialHost.compileResult.manifest.config.experimental?.workflow?.world)}async rebuild(e){let t=this.#t,n=stageDevelopmentEnvironmentFiles(t.appRoot),r=this.#e.begin(),i;try{if(i=await r.prepare({appRoot:t.appRoot,changedPaths:e.changedPaths,developmentExtensions:this.#i,previousExtensions:t.workspaceExtensions}),usesParentDevelopmentWorkflowWorld(i.compileResult.manifest.config.experimental?.workflow?.world)!==this.#o)throw new DevelopmentWorkflowWorldChangeRequiresRestartError;let a=await computeDevelopmentHostFingerprint(i),o=i.generation.fingerprint,s=a!==this.#n,c=o!==this.#r;if(!s&&!c){let e={...t,workspaceExtensions:i.workspaceExtensions};return await discardPreparedHost(i),i=void 0,this.#u(e,this.#n,this.#r),n.commit(),{host:e,kind:`unchanged`}}if(!s){await removeDevelopmentHostWorkspace(i.workspace);let e=retainActiveHostWorkspace(t,i);return await activateDevelopmentGeneration({appRoot:e.appRoot,generation:e.generation,onRuntimePruned:this.#s}),this.#u(e,a,o),i=void 0,n.commit(),await this.#c(),{host:e,kind:`runtime`}}let l=await this.#l({build:r,hasRuntimeChange:c,nextHost:i,nextHostFingerprint:a,nextRuntimeFingerprint:o});return i=void 0,n.commit(),this.#a.prepareSpareWorker(),l}catch(e){throw e instanceof PostCommitDevelopmentRebuildError?(n.commit(),e):(n.rollback(),i===void 0?e:await discardFailedHost(e,i))}finally{r.close()}}async#c(){try{await this.#a.recycleWorker()}catch(e){console.warn(`[eve:dev] could not start a fresh dev worker; the current worker keeps serving: ${toErrorMessage(e)}`)}this.#a.prepareSpareWorker()}async#l(e){let t=e.nextHost;e.hasRuntimeChange||(await discardDevelopmentGeneration(e.nextHost.generation),t={...e.nextHost,generation:this.#t.generation});let n=await e.build.buildHost(t),r=t.workspace;if(await this.#a.replaceWorker({dispose:async()=>await removeDevelopmentHostWorkspace(r),entry:n.entry,workerData:n.workerData}),e.hasRuntimeChange)try{await activateDevelopmentGeneration({appRoot:t.appRoot,generation:t.generation,onRuntimePruned:this.#s})}catch(n){throw await discardDevelopmentGeneration(t.generation).catch(()=>void 0),this.#u({...t,generation:this.#t.generation},e.nextHostFingerprint,this.#r),new PostCommitDevelopmentRebuildError(n)}return this.#u(t,e.nextHostFingerprint,e.hasRuntimeChange?e.nextRuntimeFingerprint:this.#r),{host:t,kind:`structural`}}#u(e,t,n){this.#t=e,this.#n=t,this.#r=n}};function retainActiveHostWorkspace(e,t){return{...t,compiledArtifacts:e.compiledArtifacts,workflowBuildDir:e.workflowBuildDir,workspace:e.workspace}}async function discardPreparedHost(e){let t=(await Promise.allSettled([discardDevelopmentGeneration(e.generation),removeDevelopmentHostWorkspace(e.workspace)])).flatMap(e=>e.status===`rejected`?[e.reason]:[]);if(t.length>0)throw AggregateError(t,`Failed to discard development host "${e.workspace.rootDir}".`)}async function discardFailedHost(e,t){try{return await discardPreparedHost(t),e}catch(t){return AggregateError([e,t],`Development rebuild rollback failed.`,{cause:e})}}export{DevelopmentWorkflowWorldChangeRequiresRestartError,PostCommitDevelopmentRebuildError,createDevelopmentAuthoredRebuildCoordinator};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync}from"node:fs";import{dirname,join,normalize,resolve,sep}from"node:path";import{getDevelopmentEnvironmentFilePaths}from"#cli/dev/environment.js";import{toErrorMessage}from"#shared/errors.js";import{AUTHORED_ARTIFACTS_UPDATED_LOG_LINE,STRUCTURAL_RELOAD_LOG_LINE,formatChangeDetectedLogLine}from"#internal/nitro/host/dev-watcher-log.js";import{resolveDevelopmentSourceSnapshotWatchPaths}from"#internal/nitro/dev-runtime-source-snapshot.js";import{resolveTsConfigDependencyPaths}from"#internal/application/tsconfig-dependencies.js";import{watch as watch$1}from"#compiled/chokidar/index.js";const WATCHED_LOCKFILE_NAMES=[`pnpm-lock.yaml`,`package-lock.json`,`yarn.lock`,`bun.lock`,`bun.lockb`],WATCH_ROOT_MARKER_NAMES=[`.git`,`pnpm-workspace.yaml`],WATCHER_IGNORED_DIRECTORY_NAMES=new Set([`.devtools`,`.generated`,`.eve`,`.git`,`.next`,`.output`,`.turbo`,`.vercel`,`build`,`dist`,`node_modules`]);async function startAuthoredSourceWatcher(e){let t=e.preparedHost,n=!1,r=Promise.resolve(),i,a=!1,o=new Set,s=new Map,c=new Set,l=await resolveAuthoredWatchPaths(t),u=createWatchPathMap(l),d=watch$1(l,{awaitWriteFinish:{pollInterval:50,stabilityThreshold:160},followSymlinks:!1,ignoreInitial:!0,ignored:e=>shouldIgnoreWatcherPath(e,t.workspaceExtensions)}),f=waitForWatcherReady(d),rebuild=async(i,a=!1)=>{n||o.size>0||(r=r.then(async()=>{if(n)return;let r=[...s.values()];if(!i&&r.length===0)return;let o=[...c];s.clear(),c.clear();let l=t;!a&&r.length>0&&console.log(formatChangeDetectedLogLine(l.appRoot,r));try{let n=await e.coordinator.rebuild({changedPaths:o});t=n.host,a||(n.kind===`structural`?console.log(STRUCTURAL_RELOAD_LOG_LINE):console.log(AUTHORED_ARTIFACTS_UPDATED_LOG_LINE)),u=syncWatcherPaths({nextWatchPaths:await resolveAuthoredWatchPaths(t),previousWatchPathsByKey:u,watcher:d})}catch(e){console.error(`[eve:dev] rebuild failed: ${toErrorMessage(e)}`)}}).catch(e=>{console.error(`[eve:dev] rebuild queue error: ${toErrorMessage(e)}`)}),await r)},flush=async()=>{i!==void 0&&(clearTimeout(i),i=void 0),await rebuild(!1)},forceRebuild=async(e=!1)=>{i!==void 0&&(clearTimeout(i),i=void 0),await rebuild(!0,e)};return d.on(`all`,(e,t)=>{!n&&a&&e!==`addDir`&&e!==`unlinkDir`&&(s.set(`${e}:${t}`,{event:e,path:t}),c.add(t),i!==void 0&&clearTimeout(i),i=setTimeout(()=>{i=void 0,flush()},120))}),await f,a=!0,{async close(){n=!0,i!==void 0&&(clearTimeout(i),i=void 0),await d.close(),await r},flush,rebuild:forceRebuild,async suspend(e){o.has(e)||(o.add(e),i!==void 0&&(clearTimeout(i),i=void 0),await r)},async resume(e,t){o.delete(e)&&o.size===0&&await forceRebuild(t?.silent)}}}async function waitForWatcherReady(e){await new Promise((t,n)=>{e.on(`ready`,()=>{t()}),e.on(`error`,e=>{n(e)})})}async function resolveAuthoredWatchPaths(e){let t=new Set([e.compileResult.project.agentRoot,join(e.appRoot,`package.json`),join(e.appRoot,`jsconfig.json`),join(e.appRoot,`tsconfig.json`),join(e.appRoot,`tsconfig.*.json`)]),n=await resolveTsConfigWatchPaths(e.appRoot),r=e.generation.sourceWatchPaths??await resolveDevelopmentSourceSnapshotWatchPaths(e.appRoot);for(let n of e.workspaceExtensions){t.add(n.config.sourceRoot);for(let e of n.buildConfigPaths)t.add(e)}for(let n of getDevelopmentEnvironmentFilePaths(e.appRoot))t.add(n);for(let e of r)t.add(e);for(let e of n)t.add(e);for(let n of resolveLockfileSearchDirectories(e.appRoot))for(let e of WATCHED_LOCKFILE_NAMES)t.add(join(n,e));return[...t].sort((e,t)=>e.localeCompare(t))}function createWatchPathMap(e){let t=new Map;for(let n of e)t.set(toWatchPathKey(n),n);return t}function syncWatcherPaths(e){let t=createWatchPathMap(e.nextWatchPaths),n=[],r=[];for(let[r,i]of t)e.previousWatchPathsByKey.has(r)||n.push(i);for(let[n,i]of e.previousWatchPathsByKey)t.has(n)||r.push(i);return n.length>0&&e.watcher.add(n),r.length>0&&e.watcher.unwatch(r),t}function toWatchPathKey(e){return normalize(resolve(e))}function resolveLockfileSearchDirectories(e){let t=resolve(e),n=[t],r=t;for(;;){if(hasWatchRootMarker(r))return n;let e=dirname(r);if(e===r)return[t];r=e,n.push(r)}}function hasWatchRootMarker(e){return WATCH_ROOT_MARKER_NAMES.some(t=>existsSync(join(e,t)))}async function resolveTsConfigWatchPaths(e){return await resolveTsConfigDependencyPaths(e)}function shouldIgnoreWatcherPath(e,t){return normalize(e).split(sep).filter(Boolean).some(e=>WATCHER_IGNORED_DIRECTORY_NAMES.has(e))||t.some(t=>isPathInsideOrEqual(e,t.config.outDir))}function isPathInsideOrEqual(e,t){let n=resolve(e),r=resolve(t);return n===r||n.startsWith(`${r}${sep}`)}export{startAuthoredSourceWatcher};
|
|
1
|
+
import{existsSync}from"node:fs";import{dirname,join,normalize,resolve,sep}from"node:path";import{getDevelopmentEnvironmentFilePaths}from"#cli/dev/environment.js";import{EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX}from"#internal/nitro/host/build-extension.js";import{toErrorMessage}from"#shared/errors.js";import{AUTHORED_ARTIFACTS_UPDATED_LOG_LINE,STRUCTURAL_RELOAD_LOG_LINE,formatChangeDetectedLogLine}from"#internal/nitro/host/dev-watcher-log.js";import{resolveDevelopmentSourceSnapshotWatchPaths}from"#internal/nitro/dev-runtime-source-snapshot.js";import{resolveTsConfigDependencyPaths}from"#internal/application/tsconfig-dependencies.js";import{watch as watch$1}from"#compiled/chokidar/index.js";const WATCHED_LOCKFILE_NAMES=[`pnpm-lock.yaml`,`package-lock.json`,`yarn.lock`,`bun.lock`,`bun.lockb`],WATCH_ROOT_MARKER_NAMES=[`.git`,`pnpm-workspace.yaml`],WATCHER_IGNORED_DIRECTORY_NAMES=new Set([`.devtools`,`.generated`,`.eve`,`.git`,`.next`,`.output`,`.turbo`,`.vercel`,`build`,`dist`,`node_modules`]);async function startAuthoredSourceWatcher(e){let t=e.preparedHost,n=!1,r=Promise.resolve(),i,a=!1,o=new Set,s=new Map,c=new Set,l=await resolveAuthoredWatchPaths(t),u=createWatchPathMap(l),d=watch$1(l,{awaitWriteFinish:{pollInterval:50,stabilityThreshold:160},followSymlinks:!1,ignoreInitial:!0,ignored:e=>shouldIgnoreWatcherPath(e,t.workspaceExtensions)}),f=waitForWatcherReady(d),rebuild=async(i,a=!1)=>{n||o.size>0||(r=r.then(async()=>{if(n)return;let r=[...s.values()];if(!i&&r.length===0)return;let o=[...c];s.clear(),c.clear();let l=t;!a&&r.length>0&&console.log(formatChangeDetectedLogLine(l.appRoot,r));try{let n=await e.coordinator.rebuild({changedPaths:o});t=n.host,a||(n.kind===`structural`?console.log(STRUCTURAL_RELOAD_LOG_LINE):console.log(AUTHORED_ARTIFACTS_UPDATED_LOG_LINE)),u=syncWatcherPaths({nextWatchPaths:await resolveAuthoredWatchPaths(t),previousWatchPathsByKey:u,watcher:d})}catch(e){console.error(`[eve:dev] rebuild failed: ${toErrorMessage(e)}`)}}).catch(e=>{console.error(`[eve:dev] rebuild queue error: ${toErrorMessage(e)}`)}),await r)},flush=async()=>{i!==void 0&&(clearTimeout(i),i=void 0),await rebuild(!1)},forceRebuild=async(e=!1)=>{i!==void 0&&(clearTimeout(i),i=void 0),await rebuild(!0,e)};return d.on(`all`,(e,t)=>{!n&&a&&e!==`addDir`&&e!==`unlinkDir`&&(s.set(`${e}:${t}`,{event:e,path:t}),c.add(t),i!==void 0&&clearTimeout(i),i=setTimeout(()=>{i=void 0,flush()},120))}),await f,a=!0,{async close(){n=!0,i!==void 0&&(clearTimeout(i),i=void 0),await d.close(),await r},flush,rebuild:forceRebuild,async suspend(e){o.has(e)||(o.add(e),i!==void 0&&(clearTimeout(i),i=void 0),await r)},async resume(e,t){o.delete(e)&&o.size===0&&await forceRebuild(t?.silent)}}}async function waitForWatcherReady(e){await new Promise((t,n)=>{e.on(`ready`,()=>{t()}),e.on(`error`,e=>{n(e)})})}async function resolveAuthoredWatchPaths(e){let t=new Set([e.compileResult.project.agentRoot,join(e.appRoot,`package.json`),join(e.appRoot,`jsconfig.json`),join(e.appRoot,`tsconfig.json`),join(e.appRoot,`tsconfig.*.json`)]),n=await resolveTsConfigWatchPaths(e.appRoot),r=e.generation.sourceWatchPaths??await resolveDevelopmentSourceSnapshotWatchPaths(e.appRoot);for(let n of e.workspaceExtensions){t.add(n.config.sourceRoot);for(let e of n.buildConfigPaths)t.add(e)}for(let n of getDevelopmentEnvironmentFilePaths(e.appRoot))t.add(n);for(let e of r)t.add(e);for(let e of n)t.add(e);for(let n of resolveLockfileSearchDirectories(e.appRoot))for(let e of WATCHED_LOCKFILE_NAMES)t.add(join(n,e));return[...t].sort((e,t)=>e.localeCompare(t))}function createWatchPathMap(e){let t=new Map;for(let n of e)t.set(toWatchPathKey(n),n);return t}function syncWatcherPaths(e){let t=createWatchPathMap(e.nextWatchPaths),n=[],r=[];for(let[r,i]of t)e.previousWatchPathsByKey.has(r)||n.push(i);for(let[n,i]of e.previousWatchPathsByKey)t.has(n)||r.push(i);return n.length>0&&e.watcher.add(n),r.length>0&&e.watcher.unwatch(r),t}function toWatchPathKey(e){return normalize(resolve(e))}function resolveLockfileSearchDirectories(e){let t=resolve(e),n=[t],r=t;for(;;){if(hasWatchRootMarker(r))return n;let e=dirname(r);if(e===r)return[t];r=e,n.push(r)}}function hasWatchRootMarker(e){return WATCH_ROOT_MARKER_NAMES.some(t=>existsSync(join(e,t)))}async function resolveTsConfigWatchPaths(e){return await resolveTsConfigDependencyPaths(e)}function shouldIgnoreWatcherPath(e,t){return normalize(e).split(sep).filter(Boolean).some(e=>WATCHER_IGNORED_DIRECTORY_NAMES.has(e)||e.startsWith(EXTENSION_BUILD_STAGING_DIRECTORY_PREFIX))||t.some(t=>isPathInsideOrEqual(e,t.config.outDir))}function isPathInsideOrEqual(e,t){let n=resolve(e),r=resolve(t);return n===r||n.startsWith(`${r}${sep}`)}export{startAuthoredSourceWatcher};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { DevelopmentExtensionSelection } from "#compiler/development-extensions.js";
|
|
2
|
+
import { type DevelopmentHostWorkspace } from "#internal/nitro/host/dev-host-workspace.js";
|
|
3
|
+
import type { PreparedDevelopmentApplicationHost } from "#internal/nitro/host/types.js";
|
|
4
|
+
import type { WorkspaceExtension } from "#internal/nitro/host/workspace-extensions.js";
|
|
5
|
+
export interface DevelopmentPrepareInput {
|
|
6
|
+
readonly appRoot: string;
|
|
7
|
+
readonly changedPaths?: readonly string[];
|
|
8
|
+
readonly developmentExtensions?: DevelopmentExtensionSelection;
|
|
9
|
+
readonly previousExtensions?: readonly WorkspaceExtension[];
|
|
10
|
+
/** Created by the dev server, so it can remove the workspace if the build process dies. */
|
|
11
|
+
readonly workspace?: DevelopmentHostWorkspace;
|
|
12
|
+
}
|
|
13
|
+
/** Worker entry and data for a built Nitro host. */
|
|
14
|
+
export interface DevelopmentHostBuild {
|
|
15
|
+
readonly entry: string;
|
|
16
|
+
readonly workerData: Readonly<Record<string, unknown>>;
|
|
17
|
+
}
|
|
18
|
+
interface DevelopmentBuildOperations {
|
|
19
|
+
readonly buildHost: {
|
|
20
|
+
readonly input: PreparedDevelopmentApplicationHost;
|
|
21
|
+
readonly value: DevelopmentHostBuild;
|
|
22
|
+
};
|
|
23
|
+
readonly prepare: {
|
|
24
|
+
readonly input: DevelopmentPrepareInput;
|
|
25
|
+
readonly value: PreparedDevelopmentApplicationHost;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export type DevelopmentBuildOperation = keyof DevelopmentBuildOperations;
|
|
29
|
+
export declare const DEVELOPMENT_BUILD_MESSAGE_KIND = "eve:development-build";
|
|
30
|
+
export interface DevelopmentBuildRequest {
|
|
31
|
+
/** The dev server's environment, including `.env` changes staged for this rebuild. */
|
|
32
|
+
readonly environment: Readonly<Record<string, string | undefined>>;
|
|
33
|
+
readonly id: number;
|
|
34
|
+
readonly input: unknown;
|
|
35
|
+
readonly kind: typeof DEVELOPMENT_BUILD_MESSAGE_KIND;
|
|
36
|
+
readonly operation: DevelopmentBuildOperation;
|
|
37
|
+
}
|
|
38
|
+
export type DevelopmentBuildOutcome = {
|
|
39
|
+
readonly ok: true;
|
|
40
|
+
readonly value: unknown;
|
|
41
|
+
} | {
|
|
42
|
+
readonly ok: false;
|
|
43
|
+
readonly error: SerializedError;
|
|
44
|
+
};
|
|
45
|
+
export type DevelopmentBuildResponse = {
|
|
46
|
+
/** The build's Docker probe result, if it probed. */
|
|
47
|
+
readonly dockerAvailability: boolean | undefined;
|
|
48
|
+
readonly id: number;
|
|
49
|
+
readonly kind: typeof DEVELOPMENT_BUILD_MESSAGE_KIND;
|
|
50
|
+
} & DevelopmentBuildOutcome;
|
|
51
|
+
export interface DevelopmentBuildSession {
|
|
52
|
+
prepare(input: DevelopmentPrepareInput): Promise<PreparedDevelopmentApplicationHost>;
|
|
53
|
+
buildHost(host: PreparedDevelopmentApplicationHost): Promise<DevelopmentHostBuild>;
|
|
54
|
+
/** Ends the session. Its build process exits, releasing everything it loaded. */
|
|
55
|
+
close(): void;
|
|
56
|
+
}
|
|
57
|
+
/** The build processes owned by one dev server. */
|
|
58
|
+
export interface DevelopmentBuilds {
|
|
59
|
+
/**
|
|
60
|
+
* Starts a build session for one rebuild. Every step that evaluates
|
|
61
|
+
* authored code or runs Rolldown happens in the session's child process,
|
|
62
|
+
* which exits when the session closes. Node never unloads an imported
|
|
63
|
+
* module and Rolldown's native memory belongs to the whole process, so
|
|
64
|
+
* exiting is the only way to release both.
|
|
65
|
+
*/
|
|
66
|
+
begin(): DevelopmentBuildSession;
|
|
67
|
+
/** Stops every build process, including the spare. Later sessions fail. */
|
|
68
|
+
close(): void;
|
|
69
|
+
}
|
|
70
|
+
interface SerializedError {
|
|
71
|
+
cause?: SerializedError;
|
|
72
|
+
message: string;
|
|
73
|
+
name: string;
|
|
74
|
+
stack?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Forks a build process before the dev server loads its own modules, so the
|
|
78
|
+
* two startups overlap. The first {@link createDevelopmentBuilds} adopts it.
|
|
79
|
+
*/
|
|
80
|
+
export declare function prewarmDevelopmentBuildProcess(): void;
|
|
81
|
+
export declare function createDevelopmentBuilds(): DevelopmentBuilds;
|
|
82
|
+
export declare function serializeError(error: unknown, depth?: number): SerializedError;
|
|
83
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{fork}from"node:child_process";import{fileURLToPath}from"node:url";import{toError}from"#shared/errors.js";import{LINUX_DOCKER_AVAILABILITY_ENV}from"#execution/sandbox/bindings/docker-cli.js";import{createDevelopmentHostWorkspace,removeDevelopmentHostWorkspace}from"#internal/nitro/host/dev-host-workspace.js";const DEVELOPMENT_BUILD_MESSAGE_KIND=`eve:development-build`;let prewarmedProcess,nextRequestId=0;function prewarmDevelopmentBuildProcess(){isSourceCheckout()||(prewarmedProcess??=new DevelopmentBuildProcess)}function createDevelopmentBuilds(){if(isSourceCheckout())return{begin:createInProcessSession,close(){}};let e=prewarmedProcess;prewarmedProcess=void 0;let t=new Set,n=!1;return{begin(){if(n)throw Error(`The dev server is closed, so it cannot start another build.`);let r=e?.alive===!0?e:new DevelopmentBuildProcess;e!==r&&e?.close(),e=void 0,t.add(r);let i=!1;return{async prepare(e){let t=await createDevelopmentHostWorkspace(e.appRoot);try{return await r.request(`prepare`,{...e,workspace:t})}catch(e){throw await removeDevelopmentHostWorkspace(t).catch(()=>void 0),e}},buildHost:async e=>await r.request(`buildHost`,e),close(){i||(i=!0,t.delete(r),r.close(),n||(e??=new DevelopmentBuildProcess))}}},close(){n=!0,e?.close(),e=void 0;for(let e of t)e.close();t.clear()}}}function isSourceCheckout(){return import.meta.url.endsWith(`.ts`)}function createInProcessSession(){let e=import(`#internal/nitro/host/dev-build-operations.js`);return{prepare:async t=>await(await e).prepareDevelopmentBuild(t),buildHost:async t=>await(await e).buildDevelopmentHost(t),close(){}}}var DevelopmentBuildProcess=class{#e;#t;#n=new Map;constructor(){this.#e=fork(fileURLToPath(new URL(`./dev-build-process.js`,import.meta.url)),[],{serialization:`advanced`,stdio:[`ignore`,`inherit`,`inherit`,`ipc`]}),this.#e.on(`message`,e=>{if(e?.kind!==`eve:development-build`||e.id===void 0)return;let t=this.#n.get(e.id);if(t===void 0)return;this.#n.delete(e.id),this.#i(),publishDockerAvailability(e.dockerAvailability);let n=e;n.ok?t.resolve(n.value):t.reject(deserializeError(n.error))}),this.#e.once(`error`,e=>this.#r(e)),this.#e.once(`exit`,(e,t)=>this.#r(createExitError(e,t))),this.#i()}get alive(){return this.#t===void 0&&this.#e.connected}request(e,t){if(this.#t!==void 0)return Promise.reject(this.#t);let n=++nextRequestId,r={environment:{...process.env},id:n,input:t,kind:DEVELOPMENT_BUILD_MESSAGE_KIND,operation:e};return new Promise((e,t)=>{this.#n.set(n,{reject:t,resolve:e}),this.#e.ref(),this.#e.channel?.ref?.(),this.#e.send(r,e=>{e!==null&&this.#r(e)})})}close(){this.#e.connected&&this.#e.disconnect(),this.#e.exitCode===null&&this.#e.signalCode===null&&this.#e.kill()}#r(e){this.#t??=e;for(let e of this.#n.values())e.reject(this.#t);this.#n.clear()}#i(){this.#n.size>0||(this.#e.unref(),this.#e.channel?.unref?.())}};function publishDockerAvailability(e){e!==void 0&&process.env[LINUX_DOCKER_AVAILABILITY_ENV]===void 0&&(process.env[LINUX_DOCKER_AVAILABILITY_ENV]=e?`1`:`0`)}function createExitError(e,t){return Error(e===0?`The agent build stopped before it finished: its process ran out of work to do. This usually means an authored module awaits a promise that never settles at the top level, or calls process.exit().`:t===`SIGABRT`||e===134?`The agent build process aborted, most likely because it ran out of memory. Reduce what authored modules import when they load, or raise the heap limit by starting eve dev with NODE_OPTIONS=--max-old-space-size=<megabytes>.`:t===`SIGKILL`?`The agent build process was killed before it finished. If the system ran low on memory, reduce what authored modules import when they load.`:`The agent build process exited (${t??`code ${String(e)}`}) before finishing.`)}function serializeError(e,t=0){let n=toError(e),r=n.cause,i={message:n.message,name:n.name};return n.stack!==void 0&&(i.stack=n.stack),r!==void 0&&t<8&&(i.cause=serializeError(r,t+1)),i}function deserializeError(e){let t=toError(e);return e.cause!==void 0&&(t.cause=deserializeError(e.cause)),t}export{DEVELOPMENT_BUILD_MESSAGE_KIND,createDevelopmentBuilds,prewarmDevelopmentBuildProcess,serializeError};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DevelopmentHostBuild, DevelopmentPrepareInput } from "#internal/nitro/host/dev-build-host.js";
|
|
2
|
+
import type { PreparedDevelopmentApplicationHost } from "#internal/nitro/host/types.js";
|
|
3
|
+
/** Compiles the agent and stages a candidate generation in its own host workspace. */
|
|
4
|
+
export declare function prepareDevelopmentBuild(input: DevelopmentPrepareInput): Promise<PreparedDevelopmentApplicationHost>;
|
|
5
|
+
/** Builds the Nitro host for a prepared candidate and returns its worker entry. */
|
|
6
|
+
export declare function buildDevelopmentHost(host: PreparedDevelopmentApplicationHost): Promise<DevelopmentHostBuild>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
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";async function prepareDevelopmentBuild(e){return await prepareDevelopmentApplicationHost(e.appRoot,{changedPaths:e.changedPaths,developmentExtensions:e.developmentExtensions,previousExtensions:e.previousExtensions,workspace:e.workspace})}async function buildDevelopmentHost(e){let t=await createDevelopmentApplicationNitro(e);return await buildDevelopmentHostCandidate({host:e,nitro:t})}export{buildDevelopmentHost,prepareDevelopmentBuild};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{DEVELOPMENT_BUILD_MESSAGE_KIND,serializeError}from"#internal/nitro/host/dev-build-host.js";import{peekLinuxDockerDaemonAvailability}from"#execution/sandbox/bindings/docker-cli.js";import{buildDevelopmentHost,prepareDevelopmentBuild}from"#internal/nitro/host/dev-build-operations.js";process.once(`disconnect`,()=>process.exit(0)),process.on(`message`,async e=>{if(e?.kind!==DEVELOPMENT_BUILD_MESSAGE_KIND||e.id===void 0)return;e.environment!==void 0&&replaceEnvironment(e.environment),process.channel?.unref();let t;try{t={ok:!0,value:e.operation===`buildHost`?await buildDevelopmentHost(e.input):await prepareDevelopmentBuild(e.input)}}catch(e){t={ok:!1,error:serializeError(e)}}process.channel?.ref();let n={...t,dockerAvailability:peekLinuxDockerDaemonAvailability(),id:e.id,kind:DEVELOPMENT_BUILD_MESSAGE_KIND};process.send?.(n)});function replaceEnvironment(e){for(let t of Object.keys(process.env))e[t]===void 0&&delete process.env[t];for(let[t,n]of Object.entries(e))n!==void 0&&(process.env[t]=n)}export{};
|
|
@@ -4,6 +4,9 @@ interface BundlerPluginShape {
|
|
|
4
4
|
load?(id: string): string | null;
|
|
5
5
|
resolveId?(source: string): string | null;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Removes development-only lazy sandbox preparation, and the optional engine
|
|
9
|
+
* installer only preparation uses, from every production runtime bundle.
|
|
10
|
+
*/
|
|
8
11
|
export declare function createDevelopmentRuntimePrunePlugin(): BundlerPluginShape;
|
|
9
12
|
export {};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
const PRUNED_DEVELOPMENT_LAZY_PREWARM_MODULE_ID=`\0eve-pruned-development-lazy-prewarm`,DEVELOPMENT_LAZY_PREWARM_SOURCE_RE=/(?:^|[/\\#])execution[/\\]sandbox[/\\]development-lazy-prewarm\.(?:js|ts)(?:[?#].*)?$/;function createDevelopmentRuntimePrunePlugin(){return{enforce:`pre`,name:`eve-hosted-development-runtime-prune`,load(e){return e===PRUNED_DEVELOPMENT_LAZY_PREWARM_MODULE_ID?`export async function ensureDevelopmentSandboxesPrepared() {}
|
|
2
|
-
`:
|
|
1
|
+
const PRUNED_DEVELOPMENT_LAZY_PREWARM_MODULE_ID=`\0eve-pruned-development-lazy-prewarm`,DEVELOPMENT_LAZY_PREWARM_SOURCE_RE=/(?:^|[/\\#])execution[/\\]sandbox[/\\]development-lazy-prewarm\.(?:js|ts)(?:[?#].*)?$/,PRUNED_OPTIONAL_ENGINE_INSTALL_MODULE_ID=`\0eve-pruned-optional-engine-install`,OPTIONAL_ENGINE_INSTALL_SOURCE_RE=/(?:^|[/\\#])internal[/\\]application[/\\]optional-package-install\.(?:js|ts)(?:[?#].*)?$/;function createDevelopmentRuntimePrunePlugin(){return{enforce:`pre`,name:`eve-hosted-development-runtime-prune`,load(e){return e===PRUNED_DEVELOPMENT_LAZY_PREWARM_MODULE_ID?`export async function ensureDevelopmentSandboxesPrepared() {}
|
|
2
|
+
`:e===PRUNED_OPTIONAL_ENGINE_INSTALL_MODULE_ID||OPTIONAL_ENGINE_INSTALL_SOURCE_RE.test(e)?[`function pruned() {`,` throw new Error("Optional local sandbox engines cannot be installed in production server runtimes.");`,`}`,`export const detectProjectPackageManager = pruned;`,`export const importInstalledEnginePackage = pruned;`,`export const installPackageIntoProject = pruned;`,`export const loadOptionalEnginePackage = pruned;`,``].join(`
|
|
3
|
+
`):null},resolveId(e){return DEVELOPMENT_LAZY_PREWARM_SOURCE_RE.test(e)?PRUNED_DEVELOPMENT_LAZY_PREWARM_MODULE_ID:OPTIONAL_ENGINE_INSTALL_SOURCE_RE.test(e)?PRUNED_OPTIONAL_ENGINE_INSTALL_MODULE_ID:null}}}export{createDevelopmentRuntimePrunePlugin};
|
|
@@ -43,6 +43,19 @@ export declare class DrainedNitroDevServer {
|
|
|
43
43
|
* closed at shutdown), so a caller can tie workspace cleanup to it.
|
|
44
44
|
*/
|
|
45
45
|
replaceWorker(replacement: DevelopmentWorkerReplacement): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Swaps the active worker for a fresh one started from the same host, and
|
|
48
|
+
* drains the old one. Node never unloads a module, so a worker keeps every
|
|
49
|
+
* generation it imported; a fresh worker loads only the active one. Uses the
|
|
50
|
+
* spare from {@link prepareSpareWorker} when it is ready.
|
|
51
|
+
*/
|
|
52
|
+
recycleWorker(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Starts a spare worker from the active host in the background, so the next
|
|
55
|
+
* {@link recycleWorker} does not wait for a worker to boot. A spare for an
|
|
56
|
+
* older host is discarded.
|
|
57
|
+
*/
|
|
58
|
+
prepareSpareWorker(): void;
|
|
46
59
|
listen(input: {
|
|
47
60
|
readonly hostname: string;
|
|
48
61
|
readonly port: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createServer}from"node:http";import{toErrorMessage}from"#shared/errors.js";import{stampDevelopmentClientAddress}from"#internal/nitro/dev-client-address.js";import{closeServer,createPublicRequest,writeRequestError,writeResponse}from"#internal/nitro/host/dev-server-http.js";import{createNodeDevelopmentRunner}from"#internal/nitro/host/dev-runner.js";const RUNNER_READY_TIMEOUT_MS=6e4;var DrainedNitroDevServer=class{#e;#t=new Set;#n=new Set;#r;#i;#a=[];#o;#s=!1;#c;#l;#u;#d=Promise.resolve();#
|
|
1
|
+
import{createServer}from"node:http";import{toErrorMessage}from"#shared/errors.js";import{stampDevelopmentClientAddress}from"#internal/nitro/dev-client-address.js";import{closeServer,createPublicRequest,writeRequestError,writeResponse}from"#internal/nitro/host/dev-server-http.js";import{createNodeDevelopmentRunner}from"#internal/nitro/host/dev-runner.js";const RUNNER_READY_TIMEOUT_MS=6e4;var DrainedNitroDevServer=class{#e;#t=new Set;#n=new Set;#r;#i;#a=[];#o;#s=!1;#c;#l;#u;#d;#f;#p=Promise.resolve();#m=0;constructor(e=console,t=createNodeDevelopmentRunner){this.#e=t,this.#r=e}setControlHandler(e){this.#l=e}setClientAddressSecret(e){this.#c=e}replaceWorker(e){let t={dispose:e.dispose,disposed:!1,entry:e.entry,runners:0,workerData:e.workerData};return this.#h(async()=>await this.#g(t,!1))}recycleWorker(){return this.#h(async()=>{let e=this.#u;if(e===void 0)throw Error(`Development server has no worker to recycle.`);await this.#g(e,!0)})}prepareSpareWorker(){let e=this.#u;if(this.#s||e===void 0||this.#f?.slot.host===e)return;this.#y();let t=this.#_(e),settle=()=>void 0,n={ready:new Promise(e=>{settle=e}),slot:t},forget=()=>{settle(!1),this.#f===n&&(this.#f=void 0,this.#x(t))};this.#f=n,t.runner.onceClosed(forget),t.runner.waitForReady(RUNNER_READY_TIMEOUT_MS).then(()=>settle(!0),forget)}#h(e){let t=this.#p.catch(()=>void 0).then(e);return this.#p=t.catch(()=>void 0),t}async#g(e,t){if(this.#s)throw Error(`Development server is closed.`);let n=t?await this.#v(e):void 0;if(this.#s)throw n!==void 0&&await this.#x(n),Error(`Development server is closed.`);if(n===void 0){n=this.#_(e),this.#d=n;try{await n.runner.waitForReady(RUNNER_READY_TIMEOUT_MS)}catch(e){throw await n.runner.close(e).catch(()=>void 0),await this.#x(n),e}finally{this.#d=void 0}}if(this.#s)throw await this.#x(n),Error(`Development server closed before the worker was ready.`);let r=this.#i,i=this.#u,a=n;this.#i=a,this.#u=e,this.#f!==void 0&&this.#f.slot.host!==e&&this.#y(),i!==void 0&&i!==e&&i.runners===0&&this.#C(i),a.runner.onceClosed(()=>{this.#w(a)}),this.#k(),r!==void 0&&this.#T(r)}#_(e){return e.runners+=1,{activeExchanges:0,host:e,quietListeners:[],releasePromise:void 0,runner:this.#e({entry:e.entry,name:`eve-dev-${String(this.#m++)}`,workerData:e.workerData})}}async#v(e){let t=this.#f;if(t!==void 0&&t.slot.host===e&&await t.ready&&!(this.#f!==t||t.slot.runner.closed))return this.#f=void 0,t.slot}#y(){let e=this.#f;this.#f=void 0,e!==void 0&&this.#x(e.slot)}listen(e){if(this.#s)throw Error(`Development server is closed.`);let t=new Set,n=createServer((e,t)=>{this.#D(e,t)});n.on(`connection`,e=>{t.add(e),e.once(`close`,()=>t.delete(e))}),n.on(`upgrade`,(e,t,n)=>{this.#O(e,t,n)});let r,i=new Promise((t,i)=>{let onError=e=>{n.off(`listening`,onListening),i(e)},onListening=()=>{n.off(`error`,onError);let a=n.address();if(a===null||typeof a==`string`){i(Error(`Development server did not expose a TCP address.`));return}r=`http://${e.hostname.includes(`:`)?`[${e.hostname}]`:e.hostname}:${String(a.port)}/`,t()};n.once(`error`,onError),n.once(`listening`,onListening),n.listen({host:e.hostname,port:e.port})}),a,o={beginClose:()=>(a??=closeServer(n).finally(()=>{this.#n.delete(o)}),a),destroySockets:()=>{for(let e of t)e.destroy()}};return this.#n.add(o),{async close(){let e=o.beginClose();o.destroySockets(),await e},node:{server:n},ready:async()=>await i,get url(){return r}}}async waitForActiveRunner(e=RUNNER_READY_TIMEOUT_MS){let t=Date.now()+e;for(;this.#i===void 0&&!this.#s;){if(Date.now()>=t)throw Error(`Timed out waiting for the development worker to become ready.`);await new Promise(e=>{this.#a.push(e),setTimeout(e,100)})}if(this.#s)throw Error(`Development server is closed.`)}close(){return this.#o??=this.#b(),this.#o}async#b(){this.#s=!0,this.#k(),await Promise.all([this.#d,this.#f?.slot].map(async e=>await e?.runner.close(Error(`Development server is closing.`)).catch(()=>void 0))),await this.#p.catch(()=>void 0);let e=[...this.#n],t=e.map(e=>e.beginClose()),n=[this.#i,this.#f?.slot,...this.#t].filter(e=>e!==void 0),r=this.#u;this.#i=void 0,this.#u=void 0,this.#f=void 0,this.#t.clear(),await Promise.all(n.map(async e=>await this.#x(e))),r!==void 0&&r.runners===0&&await this.#C(r);for(let t of e)t.destroySockets();await Promise.all(t)}#x(e){return e.releasePromise??=this.#S(e),e.releasePromise}async#S(e){await e.runner.close().catch(()=>void 0),--e.host.runners,e.host.runners===0&&e.host!==this.#u&&await this.#C(e.host)}async#C(e){e.dispose===void 0||e.disposed||(e.disposed=!0,await e.dispose().catch(e=>{this.#r.error(`[eve:dev] failed to dispose a retired dev host: ${toErrorMessage(e)}`)}))}async#w(e){if(this.#s||this.#i!==e)return;this.#i=void 0,this.#r.error(`[eve:dev] dev worker exited; restarting.`);let t=this.#p.catch(()=>void 0).then(async()=>{if(this.#s||this.#i!==void 0){await this.#x(e);return}await this.#x(e),await this.#g(e.host,!0)});this.#p=t.catch(()=>void 0);try{await t}catch(e){this.#r.error(`[eve:dev] dev worker restart failed: ${toErrorMessage(e)}`)}}#T(e){this.#t.add(e);let finishDrain=()=>{this.#x(e).finally(()=>this.#t.delete(e))};if(e.activeExchanges===0){finishDrain();return}e.quietListeners.push(finishDrain)}#E(e){e.activeExchanges+=1;let t=!1;return()=>{if(!t&&(t=!0,--e.activeExchanges,e.activeExchanges===0))for(let t of e.quietListeners.splice(0))t()}}async#D(e,t){let n=new AbortController,abortRequest=e=>{n.signal.aborted||n.abort(e)};e.once(`error`,abortRequest),t.once(`close`,()=>{t.writableEnded||abortRequest()});let r;try{let i=createPublicRequest(e,n.signal);stampDevelopmentClientAddress(i.headers,e.socket.remoteAddress??void 0,this.#c);let a=await this.#l?.(i);if(a!==void 0){await writeResponse(t,a,n.signal);return}await this.waitForActiveRunner();let o=this.#i;if(o===void 0)throw Error(`Development worker is unavailable.`);r=this.#E(o);let s=await o.runner.fetch(i,{signal:n.signal});await writeResponse(t,s,n.signal)}catch(e){n.signal.aborted||writeRequestError(t,e)}finally{r?.(),e.off(`error`,abortRequest)}}async#O(e,t,n){let r;try{stampDevelopmentClientAddress(e.headers,e.socket.remoteAddress??void 0,this.#c),await this.waitForActiveRunner();let i=this.#i;if(i===void 0)throw Error(`Development worker is unavailable.`);r=this.#E(i),t.once(`close`,r),t.once(`error`,r),await i.runner.upgrade({node:{head:n,req:e,socket:t}})}catch{r?.(),t.destroyed||t.destroy()}}#k(){for(let e of this.#a.splice(0))e()}};export{DrainedNitroDevServer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME={"just-bash":`just-bash
|
|
1
|
+
const OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME={"just-bash":`just-bash`};function createOptionalEngineDependencyPlugin(e){if(e.length===0)return null;let t=new Set(e);return{name:`eve-optional-engine-dependency-external`,resolveId(e){return t.has(e)?{external:!0,id:e}:null}}}export{OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME,createOptionalEngineDependencyPlugin};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DevelopmentExtensionSelection } from "#compiler/development-extensions.js";
|
|
2
2
|
import type { ApplicationBuildWorkspace } from "#internal/application/build-workspace.js";
|
|
3
|
+
import { type DevelopmentHostWorkspace } from "#internal/nitro/host/dev-host-workspace.js";
|
|
3
4
|
import { type WorkspaceExtension } from "#internal/nitro/host/workspace-extensions.js";
|
|
4
5
|
import type { PreparedApplicationHost, PreparedDevelopmentApplicationHost } from "#internal/nitro/host/types.js";
|
|
5
6
|
/**
|
|
@@ -10,6 +11,8 @@ export declare function prepareDevelopmentApplicationHost(appRoot: string, optio
|
|
|
10
11
|
readonly changedPaths?: readonly string[];
|
|
11
12
|
readonly developmentExtensions?: DevelopmentExtensionSelection;
|
|
12
13
|
readonly previousExtensions?: readonly WorkspaceExtension[];
|
|
14
|
+
/** An empty workspace created by the caller; one is created otherwise. */
|
|
15
|
+
readonly workspace?: DevelopmentHostWorkspace;
|
|
13
16
|
}): Promise<PreparedDevelopmentApplicationHost>;
|
|
14
17
|
/**
|
|
15
18
|
* Builds mounted source-backed workspace extensions, then compiles one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join}from"node:path";import{createDevelopmentHostWorkspace,removeDevelopmentHostWorkspace}from"#internal/nitro/host/dev-host-workspace.js";import{discardDevelopmentGeneration,stageDevelopmentGeneration}from"#internal/nitro/development-generation.js";import{createScheduleRegistrations}from"#runtime/schedules/register.js";import{resolveSchedules}from"#runtime/schedules/resolve-schedule.js";import{compileAgentInWorkspace}from"#compiler/compile-agent.js";import{writeCompiledArtifactsFiles,writeDevelopmentCompiledArtifactsFiles}from"#internal/application/compiled-artifacts.js";import{buildWorkspaceExtensions,prepareDevelopmentWorkspaceExtensions}from"#internal/nitro/host/workspace-extensions.js";async function prepareDevelopmentApplicationHost(e,t={}){let n={appRoot:e};t.changedPaths!==void 0&&(n.changedPaths=t.changedPaths),t.previousExtensions!==void 0&&(n.previousExtensions=t.previousExtensions);let r=await prepareDevelopmentWorkspaceExtensions(n),i=await createDevelopmentHostWorkspace(e),a;try{let n=await compileAgentInWorkspace({artifactLocations:{publishedRoot:join(e,`.eve`),writeRoot:i.compilerArtifactsDir},developmentExtensions:t.developmentExtensions,startPath:e}),o=await resolveSchedules({manifest:n.manifest});return a=await stageDevelopmentGeneration(n),{...createPreparedApplicationHost({compileResult:n,compiledArtifacts:await writeDevelopmentCompiledArtifactsFiles({authoredWorkflowModules:a.authoredWorkflowModules,compileResult:n,outDir:i.artifactsDir,runtimeAppRoot:a.runtimeAppRoot}),schedules:o,workflowBuildDir:i.workflowBuildDir}),generation:a,workspaceExtensions:r,workspace:i}}catch(e){let t=[removeDevelopmentHostWorkspace(i)];a!==void 0&&t.push(discardDevelopmentGeneration(a));let n=(await Promise.allSettled(t)).flatMap(e=>e.status===`rejected`?[e.reason]:[]);throw n.length>0?AggregateError([e,...n],`Failed to prepare and discard a development host candidate.`,{cause:e}):e}}async function prepareProductionApplicationHost(e){await buildWorkspaceExtensions(e.appRoot);let t=await compileAgentInWorkspace({artifactLocations:{publishedRoot:join(e.publication.output.finalDir,`.eve`),writeRoot:e.compiler.artifactsDir},startPath:e.appRoot}),n=await resolveSchedules({manifest:t.manifest});return createPreparedApplicationHost({compileResult:t,compiledArtifacts:await writeCompiledArtifactsFiles({compileResult:t,defaultWorkflowWorld:resolveProductionWorkflowWorldTarget(),outDir:e.host.artifactsDir}),schedules:n,workflowBuildDir:e.workflow.buildDir})}async function refreshProductionCompiledArtifacts(e,t){await writeCompiledArtifactsFiles({compileResult:e.compileResult,defaultWorkflowWorld:resolveProductionWorkflowWorldTarget(),outDir:t})}function createPreparedApplicationHost(e){return{appRoot:e.compileResult.project.appRoot,compileResult:e.compileResult,compiledArtifacts:e.compiledArtifacts,scheduleRegistrations:createScheduleRegistrations(e.schedules),schedules:e.schedules,workflowBuildDir:e.workflowBuildDir}}function resolveProductionWorkflowWorldTarget(){return process.env.VERCEL?`vercel`:`local`}export{prepareDevelopmentApplicationHost,prepareProductionApplicationHost,refreshProductionCompiledArtifacts};
|
|
1
|
+
import{join}from"node:path";import{createDevelopmentHostWorkspace,removeDevelopmentHostWorkspace}from"#internal/nitro/host/dev-host-workspace.js";import{discardDevelopmentGeneration,stageDevelopmentGeneration}from"#internal/nitro/development-generation.js";import{createScheduleRegistrations}from"#runtime/schedules/register.js";import{resolveSchedules}from"#runtime/schedules/resolve-schedule.js";import{compileAgentInWorkspace}from"#compiler/compile-agent.js";import{writeCompiledArtifactsFiles,writeDevelopmentCompiledArtifactsFiles}from"#internal/application/compiled-artifacts.js";import{buildWorkspaceExtensions,prepareDevelopmentWorkspaceExtensions}from"#internal/nitro/host/workspace-extensions.js";async function prepareDevelopmentApplicationHost(e,t={}){let n={appRoot:e};t.changedPaths!==void 0&&(n.changedPaths=t.changedPaths),t.previousExtensions!==void 0&&(n.previousExtensions=t.previousExtensions);let r=await prepareDevelopmentWorkspaceExtensions(n),i=t.workspace??await createDevelopmentHostWorkspace(e),a;try{let n=await compileAgentInWorkspace({artifactLocations:{publishedRoot:join(e,`.eve`),writeRoot:i.compilerArtifactsDir},developmentExtensions:t.developmentExtensions,startPath:e}),o=await resolveSchedules({manifest:n.manifest});return a=await stageDevelopmentGeneration(n),{...createPreparedApplicationHost({compileResult:n,compiledArtifacts:await writeDevelopmentCompiledArtifactsFiles({authoredWorkflowModules:a.authoredWorkflowModules,compileResult:n,outDir:i.artifactsDir,runtimeAppRoot:a.runtimeAppRoot}),schedules:o,workflowBuildDir:i.workflowBuildDir}),generation:a,workspaceExtensions:r,workspace:i}}catch(e){let t=[removeDevelopmentHostWorkspace(i)];a!==void 0&&t.push(discardDevelopmentGeneration(a));let n=(await Promise.allSettled(t)).flatMap(e=>e.status===`rejected`?[e.reason]:[]);throw n.length>0?AggregateError([e,...n],`Failed to prepare and discard a development host candidate.`,{cause:e}):e}}async function prepareProductionApplicationHost(e){await buildWorkspaceExtensions(e.appRoot);let t=await compileAgentInWorkspace({artifactLocations:{publishedRoot:join(e.publication.output.finalDir,`.eve`),writeRoot:e.compiler.artifactsDir},startPath:e.appRoot}),n=await resolveSchedules({manifest:t.manifest});return createPreparedApplicationHost({compileResult:t,compiledArtifacts:await writeCompiledArtifactsFiles({compileResult:t,defaultWorkflowWorld:resolveProductionWorkflowWorldTarget(),outDir:e.host.artifactsDir}),schedules:n,workflowBuildDir:e.workflow.buildDir})}async function refreshProductionCompiledArtifacts(e,t){await writeCompiledArtifactsFiles({compileResult:e.compileResult,defaultWorkflowWorld:resolveProductionWorkflowWorldTarget(),outDir:t})}function createPreparedApplicationHost(e){return{appRoot:e.compileResult.project.appRoot,compileResult:e.compileResult,compiledArtifacts:e.compiledArtifacts,scheduleRegistrations:createScheduleRegistrations(e.schedules),schedules:e.schedules,workflowBuildDir:e.workflowBuildDir}}function resolveProductionWorkflowWorldTarget(){return process.env.VERCEL?`vercel`:`local`}export{prepareDevelopmentApplicationHost,prepareProductionApplicationHost,refreshProductionCompiledArtifacts};
|