eve 0.75.0 → 0.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/dist/src/_virtual/_rolldown/runtime.js +1 -1
- package/dist/src/acp/adapter.js +1 -1
- package/dist/src/channel/task-card.js +1 -1
- package/dist/src/channel/tool-eligibility.d.ts +1 -2
- package/dist/src/chunks/{use-eve-agent-B2Kne9z6.js → use-eve-agent-D2V9UhLt.js} +68 -10
- package/dist/src/chunks/{use-eve-agent-DK_T88EP.js → use-eve-agent-QmriPA-w.js} +68 -10
- package/dist/src/cli/commands/deploy.js +1 -1
- package/dist/src/cli/commands/link.d.ts +2 -1
- package/dist/src/cli/commands/link.js +1 -1
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/vercel-non-interactive.d.ts +6 -4
- package/dist/src/cli/commands/vercel-non-interactive.js +1 -1
- package/dist/src/cli/dev/environment.d.ts +0 -6
- package/dist/src/cli/dev/environment.js +1 -1
- package/dist/src/cli/dev/tui/conversation-view.js +1 -1
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
- package/dist/src/cli/dev/tui/transcript.js +1 -1
- package/dist/src/client/message-action-parts.d.ts +3 -0
- package/dist/src/client/message-action-parts.js +1 -1
- package/dist/src/client/message-reducer-types.d.ts +6 -1
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +9 -8
- package/dist/src/compiled/@eve/catalog/index.js +1 -1
- package/dist/src/compiled/@vercel/queue/index.d.ts +1066 -0
- package/dist/src/compiled/@vercel/queue/index.js +47 -0
- package/dist/src/compiled/@workflow/core/global.d.ts +10 -0
- package/dist/src/compiled/@workflow/core/index.js +1 -1
- package/dist/src/compiled/@workflow/core/private.d.ts +11 -0
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +36 -8
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/lifecycle-hooks.d.ts +10 -6
- package/dist/src/compiled/@workflow/core/runtime/out-of-band-observation.d.ts +159 -0
- package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +28 -4
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +4 -4
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-CSqvJx6j.js → attribute-changes-BW-kbMMn.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-CyBgVS7g.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{helpers-BXCuoPUb.js → helpers-DlLD3ov_.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/private-tQUuwBoQ.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{resume-hook-CvENCrxc.js → resume-hook-DMsV_b4n.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{run-8pLWuR2U.js → run-DzdAqdb1.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{serialization-vDozzDhh.js → serialization-DPdYS_w2.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/sleep-BY6leHh8.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{token-BKeK6DmC.js → token-D5ugC3PI.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{token-util-CddTZ_ef.js → token-util-Bla5Z0G9.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/undici-D-ILjOKD.js +95 -0
- package/dist/src/compiled/_chunks/workflow/{wait-until-A344L2AG.js → wait-until-xbRRDuUf.js} +1 -1
- package/dist/src/compiler/connection-ownership.d.ts +6 -0
- package/dist/src/compiler/connection-ownership.js +1 -0
- package/dist/src/compiler/default-tool-policy.d.ts +0 -3
- package/dist/src/compiler/default-tool-policy.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +21 -20
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +9 -6
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-connection.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-skill.d.ts +5 -0
- package/dist/src/compiler/normalize-skill.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +2 -1
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/normalize-tool.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +2 -1
- package/dist/src/compiler/remote-agent-node.js +1 -1
- package/dist/src/connections/ownership.d.ts +18 -0
- package/dist/src/connections/ownership.js +1 -0
- package/dist/src/context/build-dynamic-tools.d.ts +3 -9
- package/dist/src/context/build-dynamic-tools.js +1 -1
- package/dist/src/context/dynamic-connection-lifecycle.js +1 -1
- package/dist/src/context/dynamic-skill-lifecycle.d.ts +2 -11
- package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
- package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-metadata.d.ts +1 -0
- package/dist/src/context/keys.d.ts +5 -4
- package/dist/src/context/memory-tools.js +1 -1
- package/dist/src/context/schedule-collection-tools.js +1 -1
- package/dist/src/discover/grammar.d.ts +11 -0
- package/dist/src/discover/grammar.js +1 -1
- package/dist/src/discover/manifest.d.ts +1 -0
- package/dist/src/discover/manifest.js +1 -1
- package/dist/src/discover/skills.d.ts +1 -0
- package/dist/src/discover/skills.js +1 -1
- package/dist/src/dynamic/definition.d.ts +7 -5
- package/dist/src/evals/assertions/collector.d.ts +4 -0
- package/dist/src/evals/assertions/collector.js +1 -1
- package/dist/src/evals/assertions/run.d.ts +2 -3
- package/dist/src/evals/assertions/run.js +2 -2
- package/dist/src/evals/assertions/scoped.js +1 -1
- package/dist/src/evals/index.d.ts +1 -1
- package/dist/src/evals/match.d.ts +9 -6
- package/dist/src/evals/reported-tool-name.d.ts +9 -0
- package/dist/src/evals/reported-tool-name.js +1 -0
- package/dist/src/evals/runner/derive-run-facts.d.ts +3 -3
- 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/datadog-runtime-trace-links.d.ts +11 -0
- package/dist/src/evals/runner/reporters/datadog-runtime-trace-links.js +1 -0
- package/dist/src/evals/runner/reporters/datadog.js +2 -2
- package/dist/src/evals/session.js +2 -2
- package/dist/src/evals/target.d.ts +7 -0
- package/dist/src/evals/target.js +1 -1
- package/dist/src/evals/types.d.ts +17 -1
- package/dist/src/eve-channel/request.js +1 -1
- package/dist/src/execution/agent-sessions/remote.js +1 -1
- package/dist/src/execution/catalog/connection-auth.d.ts +41 -0
- package/dist/src/execution/catalog/connection-auth.js +1 -0
- package/dist/src/execution/catalog/connection-entry.d.ts +16 -0
- package/dist/src/execution/catalog/connection-entry.js +1 -0
- package/dist/src/execution/catalog/listing.d.ts +9 -0
- package/dist/src/execution/catalog/listing.js +3 -0
- package/dist/src/execution/catalog/rank.d.ts +44 -0
- package/dist/src/execution/catalog/rank.js +1 -0
- package/dist/src/execution/catalog/search.d.ts +28 -0
- package/dist/src/execution/catalog/search.js +1 -0
- package/dist/src/execution/catalog/signatures.d.ts +11 -0
- package/dist/src/execution/catalog/signatures.js +1 -0
- package/dist/src/execution/catalog/skills.d.ts +24 -0
- package/dist/src/execution/catalog/skills.js +1 -0
- package/dist/src/execution/catalog/step-catalog.d.ts +51 -0
- package/dist/src/execution/catalog/step-catalog.js +1 -0
- package/dist/src/execution/coordination-dispatch-shared.js +1 -1
- package/dist/src/execution/dynamic-connections.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/invoke-tool.js +1 -1
- package/dist/src/execution/ndjson-stream.d.ts +6 -6
- package/dist/src/execution/ndjson-stream.js +3 -3
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/session/active-turn.d.ts +1 -1
- package/dist/src/execution/session/pending-turn-state.js +1 -1
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +5 -5
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/session.js +1 -1
- package/dist/src/execution/skills/instructions.d.ts +20 -10
- package/dist/src/execution/skills/instructions.js +2 -2
- package/dist/src/execution/tasks/calls.d.ts +6 -5
- package/dist/src/execution/tasks/calls.js +1 -1
- package/dist/src/execution/tasks/model-step.d.ts +10 -10
- package/dist/src/execution/tasks/model-step.js +1 -1
- package/dist/src/execution/tasks/render.d.ts +3 -3
- package/dist/src/execution/tasks/render.js +3 -3
- package/dist/src/execution/tasks/session.d.ts +2 -1
- package/dist/src/execution/tasks/table.d.ts +1 -1
- package/dist/src/execution/tasks/tool-entry-point.d.ts +1 -1
- package/dist/src/execution/tool-auth.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/workflow/harness-definition.js +1 -1
- package/dist/src/extensions/code/extension/extension.d.ts +4 -18
- package/dist/src/extensions/code/extension/instructions/github.d.ts +3 -0
- package/dist/src/extensions/code/extension/instructions/github.js +1 -0
- package/dist/src/extensions/code/extension/instructions.md +1 -13
- package/dist/src/extensions/code/extension/lib/diagnostics.d.ts +4 -2
- package/dist/src/extensions/code/extension/lib/diagnostics.js +3 -3
- package/dist/src/extensions/code/extension/lib/github-compat.d.ts +28 -0
- package/dist/src/extensions/code/extension/lib/github-compat.js +1 -0
- package/dist/src/extensions/code/extension/lib/grep-search.d.ts +3 -13
- package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
- package/dist/src/extensions/code/extension/lib/patch.d.ts +8 -2
- package/dist/src/extensions/code/extension/lib/patch.js +4 -4
- package/dist/src/extensions/code/extension/lib/repository-root.d.ts +3 -4
- package/dist/src/extensions/code/extension/lib/repository-root.js +1 -1
- package/dist/src/extensions/code/extension/lib/sandbox.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/sandbox.js +1 -1
- package/dist/src/extensions/code/extension/lib/tooling.d.ts +4 -4
- package/dist/src/extensions/code/extension/lib/tooling.js +7 -7
- package/dist/src/extensions/code/extension/lib/workspace-root.d.ts +31 -0
- package/dist/src/extensions/code/extension/lib/workspace-root.js +1 -0
- package/dist/src/extensions/code/extension/skills/pr.d.ts +6 -0
- package/dist/src/extensions/code/extension/skills/pr.js +1 -0
- package/dist/src/extensions/code/extension/tools/apply_patch.d.ts +2 -2
- package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -2
- package/dist/src/extensions/code/extension/tools/gh.d.ts +4 -3
- package/dist/src/extensions/code/extension/tools/gh.js +1 -1
- package/dist/src/extensions/code/extension/tools/grep.js +1 -1
- package/dist/src/extensions/code/tools.d.ts +2 -1
- package/dist/src/extensions/code/tools.js +1 -1
- package/dist/src/extensions/git/extension/extension.d.ts +12 -0
- package/dist/src/extensions/git/extension/extension.js +1 -0
- package/dist/src/extensions/git/extension/instructions/github.d.ts +2 -0
- package/dist/src/extensions/git/extension/instructions/github.js +1 -0
- package/dist/src/extensions/git/extension/lib/gh-tool.d.ts +29 -0
- package/dist/src/extensions/git/extension/lib/gh-tool.js +1 -0
- package/dist/src/extensions/git/extension/lib/github-guidance.d.ts +3 -0
- package/dist/src/extensions/git/extension/lib/github-guidance.js +49 -0
- package/dist/src/extensions/{code → git}/extension/lib/github-shell.d.ts +1 -1
- package/dist/src/extensions/git/extension/lib/github-shell.js +1 -0
- package/dist/src/extensions/git/extension/lib/repository-root.d.ts +5 -0
- package/dist/src/extensions/git/extension/lib/repository-root.js +1 -0
- package/dist/src/extensions/git/extension/lib/sandbox.d.ts +6 -0
- package/dist/src/extensions/git/extension/lib/sandbox.js +1 -0
- package/dist/src/extensions/git/extension/lib/shell.d.ts +1 -0
- package/dist/src/extensions/git/extension/lib/shell.js +1 -0
- package/dist/src/extensions/git/extension/lib/tooling.d.ts +4 -0
- package/dist/src/extensions/git/extension/lib/tooling.js +1 -0
- package/dist/src/extensions/git/extension/skills/pr.d.ts +5 -0
- package/dist/src/extensions/git/extension/skills/pr.js +1 -0
- package/dist/src/extensions/git/extension/tools/gh.d.ts +28 -0
- package/dist/src/extensions/git/extension/tools/gh.js +1 -0
- package/dist/src/extensions/git/tools.d.ts +27 -0
- package/dist/src/extensions/git/tools.js +1 -0
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/action-presentation.d.ts +2 -2
- package/dist/src/harness/action-result-helpers.d.ts +10 -2
- package/dist/src/harness/action-result-helpers.js +1 -1
- package/dist/src/harness/announcements.d.ts +2 -8
- package/dist/src/harness/announcements.js +1 -1
- package/dist/src/harness/compaction/engine.d.ts +8 -19
- package/dist/src/harness/compaction/engine.js +1 -1
- package/dist/src/harness/compaction/step.d.ts +7 -1
- package/dist/src/harness/compaction/step.js +1 -1
- package/dist/src/harness/coordination.d.ts +11 -11
- package/dist/src/harness/coordination.js +1 -1
- package/dist/src/harness/current-messages.d.ts +1 -5
- package/dist/src/harness/current-messages.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -2
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/execute-call.d.ts +48 -0
- package/dist/src/harness/execute-call.js +1 -0
- package/dist/src/harness/execute-tool.d.ts +3 -1
- package/dist/src/harness/final-output.d.ts +2 -6
- package/dist/src/harness/final-output.js +1 -1
- package/dist/src/harness/hitl/approvals.d.ts +5 -0
- package/dist/src/harness/hitl/approvals.js +1 -1
- package/dist/src/harness/hitl/approved-calls.d.ts +3 -2
- package/dist/src/harness/hitl/approved-calls.js +1 -1
- package/dist/src/harness/hitl/candidates.d.ts +13 -2
- package/dist/src/harness/hitl/candidates.js +1 -1
- package/dist/src/harness/hitl/coordinator.d.ts +3 -3
- package/dist/src/harness/hitl/coordinator.js +1 -1
- package/dist/src/harness/hitl/index.d.ts +6 -4
- package/dist/src/harness/hitl/index.js +1 -1
- package/dist/src/harness/hitl/intake.d.ts +3 -3
- package/dist/src/harness/hitl/intake.js +1 -1
- package/dist/src/harness/input-extraction.d.ts +4 -1
- package/dist/src/harness/input-extraction.js +1 -1
- package/dist/src/harness/input-request-resolution.d.ts +15 -0
- package/dist/src/harness/input-request-resolution.js +1 -1
- package/dist/src/harness/model-call/call.d.ts +5 -8
- package/dist/src/harness/model-call/call.js +1 -1
- package/dist/src/harness/model-call/errors.js +1 -1
- package/dist/src/harness/model-call/model.d.ts +4 -5
- package/dist/src/harness/model-call/model.js +1 -1
- package/dist/src/harness/model-call/request.d.ts +4 -4
- package/dist/src/harness/model-call/request.js +1 -1
- package/dist/src/harness/model-call/response.d.ts +2 -1
- package/dist/src/harness/model-call/response.js +1 -1
- package/dist/src/harness/model-call/retry.d.ts +1 -1
- package/dist/src/harness/model-call/retry.js +1 -1
- package/dist/src/harness/model-call/run.d.ts +5 -3
- package/dist/src/harness/model-call/run.js +1 -1
- package/dist/src/harness/model-call/tools.d.ts +14 -24
- package/dist/src/harness/model-call/tools.js +1 -1
- package/dist/src/harness/model-call/usage.js +1 -1
- package/dist/src/harness/model-profile.d.ts +28 -0
- package/dist/src/harness/model-profile.js +1 -0
- package/dist/src/harness/prompt-cache.d.ts +5 -53
- package/dist/src/harness/prompt-cache.js +1 -1
- package/dist/src/harness/provider-safety.d.ts +3 -5
- package/dist/src/harness/provider-safety.js +1 -1
- package/dist/src/harness/provider-tools.d.ts +7 -14
- package/dist/src/harness/provider-tools.js +1 -1
- package/dist/src/harness/session-machine/commit.js +1 -1
- package/dist/src/harness/session-machine/transitions.d.ts +5 -2
- package/dist/src/harness/session-machine/transitions.js +1 -1
- package/dist/src/harness/step/after-model.js +1 -1
- package/dist/src/harness/step-hooks.d.ts +6 -9
- package/dist/src/harness/step-hooks.js +1 -1
- package/dist/src/harness/tool-call-input-errors.d.ts +2 -2
- package/dist/src/harness/tool-call-io.d.ts +3 -0
- package/dist/src/harness/tool-call-io.js +1 -1
- package/dist/src/harness/tools.d.ts +24 -22
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/turn-tag-state.d.ts +12 -0
- package/dist/src/harness/turn-tag-state.js +1 -1
- package/dist/src/harness/types.d.ts +14 -0
- package/dist/src/instrumentation/lifecycle.d.ts +0 -1
- package/dist/src/instrumentation/native-events.js +1 -1
- package/dist/src/instrumentation/runtime.d.ts +2 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-definition/schedule-collection.js +1 -1
- package/dist/src/internal/authored-definition/schema-backed.d.ts +2 -2
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module.d.ts +2 -1
- package/dist/src/internal/authored-module.js +1 -1
- package/dist/src/internal/gateway.d.ts +0 -13
- package/dist/src/internal/gateway.js +1 -1
- package/dist/src/internal/helpers/markdown.js +1 -1
- package/dist/src/internal/mcp/skills.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
- package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.d.ts +5 -0
- package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.js +1 -0
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +6 -0
- package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -1
- package/dist/src/internal/schedules/consumer-route.d.ts +2 -0
- package/dist/src/internal/schedules/consumer-route.js +1 -1
- package/dist/src/internal/schedules/dev-environment.d.ts +2 -0
- package/dist/src/internal/schedules/dev-environment.js +1 -0
- package/dist/src/internal/vercel-agent-summary.d.ts +2 -2
- package/dist/src/internal/workflow/vercel-world-defaults.d.ts +1 -1
- package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
- package/dist/src/protocol/catalog-tools.d.ts +12 -0
- package/dist/src/protocol/catalog-tools.js +1 -0
- package/dist/src/protocol/message-version.js +1 -1
- package/dist/src/protocol/message.d.ts +1 -1
- package/dist/src/protocol/remote-agent-protocol.d.ts +2 -0
- package/dist/src/protocol/remote-agent-protocol.js +1 -1
- package/dist/src/protocol/reply-tool.d.ts +2 -0
- package/dist/src/protocol/reply-tool.js +1 -0
- package/dist/src/protocol/runtime-tools.d.ts +6 -0
- package/dist/src/protocol/runtime-tools.js +1 -0
- package/dist/src/protocol/session-projection.js +1 -1
- package/dist/src/protocol/task-tools.d.ts +4 -4
- package/dist/src/protocol/task-tools.js +1 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
- package/dist/src/public/channels/linear/defaults.js +2 -2
- package/dist/src/public/channels/slack/action-status.d.ts +0 -9
- package/dist/src/public/channels/slack/action-status.js +1 -1
- package/dist/src/public/channels/slack/defaults.js +2 -2
- package/dist/src/public/channels/slack/task-card.d.ts +1 -1
- package/dist/src/public/definitions/connections/mcp.d.ts +4 -4
- package/dist/src/public/definitions/connections/openapi.d.ts +6 -7
- package/dist/src/public/definitions/remote-agent.d.ts +6 -3
- package/dist/src/public/definitions/workspace-agent.d.ts +6 -3
- package/dist/src/public/experimental/schedules/index.d.ts +1 -1
- package/dist/src/public/schedules/providers/in-memory.js +1 -1
- package/dist/src/public/schedules/providers/vercel.js +1 -1
- package/dist/src/public/schedules/subscription.d.ts +36 -16
- package/dist/src/public/tools/web-search.d.ts +1 -1
- package/dist/src/runtime/agent/bootstrap.d.ts +2 -1
- package/dist/src/runtime/agent/bootstrap.js +1 -1
- package/dist/src/runtime/agent/mock-model-adapter.js +2 -2
- package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
- package/dist/src/runtime/agent/mock-model-skill-selection.d.ts +2 -0
- package/dist/src/runtime/agent/mock-model-skill-selection.js +2 -2
- package/dist/src/runtime/agent/mock-structured-output.d.ts +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/registry.js +1 -1
- package/dist/src/runtime/connections/scoped-authorization.js +1 -1
- package/dist/src/runtime/connections/tool-result.d.ts +2 -2
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-tool.js +1 -1
- package/dist/src/runtime/schedules/collection-client.d.ts +12 -3
- package/dist/src/runtime/schedules/collection-client.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -2
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +2 -1
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
- package/dist/src/runtime/subagents/registry.d.ts +2 -1
- package/dist/src/runtime/subagents/registry.js +1 -1
- package/dist/src/runtime/tools/registry.d.ts +2 -0
- package/dist/src/runtime/tools/registry.js +1 -1
- package/dist/src/runtime/types.d.ts +3 -3
- package/dist/src/setup/connection-connector.js +1 -2
- package/dist/src/setup/index.d.ts +1 -1
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/integrations/slack/setup.d.ts +23 -3
- package/dist/src/setup/integrations/slack/setup.js +1 -1
- package/dist/src/setup/primitives/process-output.d.ts +5 -0
- package/dist/src/setup/primitives/process-output.js +2 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +3 -2
- package/dist/src/setup/scaffold/create/web-template.js +384 -412
- package/dist/src/setup/scaffold/update/update-slack-channel.d.ts +17 -0
- package/dist/src/setup/scaffold/update/update-slack-channel.js +1 -1
- package/dist/src/setup/slack-connect-create.d.ts +10 -2
- package/dist/src/setup/slack-connect-create.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.d.ts +92 -44
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/slack-connect.d.ts +30 -11
- package/dist/src/setup/slack-connect.js +1 -1
- package/dist/src/setup/slack-setup-plan.d.ts +72 -0
- package/dist/src/setup/slack-setup-plan.js +1 -0
- package/dist/src/setup/slackbot.d.ts +75 -35
- package/dist/src/setup/slackbot.js +2 -1
- package/dist/src/setup/vercel-project.d.ts +1 -1
- package/dist/src/setup/vercel-project.js +0 -0
- package/dist/src/shared/action-label.d.ts +10 -0
- package/dist/src/shared/action-label.js +1 -0
- package/dist/src/shared/action-request-name.d.ts +3 -1
- package/dist/src/shared/action-request-name.js +1 -1
- package/dist/src/shared/action-types.d.ts +7 -8
- package/dist/src/shared/action-types.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +11 -3
- package/dist/src/shared/development-env-files.d.ts +4 -0
- package/dist/src/shared/development-env-files.js +1 -0
- package/dist/src/shared/input.d.ts +0 -1
- package/dist/src/shared/map-with-concurrency.d.ts +2 -0
- package/dist/src/shared/map-with-concurrency.js +1 -0
- package/dist/src/shared/skill-definition.d.ts +6 -0
- package/dist/src/shared/skill-package.d.ts +1 -0
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/web-search.d.ts +15 -2
- package/dist/src/shared/web-search.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tool-stubs/execute.d.ts +0 -3
- package/dist/src/tool-stubs/execute.js +1 -1
- package/dist/src/tool-stubs/rules.js +1 -1
- package/dist/src/tool-stubs/validate-targets.js +1 -1
- package/dist/src/tools/behavior.d.ts +3 -6
- package/dist/src/tools/definition.d.ts +5 -0
- package/dist/src/tools/dynamic.d.ts +5 -2
- package/dist/src/tools/provided/ask-question-workflow.js +1 -1
- package/dist/src/tools/provided/sleep-workflow.js +1 -1
- package/dist/src/tools/provided/task-cancel.d.ts +1 -1
- package/dist/src/tools/provided/task-wait.d.ts +1 -1
- package/dist/src/tools/provided/web-search.d.ts +20 -7
- package/dist/src/tools/provided/web-search.js +1 -1
- package/dist/src/tools/schema.d.ts +5 -0
- package/dist/src/tools/schema.js +1 -1
- package/dist/src/{runtime/connections/tool-signature.d.ts → tools/signature.d.ts} +2 -2
- package/dist/src/tools/workflow-definition.d.ts +1 -1
- package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
- package/dist/src/tracing/agent-otel-provider.js +2 -2
- package/dist/src/tracing/agent-otel-runtime-context.d.ts +1 -0
- package/dist/src/tracing/agent-otel-runtime-context.js +1 -1
- package/dist/src/tracing/agent-otel-turn-state.d.ts +6 -0
- package/dist/src/tracing/agent-otel-turn-state.js +1 -0
- package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
- package/dist/src/tracing/agent-trace-context-codec.js +1 -1
- package/dist/src/tracing/agent-trace-state.d.ts +4 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +8 -8
- package/docs/channels/chat-sdk.mdx +1 -1
- package/docs/channels/slack.mdx +32 -82
- package/docs/code-extension.mdx +28 -7
- package/docs/concepts/built-in-tools.md +43 -43
- package/docs/concepts/context-control.md +1 -1
- package/docs/concepts/execution-model-and-durability.mdx +1 -1
- package/docs/concepts/sessions-runs-and-streaming.md +4 -4
- package/docs/connections/mcp.mdx +5 -5
- package/docs/connections/openapi.mdx +1 -1
- package/docs/connections/overview.mdx +4 -2
- package/docs/evals/assertions.mdx +5 -3
- package/docs/evals/reporters.mdx +3 -1
- package/docs/evals/tool-stubs.mdx +3 -1
- package/docs/extensions.md +2 -0
- package/docs/guides/dev-tui.md +2 -2
- package/docs/guides/dynamic-capabilities.md +14 -4
- package/docs/guides/frontend/overview.mdx +1 -1
- package/docs/guides/remote-agents.md +10 -3
- package/docs/instructions.mdx +5 -5
- package/docs/reference/cli.md +2 -2
- package/docs/reference/typescript-api.md +3 -3
- package/docs/skills.mdx +19 -4
- package/docs/subagents/index.mdx +5 -3
- package/docs/tools/overview.mdx +22 -1
- package/docs/tools/tasks-upgrade.md +1 -1
- package/docs/tools/tasks.md +32 -32
- package/docs/tools/workflows.mdx +6 -6
- package/docs/tutorial/team-playbooks.mdx +2 -2
- package/package.json +27 -11
- package/dist/src/compiled/_chunks/workflow/dist-DmXynLVH.js +0 -1
- package/dist/src/compiled/_chunks/workflow/private-Dlf90Zvn.js +0 -1
- package/dist/src/compiled/_chunks/workflow/signal-exit-iIdjQcCK.js +0 -95
- package/dist/src/compiled/_chunks/workflow/sleep-BMqbraZM.js +0 -1
- package/dist/src/execution/connection-announcement.d.ts +0 -7
- package/dist/src/execution/connection-announcement.js +0 -4
- package/dist/src/execution/tools/connection-approval.d.ts +0 -25
- package/dist/src/execution/tools/connection-approval.js +0 -1
- package/dist/src/execution/tools/connection-search-rank.d.ts +0 -21
- package/dist/src/execution/tools/connection-search-rank.js +0 -1
- package/dist/src/execution/tools/connection-target.d.ts +0 -18
- package/dist/src/execution/tools/connection-target.js +0 -1
- package/dist/src/execution/tools/connection-tools.d.ts +0 -4
- package/dist/src/execution/tools/connection-tools.js +0 -2
- package/dist/src/execution/tools/load-skill.d.ts +0 -10
- package/dist/src/execution/tools/load-skill.js +0 -1
- package/dist/src/extensions/code/extension/lib/github-shell.js +0 -1
- package/dist/src/extensions/code/extension/skills/pr/SKILL.md +0 -53
- package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.d.ts +0 -2
- package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.js +0 -1
- package/dist/src/harness/advertised-tools.d.ts +0 -26
- package/dist/src/harness/advertised-tools.js +0 -1
- package/dist/src/harness/nested-actions.d.ts +0 -23
- package/dist/src/harness/nested-actions.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +0 -2
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js +0 -36
- package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +0 -1
- package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +0 -2
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +0 -1
- package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +0 -1
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +0 -1
- package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +0 -1
- package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +0 -1
- package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +0 -1
- package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +0 -1
- package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +0 -1
- package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +0 -1
- package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +0 -1
- package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +0 -1
- package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +0 -7
- package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +0 -1
- package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +0 -1
- package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +0 -1
- package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +0 -1
- package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -1
- package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +0 -1
- package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +0 -1
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +0 -1
- package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +0 -1
- package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +0 -2
- package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +0 -1
- package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +0 -1
- package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +0 -1
- package/dist/src/public/tools/load-skill.d.ts +0 -3
- package/dist/src/public/tools/load-skill.js +0 -1
- package/dist/src/runtime/skills/fragment-context.d.ts +0 -4
- package/dist/src/runtime/skills/fragment-context.js +0 -1
- package/dist/src/tools/framework/connection-tools.d.ts +0 -3
- package/dist/src/tools/framework/connection-tools.js +0 -1
- package/dist/src/tools/provided/load-skill.d.ts +0 -2
- package/dist/src/tools/provided/load-skill.js +0 -1
- /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.d.ts +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.js +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.d.ts +0 -0
- /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.js +0 -0
- /package/dist/src/{runtime/connections/tool-signature.js → tools/signature.js} +0 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type ToolApprovalConfiguration, type ToolSet } from "ai";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ModelProfile } from "#harness/model-profile.js";
|
|
3
3
|
import type { HarnessToolDefinition } from "#harness/execute-tool.js";
|
|
4
|
-
import type { HarnessToolMap } from "#harness/types.js";
|
|
4
|
+
import type { CallResolver, HarnessToolMap } from "#harness/types.js";
|
|
5
5
|
import type { ToolExecuteOptions } from "#tools/definition.js";
|
|
6
6
|
/**
|
|
7
|
-
* Builds an AI SDK `ToolSet` from unified harness tool definitions
|
|
7
|
+
* Builds an AI SDK `ToolSet` from unified harness tool definitions, described
|
|
8
|
+
* by `describe`. Each call's output is projected by the entry `resolve`
|
|
9
|
+
* resolves it to.
|
|
8
10
|
*
|
|
9
11
|
* Tools without `execute` are surfaced to the model as client-side tools
|
|
10
12
|
* (no server execution).
|
|
@@ -15,29 +17,22 @@ import type { ToolExecuteOptions } from "#tools/definition.js";
|
|
|
15
17
|
* retry call so the request can proceed without it.
|
|
16
18
|
*/
|
|
17
19
|
export declare function buildToolSet(input: {
|
|
18
|
-
readonly
|
|
20
|
+
readonly describe: (definition: HarnessToolDefinition) => string;
|
|
19
21
|
readonly disabledProviderTools?: ReadonlySet<string>;
|
|
22
|
+
readonly resolve: CallResolver;
|
|
20
23
|
readonly tools: HarnessToolMap;
|
|
21
24
|
}): ToolSet;
|
|
22
|
-
/**
|
|
23
|
-
* Builds a ToolSet from an ordered list of harness definitions.
|
|
24
|
-
*
|
|
25
|
-
* The first definition for a name wins, matching the dynamic-tool scope
|
|
26
|
-
* ordering where step tools override turn/session tools.
|
|
27
|
-
*/
|
|
28
|
-
export declare function buildToolSetFromDefinitions(input: {
|
|
29
|
-
readonly approvedTools?: ReadonlySet<string>;
|
|
30
|
-
readonly disabledProviderTools?: ReadonlySet<string>;
|
|
31
|
-
readonly tools: readonly HarnessToolDefinition[];
|
|
32
|
-
}): ToolSet;
|
|
33
25
|
/**
|
|
34
26
|
* Wraps a tool's `execute` so a returned {@link AuthorizationSignal} is
|
|
35
27
|
* stashed out-of-band ({@link stashToolInterrupt}) for the park detector while
|
|
36
28
|
* the AI SDK records an opaque {@link AuthorizationPendingModelOutput} that
|
|
37
29
|
* omits OAuth URLs, user codes, and hook URLs from model-facing history.
|
|
38
|
-
* Returns `undefined` for client-side tools (no `execute`).
|
|
30
|
+
* Returns `undefined` for client-side tools (no `execute`). With `resolve`,
|
|
31
|
+
* output is normalized under the name of the entry each call resolves to, so
|
|
32
|
+
* an error from a call through `execute` names the entry, and a tool stub
|
|
33
|
+
* matches that entry and its input, as it would a direct call.
|
|
39
34
|
*/
|
|
40
|
-
export declare function wrapToolExecute(definition: HarnessToolDefinition): ((input: any, options: ToolExecuteOptions) => Promise<any> | AsyncIterable<any>) | undefined;
|
|
35
|
+
export declare function wrapToolExecute(definition: HarnessToolDefinition, resolve?: CallResolver): ((input: any, options: ToolExecuteOptions) => Promise<any> | AsyncIterable<any>) | undefined;
|
|
41
36
|
/**
|
|
42
37
|
* Builds the AI SDK ToolSet for one harness step.
|
|
43
38
|
*
|
|
@@ -58,12 +53,21 @@ export declare function wrapToolExecute(definition: HarnessToolDefinition): ((in
|
|
|
58
53
|
* a gateway fallback provider has rejected a provider-specific tool.
|
|
59
54
|
*/
|
|
60
55
|
export declare function buildToolSetWithProviderTools(input: {
|
|
61
|
-
readonly
|
|
56
|
+
readonly describe: (definition: HarnessToolDefinition) => string;
|
|
62
57
|
readonly disabledProviderTools?: ReadonlySet<string>;
|
|
63
|
-
readonly
|
|
64
|
-
readonly
|
|
58
|
+
readonly profile: ModelProfile;
|
|
59
|
+
readonly resolve: CallResolver;
|
|
65
60
|
readonly tools: HarnessToolMap;
|
|
66
61
|
}): Promise<ToolSet>;
|
|
62
|
+
/**
|
|
63
|
+
* Builds the AI SDK 7 call-level approval policy: each call is approved by the
|
|
64
|
+
* entry it runs, under that entry's name and with its own input.
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildToolApproval(input: {
|
|
67
|
+
readonly abortSignal?: AbortSignal;
|
|
68
|
+
readonly approvedTools: ReadonlySet<string>;
|
|
69
|
+
readonly resolve: CallResolver;
|
|
70
|
+
}): ToolApprovalConfiguration<ToolSet, Record<string, unknown>>;
|
|
67
71
|
/**
|
|
68
72
|
* Re-runs a tool's approval policy for a call a person approved, just before eve runs it, so the
|
|
69
73
|
* policy can still refuse it, as when the connection it was approved against changed.
|
|
@@ -77,5 +81,3 @@ export declare function recheckApprovedCall(definition: HarnessToolDefinition, c
|
|
|
77
81
|
readonly denied: boolean;
|
|
78
82
|
readonly reason?: string;
|
|
79
83
|
}>;
|
|
80
|
-
/** Builds the AI SDK 7 call-level approval policy for an assembled tool set. */
|
|
81
|
-
export declare function buildToolApproval(tools: ToolSet, abortSignal?: AbortSignal): ToolApprovalConfiguration<ToolSet, Record<string, unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{tool}from"ai";import{isObject}from"#shared/guards.js";import{loadContext}from"#context/container.js";import{toModelSchema}from"#tools/schema.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{isApprovedToolCall,markApprovalRecheck}from"#harness/approval-recheck.js";import{isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{
|
|
1
|
+
import{tool}from"ai";import{createLogger}from"#internal/logging.js";import{isObject}from"#shared/guards.js";import{loadContext}from"#context/container.js";import{toModelSchema}from"#tools/schema.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{isApprovedToolCall,markApprovalRecheck}from"#harness/approval-recheck.js";import{isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{entryModelOutput,stubbedCall}from"#harness/execute-call.js";import{normalizeToolJsonOutput}from"#harness/tool-model-output.js";import{isAsyncIterable}from"#shared/async-iterable.js";import{executeWithToolStub}from"#tool-stubs/execute.js";import{stashToolInterrupt}from"#harness/tool-interrupts.js";import{resolveWebSearchBackend,resolveWebSearchProviderTool}from"#harness/provider-tools.js";import{iterateAsApprover,runAsApprover}from"#harness/hitl/approved-call-callers.js";const log=createLogger(`harness.tools`);function buildToolSet(e){let t={},n=e.disabledProviderTools;for(let r of e.tools.values())n?.has(r.name)||(t[r.name]=tool({description:e.describe(r),execute:wrapToolExecute(r,e.resolve),inputSchema:toModelSchema(r.inputSchema,`input`),strict:!1,outputSchema:toModelSchema(r.outputSchema,`output`),...r.execute!==void 0||r.toModelOutput!==void 0?{toModelOutput:({input:t,output:n,toolCallId:i})=>entryModelOutput(e.resolve({input:t,toolName:r.name})?.definition??r,n,i)}:{}}));return t}function wrapToolExecute(e,t){let n=e.execute;if(n!==void 0)return(r,i)=>{let a={input:r,toolName:e.name},o=t?.(a),s=o?.definition.name??e.name,c=stubbedCall(a,o),run=()=>n(r,i),l;try{l=runAsApprover(i.toolCallId,()=>c===void 0?run():executeWithToolStub(c.toolName,c.input,i,run))}catch(e){return Promise.reject(e)}return isAsyncIterable(l)?normalizeToolExecuteIterable(iterateAsApprover(i.toolCallId,l),s,i):Promise.resolve(l).then(e=>normalizeToolExecuteOutput(e,s,i))}}async function*normalizeToolExecuteIterable(e,t,n){for await(let r of e)yield normalizeToolExecuteOutput(r,t,n)}function normalizeToolExecuteOutput(e,t,n){return isAuthorizationSignal(e)?(stashToolInterrupt(loadContext(),n.toolCallId,e),modelFacingAuthorizationOutput(e)):normalizeToolJsonOutput({boundary:`execute`,output:e,toolCallId:n.toolCallId,toolName:t})}async function buildToolSetWithProviderTools(e){let t=e.disabledProviderTools,n={...buildToolSet(e)};for(let r of e.tools.values()){let i=r.behavior?.handling;if(i?.kind===`provider-tool`&&r.execute===void 0&&!t?.has(r.name)){let t=resolveWebSearchBackend(e.profile,i);t===null?(log.debug(`model has no web search backend; leaving the tool out`,{gateway:e.profile.gateway,modelProvider:e.profile.provider,searchProvider:i.provider,tool:r.name}),delete n[r.name]):n[r.name]=await resolveWebSearchProviderTool(t)}}return n}function buildToolApproval(e){return async({toolCall:t,messages:n})=>{let r=e.resolve(t);if(r!==void 0)return await evaluateApproval(r.definition,{abortSignal:e.abortSignal,approvedTools:e.approvedTools,callId:t.toolCallId,input:r.call.input,recheck:isApprovedToolCall(n,t.toolCallId)})}}async function recheckApprovedCall(e,t){let n=await evaluateApproval(e,{...t,recheck:!0});return n===`denied`?{denied:!0}:typeof n==`object`&&n&&n.type===`denied`?{denied:!0,reason:n.reason}:{denied:!1}}async function evaluateApproval(e,t){if(e.approval===void 0)return;let n={...buildCallbackContext(),abortSignal:t.abortSignal??new AbortController().signal,approvedTools:t.approvedTools??new Set,callId:t.callId,toolInput:isObject(t.input)?t.input:void 0,toolName:e.name},r=await resolveApprovalPolicy(e.approval)(t.recheck?markApprovalRecheck(n):n);return typeof r==`boolean`?r?`user-approval`:`not-applicable`:r}export{buildToolApproval,buildToolSet,buildToolSetWithProviderTools,recheckApprovedCall,wrapToolExecute};
|
|
@@ -108,6 +108,18 @@ export declare function accumulateTurnUsage(input: {
|
|
|
108
108
|
readonly turnId: string;
|
|
109
109
|
readonly usage: TokenUsageDelta | undefined;
|
|
110
110
|
}): TurnUsageState;
|
|
111
|
+
/** Folds one model call's usage into the session's turn and session totals. */
|
|
112
|
+
export declare function addTurnUsage<T extends {
|
|
113
|
+
readonly state?: SessionStateMap;
|
|
114
|
+
}>(session: T, turnId: string, usage: TokenUsageDelta | undefined): T;
|
|
115
|
+
/**
|
|
116
|
+
* Counts usage that belongs to no turn, such as a manual compaction between turns. It adds to
|
|
117
|
+
* session totals, so session limits see it, and is marked reported so a later turn's usage delta
|
|
118
|
+
* doesn't claim it.
|
|
119
|
+
*/
|
|
120
|
+
export declare function addUsageOutsideTurns<T extends {
|
|
121
|
+
readonly state?: SessionStateMap;
|
|
122
|
+
}>(session: T, usage: TokenUsageDelta | undefined): T;
|
|
111
123
|
/**
|
|
112
124
|
* Adds usage to session totals without touching the in-flight turn totals:
|
|
113
125
|
* the delegated spend a parent counts, or a run's tally of what its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{findRuntimeUsageLimitViolation,grantRuntimeUsageLimits,remainingRuntimeUsageQuota,resolveRuntimeUsageLimits}from"#harness/session-usage-limits.js";const HARNESS_TURN_USAGE_STATE_KEY=`eve.harness.turnUsage`,REPORTED_SESSION_USAGE_STATE_KEY=`eve.harness.reportedSessionUsage`,SESSION_RUNTIME_USAGE_LIMIT_KEY=`eve.harness.sessionRuntimeTokenLimit`,ZERO_TOKEN_USAGE={cacheReadTokens:0,cacheWriteTokens:0,costUsd:0,inputTokens:0,outputTokens:0,sawCost:!1};function getTurnUsageState(e){return e?.[HARNESS_TURN_USAGE_STATE_KEY]}function getSessionTokenUsage(e){return getTurnUsageState(e.state)?.session??ZERO_TOKEN_USAGE}function getSessionUsage(e){return toUsage(getSessionTokenUsage(e))}function toUsage(e){return{cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,costUsd:e.sawCost?e.costUsd:void 0,inputTokens:e.inputTokens,outputTokens:e.outputTokens}}function getSessionRuntimeUsageLimits(e){let t=e.state?.[SESSION_RUNTIME_USAGE_LIMIT_KEY];return resolveRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),stored:t})}function bumpSessionRuntimeUsageLimits(e){let t=getSessionTokenUsage(e),n=grantRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),usage:t});return{...e,state:{...e.state,[SESSION_RUNTIME_USAGE_LIMIT_KEY]:n}}}function getSessionRemainingUsageQuota(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return remainingRuntimeUsageQuota({runtime:n,usage:t})}function getSessionUsageLimitViolation(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return findRuntimeUsageLimitViolation({configured:configuredSessionUsageLimits(e),runtime:n,usage:t})}function configuredSessionUsageLimits(e){return{costUsd:e.limits?.maxTokenCostUsdPerSession,inputTokens:e.limits?.maxInputTokensPerSession,outputTokens:e.limits?.maxOutputTokensPerSession}}function takeSessionUsageDelta(e){let t=getSessionTokenUsage(e),n=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{delta:{cacheReadTokens:t.cacheReadTokens-n.cacheReadTokens,cacheWriteTokens:t.cacheWriteTokens-n.cacheWriteTokens,costUsd:t.sawCost||n.sawCost?t.costUsd-n.costUsd:void 0,inputTokens:t.inputTokens-n.inputTokens,outputTokens:t.outputTokens-n.outputTokens},session:{...e,state:{...e.state,[REPORTED_SESSION_USAGE_STATE_KEY]:t}}}}function setTurnUsageState(e,t){return{...e,state:{...e.state,[HARNESS_TURN_USAGE_STATE_KEY]:t}}}function accumulateTurnUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous?.session??ZERO_TOKEN_USAGE;return{...addTokenUsage(e.previous!==void 0&&e.previous.turnId===e.turnId?e.previous:ZERO_TOKEN_USAGE,t),turnId:e.turnId,session:addTokenUsage(n,t)}}function accumulateSessionUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous??{...ZERO_TOKEN_USAGE,session:ZERO_TOKEN_USAGE,turnId:``};return{...n,session:addTokenUsage(n.session,t)}}function addTokenUsage(e,t){return{cacheReadTokens:e.cacheReadTokens+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens+t.cacheWriteTokens,costUsd:e.costUsd+t.costUsd,inputTokens:e.inputTokens+t.inputTokens,outputTokens:e.outputTokens+t.outputTokens,sawCost:e.sawCost||t.sawCost}}function toTokenUsageDelta(e){if(e===void 0)return ZERO_TOKEN_USAGE;let t=e.inputTokens??0,n=e.outputTokens??0;return{cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd??0,inputTokens:t,outputTokens:n,sawCost:e.costUsd!==void 0}}export{accumulateSessionUsage,accumulateTurnUsage,bumpSessionRuntimeUsageLimits,getSessionRemainingUsageQuota,getSessionRuntimeUsageLimits,getSessionTokenUsage,getSessionUsage,getSessionUsageLimitViolation,getTurnUsageState,setTurnUsageState,takeSessionUsageDelta,toUsage};
|
|
1
|
+
import{findRuntimeUsageLimitViolation,grantRuntimeUsageLimits,remainingRuntimeUsageQuota,resolveRuntimeUsageLimits}from"#harness/session-usage-limits.js";const HARNESS_TURN_USAGE_STATE_KEY=`eve.harness.turnUsage`,REPORTED_SESSION_USAGE_STATE_KEY=`eve.harness.reportedSessionUsage`,SESSION_RUNTIME_USAGE_LIMIT_KEY=`eve.harness.sessionRuntimeTokenLimit`,ZERO_TOKEN_USAGE={cacheReadTokens:0,cacheWriteTokens:0,costUsd:0,inputTokens:0,outputTokens:0,sawCost:!1};function getTurnUsageState(e){return e?.[HARNESS_TURN_USAGE_STATE_KEY]}function getSessionTokenUsage(e){return getTurnUsageState(e.state)?.session??ZERO_TOKEN_USAGE}function getSessionUsage(e){return toUsage(getSessionTokenUsage(e))}function toUsage(e){return{cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,costUsd:e.sawCost?e.costUsd:void 0,inputTokens:e.inputTokens,outputTokens:e.outputTokens}}function getSessionRuntimeUsageLimits(e){let t=e.state?.[SESSION_RUNTIME_USAGE_LIMIT_KEY];return resolveRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),stored:t})}function bumpSessionRuntimeUsageLimits(e){let t=getSessionTokenUsage(e),n=grantRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),usage:t});return{...e,state:{...e.state,[SESSION_RUNTIME_USAGE_LIMIT_KEY]:n}}}function getSessionRemainingUsageQuota(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return remainingRuntimeUsageQuota({runtime:n,usage:t})}function getSessionUsageLimitViolation(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return findRuntimeUsageLimitViolation({configured:configuredSessionUsageLimits(e),runtime:n,usage:t})}function configuredSessionUsageLimits(e){return{costUsd:e.limits?.maxTokenCostUsdPerSession,inputTokens:e.limits?.maxInputTokensPerSession,outputTokens:e.limits?.maxOutputTokensPerSession}}function takeSessionUsageDelta(e){let t=getSessionTokenUsage(e),n=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{delta:{cacheReadTokens:t.cacheReadTokens-n.cacheReadTokens,cacheWriteTokens:t.cacheWriteTokens-n.cacheWriteTokens,costUsd:t.sawCost||n.sawCost?t.costUsd-n.costUsd:void 0,inputTokens:t.inputTokens-n.inputTokens,outputTokens:t.outputTokens-n.outputTokens},session:{...e,state:{...e.state,[REPORTED_SESSION_USAGE_STATE_KEY]:t}}}}function setTurnUsageState(e,t){return{...e,state:{...e.state,[HARNESS_TURN_USAGE_STATE_KEY]:t}}}function accumulateTurnUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous?.session??ZERO_TOKEN_USAGE;return{...addTokenUsage(e.previous!==void 0&&e.previous.turnId===e.turnId?e.previous:ZERO_TOKEN_USAGE,t),turnId:e.turnId,session:addTokenUsage(n,t)}}function addTurnUsage(e,t,n){return setTurnUsageState(e,accumulateTurnUsage({previous:getTurnUsageState(e.state),turnId:t,usage:n}))}function addUsageOutsideTurns(e,t){if(t===void 0)return e;let n=setTurnUsageState(e,accumulateSessionUsage({previous:getTurnUsageState(e.state),usage:t})),r=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{...n,state:{...n.state,[REPORTED_SESSION_USAGE_STATE_KEY]:addTokenUsage(r,toTokenUsageDelta(t))}}}function accumulateSessionUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous??{...ZERO_TOKEN_USAGE,session:ZERO_TOKEN_USAGE,turnId:``};return{...n,session:addTokenUsage(n.session,t)}}function addTokenUsage(e,t){return{cacheReadTokens:e.cacheReadTokens+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens+t.cacheWriteTokens,costUsd:e.costUsd+t.costUsd,inputTokens:e.inputTokens+t.inputTokens,outputTokens:e.outputTokens+t.outputTokens,sawCost:e.sawCost||t.sawCost}}function toTokenUsageDelta(e){if(e===void 0)return ZERO_TOKEN_USAGE;let t=e.inputTokens??0,n=e.outputTokens??0;return{cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd??0,inputTokens:t,outputTokens:n,sawCost:e.costUsd!==void 0}}export{accumulateSessionUsage,accumulateTurnUsage,addTurnUsage,addUsageOutsideTurns,bumpSessionRuntimeUsageLimits,getSessionRemainingUsageQuota,getSessionRuntimeUsageLimits,getSessionTokenUsage,getSessionUsage,getSessionUsageLimitViolation,getTurnUsageState,setTurnUsageState,takeSessionUsageDelta,toUsage};
|
|
@@ -221,6 +221,20 @@ export type StepFn = (session: HarnessSession, input?: StepInput) => Promise<Ste
|
|
|
221
221
|
* (via {@link buildToolSet}), approval gates, and compaction hooks.
|
|
222
222
|
*/
|
|
223
223
|
export type HarnessToolMap = ReadonlyMap<string, HarnessToolDefinition>;
|
|
224
|
+
/** Looks up the definition a call runs by its entry name. */
|
|
225
|
+
export type HarnessToolLookup = Pick<HarnessToolMap, "get">;
|
|
226
|
+
/** The parts of a model tool call that name what it runs. */
|
|
227
|
+
export interface ToolCallLike {
|
|
228
|
+
readonly input: unknown;
|
|
229
|
+
readonly toolName: string;
|
|
230
|
+
}
|
|
231
|
+
/** A model tool call as the call to its entry, with the entry it runs. */
|
|
232
|
+
export interface ResolvedCall<T extends ToolCallLike> {
|
|
233
|
+
readonly call: T;
|
|
234
|
+
readonly definition: HarnessToolDefinition;
|
|
235
|
+
}
|
|
236
|
+
/** Resolves a model tool call to the entry it runs, if it reaches one. */
|
|
237
|
+
export type CallResolver = <T extends ToolCallLike>(toolCall: T) => ResolvedCall<T> | undefined;
|
|
224
238
|
/**
|
|
225
239
|
* Callback that writes one event to the event stream.
|
|
226
240
|
*
|
|
@@ -352,7 +352,6 @@ export type InstrumentationToolCallKind = "load-skill" | "remote-agent-call" | "
|
|
|
352
352
|
export interface InstrumentationToolCallStartedEvent {
|
|
353
353
|
/** Durable dispatch metadata, when this call is owned by eve's tool loop. */
|
|
354
354
|
readonly kind?: InstrumentationToolCallKind;
|
|
355
|
-
readonly parentCallId?: string;
|
|
356
355
|
readonly isWorkflowTool?: boolean;
|
|
357
356
|
readonly frameworkTool?: boolean;
|
|
358
357
|
readonly startedAtMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{contextStorage}from"#context/container.js";import{rememberInstrumentationActionScope,rememberInstrumentationInputScope,takeInstrumentationActionScopeForCall,takeInstrumentationInputScope}from"#instrumentation/state.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{isRuntimeWorkflowToolAction}from"#shared/action-types.js";import{actionIdempotencyKey,inputIdempotencyKey,sessionIdempotencyKey,toolCallIdempotencyKey,turnIdempotencyKey}from"#instrumentation/lifecycle.js";import{instrumentChannelDelivery}from"#instrumentation/channel-delivery.js";function createInstrumentationHandleEvent(e){if(e.hooks===void 0)return e.handleEvent;if(e.handleEvent===void 0)return;let t=e.handleEvent,n=e.hooks,r=new Set,i=new Set,a=e.turnId;return async(o,s)=>{let c=Date.now();await t(o,s);let l=toLifecycleEvent(o,e,a);if(o.type===`turn.started`&&(a=o.data.turnId),o.type===`turn.cancelled`||o.type===`turn.completed`||o.type===`turn.failed`||o.type===`session.completed`||o.type===`session.failed`){let e=contextStorage.getStore();e!==void 0&&await instrumentChannelDelivery({ctx:e,error:o.type===`turn.failed`||o.type===`session.failed`?Error(o.data.message):void 0,errorCode:o.type===`turn.failed`||o.type===`session.failed`?o.data.code:void 0,hooks:n,includeTurn:o.type===`turn.cancelled`||o.type===`turn.completed`||o.type===`turn.failed`||o.type===`session.failed`,outcome:o.type===`turn.failed`||o.type===`session.failed`?`failed`:o.type===`turn.cancelled`?`cancelled`:`completed`})}l!==void 0&&await n.publish(l),o.type===`actions.requested`?await publishActionStarts(o,e,n,r,c):o.type===`action.result`?await publishActionTerminal(o,e,n):o.type===`input.requested`&&await publishInputStarts(o,e,n,i)}}async function publishInputStarts(e,t,n,r){let i=t.getAttemptScope?.();if(i===void 0)return;let a=n.capturesOutputs??n.capturesContent;for(let o of e.data.requests){let s=inputIdempotencyKey(t.sessionId,e.data.turnId,o.requestId);r.has(s)||(r.add(s),rememberInstrumentationInputScope(s,i),await n.publish(Object.freeze({action:Object.freeze({callId:o.action.callId,name:o.action.toolName}),idempotencyKey:s,kind:o.kind,request:a?Object.freeze({allowFreeform:o.allowFreeform,display:o.display,options:o.options,prompt:o.prompt}):void 0,requestId:o.requestId,scope:i,type:`input.requested`})))}}async function publishInputResolutions(e){let t=e.hooks.capturesInputs??e.hooks.capturesContent;for(let n of e.batch.inputs){let r=inputIdempotencyKey(e.sessionId,e.batch.event.turnId,n.request.requestId),i=takeInstrumentationInputScope(r);i!==void 0&&await e.hooks.publish(Object.freeze({idempotencyKey:r,kind:n.request.kind,outcome:n.outcome,requestId:n.request.requestId,response:!t||n.response===void 0?void 0:Object.freeze({optionId:n.response.optionId,text:n.response.text}),scope:i,type:`input.resolved`}))}}async function publishActionStarts(e,t,n,r,i){let a=t.getAttemptScope?.();if(a===void 0)return;let o=n.capturesInputs??n.capturesContent;for(let s of e.data.actions){let c=isRuntimeWorkflowToolAction(s)||s.kind===`subagent-call`||s.kind===`remote-agent-call`,l=actionIdempotencyKey(t.sessionId,e.data.turnId,s.callId);r.has(l)||(r.add(l),rememberInstrumentationActionScope(l,a,c?{type:`tool.call.started`,callId:s.callId,toolName:actionName(s),frameworkTool:
|
|
1
|
+
import{contextStorage}from"#context/container.js";import{rememberInstrumentationActionScope,rememberInstrumentationInputScope,takeInstrumentationActionScopeForCall,takeInstrumentationInputScope}from"#instrumentation/state.js";import{RuntimeActionSettlementTimesKey}from"#harness/runtime-action-settlement-state.js";import{isRuntimeWorkflowToolAction}from"#shared/action-types.js";import{actionIdempotencyKey,inputIdempotencyKey,sessionIdempotencyKey,toolCallIdempotencyKey,turnIdempotencyKey}from"#instrumentation/lifecycle.js";import{instrumentChannelDelivery}from"#instrumentation/channel-delivery.js";function createInstrumentationHandleEvent(e){if(e.hooks===void 0)return e.handleEvent;if(e.handleEvent===void 0)return;let t=e.handleEvent,n=e.hooks,r=new Set,i=new Set,a=e.turnId;return async(o,s)=>{let c=Date.now();await t(o,s);let l=toLifecycleEvent(o,e,a);if(o.type===`turn.started`&&(a=o.data.turnId),o.type===`turn.cancelled`||o.type===`turn.completed`||o.type===`turn.failed`||o.type===`session.completed`||o.type===`session.failed`){let e=contextStorage.getStore();e!==void 0&&await instrumentChannelDelivery({ctx:e,error:o.type===`turn.failed`||o.type===`session.failed`?Error(o.data.message):void 0,errorCode:o.type===`turn.failed`||o.type===`session.failed`?o.data.code:void 0,hooks:n,includeTurn:o.type===`turn.cancelled`||o.type===`turn.completed`||o.type===`turn.failed`||o.type===`session.failed`,outcome:o.type===`turn.failed`||o.type===`session.failed`?`failed`:o.type===`turn.cancelled`?`cancelled`:`completed`})}l!==void 0&&await n.publish(l),o.type===`actions.requested`?await publishActionStarts(o,e,n,r,c):o.type===`action.result`?await publishActionTerminal(o,e,n):o.type===`input.requested`&&await publishInputStarts(o,e,n,i)}}async function publishInputStarts(e,t,n,r){let i=t.getAttemptScope?.();if(i===void 0)return;let a=n.capturesOutputs??n.capturesContent;for(let o of e.data.requests){let s=inputIdempotencyKey(t.sessionId,e.data.turnId,o.requestId);r.has(s)||(r.add(s),rememberInstrumentationInputScope(s,i),await n.publish(Object.freeze({action:Object.freeze({callId:o.action.callId,name:o.action.toolName}),idempotencyKey:s,kind:o.kind,request:a?Object.freeze({allowFreeform:o.allowFreeform,display:o.display,options:o.options,prompt:o.prompt}):void 0,requestId:o.requestId,scope:i,type:`input.requested`})))}}async function publishInputResolutions(e){let t=e.hooks.capturesInputs??e.hooks.capturesContent;for(let n of e.batch.inputs){let r=inputIdempotencyKey(e.sessionId,e.batch.event.turnId,n.request.requestId),i=takeInstrumentationInputScope(r);i!==void 0&&await e.hooks.publish(Object.freeze({idempotencyKey:r,kind:n.request.kind,outcome:n.outcome,requestId:n.request.requestId,response:!t||n.response===void 0?void 0:Object.freeze({optionId:n.response.optionId,text:n.response.text}),scope:i,type:`input.resolved`}))}}async function publishActionStarts(e,t,n,r,i){let a=t.getAttemptScope?.();if(a===void 0)return;let o=n.capturesInputs??n.capturesContent;for(let s of e.data.actions){let c=isRuntimeWorkflowToolAction(s)||s.kind===`subagent-call`||s.kind===`remote-agent-call`,l=actionIdempotencyKey(t.sessionId,e.data.turnId,s.callId);r.has(l)||(r.add(l),rememberInstrumentationActionScope(l,a,c?{type:`tool.call.started`,callId:s.callId,toolName:actionName(s),frameworkTool:isFrameworkAction(s,t),scope:a,idempotencyKey:toolCallIdempotencyKey(a,s.callId,0),startedAtMs:Date.now(),input:o?s.input:void 0}:void 0),await n.publish(Object.freeze({callId:s.callId,startedAtMs:i,idempotencyKey:l,input:o?s.input:void 0,...c?{isWorkflowTool:!0}:void 0,kind:s.kind===`workflow-tool-call`?`tool-call`:s.kind,toolName:actionName(s),frameworkTool:isFrameworkAction(s,t),scope:a,type:`tool.call.started`})))}}async function publishActionTerminal(e,t,n){let r=takeInstrumentationActionScopeForCall(t.sessionId,e.data.result.callId);if(r===void 0)return;let{idempotencyKey:i,scope:a}=r,o=n.capturesOutputs??n.capturesContent;if(e.data.status===`completed`){await n.publish(Object.freeze({acceptedAtMs:contextStorage.getStore()?.get(RuntimeActionSettlementTimesKey)?.[e.data.result.callId],idempotencyKey:i,outcome:`completed`,output:Object.freeze(o?{output:e.data.result.output,type:`result`}:{type:`result`}),scope:a,type:`tool.call.completed`,usage:actionUsage(e.data.result)}));return}let s=o?e.data.error===void 0?e.data.result.output:Object.assign(Error(e.data.error.message),{code:e.data.error.code}):void 0;await n.publish(Object.freeze({acceptedAtMs:contextStorage.getStore()?.get(RuntimeActionSettlementTimesKey)?.[e.data.result.callId],error:s,errorCode:e.data.error?.code,idempotencyKey:i,outcome:e.data.status,scope:a,type:`tool.call.failed`,usage:actionUsage(e.data.result)}))}function actionUsage(e){if(e.kind!==`subagent-result`||e.origin!==`child`||e.usage===void 0)return;let t={inputTokenDetails:{cacheReadTokens:e.usage.cacheReadTokens,cacheWriteTokens:e.usage.cacheWriteTokens},inputTokens:e.usage.inputTokens,outputTokens:e.usage.outputTokens};return e.usage.costUsd!==void 0&&(t.costUsd=e.usage.costUsd),t}function isFrameworkAction(e,t){return e.kind===`load-skill`||t.isFrameworkTool?.(actionName(e))===!0}function actionName(e){return e.kind===`tool-call`||e.kind===`workflow-tool-call`?e.toolName:e.name}function toLifecycleEvent(e,t,n){switch(e.type){case`session.started`:return{agentName:t.agentName,channelAudience:t.channelAudience,channelKind:t.channelKind,idempotencyKey:sessionIdempotencyKey(t.sessionId),parentLineage:t.parentLineage,parentTraceContext:t.parentTraceContext,rootSessionId:t.rootSessionId??t.sessionId,traceSessionId:t.traceSessionId,scheduleId:t.scheduleId,sessionId:t.sessionId,title:t.title,type:`session.started`};case`session.completed`:case`session.waiting`:return{idempotencyKey:sessionIdempotencyKey(t.sessionId),sessionId:t.sessionId,turnId:n,type:e.type};case`session.failed`:return{error:Error(e.data.message),idempotencyKey:sessionIdempotencyKey(t.sessionId),sessionId:t.sessionId,turnId:n,type:`session.failed`};case`turn.started`:return{idempotencyKey:turnIdempotencyKey(t.sessionId,e.data.turnId),parentLineage:t.parentLineage,parentTraceContext:t.parentTraceContext,rootSessionId:t.rootSessionId??t.sessionId,traceSessionId:t.traceSessionId,sequence:e.data.sequence,sessionId:t.sessionId,turnId:e.data.turnId,type:`turn.started`};case`turn.completed`:case`turn.cancelled`:return{idempotencyKey:turnIdempotencyKey(t.sessionId,e.data.turnId),sessionId:t.sessionId,turnId:e.data.turnId,type:e.type};case`turn.failed`:return{error:Error(e.data.message),idempotencyKey:turnIdempotencyKey(t.sessionId,e.data.turnId),sessionId:t.sessionId,turnId:e.data.turnId,type:`turn.failed`};default:return}}export{createInstrumentationHandleEvent,publishInputResolutions};
|
|
@@ -16,6 +16,7 @@ import { getInstrumentationRuntime, registerInstrumentationRuntime } from "#inst
|
|
|
16
16
|
import { initializeSessionInstrumentation } from "#instrumentation/session-init.js";
|
|
17
17
|
export { getInstrumentationRuntime, registerInstrumentationRuntime };
|
|
18
18
|
export { initializeSessionInstrumentation };
|
|
19
|
+
import type { TASK_CANCEL_TOOL_NAME, TASK_WAIT_TOOL_NAME } from "#protocol/task-tools.js";
|
|
19
20
|
interface InstrumentedStepSession {
|
|
20
21
|
readonly sessionId: string;
|
|
21
22
|
readonly state?: Readonly<Record<string, unknown>>;
|
|
@@ -83,7 +84,7 @@ export interface SessionInstrumentation {
|
|
|
83
84
|
export interface ExecutionInstrumentation {
|
|
84
85
|
readonly instrumentTaskToolCall: (input: {
|
|
85
86
|
readonly callId: string;
|
|
86
|
-
readonly toolName:
|
|
87
|
+
readonly toolName: typeof TASK_WAIT_TOOL_NAME | typeof TASK_CANCEL_TOOL_NAME;
|
|
87
88
|
readonly startedAtMs: number;
|
|
88
89
|
readonly completedAtMs: number;
|
|
89
90
|
readonly input: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{fileURLToPath}from"node:url";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";let cachedPackageInfo,cachedPackageLocation;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.
|
|
1
|
+
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{fileURLToPath}from"node:url";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";let cachedPackageInfo,cachedPackageLocation;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.76.0`,WORKFLOW_MODULE_ALIASES={"workflow/errors":`src/compiled/@workflow/errors/index.js`,"workflow/internal/private":`src/compiled/@workflow/core/private.js`};function resolveFallbackPackageVersion(){return BUNDLED_FALLBACK_PACKAGE_VERSION.startsWith(`__`)?`0.0.0`:BUNDLED_FALLBACK_PACKAGE_VERSION}const FALLBACK_PACKAGE_INFO={name:EVE_PACKAGE_NAME,version:resolveFallbackPackageVersion()};function resolveCurrentModulePath(){return typeof __filename==`string`?__filename:resolveCurrentModulePathFromStack()}function resolveCurrentModulePathFromStack(){let e=Error.prepareStackTrace;try{Error.prepareStackTrace=(e,t)=>t;let e=Error().stack?.[0]?.getFileName();if(typeof e!=`string`||e.length===0)throw Error(`Failed to resolve the current module path from the stack trace.`);return e.startsWith(`file:`)?fileURLToPath(e):e}finally{Error.prepareStackTrace=e}}const packageRequire=createRequire(resolveCurrentModulePath());function tryResolveVerifiedPackageRoot(e){try{let t=realpathSync.native(e);return tryReadInstalledPackageInfo(t,EVE_PACKAGE_NAME)===void 0?void 0:dirname(t)}catch{return}}function findNearestVerifiedPackageRoot(e){let t=e;for(;;){let e=tryResolveVerifiedPackageRoot(join(t,`package.json`));if(e!==void 0)return e;let n=dirname(t);if(n===t)return;t=n}}function tryResolveDirectBuildLocation(e){let t=dirname(e);for(;;){if(basename(t)===`dist`){let e=tryResolveVerifiedPackageRoot(join(dirname(t),`package.json`));if(e!==void 0)return{packageBuildRoot:t,packageRoot:e}}let e=dirname(t);if(e===t)return;t=e}}function isSourceCheckout(e){return existsSync(join(e,`src`,`internal`,`application`,`package.ts`))}function tryCreatePackageLocation(e){if(isSourceCheckout(e))return{packageBuildRoot:null,packageRoot:e};let t=join(e,`dist`);if(existsSync(t))return{packageBuildRoot:t,packageRoot:e}}function resolveSelfPackageJsonPath(e){return createRequire(e).resolve(`${EVE_PACKAGE_NAME}/package.json`)}function resolvePackageLocationFromModulePath(e,t=resolveSelfPackageJsonPath){let n=realpathSync.native(e),r=tryResolveDirectBuildLocation(n);if(r!==void 0)return r;let i=findNearestVerifiedPackageRoot(dirname(n));if(i!==void 0&&isSourceCheckout(i))return{packageBuildRoot:null,packageRoot:i};try{let e=tryResolveVerifiedPackageRoot(t(n)),r=e===void 0?void 0:tryCreatePackageLocation(e);if(r!==void 0)return r}catch{}let a=i===void 0?void 0:tryCreatePackageLocation(i);if(a!==void 0)return a;throw Error(`Failed to resolve the eve package root from "${e}".`)}function resolvePackageLocation(){return cachedPackageLocation??=resolvePackageLocationFromModulePath(resolveCurrentModulePath()),cachedPackageLocation}function resolvePackageBuildRoot(){return resolvePackageLocation().packageBuildRoot}function resolvePackageRoot(){return resolvePackageLocation().packageRoot}function tryResolvePackageRoot(){try{return resolvePackageRoot()}catch{return}}function rewriteSourceFilePathForBuild(e){return e.replace(/\.[cm]?tsx?$/,`.js`)}function resolvePackageSourceFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),e):join(t,rewriteSourceFilePathForBuild(e))}function resolvePackageSourceDirectoryPath(e){let t=resolvePackageBuildRoot();return join(t===null?resolvePackageRoot():t,e)}function resolvePackageDependencyPath(e){try{return packageRequire.resolve(e)}catch(t){let n=tryResolvePackageRoot(),r=n===void 0||!isSourceCheckout(n)?void 0:resolveSourceCheckoutExport(n,e);if(r!==void 0)return r;throw t}}function resolveSourceCheckoutExport(e,t){if(t!==EVE_PACKAGE_NAME&&!t.startsWith(`${EVE_PACKAGE_NAME}/`))return;let n=t===EVE_PACKAGE_NAME?`.`:`.${t.slice(EVE_PACKAGE_NAME.length)}`;try{let t=JSON.parse(readFileSync(join(e,`package.json`),`utf8`)).exports?.[n],r=typeof t==`string`?t:t?.[`eve-source`]??t?.import??t?.default;if(r===void 0)return;let i=r.replace(/^\.\/dist\/src\//,`src/`).replace(/\.[cm]?js$/u,`.ts`),a=join(e,i);return existsSync(a)?a:void 0}catch{return}}function resolvePackageCompiledFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),`.generated`,`compiled`,e.replace(/^src\/compiled\//,``)):join(t,e)}function normalizeInstalledPackageInfo(e){let t=e;if(typeof t.name==`string`&&typeof t.version==`string`)return{name:t.name,version:t.version}}function tryReadInstalledPackageInfo(e,t){let n=normalizeInstalledPackageInfo(JSON.parse(readFileSync(e,`utf8`)));if(n?.name===t)return n}function resolveInstalledPackageInfo(){if(cachedPackageInfo)return cachedPackageInfo;let e=tryResolvePackageRoot(),t=e===void 0?void 0:tryReadInstalledPackageInfo(join(e,`package.json`),EVE_PACKAGE_NAME);if(t)return cachedPackageInfo=t,cachedPackageInfo;try{let e=tryReadInstalledPackageInfo(packageRequire.resolve(`${EVE_PACKAGE_NAME}/package.json`),EVE_PACKAGE_NAME);if(e)return cachedPackageInfo=e,cachedPackageInfo}catch{}return cachedPackageInfo={...FALLBACK_PACKAGE_INFO},cachedPackageInfo}function readWorkflowVersionFromManifest(e){let t=e;for(let e of[t.devDependencies,t.dependencies,t.peerDependencies]){let t=e?.[`@workflow/core`];if(typeof t==`string`&&t.trim().length>0)return t}}function resolveExpectedWorkflowVersion(){let e=tryResolvePackageRoot();if(e!==void 0)try{return readWorkflowVersionFromManifest(JSON.parse(readFileSync(join(e,`package.json`),`utf8`)))}catch{}try{return readWorkflowVersionFromManifest(JSON.parse(readFileSync(packageRequire.resolve(`${EVE_PACKAGE_NAME}/package.json`),`utf8`)))}catch{return}}function resolveWorkflowModulePath(e){if(e===`workflow`)return resolvePackageSourceFilePath(`src/internal/workflow/index.ts`);if(e===`workflow/api`||e===`workflow/runtime`)return resolvePackageSourceFilePath(`src/internal/workflow/runtime.ts`);if(e===`workflow/internal/builtins`)return resolvePackageSourceFilePath(`src/internal/workflow/builtins.ts`);let t=WORKFLOW_MODULE_ALIASES[e];return t===void 0?packageRequire.resolve(e):resolvePackageCompiledFilePath(t)}export{resolveExpectedWorkflowVersion,resolveInstalledPackageInfo,resolvePackageCompiledFilePath,resolvePackageDependencyPath,resolvePackageLocationFromModulePath,resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{AGENT_WORKFLOW_RETENTION_VALUES}from"#shared/agent-definition.js";import{isAgentReasoningDefinition}from"#internal/runtime-model.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`defaultTools`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`reasoning`,`tool`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.defaultTools!==void 0&&(r.defaultTools=expectBoolean(n.defaultTools,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.tool!==void 0&&(r.tool=
|
|
1
|
+
import{expectAgentToolExposure,expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{AGENT_WORKFLOW_RETENTION_VALUES}from"#shared/agent-definition.js";import{isAgentReasoningDefinition}from"#internal/runtime-model.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`defaultTools`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`reasoning`,`tool`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.defaultTools!==void 0&&(r.defaultTools=expectBoolean(n.defaultTools,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.tool!==void 0&&(r.tool=expectAgentToolExposure(n.tool,t)),n.limits!==void 0&&(r.limits=normalizeAgentLimitsDefinition(n.limits,t)),r}function normalizeAgentReasoningDefinition(e,t){if(!isAgentReasoningDefinition(e))throw Error(t);return e}function normalizeAgentModelDefinition(e,t){if(!isDynamicSentinel(e))return e;let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`events`,`kind`],t);let r=expectObjectRecord(n.events,t),i={};for(let[e,n]of Object.entries(r))i[e]=expectFunction(n,t);return{events:i,kind:n.kind}}function expectPositiveIntegerOrFalse(e,t){return e!==!1&&expectPositiveInteger(e,t)}function expectPositiveNumberOrFalse(e,t){if(e===!1)return!1;if(typeof e!=`number`||!Number.isFinite(e)||e<=0)throw Error(t);return e}function normalizeAgentLimitsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`maxInputTokensPerSession`,`maxOutputTokensPerSession`,`maxTokenCostUsdPerSession`,`sessionTimeoutMs`],t);let r={};return n.sessionTimeoutMs!==void 0&&(r.sessionTimeoutMs=expectPositiveIntegerOrFalse(n.sessionTimeoutMs,t)),n.maxInputTokensPerSession!==void 0&&(r.maxInputTokensPerSession=expectPositiveIntegerOrFalse(n.maxInputTokensPerSession,t)),n.maxOutputTokensPerSession!==void 0&&(r.maxOutputTokensPerSession=expectPositiveIntegerOrFalse(n.maxOutputTokensPerSession,t)),n.maxTokenCostUsdPerSession!==void 0&&(r.maxTokenCostUsdPerSession=expectPositiveNumberOrFalse(n.maxTokenCostUsdPerSession,t)),r}function normalizeAgentBuildDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`externalDependencies`],t);let r={};if(n.externalDependencies!==void 0){if(!Array.isArray(n.externalDependencies))throw Error(t);r.externalDependencies=Object.freeze(n.externalDependencies.map(e=>expectString(e,t)))}return r}function normalizeAgentWorkflowDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`modelCallsPerStep`,`retention`,`world`],t);let r={};return n.modelCallsPerStep!==void 0&&(r.modelCallsPerStep=expectPositiveInteger(n.modelCallsPerStep,t)),n.retention!==void 0&&(r.retention=normalizeAgentWorkflowRetentionDefinition(n.retention,t)),n.world!==void 0&&(r.world=normalizeAgentWorkflowWorldDefinition(n.world,t)),r}function normalizeAgentWorkflowRetentionDefinition(e,t){let n=AGENT_WORKFLOW_RETENTION_VALUES.find(t=>t===e);if(n===void 0){let e=AGENT_WORKFLOW_RETENTION_VALUES.map(e=>JSON.stringify(e)).join(` or `);throw Error(`${t} "experimental.workflow.retention" must be ${e}.`)}return n}function normalizeAgentWorkflowWorldDefinition(e,t){let n=expectString(e,t);if(n.trim()===``)throw Error(`${t} "experimental.workflow.world" must be a non-empty package name.`);return n}function normalizeAgentExperimentalDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`workflow`],t);let r={};return n.workflow!==void 0&&(r.workflow=normalizeAgentWorkflowDefinition(n.workflow,t)),r}function normalizeAgentModelOptions(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`providerOptions`],t);let r=n.providerOptions;return r===void 0?{}:{providerOptions:expectProviderOptions(r,t)}}function normalizeAgentCompactionDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`model`,`modelContextWindowTokens`,`thresholdPercent`],t);let r={};if(n.model!==void 0){if(isDynamicSentinel(n.model))throw Error(`${t} "compaction.model" does not support defineDynamic — provide a static model.`);r.model=n.model}if(n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.thresholdPercent!==void 0){let e=n.thresholdPercent;if(typeof e!=`number`||!Number.isFinite(e)||e<0||e>1)throw Error(t);r.thresholdPercent=e}return r}function normalizeInstructionsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`content`,`markdown`,`role`],t);let r=Object.hasOwn(n,`content`),i=Object.hasOwn(n,`markdown`);if(r===i)throw Error(`${t} Provide exactly one of "content" or "markdown".`);if(i){if(Object.hasOwn(n,`role`))throw Error(`${t} The deprecated "markdown" shape does not support "role".`);return{content:expectString(n.markdown,t),role:`system`}}let a=n.role===void 0?`system`:expectString(n.role,t);if(a!==`system`&&a!==`user`)throw Error(`${t} Expected "role" to be one of: system, user.`);return{content:expectString(n.content,t),role:a}}function normalizeSkillDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`deferred`,`description`,`files`,`license`,`markdown`,`metadata`],t);let r={description:expectString(n.description,t),markdown:expectString(n.markdown,t)};n.deferred!==void 0&&(r.deferred=expectBoolean(n.deferred,t));let i=n.license,a=getOptionalStringRecordProperty(n,`metadata`,t);return i!==void 0&&(r.license=expectString(i,t)),a!==void 0&&(r.metadata=a),n.files!==void 0&&(r.files=normalizeSkillFiles(n.files,t)),r}function normalizeSkillFiles(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n)){if(typeof i==`string`||i instanceof Uint8Array){r[e]=i;continue}throw Error(`${t} Expected skill file "${e}" to be a string or Uint8Array.`)}return r}function normalizeScheduleDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`cron`,`markdown`,`run`],t);let r=expectString(n.cron,t),i=n.markdown!==void 0,a=n.run!==void 0;if(i&&a)throw Error(`${t} Pass either "markdown" (fire-and-forget) or "run" (handler) — not both.`);if(!i&&!a)throw Error(`${t} Must provide either "markdown" (fire-and-forget) or "run" (handler).`);let o={cron:r};return i?o.markdown=expectString(n.markdown,t):o.run=expectFunction(n.run,t),o}export{normalizeAgentDefinition,normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{expectObjectRecord,expectOnlyKnownKeys}from"#internal/authored-module.js";import{isScheduleCollectionDefinition}from"#shared/schedule-collection-definition.js";const SCHEDULE_OPERATIONS=[`create`,`get`,`list`,`enable`,`disable`,`invoke`,`delete`],PROVIDER_KEYS=[`kind`,`create`,`list`,`get`,`enable`,`disable`,`invoke`,`delete`],PROVIDER_METHODS=PROVIDER_KEYS.filter(e=>e!==`kind`),DEFINITION_KEYS=[`description`,`provider`,`scope`,`inputSchema`,`preparePayload`,`run`,`auth`,`events`,`tool`,`approval`];function normalizeScheduleCollectionDefinition(e,t){if(!isScheduleCollectionDefinition(e))throw Error(t);let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,DEFINITION_KEYS,t),n.description!==void 0&&(typeof n.description!=`string`||n.description.trim()===``))throw Error(`${t} "description" must be a non-empty string when provided.`);let r=expectObjectRecord(n.inputSchema,`${t} "inputSchema" is required and must be a Standard Schema.`);if(typeof expectObjectRecord(r[`~standard`],`${t} "inputSchema" must be a Standard Schema.`).validate!=`function`)throw Error(`${t} "inputSchema" must supply a Standard Schema validate function.`);if(n.preparePayload!==void 0&&typeof n.preparePayload!=`function`)throw Error(`${t} "preparePayload" must be a function when provided.`);if(typeof n.run!=`function`)throw Error(`${t} "run" is required and must be a function.`);if(n.scope!==void 0&&typeof n.scope!=`function`)throw Error(`${t} "scope" must be a function when provided.`);if(typeof n.auth!=`function`)throw Error(`${t} "auth" is required and must be a function that resolves the schedule creator to execution auth.`);if(n.events!==void 0){let e=expectObjectRecord(n.events,`${t} "events" must be an object.`);expectOnlyKnownKeys(e,[`occurrence.dispatched`,`occurrence.failed`],`${t} "events"`);for(let[n,r]of Object.entries(e))if(r!==void 0&&typeof r!=`function`)throw Error(`${t} "events.${n}" must be a function.`)}let i=expectObjectRecord(n.provider,`${t} "provider" must be an object.`);if(expectOnlyKnownKeys(i,PROVIDER_KEYS,`${t} "provider"`),typeof i.kind!=`string`||i.kind.trim()===``)throw Error(`${t} provider.kind must be a non-empty string.`);for(let e of PROVIDER_METHODS)if(typeof i[e]!=`function`)throw Error(`${t} provider.${e} must be a function.`);if(n.tool!==void 0&&typeof n.tool!=`boolean`)throw Error(`${t} "tool" must be true or false; deferred tools are not supported yet.`);if(n.tool===!1&&n.approval!==void 0)throw Error(`${t} "approval" cannot be configured when tool is false.`);if(n.approval!==void 0){let e=expectObjectRecord(n.approval,`${t} "approval" must be an object.`);expectOnlyKnownKeys(e,SCHEDULE_OPERATIONS,`${t} "approval"`);for(let[n,r]of Object.entries(e))if(typeof r!=`function`&&(typeof r!=`object`||!r||typeof Reflect.get(r,`request`)!=`function`||Reflect.get(r,`response`)!==void 0&&typeof Reflect.get(r,`response`)!=`function`))throw Error(`${t} "approval.${n}" must be an approval policy.`)}return e}export{normalizeScheduleCollectionDefinition};
|
|
1
|
+
import{expectObjectRecord,expectOnlyKnownKeys}from"#internal/authored-module.js";import{isScheduleCollectionDefinition}from"#shared/schedule-collection-definition.js";const SCHEDULE_OPERATIONS=[`create`,`get`,`list`,`update`,`enable`,`disable`,`invoke`,`delete`],PROVIDER_KEYS=[`kind`,`create`,`list`,`get`,`update`,`enable`,`disable`,`invoke`,`delete`],PROVIDER_METHODS=PROVIDER_KEYS.filter(e=>e!==`kind`),DEFINITION_KEYS=[`description`,`provider`,`scope`,`inputSchema`,`preparePayload`,`run`,`auth`,`events`,`tool`,`approval`];function normalizeScheduleCollectionDefinition(e,t){if(!isScheduleCollectionDefinition(e))throw Error(t);let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,DEFINITION_KEYS,t),n.description!==void 0&&(typeof n.description!=`string`||n.description.trim()===``))throw Error(`${t} "description" must be a non-empty string when provided.`);let r=expectObjectRecord(n.inputSchema,`${t} "inputSchema" is required and must be a Standard Schema.`);if(typeof expectObjectRecord(r[`~standard`],`${t} "inputSchema" must be a Standard Schema.`).validate!=`function`)throw Error(`${t} "inputSchema" must supply a Standard Schema validate function.`);if(n.preparePayload!==void 0&&typeof n.preparePayload!=`function`)throw Error(`${t} "preparePayload" must be a function when provided.`);if(typeof n.run!=`function`)throw Error(`${t} "run" is required and must be a function.`);if(n.scope!==void 0&&typeof n.scope!=`function`)throw Error(`${t} "scope" must be a function when provided.`);if(typeof n.auth!=`function`)throw Error(`${t} "auth" is required and must be a function that resolves the schedule creator to execution auth.`);if(n.events!==void 0){let e=expectObjectRecord(n.events,`${t} "events" must be an object.`);expectOnlyKnownKeys(e,[`occurrence.dispatched`,`occurrence.failed`],`${t} "events"`);for(let[n,r]of Object.entries(e))if(r!==void 0&&typeof r!=`function`)throw Error(`${t} "events.${n}" must be a function.`)}let i=expectObjectRecord(n.provider,`${t} "provider" must be an object.`);if(expectOnlyKnownKeys(i,PROVIDER_KEYS,`${t} "provider"`),typeof i.kind!=`string`||i.kind.trim()===``)throw Error(`${t} provider.kind must be a non-empty string.`);for(let e of PROVIDER_METHODS)if(typeof i[e]!=`function`)throw Error(`${t} provider.${e} must be a function.`);if(n.tool!==void 0&&typeof n.tool!=`boolean`)throw Error(`${t} "tool" must be true or false; deferred tools are not supported yet.`);if(n.tool===!1&&n.approval!==void 0)throw Error(`${t} "approval" cannot be configured when tool is false.`);if(n.approval!==void 0){let e=expectObjectRecord(n.approval,`${t} "approval" must be an object.`);expectOnlyKnownKeys(e,SCHEDULE_OPERATIONS,`${t} "approval"`);for(let[n,r]of Object.entries(e))if(typeof r!=`function`&&(typeof r!=`object`||!r||typeof Reflect.get(r,`request`)!=`function`||Reflect.get(r,`response`)!==void 0&&typeof Reflect.get(r,`response`)!=`function`))throw Error(`${t} "approval.${n}" must be an approval policy.`)}return e}export{normalizeScheduleCollectionDefinition};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type WorkflowToolEntryPoint } from "#tools/workflow-definition.js";
|
|
2
2
|
import type { JsonObject } from "#shared/json.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type WebSearchSelection } from "#shared/web-search.js";
|
|
4
4
|
import type { InternalToolDefinition, ToolExecuteFn } from "#tools/definition.js";
|
|
5
5
|
import { type CompiledToolBehavior } from "#tools/behavior.js";
|
|
6
6
|
import { type WorkflowProgramOptions } from "#tools/workflow-program-input.js";
|
|
@@ -41,7 +41,7 @@ type NormalizedToolEntry = {
|
|
|
41
41
|
readonly kind: "disabled";
|
|
42
42
|
} | {
|
|
43
43
|
readonly kind: "web-search-tool";
|
|
44
|
-
readonly
|
|
44
|
+
readonly selection: WebSearchSelection;
|
|
45
45
|
} | {
|
|
46
46
|
readonly kind: "dynamic-tool";
|
|
47
47
|
readonly eventNames: readonly DynamicToolEventName[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isObject}from"#shared/guards.js";import{expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectString}from"#internal/authored-module.js";import{UNSPECIFIED_INPUT_SCHEMA,serializeInputSchema,serializeModelInputSchema,serializeOutputSchema,toInputSchema}from"#tools/schema.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{isWorkflowToolDefinition,readWorkflowToolEntryPoints}from"#tools/workflow-definition.js";import{shouldRebindDynamicCallbacks}from"#internal/dynamic-tool-rebind.js";import{isDisabledToolSentinel}from"#tools/definition.js";import{TASK_ID_INPUT,withTaskIdSchema}from"#execution/tasks/task-id-input.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{isWebSearchToolDefinition}from"#tools/provided/web-search.js";import{readToolBehavior}from"#tools/behavior.js";import{readWorkflowProgramOptions}from"#tools/workflow-program-input.js";function normalizeToolDefinition(e,t){if(isDynamicSentinel(e))return assertResolverOnlyDynamicSentinel(e,t),{kind:`dynamic-tool`,eventNames:Object.keys(e.events),rebindMissingCallbacks:shouldRebindDynamicCallbacks(e)};if(isDisabledToolSentinel(e))return{kind:`disabled`};if(isWebSearchToolDefinition(e)){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`kind`,`provider`],t);let r=
|
|
1
|
+
import{isObject}from"#shared/guards.js";import{expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectString}from"#internal/authored-module.js";import{UNSPECIFIED_INPUT_SCHEMA,serializeInputSchema,serializeModelInputSchema,serializeOutputSchema,toInputSchema}from"#tools/schema.js";import{WEB_SEARCH_FALLBACK_PROVIDERS,WEB_SEARCH_PROVIDERS}from"#shared/web-search.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";import{isWorkflowToolDefinition,readWorkflowToolEntryPoints}from"#tools/workflow-definition.js";import{shouldRebindDynamicCallbacks}from"#internal/dynamic-tool-rebind.js";import{isDisabledToolSentinel}from"#tools/definition.js";import{TASK_ID_INPUT,withTaskIdSchema}from"#execution/tasks/task-id-input.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{isWebSearchToolDefinition}from"#tools/provided/web-search.js";import{readToolBehavior}from"#tools/behavior.js";import{readWorkflowProgramOptions}from"#tools/workflow-program-input.js";function normalizeToolDefinition(e,t){if(isDynamicSentinel(e))return assertResolverOnlyDynamicSentinel(e,t),{kind:`dynamic-tool`,eventNames:Object.keys(e.events),rebindMissingCallbacks:shouldRebindDynamicCallbacks(e)};if(isDisabledToolSentinel(e))return{kind:`disabled`};if(isWebSearchToolDefinition(e)){let n=expectObjectRecord(e,t);if(n.deferred!==void 0)throw Error(`${t} Provider tools can't be deferred: the provider has to see their definition. Remove "deferred".`);expectOnlyKnownKeys(n,[`fallback`,`kind`,`provider`],t);let r=expectOneOf(n.provider,WEB_SEARCH_PROVIDERS,`provider`,t);if(n.fallback===void 0)return{kind:`web-search-tool`,selection:{provider:r}};if(r!==`native`)throw Error(`${t} "fallback" applies only to provider "native"; provider "${r}" serves every AI Gateway model.`);return{kind:`web-search-tool`,selection:{fallback:expectOneOf(n.fallback,WEB_SEARCH_FALLBACK_PROVIDERS,`fallback`,t),provider:r}}}let n=expectObjectRecord(e,t),r=isWorkflowToolDefinition(e)?readCompiledWorkflowEntry(n,t):void 0;if(r===void 0&&readWorkflowFunctionId(n.execute)!==void 0)throw Error(`${t} Workflow executors require defineWorkflowTool() from "eve/tools". Replace defineTool() or the bare tool object with defineWorkflowTool().`);if(r!==void 0&&n.endsTurn!==void 0)throw Error(`${t} "endsTurn" is not supported on defineWorkflowTool(). Workflow tools resume the turn when they finish; use defineTool() for a tool that ends the turn.`);expectOnlyKnownKeys(n,[`availableInSubagents`,`deferred`,`endsTurn`,`label`,`auth`,`description`,`execute`,`inputSchema`,`approval`,`approvalKey`,`outputSchema`,`toModelOutput`,...r===void 0?[]:[r.entryPoint]],t);let i=n.inputSchema===void 0?null:serializeInputSchema(n.inputSchema);r?.entryPoint===`serve`&&assertNoOwnTaskIdInput(i,t);let a=serializeOutputSchema(n.outputSchema),o=readToolBehavior(e),s=readWorkflowProgramOptions(e),c=r!==void 0||n.execute!==void 0;!c&&o?.handling?.kind!==`dispatch`&&expectFunction(n.execute,t);let l={availableInSubagents:n.availableInSubagents===void 0?void 0:expectBoolean(n.availableInSubagents,t),deferred:n.deferred===void 0?void 0:expectBoolean(n.deferred,t),description:expectString(n.description,t),endsTurn:n.endsTurn===void 0||typeof n.endsTurn==`boolean`?n.endsTurn:expectFunction(n.endsTurn,t),hasApproval:n.approval!==void 0,hasExecute:c,hasModelOutputProjection:n.toModelOutput!==void 0,inputSchema:i,modelInputSchema:modelInputSchemaOf(n.inputSchema,r?.entryPoint===`serve`||o?.handling?.kind===`dispatch`)};if(o!==void 0&&(l.behavior=o),s!==void 0&&(l.workflowProgram=s),r===void 0?c&&(l.execute=expectFunction(n.execute,t)):l.workflow=r,a!==void 0&&(l.outputSchema=a),n.label!==void 0){let e=expectObjectRecord(n.label,t);expectOnlyKnownKeys(e,[`start`,`complete`,`delta`],t),expectFunction(e.start,t),e.complete!==void 0&&expectFunction(e.complete,t),e.delta!==void 0&&expectFunction(e.delta,t)}if(n.approval!==void 0&&normalizeApproval(n.approval,t),n.approvalKey!==void 0&&expectFunction(n.approvalKey,t),n.toModelOutput!==void 0&&expectFunction(n.toModelOutput,t),n.auth!==void 0){let e=expectObjectRecord(n.auth,t);expectFunction(e.getToken,t)}return{kind:`tool`,definition:l}}function readCompiledWorkflowEntry(e,t){let[n]=readWorkflowToolEntryPoints(e),r=n===void 0?void 0:readWorkflowFunctionId(e[n]);if(n===void 0||r===void 0)throw Error(`${t} defineWorkflowTool() requires a compiled workflow executor. Start execute, task, or serve with "use workflow" and export defineWorkflowTool() as the default export of a static tool module.`);return{entryPoint:n,workflowId:r}}function modelInputSchemaOf(e,t){let n=toInputSchema(e)??UNSPECIFIED_INPUT_SCHEMA;return serializeModelInputSchema(t?withTaskIdSchema(n):n)}function assertNoOwnTaskIdInput(e,t){let n=e?.properties;if(isObject(n)&&TASK_ID_INPUT in n)throw Error(`${t} inputSchema declares "${TASK_ID_INPUT}", which eve adds to a serve tool's model input to send a call to a running task. Rename the field.`)}function expectOneOf(e,t,n,r){let i=expectString(e,r);if(!t.includes(i))throw Error(`${r} Expected "${n}" to be one of: ${t.join(`, `)}.`);return i}export{normalizeToolDefinition};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ModuleDefinitionExport } from "#public/definitions/source.js";
|
|
2
2
|
import type { ModuleSourceRef } from "#shared/source-ref.js";
|
|
3
|
-
import type { AgentModelOptionsDefinition } from "#shared/agent-definition.js";
|
|
3
|
+
import type { AgentModelOptionsDefinition, AgentToolExposure } from "#shared/agent-definition.js";
|
|
4
4
|
/**
|
|
5
5
|
* Returns the selected authored module export from one namespace.
|
|
6
6
|
*/
|
|
@@ -24,6 +24,7 @@ export declare function expectString(value: unknown, message: string): string;
|
|
|
24
24
|
* Returns the value as a boolean or throws.
|
|
25
25
|
*/
|
|
26
26
|
export declare function expectBoolean(value: unknown, message: string): boolean;
|
|
27
|
+
export declare function expectAgentToolExposure(value: unknown, message: string): AgentToolExposure;
|
|
27
28
|
/**
|
|
28
29
|
* Returns one positive integer or throws.
|
|
29
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function getAuthoredModuleExport(e,t){return e[t.exportName??`default`]}async function materializeAuthoredModuleExport(e){return typeof e==`function`?await e():e}function expectObjectRecord(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(t);return e}function expectString(e,t){if(typeof e!=`string`)throw Error(t);return e}function expectBoolean(e,t){if(typeof e!=`boolean`)throw Error(t);return e}function expectPositiveInteger(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw Error(t);return e}function expectFunction(e,t){if(typeof e!=`function`)throw Error(t);return e}function expectProviderOptions(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n))r[e]=expectObjectRecord(i,t);return r}function expectOnlyKnownKeys(e,t,n){let r=new Set(t);for(let t of Object.keys(e))if(!r.has(t))throw Error(`${n} Unknown key "${t}".`)}function getOptionalStringRecordProperty(e,t,n){let r=e[t];if(r===void 0)return;let i=expectObjectRecord(r,n),a={};for(let[e,t]of Object.entries(i))a[e]=expectString(t,n);return a}export{expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getAuthoredModuleExport,getOptionalStringRecordProperty,materializeAuthoredModuleExport};
|
|
1
|
+
function getAuthoredModuleExport(e,t){return e[t.exportName??`default`]}async function materializeAuthoredModuleExport(e){return typeof e==`function`?await e():e}function expectObjectRecord(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(t);return e}function expectString(e,t){if(typeof e!=`string`)throw Error(t);return e}function expectBoolean(e,t){if(typeof e!=`boolean`)throw Error(t);return e}function expectAgentToolExposure(e,t){return e===`deferred`?e:expectBoolean(e,`${t} Expected "tool" to be true, false, or "deferred".`)}function expectPositiveInteger(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw Error(t);return e}function expectFunction(e,t){if(typeof e!=`function`)throw Error(t);return e}function expectProviderOptions(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n))r[e]=expectObjectRecord(i,t);return r}function expectOnlyKnownKeys(e,t,n){let r=new Set(t);for(let t of Object.keys(e))if(!r.has(t))throw Error(`${n} Unknown key "${t}".`)}function getOptionalStringRecordProperty(e,t,n){let r=e[t];if(r===void 0)return;let i=expectObjectRecord(r,n),a={};for(let[e,t]of Object.entries(i))a[e]=expectString(t,n);return a}export{expectAgentToolExposure,expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getAuthoredModuleExport,getOptionalStringRecordProperty,materializeAuthoredModuleExport};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { LanguageModel } from "ai";
|
|
2
1
|
/** AI Gateway model listing endpoint (OpenAI-compatible `/v1/models`). */
|
|
3
2
|
export declare const AI_GATEWAY_MODELS_URL = "https://ai-gateway.vercel.sh/v1/models";
|
|
4
3
|
/** AI Gateway model catalog endpoint, the richer variant of {@link AI_GATEWAY_MODELS_URL}. */
|
|
@@ -10,15 +9,3 @@ export declare const AI_GATEWAY_MODELS_CATALOG_URL = "https://ai-gateway.vercel.
|
|
|
10
9
|
* constructed per call site, so this is a value rather than a factory.
|
|
11
10
|
*/
|
|
12
11
|
export declare const vercelGatewayFetch: typeof globalThis.fetch;
|
|
13
|
-
/**
|
|
14
|
-
* Request headers eve attaches for a model's provider, or `undefined` when
|
|
15
|
-
* the provider needs none. Gateway-routed models (bare ids and `gateway.*`
|
|
16
|
-
* instances) get the eve User-Agent product token so AI Gateway can attribute
|
|
17
|
-
* the traffic; direct-provider models get no extra headers.
|
|
18
|
-
*/
|
|
19
|
-
export declare function resolveProviderHeaders(model: LanguageModel): Record<string, string> | undefined;
|
|
20
|
-
/** Provider identity reported by the model, normalized for bare Gateway ids. */
|
|
21
|
-
export declare function resolveModelProvider(model: LanguageModel): string | undefined;
|
|
22
|
-
export declare function isGatewayModel(model: LanguageModel): boolean;
|
|
23
|
-
/** Groups Gateway generations under the same identity used by eve's agent spans. */
|
|
24
|
-
export declare function mergeGatewaySessionId(model: LanguageModel, providerOptions: Readonly<Record<string, unknown>> | undefined, conversationId: string): Record<string, unknown> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{withPackageUserAgent}from"#internal/user-agent.js";const GATEWAY_BASE_URL=`https://ai-gateway.vercel.sh`,AI_GATEWAY_MODELS_URL=`${GATEWAY_BASE_URL}/v1/models`,AI_GATEWAY_MODELS_CATALOG_URL=`${GATEWAY_BASE_URL}/v1/models/catalog`,vercelGatewayFetch=withPackageUserAgent();export{AI_GATEWAY_MODELS_CATALOG_URL,AI_GATEWAY_MODELS_URL,vercelGatewayFetch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isObject}from"#shared/guards.js";import{normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition}from"#internal/authored-definition/core.js";import{hasFrontmatter,parseFrontmatter}from"#internal/helpers/frontmatter.js";import{defineSchedule}from"#public/definitions/schedule.js";import{defineSkill}from"#public/definitions/skill.js";function parseMarkdownDocument(e){if(!hasFrontmatter(e))return{hasFrontmatter:!1,frontmatter:{},markdown:e};let t=parseFrontmatter(e);if(t===void 0)throw Error(`Markdown frontmatter is missing a closing delimiter.`);if(!isObject(t.data))throw Error(`Markdown frontmatter must parse to an object.`);return{hasFrontmatter:!0,frontmatter:t.data,markdown:normalizeFrontmatterMarkdownBody(t.content)}}function lowerInstructionsMarkdown(e){return normalizeInstructionsDefinition({content:e,role:`system`},`Expected authored instructions markdown to match the public eve shape.`)}function lowerScheduleMarkdown(e){let t=parseMarkdownDocument(e);if(!t.hasFrontmatter)throw Error(`Schedule markdown must start with YAML frontmatter declaring "cron".`);if(`run`in t.frontmatter)throw Error('Markdown-form schedules do not support the "run" frontmatter key. Use a TypeScript schedule (`<name>.ts`) to author a handler.');let n={...t.frontmatter,markdown:t.markdown};return defineSchedule(normalizeScheduleDefinition(n,`Expected authored schedule markdown to match the public eve shape.`))}function lowerSkillMarkdown(e,t={}){let n=parseMarkdownDocument(e),r=t.slug;if(r===void 0&&!n.hasFrontmatter)throw Error(`Skill markdown must start with YAML frontmatter.`);let i=n.frontmatter,a=toOptionalString(i.description,`description`),o={description:r===void 0?requireStringFrontmatter(i.description,`description`):a??t.description??deriveFlatSkillDescription(n.markdown,r),markdown:n.markdown};return applyOptionalSkillFrontmatter(o,i),defineSkill(normalizeSkillDefinition(o,`Expected authored skill markdown to match the public eve shape.`))}function normalizeFrontmatterMarkdownBody(e){return e.replace(/^\r?\n/u,``)}function applyOptionalSkillFrontmatter(e,t){let n=toOptionalString(t.license,`license`);n!==void 0&&(e.license=n);let r=toOptionalStringRecord(t.metadata,`metadata`);r!==void 0&&(e.metadata=r)}function toOptionalString(e,t){if(e!=null){if(typeof e!=`string`)throw Error(`Expected "${t}" frontmatter to be a string.`);return e}}function requireStringFrontmatter(e,t){let n=toOptionalString(e,t);if(n===void 0)throw Error(`Missing required "${t}" frontmatter.`);return n}function toOptionalStringRecord(e,t){if(e==null)return;if(!isObject(e))throw Error(`Expected "${t}" frontmatter to be an object.`);let n=Object.entries(e).map(([e,n])=>{if(typeof n!=`string`)throw Error(`Expected "${t}.${e}" frontmatter to be a string.`);return[e,n]});return Object.fromEntries(n)}function deriveFlatSkillDescription(e,t){let n=e.split(/\r?\n/u).map(e=>e.trim()).find(e=>e!==``&&!e.startsWith("```"));return n===void 0?`Instructions for the ${t} skill.`:n.replace(/^[#>*\-\s]+/u,``).trim()||`Instructions for the ${t} skill.`}export{lowerInstructionsMarkdown,lowerScheduleMarkdown,lowerSkillMarkdown};
|
|
1
|
+
import{isObject}from"#shared/guards.js";import{normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition}from"#internal/authored-definition/core.js";import{hasFrontmatter,parseFrontmatter}from"#internal/helpers/frontmatter.js";import{defineSchedule}from"#public/definitions/schedule.js";import{defineSkill}from"#public/definitions/skill.js";function parseMarkdownDocument(e){if(!hasFrontmatter(e))return{hasFrontmatter:!1,frontmatter:{},markdown:e};let t=parseFrontmatter(e);if(t===void 0)throw Error(`Markdown frontmatter is missing a closing delimiter.`);if(!isObject(t.data))throw Error(`Markdown frontmatter must parse to an object.`);return{hasFrontmatter:!0,frontmatter:t.data,markdown:normalizeFrontmatterMarkdownBody(t.content)}}function lowerInstructionsMarkdown(e){return normalizeInstructionsDefinition({content:e,role:`system`},`Expected authored instructions markdown to match the public eve shape.`)}function lowerScheduleMarkdown(e){let t=parseMarkdownDocument(e);if(!t.hasFrontmatter)throw Error(`Schedule markdown must start with YAML frontmatter declaring "cron".`);if(`run`in t.frontmatter)throw Error('Markdown-form schedules do not support the "run" frontmatter key. Use a TypeScript schedule (`<name>.ts`) to author a handler.');let n={...t.frontmatter,markdown:t.markdown};return defineSchedule(normalizeScheduleDefinition(n,`Expected authored schedule markdown to match the public eve shape.`))}function lowerSkillMarkdown(e,t={}){let n=parseMarkdownDocument(e),r=t.slug;if(r===void 0&&!n.hasFrontmatter)throw Error(`Skill markdown must start with YAML frontmatter.`);let i=n.frontmatter,a=toOptionalString(i.description,`description`),o={description:r===void 0?requireStringFrontmatter(i.description,`description`):a??t.description??deriveFlatSkillDescription(n.markdown,r),markdown:n.markdown};return applyOptionalSkillFrontmatter(o,i),defineSkill(normalizeSkillDefinition(o,`Expected authored skill markdown to match the public eve shape.`))}function normalizeFrontmatterMarkdownBody(e){return e.replace(/^\r?\n/u,``)}function applyOptionalSkillFrontmatter(e,t){let n=toOptionalString(t.license,`license`);n!==void 0&&(e.license=n);let r=toOptionalStringRecord(t.metadata,`metadata`);r!==void 0&&(e.metadata=r);let i=t.deferred;if(i!=null){if(typeof i!=`boolean`)throw Error(`Expected "deferred" frontmatter to be true or false.`);e.deferred=i}}function toOptionalString(e,t){if(e!=null){if(typeof e!=`string`)throw Error(`Expected "${t}" frontmatter to be a string.`);return e}}function requireStringFrontmatter(e,t){let n=toOptionalString(e,t);if(n===void 0)throw Error(`Missing required "${t}" frontmatter.`);return n}function toOptionalStringRecord(e,t){if(e==null)return;if(!isObject(e))throw Error(`Expected "${t}" frontmatter to be an object.`);let n=Object.entries(e).map(([e,n])=>{if(typeof n!=`string`)throw Error(`Expected "${t}.${e}" frontmatter to be a string.`);return[e,n]});return Object.fromEntries(n)}function deriveFlatSkillDescription(e,t){let n=e.split(/\r?\n/u).map(e=>e.trim()).find(e=>e!==``&&!e.startsWith("```"));return n===void 0?`Instructions for the ${t} skill.`:n.replace(/^[#>*\-\s]+/u,``).trim()||`Instructions for the ${t} skill.`}export{lowerInstructionsMarkdown,lowerScheduleMarkdown,lowerSkillMarkdown};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash}from"node:crypto";import{createLogger}from"#internal/logging.js";import{MAX_SKILL_FILE_BYTES,SKILL_ENTRY_FILE_NAME,SkillReadError,comparePaths,isSkillEntryFileName}from"#channel/skill-files.js";import{z}from"#compiled/zod/index.js";import{parseFrontmatter}from"#internal/helpers/frontmatter.js";import{ProtocolError,ProtocolErrorCode,ResourceNotFoundError}from"#compiled/@modelcontextprotocol/server/index.js";import{MCP_LIST_CACHE_HINT}from"#internal/mcp/streamable-http-server.js";import{Buffer}from"node:buffer";const MCP_SKILLS_EXTENSION=`io.modelcontextprotocol/skills`,MCP_SKILL_MAX_RESOURCES=512,MCP_SKILL_MAX_TOTAL_BYTES=16777216,SKILL_URI_PREFIX=`skill://`,log=createLogger(`mcp.skills`),warned=new Set;function warnOnce(e){warned.has(e)||(warned.add(e),log.warn(e))}function createMcpSkillsFeature(e){return{capabilities:{resources:{listChanged:!1},extensions:{[MCP_SKILLS_EXTENSION]:{directoryRead:!0}}},register(t){registerSkillHandlers(t,e.files,createSkillCatalog(e))}}}const snapshotCache=new WeakMap;function createSkillCatalog({files:e,skills:t}){let n=snapshotCache.get(t)??new Map;snapshotCache.set(t,n);let snapshot=async r=>{let i=t.find(e=>e.name===r);if(i===void 0)return;let a=n.get(r);return a===void 0&&(a=snapshotSkill(e,i),n.set(r,a),a.catch(()=>n.delete(r))),await a};return{async served(){let e=t.map(e=>e.name).sort(comparePaths),n=[];for(let t of e){let e=await snapshot(t);e!==void 0&&n.push(e)}return n},skill:snapshot}}function registerSkillHandlers(e,t,n){let r=e.server;r.setRequestHandler(`skills/list`,{params:z.looseObject({cursor:z.string().optional()})},async e=>(rejectCursor(e.cursor),{skills:(await n.served()).map(e=>e.entry),...MCP_LIST_CACHE_HINT})),r.setRequestHandler(`skills/get`,{params:z.looseObject({uri:z.string()})},async e=>{let t=parseSkillUri(e.uri),r=t?.path===SKILL_ENTRY_FILE_NAME?await n.skill(t.skill):void 0;if(r===void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown skill: ${e.uri}`,{uri:e.uri});return{skill:r.entry,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/directory/read`,{params:z.looseObject({uri:z.string(),cursor:z.string().optional()})},async e=>{rejectCursor(e.cursor);let t=parseSkillUri(e.uri),r=t===void 0?void 0:await n.skill(t.skill),i=r===void 0?void 0:listDirectory(r,t?.path);if(i===void 0)throw new ResourceNotFoundError(e.uri);return{resources:i,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/list`,async e=>(rejectCursor(e.params?.cursor),{resources:(await n.served()).map(e=>({uri:e.entry.uri,name:e.name,description:e.description,mimeType:mimeTypeFor(SKILL_ENTRY_FILE_NAME),size:e.document.bytes.byteLength}))})),r.setRequestHandler(`resources/templates/list`,async e=>(rejectCursor(e.params?.cursor),{resourceTemplates:[]})),r.setRequestHandler(`resources/read`,async e=>{let r=e.params?.uri;if(typeof r!=`string`)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`params.uri must be a string.`);let i=parseSkillUri(r),a=i?.path===void 0?void 0:await n.skill(i.skill),o=i?.path===void 0?void 0:a?.files.get(i.path);if(a===void 0||i?.path===void 0||o===void 0)throw new ResourceNotFoundError(r);let s=i.path===SKILL_ENTRY_FILE_NAME?a.document:toServedFile(await readListedFile(t,a.name,i.path,r));return{contents:[s.text===void 0?{uri:r,mimeType:o.mimeType,blob:Buffer.from(s.bytes).toString(`base64`)}:{uri:r,mimeType:o.mimeType,text:s.text}]}})}async function readListedFile(e,t,n,r){try{return await e.readFile(t,n)}catch(e){throw e instanceof SkillReadError&&e.code===`unknown-file`?new ResourceNotFoundError(r):e}}function toServedFile(e){let t=decodeText(e);return t===void 0?{bytes:e}:{bytes:e,text:t}}function decodeText(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}).decode(e)}catch{return}}function servedPaths(e,t,n){if(!isSafeSegment(e))return`its name is not a valid skill:// segment`;let r=n.find(e=>!e.split(`/`).every(isSafeSegment));if(r!==void 0)return`its directory "${r}" is not a valid skill:// path`;if(t.length>512)return`it has more than 512 files`;let i=new Map,a=0;for(let{path:e,size:n}of t){if(!e.split(`/`).every(isSafeSegment))return`its file "${e}" is not a valid skill:// path`;if(n>MAX_SKILL_FILE_BYTES)return`its file "${e}" is over ${MAX_SKILL_FILE_BYTES} bytes`;a+=n;let t=!e.includes(`/`)&&isSkillEntryFileName(e)?SKILL_ENTRY_FILE_NAME:e;if(i.has(t))return`it has more than one ${SKILL_ENTRY_FILE_NAME}`;i.set(t,e)}return i.has(SKILL_ENTRY_FILE_NAME)?a>16777216?`its files total more than ${MCP_SKILL_MAX_TOTAL_BYTES} bytes`:i:`it has no ${SKILL_ENTRY_FILE_NAME}`}async function snapshotSkill(e,t){let unserved=e=>{warnOnce(`mcpChannel does not serve the skill "${t.name}": ${e}.`)},[n,r]=await Promise.all([e.listFiles(t.name),e.listDirectories(t.name)]),i=servedPaths(t.name,n,r);if(typeof i==`string`)return unserved(i);let a=[...i.entries()].sort(([e],[t])=>comparePaths(e,t)),o=await mapWithConcurrency(a,8,async([,n])=>{try{return toServedFile(await e.readFile(t.name,n))}catch(e){if(e instanceof SkillReadError)return e.message;throw e}}),s=o.find(e=>typeof e==`string`);if(s!==void 0)return unserved(`a file did not read (${s})`);let c=o,l=a.findIndex(([e])=>e===SKILL_ENTRY_FILE_NAME),u=entryDocument(t,c[l]);if(u===void 0)return unserved(`its ${SKILL_ENTRY_FILE_NAME} is not UTF-8 text with frontmatter that meets the Agent Skills format`);if(c[l]=u,c.reduce((e,t)=>e+t.bytes.byteLength,0)>16777216||c.some(e=>e.bytes.byteLength>MAX_SKILL_FILE_BYTES))return unserved(`its files as read are over the size limits`);let d=new Map,f=[];for(let[e,[n]]of a.entries()){let r=c[e];d.set(n,{mimeType:servedMimeType(n,r),size:r.bytes.byteLength}),f.push({uri:skillFileUri(t.name,n),digest:`sha256:${createHash(`sha256`).update(r.bytes).digest(`hex`)}`,size:r.bytes.byteLength})}return{name:t.name,description:u.description,document:u,entry:{uri:skillFileUri(t.name,SKILL_ENTRY_FILE_NAME),frontmatter:u.frontmatter,resources:f},files:d,directories:new Set(r)}}function entryDocument(e,t){if(t.text===void 0)return;let n=parseFrontmatterJson(t.text);if(n===void 0)return;if(n.present&&n.data.name===e.name&&typeof n.data.description==`string`)return conforming({bytes:t.bytes,description:n.data.description,frontmatter:n.data,text:t.text});let r=typeof n.data.description==`string`?n.data.description:e.description,{name:i,description:a,...o}=n.data,s=`---\n${renderFrontmatter({name:e.name,description:r,...o})}---\n${n.content}`,c=parseFrontmatterJson(s);if(c!==void 0&&c.data.name===e.name)return conforming({bytes:new TextEncoder().encode(s),description:r,frontmatter:c.data,text:s})}const SKILL_NAME_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function conforming(e){let{name:t,description:n}=e.frontmatter;if(typeof t==`string`&&typeof n==`string`&&!(Array.from(t).length>64||!SKILL_NAME_PATTERN.test(t))&&!(n.trim().length===0||Array.from(n).length>1024))return e}function renderFrontmatter(e){return Object.entries(e).map(([e,t])=>`${/^[A-Za-z_][A-Za-z0-9_-]*$/u.test(e)?e:JSON.stringify(e)}: ${JSON.stringify(t)}\n`).join(``)}function parseFrontmatterJson(e){let t,n;try{n=parseFrontmatter(e),t=JSON.parse(JSON.stringify(n?.data??{}))}catch{return}if(typeof t==`object`&&t&&!Array.isArray(t))return{content:n?.content??e,data:t,present:n!==void 0}}function listDirectory(e,t){if(t!==void 0&&!e.directories.has(t))return;let n=t===void 0?``:`${t}/`,r=[],add=(t,i)=>{let a=t.slice(n.length);t.startsWith(n)&&!a.includes(`/`)&&r.push({uri:skillFileUri(e.name,t),name:a,mimeType:i})};for(let[t,n]of e.files)add(t,n.mimeType);for(let t of e.directories)add(t,`inode/directory`);return r.sort((e,t)=>comparePaths(e.name,t.name))}function parseSkillUri(e){if(!e.startsWith(SKILL_URI_PREFIX))return;let t=e.slice(8);if(/[?#\\\s]/u.test(t))return;let n=[];for(let e of t.split(`/`)){let t;try{t=decodeURIComponent(e)}catch{return}if(!isSafeSegment(t))return;n.push(t)}let[r,...i]=n;if(r!==void 0)return i.length===0?{skill:r}:{skill:r,path:i.join(`/`)}}function isSafeSegment(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)&&!e.includes(`\0`)}function skillFileUri(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${SKILL_URI_PREFIX}${encodeURIComponent(e)}/${n}`}function rejectCursor(e){if(e!==void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown cursor.`)}const MIME_TYPES=new Map([[`css`,`text/css`],[`csv`,`text/csv`],[`gif`,`image/gif`],[`htm`,`text/html`],[`html`,`text/html`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`text/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`text/javascript`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`py`,`text/x-python`],[`sh`,`text/x-shellscript`],[`svg`,`image/svg+xml`],[`ts`,`text/typescript`],[`txt`,`text/plain`],[`webp`,`image/webp`],[`xml`,`application/xml`],[`yaml`,`application/yaml`],[`yml`,`application/yaml`]]);function servedMimeType(e,t){let n=e.slice(e.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return(r<=0?void 0:MIME_TYPES.get(n.slice(r+1).toLowerCase()))??(t.text===void 0?`application/octet-stream`:`text/plain`)}function mimeTypeFor(e){return servedMimeType(e,{bytes:new Uint8Array})}
|
|
1
|
+
import{createHash}from"node:crypto";import{createLogger}from"#internal/logging.js";import{MAX_SKILL_FILE_BYTES,SKILL_ENTRY_FILE_NAME,SkillReadError,comparePaths,isSkillEntryFileName}from"#channel/skill-files.js";import{z}from"#compiled/zod/index.js";import{parseFrontmatter}from"#internal/helpers/frontmatter.js";import{ProtocolError,ProtocolErrorCode,ResourceNotFoundError}from"#compiled/@modelcontextprotocol/server/index.js";import{MCP_LIST_CACHE_HINT}from"#internal/mcp/streamable-http-server.js";import{Buffer}from"node:buffer";import{mapWithConcurrency}from"#shared/map-with-concurrency.js";const MCP_SKILLS_EXTENSION=`io.modelcontextprotocol/skills`,MCP_SKILL_MAX_RESOURCES=512,MCP_SKILL_MAX_TOTAL_BYTES=16777216,SKILL_URI_PREFIX=`skill://`,log=createLogger(`mcp.skills`),warned=new Set;function warnOnce(e){warned.has(e)||(warned.add(e),log.warn(e))}function createMcpSkillsFeature(e){return{capabilities:{resources:{listChanged:!1},extensions:{[MCP_SKILLS_EXTENSION]:{directoryRead:!0}}},register(t){registerSkillHandlers(t,e.files,createSkillCatalog(e))}}}const snapshotCache=new WeakMap;function createSkillCatalog({files:e,skills:t}){let n=snapshotCache.get(t)??new Map;snapshotCache.set(t,n);let snapshot=async r=>{let i=t.find(e=>e.name===r);if(i===void 0)return;let a=n.get(r);return a===void 0&&(a=snapshotSkill(e,i),n.set(r,a),a.catch(()=>n.delete(r))),await a};return{async served(){let e=t.map(e=>e.name).sort(comparePaths),n=[];for(let t of e){let e=await snapshot(t);e!==void 0&&n.push(e)}return n},skill:snapshot}}function registerSkillHandlers(e,t,n){let r=e.server;r.setRequestHandler(`skills/list`,{params:z.looseObject({cursor:z.string().optional()})},async e=>(rejectCursor(e.cursor),{skills:(await n.served()).map(e=>e.entry),...MCP_LIST_CACHE_HINT})),r.setRequestHandler(`skills/get`,{params:z.looseObject({uri:z.string()})},async e=>{let t=parseSkillUri(e.uri),r=t?.path===SKILL_ENTRY_FILE_NAME?await n.skill(t.skill):void 0;if(r===void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown skill: ${e.uri}`,{uri:e.uri});return{skill:r.entry,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/directory/read`,{params:z.looseObject({uri:z.string(),cursor:z.string().optional()})},async e=>{rejectCursor(e.cursor);let t=parseSkillUri(e.uri),r=t===void 0?void 0:await n.skill(t.skill),i=r===void 0?void 0:listDirectory(r,t?.path);if(i===void 0)throw new ResourceNotFoundError(e.uri);return{resources:i,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/list`,async e=>(rejectCursor(e.params?.cursor),{resources:(await n.served()).map(e=>({uri:e.entry.uri,name:e.name,description:e.description,mimeType:mimeTypeFor(SKILL_ENTRY_FILE_NAME),size:e.document.bytes.byteLength}))})),r.setRequestHandler(`resources/templates/list`,async e=>(rejectCursor(e.params?.cursor),{resourceTemplates:[]})),r.setRequestHandler(`resources/read`,async e=>{let r=e.params?.uri;if(typeof r!=`string`)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`params.uri must be a string.`);let i=parseSkillUri(r),a=i?.path===void 0?void 0:await n.skill(i.skill),o=i?.path===void 0?void 0:a?.files.get(i.path);if(a===void 0||i?.path===void 0||o===void 0)throw new ResourceNotFoundError(r);let s=i.path===SKILL_ENTRY_FILE_NAME?a.document:toServedFile(await readListedFile(t,a.name,i.path,r));return{contents:[s.text===void 0?{uri:r,mimeType:o.mimeType,blob:Buffer.from(s.bytes).toString(`base64`)}:{uri:r,mimeType:o.mimeType,text:s.text}]}})}async function readListedFile(e,t,n,r){try{return await e.readFile(t,n)}catch(e){throw e instanceof SkillReadError&&e.code===`unknown-file`?new ResourceNotFoundError(r):e}}function toServedFile(e){let t=decodeText(e);return t===void 0?{bytes:e}:{bytes:e,text:t}}function decodeText(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}).decode(e)}catch{return}}function servedPaths(e,t,n){if(!isSafeSegment(e))return`its name is not a valid skill:// segment`;let r=n.find(e=>!e.split(`/`).every(isSafeSegment));if(r!==void 0)return`its directory "${r}" is not a valid skill:// path`;if(t.length>512)return`it has more than 512 files`;let i=new Map,a=0;for(let{path:e,size:n}of t){if(!e.split(`/`).every(isSafeSegment))return`its file "${e}" is not a valid skill:// path`;if(n>MAX_SKILL_FILE_BYTES)return`its file "${e}" is over ${MAX_SKILL_FILE_BYTES} bytes`;a+=n;let t=!e.includes(`/`)&&isSkillEntryFileName(e)?SKILL_ENTRY_FILE_NAME:e;if(i.has(t))return`it has more than one ${SKILL_ENTRY_FILE_NAME}`;i.set(t,e)}return i.has(SKILL_ENTRY_FILE_NAME)?a>16777216?`its files total more than ${MCP_SKILL_MAX_TOTAL_BYTES} bytes`:i:`it has no ${SKILL_ENTRY_FILE_NAME}`}async function snapshotSkill(e,t){let unserved=e=>{warnOnce(`mcpChannel does not serve the skill "${t.name}": ${e}.`)},[n,r]=await Promise.all([e.listFiles(t.name),e.listDirectories(t.name)]),i=servedPaths(t.name,n,r);if(typeof i==`string`)return unserved(i);let a=[...i.entries()].sort(([e],[t])=>comparePaths(e,t)),o=await mapWithConcurrency(a,8,async([,n])=>{try{return toServedFile(await e.readFile(t.name,n))}catch(e){if(e instanceof SkillReadError)return e.message;throw e}}),s=o.find(e=>typeof e==`string`);if(s!==void 0)return unserved(`a file did not read (${s})`);let c=o,l=a.findIndex(([e])=>e===SKILL_ENTRY_FILE_NAME),u=entryDocument(t,c[l]);if(u===void 0)return unserved(`its ${SKILL_ENTRY_FILE_NAME} is not UTF-8 text with frontmatter that meets the Agent Skills format`);if(c[l]=u,c.reduce((e,t)=>e+t.bytes.byteLength,0)>16777216||c.some(e=>e.bytes.byteLength>MAX_SKILL_FILE_BYTES))return unserved(`its files as read are over the size limits`);let d=new Map,f=[];for(let[e,[n]]of a.entries()){let r=c[e];d.set(n,{mimeType:servedMimeType(n,r),size:r.bytes.byteLength}),f.push({uri:skillFileUri(t.name,n),digest:`sha256:${createHash(`sha256`).update(r.bytes).digest(`hex`)}`,size:r.bytes.byteLength})}return{name:t.name,description:u.description,document:u,entry:{uri:skillFileUri(t.name,SKILL_ENTRY_FILE_NAME),frontmatter:u.frontmatter,resources:f},files:d,directories:new Set(r)}}function entryDocument(e,t){if(t.text===void 0)return;let n=parseFrontmatterJson(t.text);if(n===void 0)return;if(n.present&&n.data.name===e.name&&typeof n.data.description==`string`)return conforming({bytes:t.bytes,description:n.data.description,frontmatter:n.data,text:t.text});let r=typeof n.data.description==`string`?n.data.description:e.description,{name:i,description:a,...o}=n.data,s=`---\n${renderFrontmatter({name:e.name,description:r,...o})}---\n${n.content}`,c=parseFrontmatterJson(s);if(c!==void 0&&c.data.name===e.name)return conforming({bytes:new TextEncoder().encode(s),description:r,frontmatter:c.data,text:s})}const SKILL_NAME_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function conforming(e){let{name:t,description:n}=e.frontmatter;if(typeof t==`string`&&typeof n==`string`&&!(Array.from(t).length>64||!SKILL_NAME_PATTERN.test(t))&&!(n.trim().length===0||Array.from(n).length>1024))return e}function renderFrontmatter(e){return Object.entries(e).map(([e,t])=>`${/^[A-Za-z_][A-Za-z0-9_-]*$/u.test(e)?e:JSON.stringify(e)}: ${JSON.stringify(t)}\n`).join(``)}function parseFrontmatterJson(e){let t,n;try{n=parseFrontmatter(e),t=JSON.parse(JSON.stringify(n?.data??{}))}catch{return}if(typeof t==`object`&&t&&!Array.isArray(t))return{content:n?.content??e,data:t,present:n!==void 0}}function listDirectory(e,t){if(t!==void 0&&!e.directories.has(t))return;let n=t===void 0?``:`${t}/`,r=[],add=(t,i)=>{let a=t.slice(n.length);t.startsWith(n)&&!a.includes(`/`)&&r.push({uri:skillFileUri(e.name,t),name:a,mimeType:i})};for(let[t,n]of e.files)add(t,n.mimeType);for(let t of e.directories)add(t,`inode/directory`);return r.sort((e,t)=>comparePaths(e.name,t.name))}function parseSkillUri(e){if(!e.startsWith(SKILL_URI_PREFIX))return;let t=e.slice(8);if(/[?#\\\s]/u.test(t))return;let n=[];for(let e of t.split(`/`)){let t;try{t=decodeURIComponent(e)}catch{return}if(!isSafeSegment(t))return;n.push(t)}let[r,...i]=n;if(r!==void 0)return i.length===0?{skill:r}:{skill:r,path:i.join(`/`)}}function isSafeSegment(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)&&!e.includes(`\0`)}function skillFileUri(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${SKILL_URI_PREFIX}${encodeURIComponent(e)}/${n}`}function rejectCursor(e){if(e!==void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown cursor.`)}const MIME_TYPES=new Map([[`css`,`text/css`],[`csv`,`text/csv`],[`gif`,`image/gif`],[`htm`,`text/html`],[`html`,`text/html`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`text/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`text/javascript`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`py`,`text/x-python`],[`sh`,`text/x-shellscript`],[`svg`,`image/svg+xml`],[`ts`,`text/typescript`],[`txt`,`text/plain`],[`webp`,`image/webp`],[`xml`,`application/xml`],[`yaml`,`application/yaml`],[`yml`,`application/yaml`]]);function servedMimeType(e,t){let n=e.slice(e.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return(r<=0?void 0:MIME_TYPES.get(n.slice(r+1).toLowerCase()))??(t.text===void 0?`application/octet-stream`:`text/plain`)}function mimeTypeFor(e){return servedMimeType(e,{bytes:new Uint8Array})}export{MCP_SKILLS_EXTENSION,MCP_SKILL_MAX_RESOURCES,MCP_SKILL_MAX_TOTAL_BYTES,createMcpSkillsFeature,parseSkillUri};
|
|
@@ -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{resolveAuthoredTsConfigPath}from"#internal/authored-module-loader.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.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}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{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`),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=[...e.compileResult.manifest.config.build?.externalDependencies??[],...e.compileResult.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])];return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}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),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{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);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`},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`},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,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{resolveAuthoredTsConfigPath}from"#internal/authored-module-loader.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.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{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`),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=[...e.compileResult.manifest.config.build?.externalDependencies??[],...e.compileResult.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])];return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}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),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{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`},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`},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,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 +1 @@
|
|
|
1
|
-
import{createHash}from"node:crypto";import{readFile}from"node:fs/promises";import{readDevelopmentEnvironmentHostValues}from"#cli/dev/environment.js";import{computeChannelRouteRegistrations}from"#internal/nitro/host/channel-routes.js";async function computeDevelopmentHostFingerprint(e){let t=e.compileResult.manifest,n=[t,...t.subagents.map(e=>e.agent)],r={agentName:t.config.name,bundler:{externalDependencies:[...new Set([...t.config.build?.externalDependencies??[],...t.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])])].sort((e,t)=>e.localeCompare(t)),extensionScopes:n.flatMap(e=>e.extensionMounts).map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})).sort((e,t)=>e.mountId.localeCompare(t.mountId)),sandboxProviders:[...new Set(n.map(e=>e.sandbox?.providerName).filter(e=>e!==void 0))].sort((e,t)=>e.localeCompare(t))},channels:computeChannelRouteRegistrations(e),environment:readDevelopmentEnvironmentHostValues(e.appRoot),instrumentation:await readInstrumentationSource(e),workflow:{authoredSources:e.generation.workflowSourceFingerprint??null,enabled:n.some(e=>e.tools.some(e=>e.workflowProgram!==void 0)),world:t.config.experimental?.workflow?.world??`local`}};return createHash(`sha256`).update(JSON.stringify(r)).digest(`hex`)}async function readInstrumentationSource(e){let t=e.compiledArtifacts.instrumentationSourcePaths,n=e.compiledArtifacts.instrumentationLayout;if(t===void 0||n===void 0)return null;let r=await Promise.all(t.map(async e=>await readFile(e,`utf8`)));return{kind:n.kind,modules:r.map((e,t)=>({slot:n.slots[t],source:e}))}}export{computeDevelopmentHostFingerprint};
|
|
1
|
+
import{createHash}from"node:crypto";import{readFile}from"node:fs/promises";import{readDevelopmentEnvironmentHostValues}from"#cli/dev/environment.js";import{computeChannelRouteRegistrations}from"#internal/nitro/host/channel-routes.js";import{usesLocalVercelSchedules}from"#internal/schedules/consumer-route.js";async function computeDevelopmentHostFingerprint(e){let t=e.compileResult.manifest,n=[t,...t.subagents.map(e=>e.agent)],r={agentName:t.config.name,bundler:{externalDependencies:[...new Set([...t.config.build?.externalDependencies??[],...t.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])])].sort((e,t)=>e.localeCompare(t)),extensionScopes:n.flatMap(e=>e.extensionMounts).map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})).sort((e,t)=>e.mountId.localeCompare(t.mountId)),sandboxProviders:[...new Set(n.map(e=>e.sandbox?.providerName).filter(e=>e!==void 0))].sort((e,t)=>e.localeCompare(t))},channels:computeChannelRouteRegistrations(e),environment:readDevelopmentEnvironmentHostValues(e.appRoot),instrumentation:await readInstrumentationSource(e),localScheduleConsumer:usesLocalVercelSchedules(t),workflow:{authoredSources:e.generation.workflowSourceFingerprint??null,enabled:n.some(e=>e.tools.some(e=>e.workflowProgram!==void 0)),world:t.config.experimental?.workflow?.world??`local`}};return createHash(`sha256`).update(JSON.stringify(r)).digest(`hex`)}async function readInstrumentationSource(e){let t=e.compiledArtifacts.instrumentationSourcePaths,n=e.compiledArtifacts.instrumentationLayout;if(t===void 0||n===void 0)return null;let r=await Promise.all(t.map(async e=>await readFile(e,`utf8`)));return{kind:n.kind,modules:r.map((e,t)=>({slot:n.slots[t],source:e}))}}export{computeDevelopmentHostFingerprint};
|