eve 0.67.0 → 0.67.2
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 +19 -0
- package/dist/src/channel/channel-address.d.ts +2 -2
- package/dist/src/channel/compiled-channel.d.ts +3 -2
- package/dist/src/channel/cross-channel-receive.d.ts +1 -18
- package/dist/src/channel/cross-channel-receive.js +1 -1
- package/dist/src/channel/forwarded-principal.d.ts +3 -2
- package/dist/src/channel/resolve-text.d.ts +2 -1
- package/dist/src/channel/schedule-auth.d.ts +0 -2
- package/dist/src/channel/schedule-auth.js +1 -1
- package/dist/src/channel/schedule.d.ts +2 -2
- package/dist/src/channel/session-callback.d.ts +2 -1
- package/dist/src/channel/types.d.ts +0 -7
- package/dist/src/chunks/{use-eve-agent-OCHP4s0z.js → use-eve-agent-D4HVZBjn.js} +1 -1
- package/dist/src/chunks/{use-eve-agent-DzdyI97Z.js → use-eve-agent-DXcE_8Ja.js} +1 -1
- package/dist/src/cli/acp/command.d.ts +2 -1
- package/dist/src/cli/agent-command.d.ts +2 -1
- package/dist/src/cli/agent-detection.d.ts +0 -1
- package/dist/src/cli/agent-detection.js +1 -1
- package/dist/src/cli/application-command.d.ts +2 -1
- package/dist/src/cli/application-root.d.ts +3 -8
- package/dist/src/cli/application-root.js +1 -1
- package/dist/src/cli/commands/agent-instructions.d.ts +0 -4
- package/dist/src/cli/commands/agent-instructions.js +3 -3
- package/dist/src/cli/commands/extension-init.js +1 -1
- package/dist/src/cli/commands/init-agent-workspace.js +1 -1
- package/dist/src/cli/commands/init-project.d.ts +0 -1
- package/dist/src/cli/commands/init-project.js +1 -1
- package/dist/src/cli/commands/init-target.d.ts +1 -1
- package/dist/src/cli/commands/init-telemetry.d.ts +2 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/registry-declared-setups.d.ts +2 -1
- package/dist/src/cli/commands/registry-install-transaction.d.ts +0 -13
- package/dist/src/cli/commands/registry-install-transaction.js +1 -1
- package/dist/src/cli/commands/registry-pnpm-build-policy-flow.d.ts +1 -1
- package/dist/src/cli/commands/registry-presentation.d.ts +0 -1
- package/dist/src/cli/commands/registry-presentation.js +1 -1
- package/dist/src/cli/commands/registry-project.d.ts +2 -1
- package/dist/src/cli/commands/registry.d.ts +0 -4
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/setup-headless.d.ts +2 -1
- package/dist/src/cli/commands/vercel-non-interactive.d.ts +2 -1
- package/dist/src/cli/dev/diagnostic-dump.d.ts +0 -2
- package/dist/src/cli/dev/diagnostic-dump.js +1 -1
- package/dist/src/cli/dev/diagnostic-sink.d.ts +3 -2
- package/dist/src/cli/dev/environment.js +1 -1
- package/dist/src/cli/dev/tui/agent-header.d.ts +2 -1
- package/dist/src/cli/dev/tui/argument-typeahead.d.ts +2 -1
- package/dist/src/cli/dev/tui/dev-rebuild-status.d.ts +2 -1
- package/dist/src/cli/dev/tui/diagnostic-presentation.d.ts +2 -1
- package/dist/src/cli/dev/tui/errors.d.ts +2 -7
- package/dist/src/cli/dev/tui/errors.js +1 -1
- package/dist/src/cli/dev/tui/flow-drawer.d.ts +2 -1
- package/dist/src/cli/dev/tui/line-editor.d.ts +1 -1
- package/dist/src/cli/dev/tui/mcp-connection-status.d.ts +2 -1
- package/dist/src/cli/dev/tui/message-queue.d.ts +4 -3
- package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +2 -1
- package/dist/src/cli/dev/tui/provider-picker.d.ts +3 -2
- package/dist/src/cli/dev/tui/question-panel.d.ts +2 -1
- package/dist/src/cli/dev/tui/registry-result-message.d.ts +3 -4
- package/dist/src/cli/dev/tui/registry-result-message.js +1 -1
- package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +3 -2
- package/dist/src/cli/dev/tui/runner.d.ts +0 -1
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-panel.d.ts +2 -2
- package/dist/src/cli/dev/tui/setup-selection-input.d.ts +2 -2
- package/dist/src/cli/dev/tui/status-line.d.ts +2 -1
- package/dist/src/cli/dev/tui/stream-format.d.ts +3 -2
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -2
- package/dist/src/cli/dev/tui/theme.d.ts +1 -1
- package/dist/src/cli/dev/tui/tool-block-groups.d.ts +3 -2
- package/dist/src/cli/dev/tui/tool-presentation.d.ts +2 -1
- package/dist/src/cli/dev/tui/traces/trace-content.d.ts +0 -9
- package/dist/src/cli/dev/tui/traces/trace-content.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-view.d.ts +3 -2
- package/dist/src/cli/dev/tui/traces/trace-viewer-session.d.ts +2 -1
- package/dist/src/cli/dev/tui/traces/trace-viewer-state.d.ts +2 -3
- package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
- package/dist/src/cli/dev/ui-options.d.ts +3 -2
- package/dist/src/cli/dev/url-target.d.ts +2 -1
- package/dist/src/cli/invoke/command.d.ts +0 -11
- package/dist/src/cli/invoke/command.js +1 -1
- package/dist/src/cli/invoke/result.d.ts +1 -1
- package/dist/src/cli/telemetry/index.d.ts +0 -6
- package/dist/src/cli/telemetry/preference.d.ts +2 -1
- package/dist/src/cli/ui/alt-screen.d.ts +3 -2
- package/dist/src/cli/ui/live-region.d.ts +3 -2
- package/dist/src/cli/ui/output.d.ts +1 -16
- package/dist/src/cli/ui/output.js +2 -5
- package/dist/src/client/eve-agent-store-helpers.d.ts +0 -1
- package/dist/src/client/eve-agent-store-helpers.js +1 -1
- package/dist/src/client/eve-agent-store.js +1 -1
- package/dist/src/client/message-action-parts.d.ts +2 -1
- package/dist/src/client/session-utils.d.ts +3 -2
- package/dist/src/compiled/.vendor-stamp.json +6 -6
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +4 -3
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +23 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/hook-wake.d.ts +69 -36
- package/dist/src/compiled/@workflow/core/runtime/lifecycle-hooks.d.ts +25 -22
- package/dist/src/compiled/@workflow/core/runtime/run-spec-version.d.ts +16 -0
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +59 -1
- package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +3 -2
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +34 -12
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/serialization.d.ts +7 -2
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +29 -0
- package/dist/src/compiled/@workflow/core/types.d.ts +1 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +13 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +14 -4
- package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +2 -1
- package/dist/src/compiled/@workflow/world/shared.d.ts +24 -0
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +23 -0
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-DzJovO_f.js → attribute-changes-D721NpZv.js} +3 -3
- package/dist/src/compiled/_chunks/workflow/{dist-BQSf8Hax.js → dist-BUFGAKRb.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-CaNNONeg.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{frames-qKc30rjg.js → frames-Dr9fHWdo.js} +2 -2
- package/dist/src/compiled/_chunks/workflow/{global-BQnKzRXo.js → global-DKbOgrts.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/helpers-DkKxg_yn.js +1 -0
- package/dist/src/compiled/_chunks/workflow/logger-D4GJNTk4.js +14 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-uTW-jBYz.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-5DmiMN9b.js +1 -0
- package/dist/src/compiled/_chunks/workflow/serialization-CNIYl1D3.js +3 -0
- package/dist/src/compiled/_chunks/workflow/sleep-DFKgN7UG.js +1 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-3_1djUuL.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{ws-transport-BrsMYqJg.js → ws-transport--rYOVIaf.js} +1 -1
- package/dist/src/compiler/artifacts.d.ts +4 -27
- package/dist/src/compiler/artifacts.js +1 -1
- package/dist/src/compiler/compile-agent.d.ts +2 -1
- package/dist/src/compiler/compile-agent.js +1 -1
- package/dist/src/compiler/diagnostics.d.ts +0 -11
- package/dist/src/compiler/diagnostics.js +1 -1
- package/dist/src/compiler/manifest.d.ts +0 -4
- package/dist/src/compiler/module-map.d.ts +1 -5
- package/dist/src/compiler/module-map.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-connection.d.ts +2 -1
- package/dist/src/compiler/normalize-instructions.d.ts +2 -6
- package/dist/src/compiler/normalize-instructions.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.d.ts +0 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-skill.d.ts +2 -1
- package/dist/src/compiler/project-sources.d.ts +0 -14
- package/dist/src/compiler/project-sources.js +1 -1
- package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
- package/dist/src/compiler/source-graph.d.ts +1 -2
- package/dist/src/compiler/source-graph.js +1 -1
- package/dist/src/context/build-base-tool-context.d.ts +2 -1
- package/dist/src/context/dynamic-tool-lifecycle.d.ts +0 -4
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/dynamic-tool-metadata.d.ts +0 -1
- package/dist/src/context/dynamic-tool-metadata.js +1 -1
- package/dist/src/context/memory-lifecycle.d.ts +0 -8
- package/dist/src/context/memory-lifecycle.js +1 -1
- package/dist/src/discover/connections.d.ts +0 -15
- package/dist/src/discover/connections.js +1 -1
- package/dist/src/discover/diagnostics.d.ts +0 -12
- package/dist/src/discover/diagnostics.js +1 -1
- package/dist/src/discover/discover-agent.js +1 -1
- package/dist/src/discover/discover-subagent.d.ts +0 -1
- package/dist/src/discover/discover-subagent.js +1 -1
- package/dist/src/discover/extensions.d.ts +3 -10
- package/dist/src/discover/extensions.js +1 -1
- package/dist/src/discover/filesystem.d.ts +5 -9
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/discover/grammar.d.ts +0 -46
- package/dist/src/discover/grammar.js +1 -1
- package/dist/src/discover/manifest.d.ts +5 -4
- package/dist/src/discover/memory.d.ts +0 -1
- package/dist/src/discover/memory.js +1 -1
- package/dist/src/discover/named-source-directory.js +1 -1
- package/dist/src/discover/project-source.d.ts +2 -1
- package/dist/src/discover/project.js +1 -1
- package/dist/src/discover/sandbox.js +1 -1
- package/dist/src/discover/skills.d.ts +0 -4
- package/dist/src/discover/skills.js +1 -1
- package/dist/src/evals/cli/eval-client.d.ts +2 -1
- package/dist/src/evals/judge.d.ts +2 -1
- package/dist/src/evals/runner/execute-task.d.ts +1 -1
- package/dist/src/evals/types.d.ts +1 -1
- package/dist/src/eve-channel/support.d.ts +1 -3
- package/dist/src/eve-channel/support.js +1 -1
- package/dist/src/execution/dynamic-workflow/schema.d.ts +2 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/effective-agent-config.d.ts +2 -1
- package/dist/src/execution/eve-workflow-attributes.d.ts +3 -5
- package/dist/src/execution/eve-workflow-attributes.js +1 -1
- package/dist/src/execution/history-view.d.ts +2 -1
- package/dist/src/execution/node-step.d.ts +3 -2
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/sandbox/active-handles.d.ts +2 -4
- package/dist/src/execution/sandbox/active-handles.js +1 -1
- package/dist/src/execution/sandbox/bash.d.ts +2 -1
- package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
- package/dist/src/execution/sandbox/bindings/docker.js +1 -1
- package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -6
- package/dist/src/execution/sandbox/bindings/immutable-resources.js +1 -1
- package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
- package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +3 -2
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -3
- package/dist/src/execution/sandbox/bindings/microsandbox-options.js +1 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -1
- package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
- package/dist/src/execution/sandbox/bindings/vercel.d.ts +1 -1
- package/dist/src/execution/sandbox/dockerfile.d.ts +0 -1
- package/dist/src/execution/sandbox/dockerfile.js +1 -1
- package/dist/src/execution/sandbox/ensure.d.ts +2 -1
- package/dist/src/execution/sandbox/ensure.js +1 -1
- package/dist/src/execution/sandbox/prewarm.d.ts +1 -18
- package/dist/src/execution/sandbox/prewarm.js +1 -1
- package/dist/src/execution/sandbox/require-sandbox.d.ts +0 -11
- package/dist/src/execution/sandbox/require-sandbox.js +1 -1
- package/dist/src/execution/sandbox/truncate-output.d.ts +2 -5
- package/dist/src/execution/sandbox/truncate-output.js +2 -2
- package/dist/src/execution/session/admission.d.ts +3 -2
- package/dist/src/execution/session/event-sink.d.ts +2 -1
- package/dist/src/execution/session/finalization.d.ts +2 -1
- package/dist/src/execution/session/handoff.d.ts +3 -2
- package/dist/src/execution/session/route-selected-delivery.d.ts +2 -1
- package/dist/src/execution/session/timeout-control.d.ts +2 -1
- package/dist/src/execution/session-activity.d.ts +0 -3
- package/dist/src/execution/session-activity.js +1 -1
- package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
- package/dist/src/execution/session.d.ts +3 -2
- package/dist/src/execution/stable-workflow-names.d.ts +0 -6
- package/dist/src/execution/stable-workflow-names.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/ask-question-workflow.js +1 -1
- package/dist/src/execution/tools/connection-search.js +1 -1
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +2 -1
- package/dist/src/execution/tools/subagent/start.js +1 -1
- package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +4 -3
- package/dist/src/execution/tools/workflow/background.d.ts +2 -6
- package/dist/src/execution/tools/workflow/background.js +1 -1
- package/dist/src/execution/tools/workflow/owner-channels.d.ts +1 -1
- package/dist/src/execution/tools/workflow/workflow-owner-background.d.ts +2 -1
- package/dist/src/execution/web-fetch/execute.d.ts +2 -2
- package/dist/src/execution/web-fetch/request.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/computer-use-driver-source.d.ts +0 -2
- package/dist/src/extensions/code/extension/lib/computer-use-driver-source.js +57 -57
- package/dist/src/extensions/code/extension/lib/computer-use.d.ts +1 -1
- package/dist/src/extensions/code/extension/lib/generated-paths.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/grep-search.d.ts +5 -5
- package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
- package/dist/src/extensions/code/extension/lib/guidelines.d.ts +2 -1
- package/dist/src/extensions/code/extension/lib/patch.d.ts +3 -2
- package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +1 -2
- package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
- package/dist/src/extensions/code/extension/lib/prwatch-registry.d.ts +2 -1
- package/dist/src/framework/host-inventory.d.ts +3 -2
- package/dist/src/harness/approval-candidates.d.ts +4 -3
- package/dist/src/harness/approval-delivery-coordinator.d.ts +2 -1
- package/dist/src/harness/authorization.d.ts +0 -9
- package/dist/src/harness/authorization.js +1 -1
- package/dist/src/harness/compaction-prompt.d.ts +2 -1
- package/dist/src/harness/coordination.d.ts +0 -4
- package/dist/src/harness/coordination.js +1 -1
- package/dist/src/harness/input-requests.d.ts +1 -10
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +0 -5
- package/dist/src/harness/pending-input-batches.js +1 -1
- package/dist/src/harness/provider-safety.d.ts +9 -0
- package/dist/src/harness/provider-safety.js +1 -1
- package/dist/src/harness/provider-tools.d.ts +2 -1
- package/dist/src/harness/session-limit-continuation.d.ts +0 -4
- package/dist/src/harness/session-limit-continuation.js +1 -1
- package/dist/src/harness/session-usage-limits.d.ts +2 -1
- package/dist/src/harness/step-hooks.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tool-model-output.d.ts +2 -1
- package/dist/src/harness/turn-cancellation.d.ts +2 -7
- package/dist/src/harness/turn-cancellation.js +1 -1
- package/dist/src/harness/turn-client-context.d.ts +2 -1
- package/dist/src/harness/workflow-stream-error.d.ts +0 -7
- package/dist/src/harness/workflow-stream-error.js +1 -1
- package/dist/src/instrumentation/runtime.js +1 -1
- package/dist/src/instrumentation/state.d.ts +2 -2
- package/dist/src/internal/agent-name.d.ts +0 -2
- package/dist/src/internal/agent-name.js +1 -1
- package/dist/src/internal/application/build-profile.d.ts +2 -2
- package/dist/src/internal/application/cache-metadata.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +1 -1
- package/dist/src/internal/application/dev-environment.d.ts +2 -8
- package/dist/src/internal/application/dev-environment.js +1 -1
- package/dist/src/internal/application/optional-package-import.js +1 -1
- package/dist/src/internal/application/optional-package-install.js +1 -1
- package/dist/src/internal/application/output-publication-lock.js +1 -1
- package/dist/src/internal/application/output-publication.d.ts +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/application/paths.d.ts +0 -5
- package/dist/src/internal/application/paths.js +1 -1
- package/dist/src/internal/application/tsconfig-dependencies.d.ts +0 -16
- package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
- package/dist/src/internal/authored-asset-import-plugin.js +1 -1
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-definition/source-identity.d.ts +1 -1
- package/dist/src/internal/authored-module-evaluation-error.js +1 -1
- package/dist/src/internal/authored-module-loader.js +1 -1
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
- package/dist/src/internal/bundler/extension-scope-plugin.d.ts +2 -1
- package/dist/src/internal/bundler/extension-scope-plugin.js +1 -1
- package/dist/src/internal/bundler/nitro-rolldown.d.ts +3 -12
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
- package/dist/src/internal/bundler/vendored-dependency-log.d.ts +7 -0
- package/dist/src/internal/bundler/vendored-dependency-log.js +1 -0
- package/dist/src/internal/eve-project-root.d.ts +0 -3
- package/dist/src/internal/eve-project-root.js +1 -1
- package/dist/src/internal/external-resources-snapshot.d.ts +1 -1
- package/dist/src/internal/external-resources.d.ts +0 -1
- package/dist/src/internal/external-resources.js +1 -1
- package/dist/src/internal/gateway.d.ts +2 -0
- package/dist/src/internal/gateway.js +1 -1
- package/dist/src/internal/helpers/markdown.js +1 -1
- package/dist/src/internal/instrumentation-layout.js +1 -1
- package/dist/src/internal/invocation/metadata.d.ts +1 -1
- package/dist/src/internal/materialized-authored-modules.d.ts +2 -1
- package/dist/src/internal/materialized-authored-modules.js +1 -1
- package/dist/src/internal/mcp/protected-resource.d.ts +2 -1
- package/dist/src/internal/mcp/streamable-http-server.d.ts +4 -5
- package/dist/src/internal/mcp/streamable-http-server.js +1 -1
- package/dist/src/internal/model-catalog.d.ts +2 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +0 -4
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot-copy.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot-local-roots.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot.d.ts +0 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot.js +1 -1
- package/dist/src/internal/nitro/development-generation.d.ts +0 -1
- package/dist/src/internal/nitro/development-generation.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/build-extension.js +1 -1
- package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
- package/dist/src/internal/nitro/host/channel-routes.d.ts +1 -1
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/dev-host-candidate.d.ts +2 -1
- package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +1 -1
- package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
- package/dist/src/internal/nitro/host/extension-external-dependency-plugin.js +1 -1
- package/dist/src/internal/nitro/host/local-tracing-runtime-plugin.js +1 -1
- package/dist/src/internal/nitro/host/nitro-bundler-config.js +1 -1
- package/dist/src/internal/nitro/host/schedule-task-routes.d.ts +2 -26
- package/dist/src/internal/nitro/host/schedule-task-routes.js +2 -2
- package/dist/src/internal/nitro/host/start-production-server.js +1 -1
- package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
- package/dist/src/internal/nitro/routes/channel-request-instrumentation.d.ts +2 -1
- package/dist/src/internal/nitro/routes/channel-route-context.d.ts +1 -1
- package/dist/src/internal/nitro/routes/runtime-stack.d.ts +2 -1
- package/dist/src/internal/resolve-model-endpoint-status.d.ts +2 -1
- package/dist/src/internal/vercel/assemble-eve-services.d.ts +3 -2
- package/dist/src/internal/vercel/build-agent-workspace.js +1 -1
- package/dist/src/internal/vercel/eve-service-contribution.d.ts +2 -3
- package/dist/src/internal/vercel/eve-service-contribution.js +1 -1
- package/dist/src/internal/vercel/project-link.d.ts +2 -1
- package/dist/src/internal/vercel/project-link.js +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/internal/workflow/development-world-codec.d.ts +2 -1
- package/dist/src/internal/workflow/development-world-server.js +1 -1
- package/dist/src/internal/workflow/world-compatibility.d.ts +2 -1
- package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -9
- package/dist/src/internal/workflow-bundle/builder-support.js +2 -3
- package/dist/src/internal/workflow-bundle/builder.js +2 -2
- package/dist/src/internal/workflow-bundle/dynamic-tool-transform.d.ts +0 -1
- package/dist/src/internal/workflow-bundle/dynamic-tool-transform.js +1 -1
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
- package/dist/src/protocol/activity.d.ts +3 -3
- package/dist/src/protocol/activity.js +1 -1
- package/dist/src/protocol/baggage.d.ts +2 -2
- package/dist/src/protocol/cancel-turn.d.ts +0 -2
- package/dist/src/protocol/event-dedupe.d.ts +2 -1
- package/dist/src/protocol/event-id.d.ts +0 -6
- package/dist/src/protocol/event-id.js +1 -1
- package/dist/src/protocol/traceparent.d.ts +2 -1
- package/dist/src/public/channels/chat-sdk/audience.d.ts +2 -4
- package/dist/src/public/channels/chat-sdk/audience.js +1 -1
- package/dist/src/public/channels/discord/discordChannel.d.ts +1 -1
- package/dist/src/public/channels/github/api.d.ts +2 -22
- package/dist/src/public/channels/github/api.js +1 -1
- package/dist/src/public/channels/github/auth.d.ts +0 -9
- package/dist/src/public/channels/github/auth.js +1 -1
- package/dist/src/public/channels/github/binding.d.ts +3 -2
- package/dist/src/public/channels/github/checkout.d.ts +3 -3
- package/dist/src/public/channels/github/defaults.d.ts +3 -2
- package/dist/src/public/channels/github/githubChannel.d.ts +1 -1
- package/dist/src/public/channels/github/limits.d.ts +0 -2
- package/dist/src/public/channels/github/limits.js +2 -2
- package/dist/src/public/channels/github/pr-context.d.ts +2 -3
- package/dist/src/public/channels/github/pr-context.js +1 -1
- package/dist/src/public/channels/github/state.d.ts +2 -1
- package/dist/src/public/channels/github/verify.d.ts +2 -1
- package/dist/src/public/channels/linear/defaults.d.ts +2 -1
- package/dist/src/public/channels/linear/inbound-images.d.ts +2 -1
- package/dist/src/public/channels/slack/app-manifest.d.ts +3 -4
- package/dist/src/public/channels/slack/app-manifest.js +1 -1
- package/dist/src/public/channels/slack/hitl.d.ts +0 -4
- package/dist/src/public/channels/slack/hitl.js +2 -2
- package/dist/src/public/channels/slack/inbound.d.ts +2 -1
- package/dist/src/public/channels/slack/model-context.d.ts +0 -18
- package/dist/src/public/channels/slack/model-context.js +1 -1
- package/dist/src/public/channels/slack/mrkdwn.d.ts +0 -2
- package/dist/src/public/channels/slack/mrkdwn.js +1 -1
- package/dist/src/public/channels/slack/privacy.d.ts +2 -1
- package/dist/src/public/channels/slack/verify.d.ts +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +1 -1
- package/dist/src/public/channels/telegram/audience.d.ts +2 -3
- package/dist/src/public/channels/telegram/audience.js +1 -1
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +1 -1
- package/dist/src/public/channels/twilio/defaults.d.ts +0 -7
- package/dist/src/public/channels/twilio/defaults.js +1 -1
- package/dist/src/public/channels/twilio/routing.d.ts +2 -1
- package/dist/src/public/channels/twilio/twilioChannel.d.ts +1 -1
- package/dist/src/public/channels/upload-policy.d.ts +0 -11
- package/dist/src/public/channels/upload-policy.js +1 -1
- package/dist/src/public/definitions/channel.d.ts +1 -1
- package/dist/src/public/index.js +1 -1
- package/dist/src/public/memory/file/provider.js +1 -1
- package/dist/src/public/models/openai/chatgpt/model.d.ts +2 -1
- package/dist/src/public/models/openai/chatgpt/token-broker.d.ts +1 -1
- package/dist/src/public/next/server.js +1 -1
- package/dist/src/public/nuxt/dev-server.d.ts +3 -2
- package/dist/src/public/nuxt/dev-server.js +1 -1
- package/dist/src/public/skills/index.js +1 -1
- package/dist/src/public/sveltekit/dev-server.d.ts +3 -2
- package/dist/src/public/sveltekit/dev-server.js +1 -1
- package/dist/src/public/tools/index.js +1 -1
- package/dist/src/runtime/compiled-artifacts-source.d.ts +0 -4
- package/dist/src/runtime/compiled-artifacts-source.js +1 -1
- package/dist/src/runtime/connections/instance-identity.d.ts +0 -3
- package/dist/src/runtime/connections/instance-identity.js +1 -1
- package/dist/src/runtime/connections/mcp-tracing.d.ts +1 -6
- package/dist/src/runtime/connections/mcp-tracing.js +1 -1
- package/dist/src/runtime/connections/openapi-client.d.ts +1 -1
- package/dist/src/runtime/connections/scoped-authorization.d.ts +0 -9
- package/dist/src/runtime/connections/scoped-authorization.js +1 -1
- package/dist/src/runtime/hooks/registry.d.ts +0 -7
- package/dist/src/runtime/hooks/registry.js +1 -1
- package/dist/src/runtime/loaders/artifact-paths.d.ts +2 -1
- package/dist/src/runtime/loaders/bundled-artifacts.d.ts +0 -1
- package/dist/src/runtime/loaders/bundled-artifacts.js +1 -1
- package/dist/src/runtime/resolve-agent.d.ts +2 -2
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-dynamic-tool.d.ts +0 -16
- package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
- package/dist/src/runtime/sandbox/prepared-artifacts.d.ts +1 -2
- package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
- package/dist/src/runtime/schedules/register.d.ts +0 -4
- package/dist/src/runtime/schedules/register.js +1 -1
- package/dist/src/self-modification/credentials.d.ts +1 -4
- package/dist/src/self-modification/credentials.js +1 -1
- package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.js +1 -1
- package/dist/src/self-modification/filesystem.d.ts +0 -1
- package/dist/src/self-modification/filesystem.js +1 -1
- package/dist/src/self-modification/git-workspace.d.ts +0 -3
- package/dist/src/self-modification/git-workspace.js +1 -1
- package/dist/src/self-modification/github-publisher.d.ts +2 -1
- package/dist/src/self-modification/migration.d.ts +0 -1
- package/dist/src/self-modification/migration.js +1 -1
- package/dist/src/self-modification/mode.d.ts +2 -1
- package/dist/src/self-modification/proposal.d.ts +0 -2
- package/dist/src/self-modification/proposal.js +2 -2
- package/dist/src/self-modification/setup.js +1 -1
- package/dist/src/services/dev-client/agent-info-probe.d.ts +2 -1
- package/dist/src/services/dev-client/request-headers.d.ts +1 -1
- package/dist/src/services/dev-client/vercel-auth-error.d.ts +0 -8
- package/dist/src/services/dev-client/vercel-auth-error.js +2 -3
- package/dist/src/setup/ai-gateway-api-key.d.ts +2 -1
- package/dist/src/setup/append-env.d.ts +3 -2
- package/dist/src/setup/ask.d.ts +3 -3
- package/dist/src/setup/boxes/apply-ai-gateway-credential.d.ts +2 -1
- package/dist/src/setup/boxes/deploy-project.d.ts +4 -3
- package/dist/src/setup/boxes/link-project.d.ts +2 -1
- package/dist/src/setup/boxes/resolve-provisioning.d.ts +2 -1
- package/dist/src/setup/boxes/select-model.d.ts +2 -37
- package/dist/src/setup/boxes/select-model.js +1 -1
- package/dist/src/setup/cli/option-row.d.ts +1 -1
- package/dist/src/setup/cli/prompt-ui.d.ts +0 -10
- package/dist/src/setup/cli/prompt-ui.js +1 -1
- package/dist/src/setup/cli/rail-log.d.ts +0 -2
- package/dist/src/setup/cli/rail-log.js +2 -2
- package/dist/src/setup/connect-provisioning.d.ts +2 -1
- package/dist/src/setup/connection-connector.d.ts +2 -1
- package/dist/src/setup/flows/link.d.ts +2 -1
- package/dist/src/setup/flows/model-login.d.ts +1 -1
- package/dist/src/setup/flows/model-source-change.js +1 -1
- package/dist/src/setup/flows/provider.d.ts +2 -45
- package/dist/src/setup/flows/provider.js +1 -4
- package/dist/src/setup/flows/registry-session.d.ts +3 -2
- package/dist/src/setup/integrations/discord/api.d.ts +2 -1
- package/dist/src/setup/integrations/discord/connect.d.ts +3 -3
- package/dist/src/setup/integrations/discord/connect.js +1 -1
- package/dist/src/setup/integrations/discord/setup.d.ts +2 -1
- package/dist/src/setup/integrations/file-memory/vercel.d.ts +1 -1
- package/dist/src/setup/integrations/github/connect.d.ts +3 -3
- package/dist/src/setup/integrations/github/connect.js +1 -1
- package/dist/src/setup/integrations/github/setup.d.ts +1 -1
- package/dist/src/setup/integrations/linear/connect.d.ts +2 -2
- package/dist/src/setup/integrations/linear/connect.js +1 -1
- package/dist/src/setup/integrations/linear/setup.d.ts +1 -1
- package/dist/src/setup/integrations/linq/connect.d.ts +3 -4
- package/dist/src/setup/integrations/linq/connect.js +1 -1
- package/dist/src/setup/integrations/linq/management.d.ts +2 -1
- package/dist/src/setup/integrations/linq/setup.d.ts +1 -9
- package/dist/src/setup/integrations/linq/setup.js +1 -1
- package/dist/src/setup/integrations/photon/connect.d.ts +5 -7
- package/dist/src/setup/integrations/photon/connect.js +1 -1
- package/dist/src/setup/integrations/photon/management.d.ts +5 -4
- package/dist/src/setup/integrations/photon/setup-flow.d.ts +2 -1
- package/dist/src/setup/integrations/registry.d.ts +0 -2
- package/dist/src/setup/integrations/registry.js +1 -1
- package/dist/src/setup/integrations/runner.d.ts +3 -2
- package/dist/src/setup/integrations/shared/scaffold.d.ts +2 -1
- package/dist/src/setup/integrations/shared/vercel-project.d.ts +2 -1
- package/dist/src/setup/integrations/shopify/setup.d.ts +2 -1
- package/dist/src/setup/integrations/teams/connect.d.ts +3 -3
- package/dist/src/setup/integrations/teams/connect.js +1 -1
- package/dist/src/setup/integrations/teams/setup.d.ts +2 -1
- package/dist/src/setup/integrations/web/setup.d.ts +2 -1
- package/dist/src/setup/primitives/pm/pnpm.js +1 -1
- package/dist/src/setup/primitives/pm/process-result.d.ts +2 -1
- package/dist/src/setup/primitives/pm/shared.d.ts +2 -1
- package/dist/src/setup/primitives/process-output.d.ts +2 -1
- package/dist/src/setup/primitives/run-vercel.js +1 -1
- package/dist/src/setup/project-resolution.d.ts +0 -2
- package/dist/src/setup/project-resolution.js +1 -1
- package/dist/src/setup/provider-settings.js +1 -1
- package/dist/src/setup/quit-guard.d.ts +3 -2
- package/dist/src/setup/scaffold/connections/catalog.d.ts +0 -13
- package/dist/src/setup/scaffold/connections/catalog.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.d.ts +2 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/files.d.ts +2 -1
- package/dist/src/setup/scaffold/update/channels.d.ts +0 -1
- package/dist/src/setup/scaffold/version-tokens.js +1 -1
- package/dist/src/setup/scaffold/workspace-glob.d.ts +0 -1
- package/dist/src/setup/scaffold/workspace-glob.js +1 -1
- package/dist/src/setup/scaffold/workspace-root.d.ts +2 -1
- package/dist/src/setup/scaffold/workspace-root.js +1 -1
- package/dist/src/setup/slack-connect-create.d.ts +1 -1
- package/dist/src/setup/slack-connect-lifecycle.d.ts +5 -5
- package/dist/src/setup/slack-connect.d.ts +0 -4
- package/dist/src/setup/slack-connect.js +1 -1
- package/dist/src/setup/slackbot.d.ts +3 -3
- package/dist/src/setup/slackbot.js +1 -1
- package/dist/src/setup/vercel-api-failure.d.ts +0 -2
- package/dist/src/setup/vercel-api-failure.js +1 -1
- package/dist/src/setup/vercel-project-api.d.ts +1 -1
- package/dist/src/setup/vercel-project.d.ts +4 -38
- package/dist/src/setup/vercel-project.js +0 -0
- package/dist/src/shared/action-types.d.ts +1 -58
- package/dist/src/shared/action-types.js +1 -1
- package/dist/src/shared/agent-definition.d.ts +0 -3
- package/dist/src/shared/agent-turn-outcome.d.ts +1 -3
- package/dist/src/shared/agent-turn-outcome.js +1 -1
- package/dist/src/shared/chatgpt-model.d.ts +0 -1
- package/dist/src/shared/chatgpt-model.js +1 -1
- package/dist/src/shared/conversation-context.d.ts +2 -1
- package/dist/src/shared/conversation-identity.d.ts +2 -0
- package/dist/src/shared/conversation-identity.js +1 -0
- package/dist/src/shared/extension-package-contract.d.ts +2 -1
- package/dist/src/shared/forwarded-trace-policy.d.ts +3 -2
- package/dist/src/shared/gateway-service-tier.d.ts +2 -1
- package/dist/src/shared/memory-state.d.ts +0 -8
- package/dist/src/shared/memory-state.js +1 -1
- package/dist/src/shared/sandbox-environment.d.ts +0 -1
- package/dist/src/shared/sandbox-environment.js +1 -1
- package/dist/src/shared/skill-package.d.ts +0 -5
- package/dist/src/shared/skill-package.js +1 -1
- package/dist/src/shared/skill-paths.d.ts +0 -13
- package/dist/src/shared/skill-paths.js +2 -2
- package/dist/src/shared/token-usage.d.ts +0 -7
- package/dist/src/shared/token-usage.js +1 -1
- package/dist/src/shared/ulid.d.ts +2 -8
- package/dist/src/shared/ulid.js +1 -1
- package/dist/src/shared/vercel-project.d.ts +2 -1
- package/dist/src/shared/vercel-services.d.ts +2 -2
- package/dist/src/shared/workflow-sandbox.d.ts +0 -7
- package/dist/src/source-change/agent-config-ast.d.ts +2 -1
- package/dist/src/source-change/agent-config-string-path.d.ts +2 -2
- package/dist/src/source-change/apply-agent-model-settings.d.ts +2 -1
- package/dist/src/source-change/apply-model-selection.d.ts +2 -1
- package/dist/src/source-change/static-source-change.d.ts +4 -3
- package/dist/src/subagents/invocation.d.ts +1 -1
- package/dist/src/subagents/tool.d.ts +2 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/definition.d.ts +0 -3
- package/dist/src/tools/durable-callbacks.d.ts +1 -2
- package/dist/src/tools/durable-callbacks.js +1 -1
- package/dist/src/tools/framework/agent.js +1 -1
- package/dist/src/tools/framework/task-cancel.d.ts +1 -1
- package/dist/src/tools/native-definition.d.ts +2 -1
- package/dist/src/tracing/agent-action-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-invocation-coordinator.js +1 -1
- package/dist/src/tracing/agent-memory-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-otel-attributes.js +1 -1
- package/dist/src/tracing/agent-otel-provider.d.ts +2 -1
- package/dist/src/tracing/agent-span-id-generator.d.ts +0 -1
- package/dist/src/tracing/agent-span-id-generator.js +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.d.ts +2 -1
- package/dist/src/tracing/agent-tool-span-context.d.ts +3 -2
- package/dist/src/tracing/agent-trace-context-store.d.ts +0 -2
- package/dist/src/tracing/agent-trace-context-store.js +1 -1
- package/dist/src/tracing/agent-trace-state.d.ts +0 -24
- package/dist/src/tracing/agent-trace-state.js +1 -1
- package/dist/src/tracing/batch-span-processor.d.ts +2 -1
- package/dist/src/tracing/conversation-context.d.ts +0 -2
- package/dist/src/tracing/conversation-context.js +1 -1
- package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
- package/dist/src/tracing/local-trace-analysis.d.ts +4 -3
- package/dist/src/tracing/local-trace-discovery-index.d.ts +0 -2
- package/dist/src/tracing/local-trace-discovery-index.js +1 -1
- package/dist/src/tracing/local-trace-query.d.ts +2 -1
- package/dist/src/tracing/local-trace-retention.d.ts +4 -4
- package/dist/src/tracing/telemetry-budget.d.ts +0 -1
- package/dist/src/tracing/telemetry-budget.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +7 -0
- package/package.json +8 -8
- package/dist/src/cli/commands/channel-add-conflicts.d.ts +0 -21
- package/dist/src/cli/commands/channel-add-conflicts.js +0 -1
- package/dist/src/cli/commands/init-confirm.d.ts +0 -12
- package/dist/src/cli/commands/init-confirm.js +0 -1
- package/dist/src/cli/commands/registry-search-presentation.d.ts +0 -16
- package/dist/src/cli/commands/registry-search-presentation.js +0 -6
- package/dist/src/compiled/_chunks/workflow/dist-BfMqXLK3.js +0 -3
- package/dist/src/compiled/_chunks/workflow/helpers-CNMO7zB1.js +0 -1
- package/dist/src/compiled/_chunks/workflow/logger-BCEj9caG.js +0 -14
- package/dist/src/compiled/_chunks/workflow/resume-hook-QS_cMwHn.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-CA5wWV2S.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-CJ265vSe.js +0 -3
- package/dist/src/compiled/_chunks/workflow/sleep-CBn94Ayv.js +0 -1
- package/dist/src/compiled/_chunks/workflow/wait-until-Bo2U6ON9.js +0 -1
- package/dist/src/compiler/compile-from-memory.d.ts +0 -44
- package/dist/src/compiler/compile-from-memory.js +0 -1
- package/dist/src/execution/connection-auth-tool-result.d.ts +0 -2
- package/dist/src/execution/connection-auth-tool-result.js +0 -1
- package/dist/src/internal/process/pnpm.d.ts +0 -28
- package/dist/src/internal/process/pnpm.js +0 -1
- package/dist/src/public/channels/slack/api-encoding.d.ts +0 -5
- package/dist/src/public/channels/slack/api-encoding.js +0 -1
- package/dist/src/public/definitions/instrumentation.d.ts +0 -1
- package/dist/src/public/definitions/instrumentation.js +0 -1
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.d.ts +0 -5
- package/dist/src/public/models/openai/chatgpt/unsigned-jwt.js +0 -1
- package/dist/src/sandbox/backends/probes.d.ts +0 -7
- package/dist/src/sandbox/backends/probes.js +0 -1
- package/dist/src/setup/channel-add-conflicts.d.ts +0 -28
- package/dist/src/setup/channel-add-conflicts.js +0 -1
- package/dist/src/setup/gateway-models.d.ts +0 -10
- package/dist/src/setup/gateway-models.js +0 -1
- package/dist/src/setup/primitives/run-pnpm.d.ts +0 -1
- package/dist/src/setup/primitives/run-pnpm.js +0 -1
- package/dist/src/shared/dispatch-action.d.ts +0 -30
- package/dist/src/shared/dispatch-action.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{stripLogicalPathExtension}from"#discover/filesystem.js";import{normalizeInstructionsDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition,requireModuleBackedDefinitionLoadOptions}from"#compiler/normalize-helpers.js";import{ALLOWED_DYNAMIC_INSTRUCTION_EVENTS,assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";async function compileInstructionsEntry(e,t,n){if(t.sourceKind===`markdown`){let e=normalizeInstructionsDefinition(t.definition,`Expected the compiled instructions definition at "${t.logicalPath}" to match the public eve shape.`);return{kind:`instructions`,definition:{name:stripLogicalPathExtension(t.logicalPath),logicalPath:t.logicalPath,owner:n.owner,content:e.content,role:e.role,sourceId:t.sourceId,sourceKind:t.sourceKind}}}let r=requireModuleBackedDefinitionLoadOptions(n,t.logicalPath),i=await loadModuleBackedDefinition({binding:r.binding,kind:`instructions`,loadNamespace:r.loadNamespace,source:t});if(isDynamicSentinel(i)){assertResolverOnlyDynamicSentinel(i,`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);let e=Object.keys(i.events),n=e.find(e=>!ALLOWED_DYNAMIC_INSTRUCTION_EVENTS.has(e));if(n!==void 0)throw Error(`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to use only "session.started" or "turn.started" events. Unsupported event: "${n}".`);let r=stripLogicalPathExtension(t.logicalPath).replace(/^instructions\//,``);return{kind:`dynamic-instructions`,definition:{eventNames:e,exportName:t.exportName,logicalPath:t.logicalPath,slug:r,sourceId:t.sourceId,sourceKind:`module`}}}let a=normalizeInstructionsDefinition(i,`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);return{kind:`instructions`,definition:{name:stripLogicalPathExtension(t.logicalPath),logicalPath:t.logicalPath,content:a.content,role:a.role,sourceId:t.sourceId,sourceKind:t.sourceKind}}}
|
|
1
|
+
import{stripLogicalPathExtension}from"#discover/filesystem.js";import{normalizeInstructionsDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition,requireModuleBackedDefinitionLoadOptions}from"#compiler/normalize-helpers.js";import{ALLOWED_DYNAMIC_INSTRUCTION_EVENTS,assertResolverOnlyDynamicSentinel,isDynamicSentinel}from"#dynamic/definition.js";async function compileInstructionsEntry(e,t,n){if(t.sourceKind===`markdown`){let e=normalizeInstructionsDefinition(t.definition,`Expected the compiled instructions definition at "${t.logicalPath}" to match the public eve shape.`);return{kind:`instructions`,definition:{name:stripLogicalPathExtension(t.logicalPath),logicalPath:t.logicalPath,owner:n.owner,content:e.content,role:e.role,sourceId:t.sourceId,sourceKind:t.sourceKind}}}let r=requireModuleBackedDefinitionLoadOptions(n,t.logicalPath),i=await loadModuleBackedDefinition({binding:r.binding,kind:`instructions`,loadNamespace:r.loadNamespace,source:t});if(isDynamicSentinel(i)){assertResolverOnlyDynamicSentinel(i,`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);let e=Object.keys(i.events),n=e.find(e=>!ALLOWED_DYNAMIC_INSTRUCTION_EVENTS.has(e));if(n!==void 0)throw Error(`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to use only "session.started" or "turn.started" events. Unsupported event: "${n}".`);let r=stripLogicalPathExtension(t.logicalPath).replace(/^instructions\//,``);return{kind:`dynamic-instructions`,definition:{eventNames:e,exportName:t.exportName,logicalPath:t.logicalPath,slug:r,sourceId:t.sourceId,sourceKind:`module`}}}let a=normalizeInstructionsDefinition(i,`Expected the instructions export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);return{kind:`instructions`,definition:{name:stripLogicalPathExtension(t.logicalPath),logicalPath:t.logicalPath,content:a.content,role:a.role,sourceId:t.sourceId,sourceKind:t.sourceKind}}}export{compileInstructionsEntry};
|
|
@@ -7,7 +7,6 @@ export declare function collectSelectedSourceIds(composed: ComposedAgentModuleCa
|
|
|
7
7
|
export declare function assertRootOnlyConfig(config: CompiledAgentDefinition, isRoot: boolean, agentId: string): void;
|
|
8
8
|
export declare function assertApplicationOverlayCanApplyToAllNodes(logicalPaths: readonly string[]): void;
|
|
9
9
|
export declare function assertUniqueRegistryIds(registries: readonly AgentSourceRegistry[]): void;
|
|
10
|
-
export declare function assertRootOwnedSpecialTool(candidate: AgentModuleCandidate, label: string): void;
|
|
11
10
|
export declare function assertNonExtensionSpecialTool(candidate: AgentModuleCandidate, label: string): void;
|
|
12
11
|
export declare function withExtensionNamespace<T extends {
|
|
13
12
|
readonly extensionNamespace?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{posix}from"node:path";import{
|
|
1
|
+
import{posix}from"node:path";import{mountRefNamespace,packageStateNamespace}from"#discover/extensions.js";import{canonicalSourceSlot}from"#compiler/source-graph.js";import"#compiler/normalize-subagent.js";function collectSelectedSourceIds(e){return new Set([...e.selected.values()].map(e=>e.sourceId))}function assertRootOnlyConfig(e,t,n){if(!t&&e.experimental?.workflow?.world!==void 0)throw Error(`Workflow world configuration is only supported on the root agent config. Remove "experimental.workflow.world" from "${n}".`)}function assertApplicationOverlayCanApplyToAllNodes(e){let t=e.find(e=>{let t=canonicalSourceSlot(e);return t===`agent`||t.startsWith(`channels/`)||t.startsWith(`schedules/`)||t.startsWith(`subagents/`)||t.startsWith(`extensions/`)});if(t!==void 0)throw Error(`Application programmatic source registered for all local nodes cannot declare "${t}".`)}function assertUniqueRegistryIds(e){let t=new Set;for(let n of e)for(let e of n.sources.keys()){if(t.has(e))throw Error(`Programmatic agent source id "${e}" is registered more than once.`);t.add(e)}}function assertNonExtensionSpecialTool(e,t){if(e.owner.kind===`extension`)throw Error(`${t} cannot be configured by an extension source.`)}function withExtensionNamespace(e,t){return t.kind===`extension`?{...e,extensionNamespace:t.namespace}:e}function assertUniqueBy(e,t,n){let r=new Set;for(let i of e){let e=t(i);if(r.has(e))throw Error(`Compiled ${n} "${e}" is declared more than once.`);r.add(e)}}function withDiagnosticsSummary(e,t){return e.map(e=>(e.configResolver,{...e,agent:{...e.agent,diagnosticsSummary:t}}))}function expectSubagentDescription(e,t){if(e.description===void 0||e.description.trim().length===0)throw Error(`Subagent "${t.logicalPath}" must define a non-empty description.`);return e.description}function createCompiledRemoteAgent(e){let t=e.source.logicalPath.endsWith(`.ts`)||e.source.logicalPath.endsWith(`.js`)?e.source.logicalPath:posix.join(e.source.logicalPath,`agent.ts`),n=e.source.sourceId,r={backing:e.binding.backing,logicalPath:t,owner:e.owner,usage:e.binding.usage},i={backing:{kind:`resource`,sourcePath:e.source.entryPath},binding:r,description:e.definition.description,entryPath:e.source.entryPath,logicalPath:t,name:e.source.subagentId,nodeId:e.nodeId,owner:e.owner,parentNodeId:e.parentNodeId,path:e.definition.path,rootPath:e.source.rootPath,sourceId:n,sourceKind:`module`};return e.sourceRef.exportName!==void 0&&Object.assign(i,{exportName:e.sourceRef.exportName}),e.definition.tool!==void 0&&Object.assign(i,{tool:e.definition.tool}),e.definition.url!==void 0&&Object.assign(i,{url:e.definition.url}),i}function compileExtensionMounts(e,t){let n=collectSelectedSourceIds(t);return e.resolvedExtensions.flatMap(t=>{let r=t.programmaticDeclaration??e.extensions.find(e=>mountRefNamespace(e.logicalPath)===t.namespace);return r===void 0||!n.has(r.sourceId)?[]:[{externalDependencies:[...t.externalDependencies],mountLogicalPath:r.logicalPath,mountSourceId:r.sourceId,namespace:t.namespace,packageName:t.packageName,packageNamespace:packageStateNamespace(t.packageName),sourceRoot:t.sourceRoot}]})}function mergeExternalDependencies(...e){return[...new Set(e.flatMap(e=>e??[]))]}export{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{noDevelopmentExtensions,prepareDevelopmentExtensions}from"#compiler/development-extensions.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,describeAgentSourceCandidate,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{frameworkAgentSourceRegistry,memoryWrapperTemplate}from"#framework/sources/registry.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyAgentToolPolicy,applyDefaultToolPolicy,assertFrameworkToolPolicy,canDisableToolWithoutSelectedSource}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{compileMemoryDefinition,deriveMemorySlot}from"#compiler/normalize-memory.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{createCompiledChannelRoutePlan}from"#compiler/channel-route-plan.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await prepareDevelopmentExtensions({diagnostics:i,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,selection:t.developmentExtensions??noDevelopmentExtensions()}),o=await new AgentGraphCompiler(r,n,i).compileStaticNode({developmentExtensionCandidates:a.candidates,inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:a.manifest,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),s=summarizeCompilerDiagnostics(i),c=withDiagnosticsSummary(o.descendants,s);return createCompiledAgentManifest({...o.manifest,diagnosticsSummary:s,subagents:c})}var AgentGraphCompiler=class{context;registries;diagnostics;constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyAgentToolPolicy(t,n),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyAgentToolPolicy(c,u),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...n.candidates,...i].filter(e=>e.backing.kind!==`resource`&&(canonicalSourceSlot(e.logicalPath)===`memory`||canonicalSourceSlot(e.logicalPath).startsWith(`memory/`))).map(e=>{let t=deriveMemorySlot(e.logicalPath);return instantiateProgrammaticTemplate({anchor:e,dependencies:{memory:e},logicalPath:`tools/${t}.ts`,owner:{feature:`memory`,kind:`framework`},parameters:{memoryExportName:e.exportName??`default`,memoryLogicalPath:e.logicalPath,slot:t},template:memoryWrapperTemplate})}),o=[...r,...e.developmentExtensionCandidates??[],...n.candidates,...a,...i],s=composeAgentModuleCandidates(o),c=projectSelectedSources({candidates:s.selected.values(),resources:n.resources});return{composed:s,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(c.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),r=new NodeModuleEvaluationContext(this.registries);return r.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:r,graph:n,selectedConfig:await this.loadSelectedConfig(n,r)}}async loadSelectedConfig(e,t){let n=e.composed.selected.get(`agent`);if(n===void 0||!isAgentModuleCandidate(n))throw Error(`Every local agent node requires a selected module-backed agent.ts source.`);let r=createAgentModuleBinding(n),i=e.sourcesBySourceId.get(n.sourceId);if(i?.source.sourceKind!==`module`)throw Error(`Selected agent config source "${n.sourceId}" was not projected.`);let a=i.source;return{binding:r,candidate:n,definition:await loadModuleBackedDefinition({binding:r,kind:`agent config`,loadNamespace:t.loadNamespace,source:a}),source:a}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m,h=collectSelectedSourceIds(t.composed),g=t.evaluation.loadNamespace;for(let _ of t.orderedCandidates){if(!h.has(_.sourceId))continue;let v=t.sourcesBySourceId.get(_.sourceId);if(v===void 0)continue;let y=t.bindings[_.sourceId],b={binding:y,loadNamespace:g,owner:_.owner};switch(v.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):p.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId);break}case`hook`:d.push(await compileHookEntry(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,v.source,b);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`memory`:u.push(await compileMemoryDefinition(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`sandbox`:m=await compileSandboxDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g}),m.inheritsParent||t.evaluation.requireRuntimeEntry(_.sourceId);break;case`schedule`:{let n=await compileScheduleDefinition(e.manifest.agentRoot,v.source,b);f.push(n),n.sourceKind===`module`&&n.hasRun&&t.evaluation.requireRuntimeEntry(_.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,v.source,b);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`tool`:{let i=await compileToolEntry(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});assertFrameworkToolPolicy(_,i),i.kind===`disabled`?(t.composed=disableComposedCandidate({allowUnmatched:canDisableToolWithoutSelectedSource(t,i.name),candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(_.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId)):(assertNonExtensionSpecialTool(_,`Web search`),n.push(i.definition));break}}}if(m===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let _=createCompiledChannelRoutePlan({bindings:t.bindings,channels:p,diagnostics:this.diagnostics,nodeId:e.nodeId,sources:Object.fromEntries(t.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of _.effective)t.evaluation.requireRuntimeEntry(e.sourceId);let v=compileExtensionMounts(e.manifest,t.composed);for(let e of v)t.evaluation.requireRuntimeEntry(e.mountSourceId);let y=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:y,channelRoutes:_,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:v,hooks:d,memories:u,instructions:o,sandbox:m,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,skills:i,sourceComposition:t.composed.composition,tools:n})}};export{compileAgentManifest};
|
|
1
|
+
import{noDevelopmentExtensions,prepareDevelopmentExtensions}from"#compiler/development-extensions.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,describeAgentSourceCandidate,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyAgentToolPolicy,applyDefaultToolPolicy,assertFrameworkToolPolicy,canDisableToolWithoutSelectedSource}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{compileMemoryDefinition,deriveMemorySlot}from"#compiler/normalize-memory.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{createCompiledChannelRoutePlan}from"#compiler/channel-route-plan.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";import{frameworkAgentSourceRegistry,memoryWrapperTemplate}from"#framework/sources/registry.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await prepareDevelopmentExtensions({diagnostics:i,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,selection:t.developmentExtensions??noDevelopmentExtensions()}),o=await new AgentGraphCompiler(r,n,i).compileStaticNode({developmentExtensionCandidates:a.candidates,inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:a.manifest,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),s=summarizeCompilerDiagnostics(i),c=withDiagnosticsSummary(o.descendants,s);return createCompiledAgentManifest({...o.manifest,diagnosticsSummary:s,subagents:c})}var AgentGraphCompiler=class{context;registries;diagnostics;constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyAgentToolPolicy(t,n),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyAgentToolPolicy(c,u),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...n.candidates,...i].filter(e=>e.backing.kind!==`resource`&&(canonicalSourceSlot(e.logicalPath)===`memory`||canonicalSourceSlot(e.logicalPath).startsWith(`memory/`))).map(e=>{let t=deriveMemorySlot(e.logicalPath);return instantiateProgrammaticTemplate({anchor:e,dependencies:{memory:e},logicalPath:`tools/${t}.ts`,owner:{feature:`memory`,kind:`framework`},parameters:{memoryExportName:e.exportName??`default`,memoryLogicalPath:e.logicalPath,slot:t},template:memoryWrapperTemplate})}),o=[...r,...e.developmentExtensionCandidates??[],...n.candidates,...a,...i],s=composeAgentModuleCandidates(o),c=projectSelectedSources({candidates:s.selected.values(),resources:n.resources});return{composed:s,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(c.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),r=new NodeModuleEvaluationContext(this.registries);return r.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:r,graph:n,selectedConfig:await this.loadSelectedConfig(n,r)}}async loadSelectedConfig(e,t){let n=e.composed.selected.get(`agent`);if(n===void 0||!isAgentModuleCandidate(n))throw Error(`Every local agent node requires a selected module-backed agent.ts source.`);let r=createAgentModuleBinding(n),i=e.sourcesBySourceId.get(n.sourceId);if(i?.source.sourceKind!==`module`)throw Error(`Selected agent config source "${n.sourceId}" was not projected.`);let a=i.source;return{binding:r,candidate:n,definition:await loadModuleBackedDefinition({binding:r,kind:`agent config`,loadNamespace:t.loadNamespace,source:a}),source:a}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m,h=collectSelectedSourceIds(t.composed),g=t.evaluation.loadNamespace;for(let _ of t.orderedCandidates){if(!h.has(_.sourceId))continue;let v=t.sourcesBySourceId.get(_.sourceId);if(v===void 0)continue;let y=t.bindings[_.sourceId],b={binding:y,loadNamespace:g,owner:_.owner};switch(v.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):p.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId);break}case`hook`:d.push(await compileHookEntry(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,v.source,b);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`memory`:u.push(await compileMemoryDefinition(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`sandbox`:m=await compileSandboxDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g}),m.inheritsParent||t.evaluation.requireRuntimeEntry(_.sourceId);break;case`schedule`:{let n=await compileScheduleDefinition(e.manifest.agentRoot,v.source,b);f.push(n),n.sourceKind===`module`&&n.hasRun&&t.evaluation.requireRuntimeEntry(_.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,v.source,b);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`tool`:{let i=await compileToolEntry(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});assertFrameworkToolPolicy(_,i),i.kind===`disabled`?(t.composed=disableComposedCandidate({allowUnmatched:canDisableToolWithoutSelectedSource(t,i.name),candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(_.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId)):(assertNonExtensionSpecialTool(_,`Web search`),n.push(i.definition));break}}}if(m===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let _=createCompiledChannelRoutePlan({bindings:t.bindings,channels:p,diagnostics:this.diagnostics,nodeId:e.nodeId,sources:Object.fromEntries(t.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of _.effective)t.evaluation.requireRuntimeEntry(e.sourceId);let v=compileExtensionMounts(e.manifest,t.composed);for(let e of v)t.evaluation.requireRuntimeEntry(e.mountSourceId);let y=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:y,channelRoutes:_,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:v,hooks:d,memories:u,instructions:o,sandbox:m,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,skills:i,sourceComposition:t.composed.composition,tools:n})}};export{compileAgentManifest};
|
|
@@ -7,7 +7,7 @@ import { type SourceDefinitionCompileOptions } from "#compiler/normalize-helpers
|
|
|
7
7
|
* Either a real skill definition or a dynamic skill resolver that
|
|
8
8
|
* produces skills at runtime.
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
type CompiledSkillEntry = {
|
|
11
11
|
readonly kind: "skill";
|
|
12
12
|
readonly definition: CompiledSkillDefinition;
|
|
13
13
|
} | {
|
|
@@ -20,3 +20,4 @@ export type CompiledSkillEntry = {
|
|
|
20
20
|
* agent manifest.
|
|
21
21
|
*/
|
|
22
22
|
export declare function compileSkillSource(_agentRoot: string, source: SkillSourceRef, options: SourceDefinitionCompileOptions): Promise<CompiledSkillEntry>;
|
|
23
|
+
export {};
|
|
@@ -53,18 +53,4 @@ export declare function projectSelectedSources(input: {
|
|
|
53
53
|
readonly candidates: Iterable<AgentSourceCandidate>;
|
|
54
54
|
readonly resources: readonly ProjectedResourceSource[];
|
|
55
55
|
}): readonly ProjectedSource[];
|
|
56
|
-
export declare function createFilesystemModuleCandidate(input: {
|
|
57
|
-
readonly externalDependencies: readonly string[];
|
|
58
|
-
readonly extensionScope?: {
|
|
59
|
-
readonly namespace: string;
|
|
60
|
-
readonly sourceRoot: string;
|
|
61
|
-
};
|
|
62
|
-
readonly layer: AgentSourceLayer;
|
|
63
|
-
readonly logicalPath: string;
|
|
64
|
-
readonly nodeId: string;
|
|
65
|
-
readonly owner: AgentSourceOwner;
|
|
66
|
-
readonly source: ModuleSourceRef;
|
|
67
|
-
readonly sourceId?: string;
|
|
68
|
-
readonly sourceRoot: string;
|
|
69
|
-
}): AgentModuleCandidate;
|
|
70
56
|
export declare function qualifyExtensionContributionLogicalPath(logicalPath: string, namespace: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join}from"node:path";import{stripLogicalPathExtension}from"#discover/filesystem.js";import{canonicalSourceSlot}from"#compiler/source-graph.js";const MODULE_KIND_BY_SLOT_ROOT={agent:`config`,channels:`channel`,extensions:`extension`,hooks:`hook`,instructions:`instructions`,memory:`memory`,sandbox:`sandbox`,schedules:`schedule`,skills:`skill`,tools:`tool`};function projectAgentSources(e){let t=e.owner??{kind:`application`},n=[],r=[],i=[];projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:createApplicationManifestSourceProjection(e.extensionScope),layer:e.layer??`application`,manifest:e.manifest,nodeId:e.nodeId,owner:t,resources:r,subagents:i});for(let t of[...e.manifest.resolvedExtensions].sort((e,t)=>e.namespace.localeCompare(t.namespace))){let a=createExtensionManifestSourceProjection(t),o={kind:`extension`,namespace:t.namespace,packageName:t.packageName};projectManifest({externalDependencies:mergeDependencies(e.externalDependencies,t.externalDependencies),candidates:n,projection:a,layer:`extension-package`,manifest:t.manifest,nodeId:e.nodeId,owner:o,resources:r,sourceIdPrefix:`ext:${t.namespace}:`,subagents:i}),t.overrides!==void 0&&projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:a,layer:`extension-override`,manifest:t.overrides,nodeId:e.nodeId,owner:{kind:`application`},resources:r,sourceIdPrefix:`ext-override:${t.namespace}:`,subagents:i})}return{candidates:n,resources:r,subagents:i}}function projectSelectedSources(e){let t=new Map(e.resources.map(e=>[e.candidate.sourceId,e])),n=[];for(let r of e.candidates)if(isModuleCandidate(r))n.push(projectModuleCandidate(r));else{let e=t.get(r.sourceId);e!==void 0&&n.push(e)}return n}function createFilesystemModuleCandidate(e){return{backing:{externalDependencies:[...e.externalDependencies],...e.owner.kind===`extension`&&e.extensionScope!==void 0?{extensionScope:e.extensionScope}:{},kind:`filesystem`,sourcePath:join(e.sourceRoot,e.source.logicalPath)},exportName:e.source.exportName,form:`direct`,layer:e.layer,logicalPath:e.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:e.sourceId??e.source.sourceId}}function createApplicationManifestSourceProjection(e){let t={logicalPath:e=>e,name:e=>e};return e!==void 0&&(t.extensionScope=e),t}function createExtensionManifestSourceProjection(e){let{namespace:t,sourceRoot:n}=e;return{extensionScope:{namespace:t,sourceRoot:n},logicalPath:e=>qualifyExtensionContributionLogicalPath(e,t),name:e=>`${t}__${e}`}}function projectManifest(e){let{projection:t}=e,sourceId=t=>`${e.sourceIdPrefix??``}${t}`,pushModule=(n,r)=>{let i=t.logicalPath(r??n.logicalPath),a=createFilesystemModuleCandidate({externalDependencies:e.externalDependencies,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,source:n,sourceId:sourceId(n.sourceId),sourceRoot:e.manifest.agentRoot});e.candidates.push(a)},pushResource=(n,r)=>{let i=t.logicalPath(r.logicalPath),a={...r,...r.sourceKind===`skill-package`?{name:t.name(r.name)}:{},logicalPath:i,sourceId:sourceId(r.sourceId)},o={backing:{kind:`resource`,sourcePath:r.sourceKind===`skill-package`?r.skillFilePath:join(e.manifest.agentRoot,r.logicalPath)},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.resources.push({candidate:o,kind:n,source:a})};if(e.manifest.configModule!==void 0){let t=e.manifest.configModule.logicalPath;pushModule(e.manifest.configModule,canonicalSourceSlot(t)===`agent`?void 0:`agent.ts`)}for(let t of e.manifest.extensions)pushModule(t);for(let t of e.manifest.channels)pushModule(t);for(let t of e.manifest.connections)pushModule(t);for(let t of e.manifest.hooks)pushModule(t);for(let t of e.manifest.memories)pushModule(t);e.manifest.sandbox!==null&&pushModule(e.manifest.sandbox);for(let t of e.manifest.tools)pushModule(t);for(let t of e.manifest.instructions)t.sourceKind===`module`?pushModule(t):pushResource(`instructions`,t);for(let t of e.manifest.schedules)t.sourceKind===`module`?pushModule(t):pushResource(`schedule`,t);for(let t of e.manifest.skills)t.sourceKind===`module`?pushModule(t):pushResource(`skill`,t);for(let n of e.manifest.subagents){let r=t.name(n.subagentId),i=t.logicalPath(n.logicalPath);if(r===`agent`)throw Error(`Subagent "${i}" uses the reserved name "agent". Rename its path; eve reserves "agent" for the built-in root-copy target.`);let a={...n,logicalPath:i,sourceId:sourceId(n.sourceId),subagentId:r},o={backing:{kind:`resource`,sourcePath:n.entryPath},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.subagents.push({candidate:o,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},owner:e.owner,source:a})}}function projectModuleCandidate(e){let t={exportName:e.exportName,logicalPath:e.logicalPath,sourceId:e.sourceId,sourceKind:`module`},n=canonicalSourceSlot(e.logicalPath);if(n.startsWith(`connections/`))return{candidate:e,kind:`connection`,source:{...t,connectionName:deriveConnectionName(e.logicalPath)}};let r=MODULE_KIND_BY_SLOT_ROOT[n.split(`/`,1)[0]];if(r===void 0)throw Error(`Agent module source slot "${e.logicalPath}" is not compiled yet.`);return{candidate:e,kind:r,source:t}}function isModuleCandidate(e){return e.backing.kind!==`resource`}const EXTENSION_CONTRIBUTION_ROOTS=new Set([`channels`,`connections`,`hooks`,`instructions`,`schedules`,`skills`,`subagents`,`tools`]);function qualifyExtensionContributionLogicalPath(e,t){let n=e.split(`/`);if(n.length===1){let n=stripLogicalPathExtension(e);if(n===`instructions`||n===`system`)return`instructions/${t}${e.slice(e.lastIndexOf(`.`))}`;throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`)}let r=n[0];if(!EXTENSION_CONTRIBUTION_ROOTS.has(r))throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`);return n[1]=`${t}__${n[1]}`,n.join(`/`)}function deriveConnectionName(e){let t=stripLogicalPathExtension(e).replace(/^connections\//,``);return t.endsWith(`/connection`)?t.slice(0,-11):t}function mergeDependencies(...e){return[...new Set(e.flat())]}export{
|
|
1
|
+
import{join}from"node:path";import{stripLogicalPathExtension}from"#discover/filesystem.js";import{canonicalSourceSlot}from"#compiler/source-graph.js";const MODULE_KIND_BY_SLOT_ROOT={agent:`config`,channels:`channel`,extensions:`extension`,hooks:`hook`,instructions:`instructions`,memory:`memory`,sandbox:`sandbox`,schedules:`schedule`,skills:`skill`,tools:`tool`};function projectAgentSources(e){let t=e.owner??{kind:`application`},n=[],r=[],i=[];projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:createApplicationManifestSourceProjection(e.extensionScope),layer:e.layer??`application`,manifest:e.manifest,nodeId:e.nodeId,owner:t,resources:r,subagents:i});for(let t of[...e.manifest.resolvedExtensions].sort((e,t)=>e.namespace.localeCompare(t.namespace))){let a=createExtensionManifestSourceProjection(t),o={kind:`extension`,namespace:t.namespace,packageName:t.packageName};projectManifest({externalDependencies:mergeDependencies(e.externalDependencies,t.externalDependencies),candidates:n,projection:a,layer:`extension-package`,manifest:t.manifest,nodeId:e.nodeId,owner:o,resources:r,sourceIdPrefix:`ext:${t.namespace}:`,subagents:i}),t.overrides!==void 0&&projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:a,layer:`extension-override`,manifest:t.overrides,nodeId:e.nodeId,owner:{kind:`application`},resources:r,sourceIdPrefix:`ext-override:${t.namespace}:`,subagents:i})}return{candidates:n,resources:r,subagents:i}}function projectSelectedSources(e){let t=new Map(e.resources.map(e=>[e.candidate.sourceId,e])),n=[];for(let r of e.candidates)if(isModuleCandidate(r))n.push(projectModuleCandidate(r));else{let e=t.get(r.sourceId);e!==void 0&&n.push(e)}return n}function createFilesystemModuleCandidate(e){return{backing:{externalDependencies:[...e.externalDependencies],...e.owner.kind===`extension`&&e.extensionScope!==void 0?{extensionScope:e.extensionScope}:{},kind:`filesystem`,sourcePath:join(e.sourceRoot,e.source.logicalPath)},exportName:e.source.exportName,form:`direct`,layer:e.layer,logicalPath:e.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:e.sourceId??e.source.sourceId}}function createApplicationManifestSourceProjection(e){let t={logicalPath:e=>e,name:e=>e};return e!==void 0&&(t.extensionScope=e),t}function createExtensionManifestSourceProjection(e){let{namespace:t,sourceRoot:n}=e;return{extensionScope:{namespace:t,sourceRoot:n},logicalPath:e=>qualifyExtensionContributionLogicalPath(e,t),name:e=>`${t}__${e}`}}function projectManifest(e){let{projection:t}=e,sourceId=t=>`${e.sourceIdPrefix??``}${t}`,pushModule=(n,r)=>{let i=t.logicalPath(r??n.logicalPath),a=createFilesystemModuleCandidate({externalDependencies:e.externalDependencies,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,source:n,sourceId:sourceId(n.sourceId),sourceRoot:e.manifest.agentRoot});e.candidates.push(a)},pushResource=(n,r)=>{let i=t.logicalPath(r.logicalPath),a={...r,...r.sourceKind===`skill-package`?{name:t.name(r.name)}:{},logicalPath:i,sourceId:sourceId(r.sourceId)},o={backing:{kind:`resource`,sourcePath:r.sourceKind===`skill-package`?r.skillFilePath:join(e.manifest.agentRoot,r.logicalPath)},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.resources.push({candidate:o,kind:n,source:a})};if(e.manifest.configModule!==void 0){let t=e.manifest.configModule.logicalPath;pushModule(e.manifest.configModule,canonicalSourceSlot(t)===`agent`?void 0:`agent.ts`)}for(let t of e.manifest.extensions)pushModule(t);for(let t of e.manifest.channels)pushModule(t);for(let t of e.manifest.connections)pushModule(t);for(let t of e.manifest.hooks)pushModule(t);for(let t of e.manifest.memories)pushModule(t);e.manifest.sandbox!==null&&pushModule(e.manifest.sandbox);for(let t of e.manifest.tools)pushModule(t);for(let t of e.manifest.instructions)t.sourceKind===`module`?pushModule(t):pushResource(`instructions`,t);for(let t of e.manifest.schedules)t.sourceKind===`module`?pushModule(t):pushResource(`schedule`,t);for(let t of e.manifest.skills)t.sourceKind===`module`?pushModule(t):pushResource(`skill`,t);for(let n of e.manifest.subagents){let r=t.name(n.subagentId),i=t.logicalPath(n.logicalPath);if(r===`agent`)throw Error(`Subagent "${i}" uses the reserved name "agent". Rename its path; eve reserves "agent" for the built-in root-copy target.`);let a={...n,logicalPath:i,sourceId:sourceId(n.sourceId),subagentId:r},o={backing:{kind:`resource`,sourcePath:n.entryPath},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.subagents.push({candidate:o,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},owner:e.owner,source:a})}}function projectModuleCandidate(e){let t={exportName:e.exportName,logicalPath:e.logicalPath,sourceId:e.sourceId,sourceKind:`module`},n=canonicalSourceSlot(e.logicalPath);if(n.startsWith(`connections/`))return{candidate:e,kind:`connection`,source:{...t,connectionName:deriveConnectionName(e.logicalPath)}};let r=MODULE_KIND_BY_SLOT_ROOT[n.split(`/`,1)[0]];if(r===void 0)throw Error(`Agent module source slot "${e.logicalPath}" is not compiled yet.`);return{candidate:e,kind:r,source:t}}function isModuleCandidate(e){return e.backing.kind!==`resource`}const EXTENSION_CONTRIBUTION_ROOTS=new Set([`channels`,`connections`,`hooks`,`instructions`,`schedules`,`skills`,`subagents`,`tools`]);function qualifyExtensionContributionLogicalPath(e,t){let n=e.split(`/`);if(n.length===1){let n=stripLogicalPathExtension(e);if(n===`instructions`||n===`system`)return`instructions/${t}${e.slice(e.lastIndexOf(`.`))}`;throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`)}let r=n[0];if(!EXTENSION_CONTRIBUTION_ROOTS.has(r))throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`);return n[1]=`${t}__${n[1]}`,n.join(`/`)}function deriveConnectionName(e){let t=stripLogicalPathExtension(e).replace(/^connections\//,``);return t.endsWith(`/connection`)?t.slice(0,-11):t}function mergeDependencies(...e){return[...new Set(e.flat())]}export{projectAgentSources,projectSelectedSources,qualifyExtensionContributionLogicalPath};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{findEveProjectContext}from"#internal/project-context.js";import{discoverAgent}from"#discover/discover-agent.js";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function resolveWorkspaceSubagentDefinition(e){let t=await findEveProjectContext(e.source.rootPath);if(t?.kind!==`workspace-member`)throw Error(`Workspace subagent "${e.source.logicalPath}" must be authored by an agent workspace member.`);let n=t.workspace.members.find(t=>t.name===e.name);if(n===void 0)throw Error(`Workspace subagent "${e.source.logicalPath}" targets unknown workspace member ${JSON.stringify(e.name)}.`);if(e.definition.description.trim().length>0)return e.definition;let{resolveDiscoveryProject:r}=await import(`#discover/project.js`),i=await r(n.appRoot),a=(await discoverAgent({agentRoot:i.agentRoot,appRoot:i.appRoot})).manifest.configModule;if(a===void 0)throw Error(`Workspace member ${JSON.stringify(e.name)} has no agent config module.`);let o={backing:{externalDependencies:[],kind:`filesystem`,sourcePath:`${i.agentRoot}/${a.logicalPath}`},logicalPath:a.logicalPath,owner:{kind:`application`}},s=normalizeAgentDefinition(await loadModuleBackedDefinition({binding:o,kind:`agent config`,loadNamespace:createCompiledBindingNamespaceLoader({bindings:{[a.sourceId]:o},registries:e.registries}),source:a}),`Expected workspace member ${JSON.stringify(e.name)} agent config to match the public eve shape.`);if(s.description===void 0||s.description.trim().length===0)throw Error(`Workspace member ${JSON.stringify(e.name)} must define a non-empty description.`);return{...e.definition,description:s.description}}export{resolveWorkspaceSubagentDefinition};
|
|
@@ -22,7 +22,7 @@ export interface AgentSourceRegistration {
|
|
|
22
22
|
readonly applyTo: "root" | "all-local-nodes";
|
|
23
23
|
readonly source: ProgrammaticAgentSource;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
interface AgentSourceRegistryOptions {
|
|
26
26
|
/** Programmatic extension declarations loaded by compiled virtual mounts. */
|
|
27
27
|
readonly extensionDeclarations?: readonly ProgrammaticAgentSource[];
|
|
28
28
|
readonly templates?: readonly ProgrammaticAgentSource[];
|
|
@@ -160,7 +160,6 @@ export declare function loadProgrammaticModuleNamespace(input: {
|
|
|
160
160
|
readonly dependencyNamespaces?: Readonly<Record<string, ProgrammaticModuleNamespace>>;
|
|
161
161
|
readonly registries: readonly AgentSourceRegistry[];
|
|
162
162
|
}): Promise<ProgrammaticModuleNamespace>;
|
|
163
|
-
export declare function canonicalModuleSlot(logicalPath: string): string;
|
|
164
163
|
/**
|
|
165
164
|
* Canonical composition slot for one logical path. Module extensions, folder
|
|
166
165
|
* forms, and skill packages collapse onto the same authored primitive identity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{posix}from"node:path";import{normalizeLogicalPath,stripLogicalPathExtension}from"#discover/filesystem.js";import{parseJsonObject}from"#shared/json.js";import{validateProgrammaticLogicalPath,validateProgrammaticLogicalPath as validateProgrammaticLogicalPath$1,validateProgrammaticLogicalPathInternal}from"#compiler/source-graph-paths.js";function memoizeModuleNamespaceFactories(e){return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>{if(typeof t!=`function`)return[e,t];let n;return[e,new Proxy(t,{apply(e,t,r){return r.length>0?Reflect.apply(e,t,r):(n??=Promise.resolve().then(()=>Reflect.apply(e,t,r)),n)}})]})))}var ImmutableProgrammaticSourceMap=class{#e;constructor(e){this.#e=new Map(e),Object.freeze(this)}get size(){return this.#e.size}get[Symbol.toStringTag](){return`ImmutableProgrammaticSourceMap`}[Symbol.iterator](){return this.#e[Symbol.iterator]()}entries(){return this.#e.entries()}forEach(e,t){this.#e.forEach((n,r)=>e.call(t,n,r,this))}get(e){return this.#e.get(e)}has(e){return this.#e.has(e)}keys(){return this.#e.keys()}values(){return this.#e.values()}};function isAgentModuleCandidate(e){return e.backing.kind!==`resource`}const LAYER_PRECEDENCE={"framework-default":0,"extension-package":1,"extension-override":2,application:3},FORM_PRECEDENCE={derived:0,direct:1},registeredProgrammaticTemplates=new WeakSet;function defineProgrammaticAgentSource(e){return defineProgrammaticAgentSourceInternal(e,!1)}function defineProgrammaticAgentSourceInternal(e,t){let n=expectNonEmpty(e.id,`Programmatic agent source id`),r=expectNonEmpty(e.revision,`Programmatic agent source "${n}" revision`),i=new Set,a=e.modules.map(e=>{let r=validateProgrammaticLogicalPathInternal(e.logicalPath,t);if(i.has(r))throw Error(`Programmatic agent source "${n}" declares "${r}" more than once.`);i.add(r);let a=e.semanticRevision===void 0?void 0:expectNonEmpty(e.semanticRevision,`Programmatic module "${n}:${r}" semanticRevision`);return Object.freeze({exportName:e.exportName,loadNamespace:e.loadNamespace,logicalPath:r,semanticRevision:a})});return Object.freeze({id:n,modules:Object.freeze(a),revision:r})}function defineProgrammaticExtensionMountDeclaration(e){return defineProgrammaticAgentSourceInternal(e,!0)}function createAgentSourceRegistry(e,t={}){let n=new Map,r=new Map,addSource=(e,t=!1)=>{let r=defineProgrammaticAgentSourceInternal(e,t);if(n.has(r.id))throw Error(`Programmatic agent source id "${r.id}" is registered more than once.`);return n.set(r.id,r),r},i=e.map(e=>{let t=addSource(e.source);return Object.freeze({applyTo:e.applyTo,source:t})});for(let e of t.extensionDeclarations??[])addSource(e,!0);for(let e of t.templates??[]){let t=addSource(e);if(t.modules.length!==1)throw Error(`Programmatic template source "${t.id}" must register exactly one module.`);let n=Object.freeze({module:t.modules[0],source:t});registeredProgrammaticTemplates.add(n),r.set(t.id,n)}return Object.freeze({registrations:Object.freeze(i),sources:new ImmutableProgrammaticSourceMap(n),templates:new ImmutableProgrammaticSourceMap(r)})}function createProgrammaticModuleCandidates(e){return e.registration.source.modules.map(t=>{let n=`${e.registration.source.id}:${t.logicalPath}`;return Object.freeze({backing:Object.freeze({kind:`programmatic`,moduleId:t.logicalPath,registryId:e.registration.source.id,revision:e.registration.source.revision,semanticRevision:t.semanticRevision}),exportName:t.exportName,form:`direct`,layer:e.layer,logicalPath:t.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:n})})}function instantiateProgrammaticTemplate(e){if(!registeredProgrammaticTemplates.has(e.template))throw Error(`Derived programmatic modules require a registered template.`);let t=validateProgrammaticLogicalPath$1(e.logicalPath),n=expectNonEmpty(e.anchor.sourceId,`Derived programmatic module anchor source id`),r=`${e.template.source.id}:${t}:from:${n}`;if(!Object.values(e.dependencies).some(e=>e.sourceId===n))throw Error(`Derived programmatic module "${r}" must include its anchor source as a dependency.`);let i=Object.freeze(Object.fromEntries(Object.entries(e.dependencies).sort(([e],[t])=>e.localeCompare(t)).map(([t,n])=>{if(expectNonEmpty(t,`Derived programmatic module dependency alias`),n.nodeId!==e.anchor.nodeId)throw Error(`Derived programmatic module "${r}" cannot depend on source "${n.sourceId}" from another node.`);return[t,n.sourceId]}))),a=Object.freeze(parseJsonObject(e.parameters??{}));return Object.freeze({backing:Object.freeze({dependencies:i,kind:`programmatic`,moduleId:e.template.module.logicalPath,parameters:a,registryId:e.template.source.id,revision:e.template.source.revision,semanticRevision:e.template.module.semanticRevision}),exportName:e.template.module.exportName,form:`derived`,layer:e.anchor.layer,logicalPath:t,nodeId:e.anchor.nodeId,owner:e.owner,sourceId:r})}function composeAgentModuleCandidates(e){let t=new Map,n=new Set;for(let r of e){if(n.has(r.sourceId))throw Error(`Agent source id "${r.sourceId}" is declared more than once in node "${r.nodeId}".`);n.add(r.sourceId);let e=canonicalSourceSlot(r.logicalPath),i=t.get(e)??[];i.push(r),t.set(e,i)}let r=new Map,i=[];for(let[e,n]of[...t].sort(([e],[t])=>e.localeCompare(t))){let t=new Set;for(let r of n){let n=`${r.layer}:${r.form}`;if(t.has(n))throw Error(`Agent source slot "${e}" has more than one ${r.layer} ${r.form} candidate.`);t.add(n)}let a=[...n].sort((e,t)=>LAYER_PRECEDENCE[t.layer]-LAYER_PRECEDENCE[e.layer]||FORM_PRECEDENCE[t.form]-FORM_PRECEDENCE[e.form]),o=a[0];r.set(e,o);for(let e of a.slice(1))i.push({kind:`shadowed`,source:describeAgentSourceCandidate(e),winnerSourceId:o.sourceId})}return validateSelectedCandidateDependencies(r),{composition:{entries:Object.freeze(i)},selected:r}}function disableComposedCandidate(e){let t=canonicalSourceSlot(e.candidate.logicalPath),n=new Map(e.composed.selected);if(n.get(t)?.sourceId!==e.candidate.sourceId)throw Error(`Only the selected source for "${t}" can disable that slot.`);if(!e.composed.composition.entries.some(t=>t.kind===`shadowed`&&t.winnerSourceId===e.candidate.sourceId)&&e.allowUnmatched!==!0)throw Error(`Source "${e.candidate.logicalPath}" disables a slot with no lower-precedence source.`);return n.delete(t),{composition:{entries:Object.freeze([...e.composed.composition.entries,{kind:`disabled`,source:describeAgentSourceCandidate(e.candidate)}])},selected:n}}function createAgentModuleBinding(e){return Object.freeze({backing:e.backing,logicalPath:e.logicalPath,owner:e.owner})}async function loadProgrammaticModuleNamespace(e){let t=e.registries.map(t=>t.sources.get(e.backing.registryId)).filter(e=>e!==void 0);if(t.length!==1)throw Error(`Expected exactly one registered programmatic source "${e.backing.registryId}", found ${t.length}.`);let n=t[0];if(n.revision!==e.backing.revision)throw Error(`Programmatic source "${n.id}" revision mismatch: artifact requires "${e.backing.revision}", registry provides "${n.revision}".`);let r=n.modules.find(t=>t.logicalPath===e.backing.moduleId);if(r===void 0)throw Error(`Programmatic source "${n.id}" does not register module "${e.backing.moduleId}".`);if(r.semanticRevision!==e.backing.semanticRevision)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" semantic revision does not match the compiled binding.`);let i=Object.fromEntries(Object.entries(e.backing.dependencies??{}).map(([t,i])=>{let a=e.dependencyNamespaces?.[t];if(a===void 0)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" requires unresolved binding "${i}" as dependency "${t}".`);return[t,a]})),a=await r.loadNamespace({dependencies:Object.freeze(i),parameters:Object.freeze(e.backing.parameters??{})});if(typeof a!=`object`||!a)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" loader must return a module namespace object.`);return a}function
|
|
1
|
+
import{posix}from"node:path";import{normalizeLogicalPath,stripLogicalPathExtension}from"#discover/filesystem.js";import{parseJsonObject}from"#shared/json.js";import{validateProgrammaticLogicalPath,validateProgrammaticLogicalPath as validateProgrammaticLogicalPath$1,validateProgrammaticLogicalPathInternal}from"#compiler/source-graph-paths.js";function memoizeModuleNamespaceFactories(e){return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>{if(typeof t!=`function`)return[e,t];let n;return[e,new Proxy(t,{apply(e,t,r){return r.length>0?Reflect.apply(e,t,r):(n??=Promise.resolve().then(()=>Reflect.apply(e,t,r)),n)}})]})))}var ImmutableProgrammaticSourceMap=class{#e;constructor(e){this.#e=new Map(e),Object.freeze(this)}get size(){return this.#e.size}get[Symbol.toStringTag](){return`ImmutableProgrammaticSourceMap`}[Symbol.iterator](){return this.#e[Symbol.iterator]()}entries(){return this.#e.entries()}forEach(e,t){this.#e.forEach((n,r)=>e.call(t,n,r,this))}get(e){return this.#e.get(e)}has(e){return this.#e.has(e)}keys(){return this.#e.keys()}values(){return this.#e.values()}};function isAgentModuleCandidate(e){return e.backing.kind!==`resource`}const LAYER_PRECEDENCE={"framework-default":0,"extension-package":1,"extension-override":2,application:3},FORM_PRECEDENCE={derived:0,direct:1},registeredProgrammaticTemplates=new WeakSet;function defineProgrammaticAgentSource(e){return defineProgrammaticAgentSourceInternal(e,!1)}function defineProgrammaticAgentSourceInternal(e,t){let n=expectNonEmpty(e.id,`Programmatic agent source id`),r=expectNonEmpty(e.revision,`Programmatic agent source "${n}" revision`),i=new Set,a=e.modules.map(e=>{let r=validateProgrammaticLogicalPathInternal(e.logicalPath,t);if(i.has(r))throw Error(`Programmatic agent source "${n}" declares "${r}" more than once.`);i.add(r);let a=e.semanticRevision===void 0?void 0:expectNonEmpty(e.semanticRevision,`Programmatic module "${n}:${r}" semanticRevision`);return Object.freeze({exportName:e.exportName,loadNamespace:e.loadNamespace,logicalPath:r,semanticRevision:a})});return Object.freeze({id:n,modules:Object.freeze(a),revision:r})}function defineProgrammaticExtensionMountDeclaration(e){return defineProgrammaticAgentSourceInternal(e,!0)}function createAgentSourceRegistry(e,t={}){let n=new Map,r=new Map,addSource=(e,t=!1)=>{let r=defineProgrammaticAgentSourceInternal(e,t);if(n.has(r.id))throw Error(`Programmatic agent source id "${r.id}" is registered more than once.`);return n.set(r.id,r),r},i=e.map(e=>{let t=addSource(e.source);return Object.freeze({applyTo:e.applyTo,source:t})});for(let e of t.extensionDeclarations??[])addSource(e,!0);for(let e of t.templates??[]){let t=addSource(e);if(t.modules.length!==1)throw Error(`Programmatic template source "${t.id}" must register exactly one module.`);let n=Object.freeze({module:t.modules[0],source:t});registeredProgrammaticTemplates.add(n),r.set(t.id,n)}return Object.freeze({registrations:Object.freeze(i),sources:new ImmutableProgrammaticSourceMap(n),templates:new ImmutableProgrammaticSourceMap(r)})}function createProgrammaticModuleCandidates(e){return e.registration.source.modules.map(t=>{let n=`${e.registration.source.id}:${t.logicalPath}`;return Object.freeze({backing:Object.freeze({kind:`programmatic`,moduleId:t.logicalPath,registryId:e.registration.source.id,revision:e.registration.source.revision,semanticRevision:t.semanticRevision}),exportName:t.exportName,form:`direct`,layer:e.layer,logicalPath:t.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:n})})}function instantiateProgrammaticTemplate(e){if(!registeredProgrammaticTemplates.has(e.template))throw Error(`Derived programmatic modules require a registered template.`);let t=validateProgrammaticLogicalPath$1(e.logicalPath),n=expectNonEmpty(e.anchor.sourceId,`Derived programmatic module anchor source id`),r=`${e.template.source.id}:${t}:from:${n}`;if(!Object.values(e.dependencies).some(e=>e.sourceId===n))throw Error(`Derived programmatic module "${r}" must include its anchor source as a dependency.`);let i=Object.freeze(Object.fromEntries(Object.entries(e.dependencies).sort(([e],[t])=>e.localeCompare(t)).map(([t,n])=>{if(expectNonEmpty(t,`Derived programmatic module dependency alias`),n.nodeId!==e.anchor.nodeId)throw Error(`Derived programmatic module "${r}" cannot depend on source "${n.sourceId}" from another node.`);return[t,n.sourceId]}))),a=Object.freeze(parseJsonObject(e.parameters??{}));return Object.freeze({backing:Object.freeze({dependencies:i,kind:`programmatic`,moduleId:e.template.module.logicalPath,parameters:a,registryId:e.template.source.id,revision:e.template.source.revision,semanticRevision:e.template.module.semanticRevision}),exportName:e.template.module.exportName,form:`derived`,layer:e.anchor.layer,logicalPath:t,nodeId:e.anchor.nodeId,owner:e.owner,sourceId:r})}function composeAgentModuleCandidates(e){let t=new Map,n=new Set;for(let r of e){if(n.has(r.sourceId))throw Error(`Agent source id "${r.sourceId}" is declared more than once in node "${r.nodeId}".`);n.add(r.sourceId);let e=canonicalSourceSlot(r.logicalPath),i=t.get(e)??[];i.push(r),t.set(e,i)}let r=new Map,i=[];for(let[e,n]of[...t].sort(([e],[t])=>e.localeCompare(t))){let t=new Set;for(let r of n){let n=`${r.layer}:${r.form}`;if(t.has(n))throw Error(`Agent source slot "${e}" has more than one ${r.layer} ${r.form} candidate.`);t.add(n)}let a=[...n].sort((e,t)=>LAYER_PRECEDENCE[t.layer]-LAYER_PRECEDENCE[e.layer]||FORM_PRECEDENCE[t.form]-FORM_PRECEDENCE[e.form]),o=a[0];r.set(e,o);for(let e of a.slice(1))i.push({kind:`shadowed`,source:describeAgentSourceCandidate(e),winnerSourceId:o.sourceId})}return validateSelectedCandidateDependencies(r),{composition:{entries:Object.freeze(i)},selected:r}}function disableComposedCandidate(e){let t=canonicalSourceSlot(e.candidate.logicalPath),n=new Map(e.composed.selected);if(n.get(t)?.sourceId!==e.candidate.sourceId)throw Error(`Only the selected source for "${t}" can disable that slot.`);if(!e.composed.composition.entries.some(t=>t.kind===`shadowed`&&t.winnerSourceId===e.candidate.sourceId)&&e.allowUnmatched!==!0)throw Error(`Source "${e.candidate.logicalPath}" disables a slot with no lower-precedence source.`);return n.delete(t),{composition:{entries:Object.freeze([...e.composed.composition.entries,{kind:`disabled`,source:describeAgentSourceCandidate(e.candidate)}])},selected:n}}function createAgentModuleBinding(e){return Object.freeze({backing:e.backing,logicalPath:e.logicalPath,owner:e.owner})}async function loadProgrammaticModuleNamespace(e){let t=e.registries.map(t=>t.sources.get(e.backing.registryId)).filter(e=>e!==void 0);if(t.length!==1)throw Error(`Expected exactly one registered programmatic source "${e.backing.registryId}", found ${t.length}.`);let n=t[0];if(n.revision!==e.backing.revision)throw Error(`Programmatic source "${n.id}" revision mismatch: artifact requires "${e.backing.revision}", registry provides "${n.revision}".`);let r=n.modules.find(t=>t.logicalPath===e.backing.moduleId);if(r===void 0)throw Error(`Programmatic source "${n.id}" does not register module "${e.backing.moduleId}".`);if(r.semanticRevision!==e.backing.semanticRevision)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" semantic revision does not match the compiled binding.`);let i=Object.fromEntries(Object.entries(e.backing.dependencies??{}).map(([t,i])=>{let a=e.dependencyNamespaces?.[t];if(a===void 0)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" requires unresolved binding "${i}" as dependency "${t}".`);return[t,a]})),a=await r.loadNamespace({dependencies:Object.freeze(i),parameters:Object.freeze(e.backing.parameters??{})});if(typeof a!=`object`||!a)throw Error(`Programmatic module "${n.id}:${r.logicalPath}" loader must return a module namespace object.`);return a}function canonicalSourceSlot(e){let t=normalizeLogicalPath(e);if(t.length===0||t===`.`||t.startsWith(`../`)||t.includes(`/../`)||posix.normalize(t)!==t)throw Error(`Agent source logical path "${e}" is invalid.`);let n=stripLogicalPathExtension(t),r=n.match(/^connections\/([^/]+)\/connection$/);if(r!==null)return`connections/${r[1]}`;if(n===`sandbox/sandbox`)return`sandbox`;let i=n.match(/^skills\/([^/]+)\/SKILL$/);return i===null?n:`skills/${i[1]}`}function describeAgentSourceCandidate(e){return Object.freeze({backing:e.backing,form:e.form,layer:e.layer,logicalPath:e.logicalPath,owner:e.owner,sourceId:e.sourceId})}function validateSelectedCandidateDependencies(e){let t=new Set([...e.values()].map(e=>e.sourceId));for(let n of e.values())if(n.backing.kind===`programmatic`){for(let e of Object.values(n.backing.dependencies??{}))if(!t.has(e))throw Error(`Derived programmatic source "${n.sourceId}" depends on unselected source "${e}".`)}}function expectNonEmpty(e,t){if(e.trim().length===0)throw Error(`${t} must be non-empty.`);return e}export{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createAgentSourceRegistry,createProgrammaticModuleCandidates,defineProgrammaticAgentSource,defineProgrammaticExtensionMountDeclaration,describeAgentSourceCandidate,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate,loadProgrammaticModuleNamespace,memoizeModuleNamespaceFactories,validateProgrammaticLogicalPath};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SessionContext } from "#context/session-context.js";
|
|
2
2
|
import type { ToolExecuteOptions } from "#tools/definition.js";
|
|
3
3
|
/** Base context shared by tool executors. */
|
|
4
|
-
|
|
4
|
+
type BaseToolContext = SessionContext & {
|
|
5
5
|
readonly abortSignal: AbortSignal;
|
|
6
6
|
readonly callId: string;
|
|
7
7
|
readonly toolName: string;
|
|
@@ -11,3 +11,4 @@ export declare function buildBaseToolContext(input: {
|
|
|
11
11
|
readonly options: Pick<ToolExecuteOptions, "abortSignal" | "toolCallId">;
|
|
12
12
|
readonly toolName: string;
|
|
13
13
|
}): BaseToolContext;
|
|
14
|
+
export {};
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import type { ModelMessage } from "ai";
|
|
2
2
|
import { type AlsContext } from "#context/container.js";
|
|
3
|
-
import { type CurrentDynamicToolMetadata } from "#context/dynamic-tool-metadata.js";
|
|
4
|
-
import type { HarnessToolDefinition } from "#harness/execute-tool.js";
|
|
5
3
|
import type { SessionStartedStreamEvent, StepStartedStreamEvent, UnstampedMessageStreamEvent } from "#protocol/message.js";
|
|
6
4
|
import { type DynamicToolEntry } from "#tools/dynamic.js";
|
|
7
5
|
import { type DynamicToolCallbackOwner, type DurableDynamicToolCallbacks } from "#tools/durable-callbacks.js";
|
|
8
6
|
import type { ResolvedDynamicToolResolver } from "#runtime/types.js";
|
|
9
|
-
/** Kept as the session-specific entry point for existing runtime consumers. */
|
|
10
|
-
export declare function replayDynamicSessionTools(metadata: readonly CurrentDynamicToolMetadata[], _resolvers: readonly ResolvedDynamicToolResolver[], sessionId: string): readonly HarnessToolDefinition[];
|
|
11
7
|
export declare function validateDurableDynamicToolCallbacks(name: string, entry: DynamicToolEntry, owner: DynamicToolCallbackOwner): DurableDynamicToolCallbacks;
|
|
12
8
|
/** Resolves step-scoped tools once for one internal policy/model pass. */
|
|
13
9
|
export declare function resolveStepDynamicTools(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createLogger}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{parseJsonObject}from"#shared/json.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{ALLOWED_DYNAMIC_TOOL_EVENTS}from"#dynamic/definition.js";import{isCurrentDynamicToolMetadata,toCurrentDynamicToolMetadataList}from"#context/dynamic-tool-metadata.js";import{clearDurableDynamicCallbacks,hasUnregisteredDurableDynamicCallbacks,readDurableDynamicToolCallbacks,registerDurableDynamicCallback}from"#tools/durable-callbacks.js";import{hasSchemaValidator}from"#tools/durable-schema.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isWorkflowToolDefinition}from"#tools/workflow-definition.js";import{replayDynamicTools}from"#context/build-dynamic-tools.js";import{isBrandedToolEntry}from"#tools/dynamic.js";const log=createLogger(`dynamic-tools`);function qualifyDynamicToolNames(e,t,n){let r=Object.keys(n);if(r.length===0)return[];if(t){let t=r[0];return[{name:e.slug,entryKey:t,entry:n[t]}]}let i=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;return r.map(e=>({entry:n[e],entryKey:e,name:`${i}${e}`}))}function replayDynamicSessionTools(e,t,n){return replayDynamicTools(e,{sessionId:n,scope:`session`})}function durableKeyForEvent(e){switch(e){case`session.started`:return SessionDynamicToolMetadataKey;case`turn.started`:return TurnDynamicToolMetadataKey;case`step.started`:return StepDynamicToolMetadataKey;default:return}}function readDynamicToolResult(e,t){let assertOrdinaryTool=t=>{if(isWorkflowToolDefinition(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" cannot return defineWorkflowTool(). Workflow tools must be static tools; use defineTool() for dynamic entries.`)};if(assertOrdinaryTool(t),isBrandedToolEntry(t))return{entries:{_single:t},isSingle:!0};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" must return defineTool(), a map of defineTool() values, or null.`);let n={};for(let[r,i]of Object.entries(t)){if(assertOrdinaryTool(i),!isBrandedToolEntry(i))throw Error(`Dynamic tool resolver "${e.logicalPath}" returned "${r}" without defineTool(). Wrap every dynamic tool entry in defineTool().`);n[r]=i}return{entries:n,isSingle:!1}}function validateReference(e){let t=e.phase===`inputSchema`||e.phase===`outputSchema`,n=t?`Write the schema expression inline in defineTool() or use defineDurableSchema() for a provider package.`:`Author the callback inline in transformed source or use an eve durable callback helper.`;if(e.stamped===void 0){if(e.required)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. `+n);return}let r=Object.keys(e.stamped).filter(e=>e!==`closure`&&e!==`callback`);if(r.includes(`stepId`))throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" was persisted by a pre-release eve version that identified callbacks by build offset. Start a new session to re-resolve it.`);if(r.length>0)throw Error(`Dynamic tool "${e.name}" has invalid ${e.phase} callback metadata: unknown key(s) ${r.join(`, `)}.`);if(typeof e.stamped.callback!=`function`)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. `+n);let i;try{i=parseJsonObject(e.stamped.closure)}catch(n){throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" has a non-serializable capture. ${toErrorMessage(n)}`+(t?` Inline the schema construction or reference a stable module-level schema; put only JSON data in its closure.`:``))}return registerDurableDynamicCallback({callback:e.stamped.callback,phase:e.phase,owner:e.owner}),{closure:i}}function validateDurableDynamicToolCallbacks(e,t,n){let r=readDurableDynamicToolCallbacks(t)??{},i=Object.keys(r).filter(e=>e!==`execute`&&e!==`inputSchema`&&e!==`outputSchema`&&e!==`label`&&e!==`approvalKey`&&e!==`approvalRequest`&&e!==`approvalResponse`&&e!==`toModelOutput`);if(i.length>0)throw Error(`Dynamic tool "${e}" has unknown durable callback phase(s): ${i.join(`, `)}.`);let a=t.approval!==void 0,o=t.approval!==void 0&&typeof t.approval!=`function`&&t.approval.response!==void 0,s=validateReference({name:e,owner:n,phase:`execute`,stamped:r.execute,required:!0}),c=validateReference({name:e,owner:n,phase:`labelComplete`,stamped:r.label?.complete,required:!1}),l=validateReference({name:e,owner:n,phase:`labelDelta`,stamped:r.label?.delta,required:!1}),u=validateReference({name:e,owner:n,phase:`labelStart`,stamped:r.label?.start,required:!1}),d=validateReference({name:e,owner:n,phase:`approvalKey`,stamped:r.approvalKey,required:t.approvalKey!==void 0}),f=validateReference({name:e,owner:n,phase:`approvalRequest`,stamped:r.approvalRequest,required:a}),p=validateReference({name:e,owner:n,phase:`approvalResponse`,stamped:r.approvalResponse,required:o}),m=validateReference({name:e,owner:n,phase:`toModelOutput`,stamped:r.toModelOutput,required:t.toModelOutput!==void 0}),h=validateReference({name:e,owner:n,phase:`inputSchema`,stamped:r.inputSchema,required:hasSchemaValidator(t.inputSchema)}),g=validateReference({name:e,owner:n,phase:`outputSchema`,stamped:r.outputSchema,required:hasSchemaValidator(t.outputSchema)}),_={execute:s};return h!==void 0&&(_.inputSchema=h),g!==void 0&&(_.outputSchema=g),(c!==void 0||l!==void 0||u!==void 0)&&(_.label={complete:c,delta:l,start:u}),d!==void 0&&(_.approvalKey=d),f!==void 0&&(_.approvalRequest=f),p!==void 0&&(_.approvalResponse=p),m!==void 0&&(_.toModelOutput=m),_}function createMetadata(e){return{availableInSubagents:e.entry.availableInSubagents,callbacks:validateDurableDynamicToolCallbacks(e.name,e.entry,{sessionId:e.sessionId,scope:e.scope,resolverSlug:e.resolver.slug,entryKey:e.entryKey,name:e.name}),description:e.entry.description,entryKey:e.entryKey,inputSchema:serializeInputSchema(e.entry.inputSchema),name:e.name,outputSchema:serializeOutputSchema(e.entry.outputSchema),resolverSlug:e.resolver.slug}}async function resolveToolsFromEvent(e,t,n,r){let i=e.require(SessionIdKey),a=n.type.split(`.`)[0],o=await Promise.allSettled(t.map(async t=>{let o=t.events[n.type];if(o===void 0)return null;clearDurableDynamicCallbacks(i,{scope:a,resolverSlug:t.slug});try{let s=await o(n,buildResolveContext(e,r));if(s==null)return null;let{entries:c,isSingle:l}=readDynamicToolResult(t,s);return{metadata:qualifyDynamicToolNames(t,l,c).map(({name:e,entryKey:n,entry:r})=>createMetadata({entry:r,entryKey:n,name:e,resolver:t,sessionId:i,scope:a})),resolver:t}}catch(e){throw clearDurableDynamicCallbacks(i,{scope:a,resolverSlug:t.slug}),e}})),s=[],c=new Map;for(let e of o){if(e.status===`rejected`){log.error(`Dynamic tool resolver (${n.type}) failed — skipping its complete result.`,{error:toErrorMessage(e.reason)});continue}if(e.value!==null){for(let t of e.value.metadata){let n=c.get(t.name);if(n!==void 0&&n!==e.value.resolver.slug)throw Error(`Dynamic tool "${t.name}" from resolver "${e.value.resolver.slug}" collides with dynamic resolver "${n}". Namespace the map key manually.`);c.set(t.name,e.value.resolver.slug)}s.push(...e.value.metadata)}}return{metadata:s}}const resolvedStepTools=new WeakMap;function stepCoordinate(e){return`${e.data.turnId}:${String(e.data.stepIndex)}`}function storeResolvedStepTools(e){e.ctx.set(StepDynamicToolMetadataKey,e.metadata);let t=stepCoordinate(e.event);resolvedStepTools.set(e.ctx,{coordinate:t,metadata:e.metadata})}async function resolveStepDynamicTools(e){let t=stepCoordinate(e.event),n=resolvedStepTools.get(e.ctx);if(n?.coordinate===t){e.ctx.set(StepDynamicToolMetadataKey,n.metadata);return}let r=e.resolvers.filter(e=>e.eventNames.includes(`step.started`)),{metadata:i}=r.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,r,e.event,e.messages);storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:i})}async function preparePersistedStepDynamicToolMetadata(e){let t=e.ctx.get(StepDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata);if(n.length===t.length&&!hasUnregisteredDurableDynamicCallbacks(n,{sessionId:e.ctx.require(SessionIdKey),scope:`step`})){n.length>0&&storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:n});return}await resolveStepDynamicTools(e);let r=e.ctx.get(StepDynamicToolMetadataKey)??[];storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:toCurrentDynamicToolMetadataList(t,r.filter(isCurrentDynamicToolMetadata))})}async function dispatchDynamicToolEvent(e){if(e.event.type===`session.completed`){let t=e.ctx.get(SessionIdKey);t!==void 0&&clearDurableDynamicCallbacks(t);return}if(!ALLOWED_DYNAMIC_TOOL_EVENTS.has(e.event.type))return;if(e.event.type===`step.started`){await resolveStepDynamicTools({...e,event:e.event});return}e.event.type===`turn.started`&&e.ctx.set(StepDynamicToolMetadataKey,[]);let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),{metadata:n}=t.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,t,e.event,e.messages),r=durableKeyForEvent(e.event.type);if(r===void 0)return;if(e.event.type===`session.started`){e.ctx.set(SessionDynamicToolMetadataKey,n);return}let i=new Set(t.map(e=>e.slug)),a=(e.ctx.get(r)??[]).filter(e=>!i.has(e.resolverSlug));e.ctx.set(r,[...a,...n])}async function refreshDynamicSessionToolsForRuntimeRevision(e){let t=e.ctx.get(SessionDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata),r=n.length!==t.length,i=e.ctx.get(SessionDynamicToolRuntimeRevisionKey)!==e.runtimeRevision;if(!i&&!r&&!hasUnregisteredDurableDynamicCallbacks(n,{sessionId:e.ctx.require(SessionIdKey),scope:`session`}))return;let a=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),{metadata:o}=a.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,a,e.event,e.messages);e.ctx.set(SessionDynamicToolMetadataKey,i?o:toCurrentDynamicToolMetadataList(t,o)),e.ctx.set(SessionDynamicToolRuntimeRevisionKey,e.runtimeRevision)}async function rebindMissingCompiledDynamicToolCallbacks(e){let t=e.ctx.get(TurnDynamicToolMetadataKey)??[],n=t.filter(t=>!isCurrentDynamicToolMetadata(t)||hasUnregisteredDurableDynamicCallbacks([t],{sessionId:e.ctx.require(SessionIdKey),scope:`turn`}));if(n.length===0)return;let r=new Set(n.map(e=>e.resolverSlug)),i=new Set(t.filter(e=>!isCurrentDynamicToolMetadata(e)).map(e=>e.resolverSlug)),a=e.resolvers.filter(e=>r.has(e.slug)&&(i.has(e.slug)||e.rebindMissingCallbacks===!0));if(a.length===0){e.ctx.set(TurnDynamicToolMetadataKey,toCurrentDynamicToolMetadataList(t));return}let o=await contextStorage.run(e.ctx,async()=>await resolveToolsFromEvent(e.ctx,a,e.event,e.messages)),s=toCurrentDynamicToolMetadataList(t,o.metadata);e.ctx.set(TurnDynamicToolMetadataKey,s);let c=s.filter(t=>n.some(e=>e.resolverSlug===t.resolverSlug&&e.name===t.name)&&hasUnregisteredDurableDynamicCallbacks([t],{sessionId:e.ctx.require(SessionIdKey),scope:`turn`}));if(c.length>0)throw Error(`Dynamic tool callback rebind did not restore: ${c.map(e=>e.name).join(`, `)}. The tool may have been renamed or removed.`)}export{dispatchDynamicToolEvent,preparePersistedStepDynamicToolMetadata,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision,replayDynamicSessionTools,resolveStepDynamicTools,validateDurableDynamicToolCallbacks};
|
|
1
|
+
import{createLogger}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{parseJsonObject}from"#shared/json.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{ALLOWED_DYNAMIC_TOOL_EVENTS}from"#dynamic/definition.js";import{isCurrentDynamicToolMetadata,toCurrentDynamicToolMetadataList}from"#context/dynamic-tool-metadata.js";import{clearDurableDynamicCallbacks,hasUnregisteredDurableDynamicCallbacks,readDurableDynamicToolCallbacks,registerDurableDynamicCallback}from"#tools/durable-callbacks.js";import{hasSchemaValidator}from"#tools/durable-schema.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isWorkflowToolDefinition}from"#tools/workflow-definition.js";import{isBrandedToolEntry}from"#tools/dynamic.js";const log=createLogger(`dynamic-tools`);function qualifyDynamicToolNames(e,t,n){let r=Object.keys(n);if(r.length===0)return[];if(t){let t=r[0];return[{name:e.slug,entryKey:t,entry:n[t]}]}let i=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;return r.map(e=>({entry:n[e],entryKey:e,name:`${i}${e}`}))}function durableKeyForEvent(e){switch(e){case`session.started`:return SessionDynamicToolMetadataKey;case`turn.started`:return TurnDynamicToolMetadataKey;case`step.started`:return StepDynamicToolMetadataKey;default:return}}function readDynamicToolResult(e,t){let assertOrdinaryTool=t=>{if(isWorkflowToolDefinition(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" cannot return defineWorkflowTool(). Workflow tools must be static tools; use defineTool() for dynamic entries.`)};if(assertOrdinaryTool(t),isBrandedToolEntry(t))return{entries:{_single:t},isSingle:!0};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" must return defineTool(), a map of defineTool() values, or null.`);let n={};for(let[r,i]of Object.entries(t)){if(assertOrdinaryTool(i),!isBrandedToolEntry(i))throw Error(`Dynamic tool resolver "${e.logicalPath}" returned "${r}" without defineTool(). Wrap every dynamic tool entry in defineTool().`);n[r]=i}return{entries:n,isSingle:!1}}function validateReference(e){let t=e.phase===`inputSchema`||e.phase===`outputSchema`,n=t?`Write the schema expression inline in defineTool() or use defineDurableSchema() for a provider package.`:`Author the callback inline in transformed source or use an eve durable callback helper.`;if(e.stamped===void 0){if(e.required)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. `+n);return}let r=Object.keys(e.stamped).filter(e=>e!==`closure`&&e!==`callback`);if(r.includes(`stepId`))throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" was persisted by a pre-release eve version that identified callbacks by build offset. Start a new session to re-resolve it.`);if(r.length>0)throw Error(`Dynamic tool "${e.name}" has invalid ${e.phase} callback metadata: unknown key(s) ${r.join(`, `)}.`);if(typeof e.stamped.callback!=`function`)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. `+n);let i;try{i=parseJsonObject(e.stamped.closure)}catch(n){throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" has a non-serializable capture. ${toErrorMessage(n)}`+(t?` Inline the schema construction or reference a stable module-level schema; put only JSON data in its closure.`:``))}return registerDurableDynamicCallback({callback:e.stamped.callback,phase:e.phase,owner:e.owner}),{closure:i}}function validateDurableDynamicToolCallbacks(e,t,n){let r=readDurableDynamicToolCallbacks(t)??{},i=Object.keys(r).filter(e=>e!==`execute`&&e!==`inputSchema`&&e!==`outputSchema`&&e!==`label`&&e!==`approvalKey`&&e!==`approvalRequest`&&e!==`approvalResponse`&&e!==`toModelOutput`);if(i.length>0)throw Error(`Dynamic tool "${e}" has unknown durable callback phase(s): ${i.join(`, `)}.`);let a=t.approval!==void 0,o=t.approval!==void 0&&typeof t.approval!=`function`&&t.approval.response!==void 0,s=validateReference({name:e,owner:n,phase:`execute`,stamped:r.execute,required:!0}),c=validateReference({name:e,owner:n,phase:`labelComplete`,stamped:r.label?.complete,required:!1}),l=validateReference({name:e,owner:n,phase:`labelDelta`,stamped:r.label?.delta,required:!1}),u=validateReference({name:e,owner:n,phase:`labelStart`,stamped:r.label?.start,required:!1}),d=validateReference({name:e,owner:n,phase:`approvalKey`,stamped:r.approvalKey,required:t.approvalKey!==void 0}),f=validateReference({name:e,owner:n,phase:`approvalRequest`,stamped:r.approvalRequest,required:a}),p=validateReference({name:e,owner:n,phase:`approvalResponse`,stamped:r.approvalResponse,required:o}),m=validateReference({name:e,owner:n,phase:`toModelOutput`,stamped:r.toModelOutput,required:t.toModelOutput!==void 0}),h=validateReference({name:e,owner:n,phase:`inputSchema`,stamped:r.inputSchema,required:hasSchemaValidator(t.inputSchema)}),g=validateReference({name:e,owner:n,phase:`outputSchema`,stamped:r.outputSchema,required:hasSchemaValidator(t.outputSchema)}),_={execute:s};return h!==void 0&&(_.inputSchema=h),g!==void 0&&(_.outputSchema=g),(c!==void 0||l!==void 0||u!==void 0)&&(_.label={complete:c,delta:l,start:u}),d!==void 0&&(_.approvalKey=d),f!==void 0&&(_.approvalRequest=f),p!==void 0&&(_.approvalResponse=p),m!==void 0&&(_.toModelOutput=m),_}function createMetadata(e){return{availableInSubagents:e.entry.availableInSubagents,callbacks:validateDurableDynamicToolCallbacks(e.name,e.entry,{sessionId:e.sessionId,scope:e.scope,resolverSlug:e.resolver.slug,entryKey:e.entryKey,name:e.name}),description:e.entry.description,entryKey:e.entryKey,inputSchema:serializeInputSchema(e.entry.inputSchema),name:e.name,outputSchema:serializeOutputSchema(e.entry.outputSchema),resolverSlug:e.resolver.slug}}async function resolveToolsFromEvent(e,t,n,r){let i=e.require(SessionIdKey),a=n.type.split(`.`)[0],o=await Promise.allSettled(t.map(async t=>{let o=t.events[n.type];if(o===void 0)return null;clearDurableDynamicCallbacks(i,{scope:a,resolverSlug:t.slug});try{let s=await o(n,buildResolveContext(e,r));if(s==null)return null;let{entries:c,isSingle:l}=readDynamicToolResult(t,s);return{metadata:qualifyDynamicToolNames(t,l,c).map(({name:e,entryKey:n,entry:r})=>createMetadata({entry:r,entryKey:n,name:e,resolver:t,sessionId:i,scope:a})),resolver:t}}catch(e){throw clearDurableDynamicCallbacks(i,{scope:a,resolverSlug:t.slug}),e}})),s=[],c=new Map;for(let e of o){if(e.status===`rejected`){log.error(`Dynamic tool resolver (${n.type}) failed — skipping its complete result.`,{error:toErrorMessage(e.reason)});continue}if(e.value!==null){for(let t of e.value.metadata){let n=c.get(t.name);if(n!==void 0&&n!==e.value.resolver.slug)throw Error(`Dynamic tool "${t.name}" from resolver "${e.value.resolver.slug}" collides with dynamic resolver "${n}". Namespace the map key manually.`);c.set(t.name,e.value.resolver.slug)}s.push(...e.value.metadata)}}return{metadata:s}}const resolvedStepTools=new WeakMap;function stepCoordinate(e){return`${e.data.turnId}:${String(e.data.stepIndex)}`}function storeResolvedStepTools(e){e.ctx.set(StepDynamicToolMetadataKey,e.metadata);let t=stepCoordinate(e.event);resolvedStepTools.set(e.ctx,{coordinate:t,metadata:e.metadata})}async function resolveStepDynamicTools(e){let t=stepCoordinate(e.event),n=resolvedStepTools.get(e.ctx);if(n?.coordinate===t){e.ctx.set(StepDynamicToolMetadataKey,n.metadata);return}let r=e.resolvers.filter(e=>e.eventNames.includes(`step.started`)),{metadata:i}=r.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,r,e.event,e.messages);storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:i})}async function preparePersistedStepDynamicToolMetadata(e){let t=e.ctx.get(StepDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata);if(n.length===t.length&&!hasUnregisteredDurableDynamicCallbacks(n,{sessionId:e.ctx.require(SessionIdKey),scope:`step`})){n.length>0&&storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:n});return}await resolveStepDynamicTools(e);let r=e.ctx.get(StepDynamicToolMetadataKey)??[];storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:toCurrentDynamicToolMetadataList(t,r.filter(isCurrentDynamicToolMetadata))})}async function dispatchDynamicToolEvent(e){if(e.event.type===`session.completed`){let t=e.ctx.get(SessionIdKey);t!==void 0&&clearDurableDynamicCallbacks(t);return}if(!ALLOWED_DYNAMIC_TOOL_EVENTS.has(e.event.type))return;if(e.event.type===`step.started`){await resolveStepDynamicTools({...e,event:e.event});return}e.event.type===`turn.started`&&e.ctx.set(StepDynamicToolMetadataKey,[]);let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),{metadata:n}=t.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,t,e.event,e.messages),r=durableKeyForEvent(e.event.type);if(r===void 0)return;if(e.event.type===`session.started`){e.ctx.set(SessionDynamicToolMetadataKey,n);return}let i=new Set(t.map(e=>e.slug)),a=(e.ctx.get(r)??[]).filter(e=>!i.has(e.resolverSlug));e.ctx.set(r,[...a,...n])}async function refreshDynamicSessionToolsForRuntimeRevision(e){let t=e.ctx.get(SessionDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata),r=n.length!==t.length,i=e.ctx.get(SessionDynamicToolRuntimeRevisionKey)!==e.runtimeRevision;if(!i&&!r&&!hasUnregisteredDurableDynamicCallbacks(n,{sessionId:e.ctx.require(SessionIdKey),scope:`session`}))return;let a=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),{metadata:o}=a.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,a,e.event,e.messages);e.ctx.set(SessionDynamicToolMetadataKey,i?o:toCurrentDynamicToolMetadataList(t,o)),e.ctx.set(SessionDynamicToolRuntimeRevisionKey,e.runtimeRevision)}async function rebindMissingCompiledDynamicToolCallbacks(e){let t=e.ctx.get(TurnDynamicToolMetadataKey)??[],n=t.filter(t=>!isCurrentDynamicToolMetadata(t)||hasUnregisteredDurableDynamicCallbacks([t],{sessionId:e.ctx.require(SessionIdKey),scope:`turn`}));if(n.length===0)return;let r=new Set(n.map(e=>e.resolverSlug)),i=new Set(t.filter(e=>!isCurrentDynamicToolMetadata(e)).map(e=>e.resolverSlug)),a=e.resolvers.filter(e=>r.has(e.slug)&&(i.has(e.slug)||e.rebindMissingCallbacks===!0));if(a.length===0){e.ctx.set(TurnDynamicToolMetadataKey,toCurrentDynamicToolMetadataList(t));return}let o=await contextStorage.run(e.ctx,async()=>await resolveToolsFromEvent(e.ctx,a,e.event,e.messages)),s=toCurrentDynamicToolMetadataList(t,o.metadata);e.ctx.set(TurnDynamicToolMetadataKey,s);let c=s.filter(t=>n.some(e=>e.resolverSlug===t.resolverSlug&&e.name===t.name)&&hasUnregisteredDurableDynamicCallbacks([t],{sessionId:e.ctx.require(SessionIdKey),scope:`turn`}));if(c.length>0)throw Error(`Dynamic tool callback rebind did not restore: ${c.map(e=>e.name).join(`, `)}. The tool may have been renamed or removed.`)}export{dispatchDynamicToolEvent,preparePersistedStepDynamicToolMetadata,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision,resolveStepDynamicTools,validateDurableDynamicToolCallbacks};
|
|
@@ -39,7 +39,6 @@ export type OldDynamicToolMetadata = OldStepFunctionDynamicToolMetadata | OldSou
|
|
|
39
39
|
export type PersistedDynamicToolMetadata = CurrentDynamicToolMetadata | OldDynamicToolMetadata;
|
|
40
40
|
export declare function isOldSourceOffsetDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is OldSourceOffsetDynamicToolMetadata;
|
|
41
41
|
export declare function isCurrentDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is CurrentDynamicToolMetadata;
|
|
42
|
-
export declare function isOldStepFunctionDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is OldStepFunctionDynamicToolMetadata;
|
|
43
42
|
/** Converts persisted metadata without changing already-persisted callback closures. */
|
|
44
43
|
export declare function toCurrentDynamicToolMetadata(persisted: PersistedDynamicToolMetadata, resolved?: CurrentDynamicToolMetadata): CurrentDynamicToolMetadata;
|
|
45
44
|
export declare function toCurrentDynamicToolMetadataList(persisted: readonly PersistedDynamicToolMetadata[], resolved?: readonly CurrentDynamicToolMetadata[]): readonly CurrentDynamicToolMetadata[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function isOldSourceOffsetDynamicToolMetadata(e){return e.callbacks!==void 0&&`stepId`in e.callbacks.execute}function isCurrentDynamicToolMetadata(e){return e.callbacks!==void 0&&!isOldSourceOffsetDynamicToolMetadata(e)}function isOldStepFunctionDynamicToolMetadata(e){return e.callbacks===void 0}function withoutSourceOffset(e){return{closure:e.closure}}function convertSourceOffsetMetadata(e){let t={execute:withoutSourceOffset(e.callbacks.execute),...e.callbacks.approvalRequest===void 0?{}:{approvalRequest:withoutSourceOffset(e.callbacks.approvalRequest)},...e.callbacks.approvalResponse===void 0?{}:{approvalResponse:withoutSourceOffset(e.callbacks.approvalResponse)},...e.callbacks.toModelOutput===void 0?{}:{toModelOutput:withoutSourceOffset(e.callbacks.toModelOutput)}};return{...e,callbacks:t}}function toCurrentDynamicToolMetadata(e,t){if(isCurrentDynamicToolMetadata(e))return e;if(t===void 0)throw Error(`Dynamic tool "${e.name}" uses old persisted metadata, but its resolver did not return a current replacement.`);if(t.resolverSlug!==e.resolverSlug||t.name!==e.name)throw Error(`Dynamic tool "${e.name}" received current metadata from a different resolver or tool.`);if(!isOldStepFunctionDynamicToolMetadata(e)){for(let n of Object.keys(e.callbacks))if(t.callbacks[n]===void 0)throw Error(`Dynamic tool "${e.name}" lost its ${n} callback while converting old persisted metadata.`);return convertSourceOffsetMetadata(e)}if(e.approvalResponseStepFnName!==void 0&&e.approvalStepFnName===void 0)throw Error(`Dynamic tool "${e.name}" has an old approval-response callback without an approval-request callback.`);if(e.approvalStepFnName!==void 0&&t.callbacks.approvalRequest===void 0)throw Error(`Dynamic tool "${e.name}" lost its approval-request callback while converting old persisted metadata.`);if(e.approvalResponseStepFnName!==void 0&&t.callbacks.approvalResponse===void 0)throw Error(`Dynamic tool "${e.name}" lost its approval-response callback while converting old persisted metadata.`);return t}function toCurrentDynamicToolMetadataList(e,t=[]){return e.map(e=>toCurrentDynamicToolMetadata(e,t.find(t=>t.resolverSlug===e.resolverSlug&&t.name===e.name)))}export{isCurrentDynamicToolMetadata,isOldSourceOffsetDynamicToolMetadata,
|
|
1
|
+
function isOldSourceOffsetDynamicToolMetadata(e){return e.callbacks!==void 0&&`stepId`in e.callbacks.execute}function isCurrentDynamicToolMetadata(e){return e.callbacks!==void 0&&!isOldSourceOffsetDynamicToolMetadata(e)}function isOldStepFunctionDynamicToolMetadata(e){return e.callbacks===void 0}function withoutSourceOffset(e){return{closure:e.closure}}function convertSourceOffsetMetadata(e){let t={execute:withoutSourceOffset(e.callbacks.execute),...e.callbacks.approvalRequest===void 0?{}:{approvalRequest:withoutSourceOffset(e.callbacks.approvalRequest)},...e.callbacks.approvalResponse===void 0?{}:{approvalResponse:withoutSourceOffset(e.callbacks.approvalResponse)},...e.callbacks.toModelOutput===void 0?{}:{toModelOutput:withoutSourceOffset(e.callbacks.toModelOutput)}};return{...e,callbacks:t}}function toCurrentDynamicToolMetadata(e,t){if(isCurrentDynamicToolMetadata(e))return e;if(t===void 0)throw Error(`Dynamic tool "${e.name}" uses old persisted metadata, but its resolver did not return a current replacement.`);if(t.resolverSlug!==e.resolverSlug||t.name!==e.name)throw Error(`Dynamic tool "${e.name}" received current metadata from a different resolver or tool.`);if(!isOldStepFunctionDynamicToolMetadata(e)){for(let n of Object.keys(e.callbacks))if(t.callbacks[n]===void 0)throw Error(`Dynamic tool "${e.name}" lost its ${n} callback while converting old persisted metadata.`);return convertSourceOffsetMetadata(e)}if(e.approvalResponseStepFnName!==void 0&&e.approvalStepFnName===void 0)throw Error(`Dynamic tool "${e.name}" has an old approval-response callback without an approval-request callback.`);if(e.approvalStepFnName!==void 0&&t.callbacks.approvalRequest===void 0)throw Error(`Dynamic tool "${e.name}" lost its approval-request callback while converting old persisted metadata.`);if(e.approvalResponseStepFnName!==void 0&&t.callbacks.approvalResponse===void 0)throw Error(`Dynamic tool "${e.name}" lost its approval-response callback while converting old persisted metadata.`);return t}function toCurrentDynamicToolMetadataList(e,t=[]){return e.map(e=>toCurrentDynamicToolMetadata(e,t.find(t=>t.resolverSlug===e.resolverSlug&&t.name===e.name)))}export{isCurrentDynamicToolMetadata,isOldSourceOffsetDynamicToolMetadata,toCurrentDynamicToolMetadata,toCurrentDynamicToolMetadataList};
|
|
@@ -45,11 +45,3 @@ export declare function dispatchMemoryTurnCompleted(input: {
|
|
|
45
45
|
readonly messages: readonly ModelMessage[];
|
|
46
46
|
readonly instrumentation?: MemoryInstrumentation;
|
|
47
47
|
}): Promise<void>;
|
|
48
|
-
export declare function memoryOperationId(input: {
|
|
49
|
-
readonly phase: string;
|
|
50
|
-
readonly sequence: number;
|
|
51
|
-
readonly sessionId: string;
|
|
52
|
-
readonly slot: string;
|
|
53
|
-
readonly stepIndex?: number;
|
|
54
|
-
readonly turnId: string | null;
|
|
55
|
-
}): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createLogger}from"#internal/logging.js";import{PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,TurnMemoryLocksKey}from"#context/keys.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isEveDevEnvironment}from"#internal/application/dev-environment.js";import{defaultNamespace}from"#public/memory/index.js";import{instrumentMemoryOperation}from"#instrumentation/memory.js";import{applyMemoryRecallBatches,createMemoryLock,projectMemoryHistory,validateMemoryRecallResult}from"#shared/memory-state.js";const fallbackAbortSignal=new AbortController().signal,log=createLogger(`memory`);function prepareMemoryPreamble(e,t){e.setVirtualContext(PreparedMemoryPreambleKey,t)}async function dispatchMemoryTurnStarted(e){let t=e.ctx.get(PreparedMemoryPreambleKey);if(t===void 0)return[];let n=Object.freeze({id:e.event.data.turnId,input:Object.freeze([...t.input]),sequence:e.event.data.sequence}),r=Object.fromEntries((await Promise.all([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let r=await resolveMemoryLock({abortSignal:e.abortSignal??fallbackAbortSignal,appRoot:e.appRoot,ctx:e.ctx,memory:t,nodeId:e.nodeId,turn:n});return r===null?null:[t.slot,r]}))).filter(e=>e!==null));e.ctx.set(TurnMemoryLocksKey,r);let i=projectMemoryHistory({locks:r,messages:t.history}),a=buildCallbackContext(),o=(await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let o=r[t.slot];if(o===void 0)return null;let s=memoryOperationId({phase:`turn.started`,sequence:e.event.data.sequence,sessionId:a.session.id,slot:t.slot,turnId:n.id});return{lock:o,messages:await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`search_memory`,phase:`turn.started`,slot:t.slot,storeId:o.scope.key,turnId:n.id}),async()=>{let r=await t.provider.recall[`turn.started`]({...a,abortSignal:e.abortSignal??fallbackAbortSignal,memory:{scope:o.scope,slot:t.slot},messages:i,operationId:s,turn:n}),c=validateMemoryRecallResult(r,t.slot);return{outputRecords:memoryRecords(r),recordCount:c.length,value:c}}),operationId:s}}))).filter(e=>e!==null),s=applyMemoryRecallBatches({batches:o,history:t.history,state:t.state}),c=[...projectMemoryHistory({locks:r,messages:s.history}),...t.input],l=t.projector?.({messages:c,state:s.state})??c;return e.ctx.setVirtualContext(PendingMemoryCommitKey,{history:s.history,projectedMessages:l,state:s.state}),l}function drainMemoryCommit(e){let t=e.get(PendingMemoryCommitKey);return e.delete(PendingMemoryCommitKey),e.delete(PreparedMemoryPreambleKey),t}function prepareMemoryCompaction(e,t){e.setVirtualContext(PreparedMemoryCompactionKey,t)}async function dispatchMemoryCompactionRequested(e){let t=buildCallbackContext(),n=await resolveCompactionLocks(e);e.ctx.set(TurnMemoryLocksKey,n);let r=e.event.data.turnId.length===0?null:firstLockedTurn(n);await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async i=>{let a=n[i.slot],o=i.provider.capture?.[`compaction.requested`];if(a===void 0||o===void 0)return;let s=memoryOperationId({phase:`compaction.requested`,sequence:e.event.data.sequence,sessionId:t.session.id,slot:i.slot,stepIndex:e.event.data.stepIndex,turnId:r?.id??null});await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`upsert_memory`,phase:`compaction.requested`,slot:i.slot,storeId:a.scope.key,turnId:r?.id}),async()=>(await o({...t,abortSignal:e.abortSignal??fallbackAbortSignal,compaction:{modelId:e.event.data.modelId,usageInputTokens:e.event.data.usageInputTokens},memory:{scope:a.scope,slot:i.slot},messages:e.messages,operationId:s,turn:r}),{value:void 0}))}))}async function dispatchMemoryCompactionCompleted(e){let t=e.ctx.get(PreparedMemoryCompactionKey),n=t?.history??e.messages,r=e.ctx.get(TurnMemoryLocksKey)??{},i=projectMemoryHistory({locks:r,messages:n}),a=buildCallbackContext(),o=e.event.data.turnId.length===0?null:firstLockedTurn(r),s=(await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let n=r[t.slot],s=t.provider.recall[`compaction.completed`];if(n===void 0||s===void 0)return null;let c=memoryOperationId({phase:`compaction.completed`,sequence:e.event.data.sequence,sessionId:a.session.id,slot:t.slot,stepIndex:e.event.data.stepIndex,turnId:o?.id??null});return{lock:n,messages:await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:c,operationName:`search_memory`,phase:`compaction.completed`,slot:t.slot,storeId:n.scope.key,turnId:o?.id}),async()=>{let r=await s({...a,abortSignal:e.abortSignal??fallbackAbortSignal,compaction:{modelId:e.event.data.modelId},memory:{scope:n.scope,slot:t.slot},messages:i,operationId:c,turn:o}),l=validateMemoryRecallResult(r,t.slot);return{outputRecords:memoryRecords(r),recordCount:l.length,value:l}}),operationId:c}}))).filter(e=>e!==null),c=applyMemoryRecallBatches({batches:s,history:n,state:t?.state}),l=projectMemoryHistory({locks:r,messages:c.history});return e.ctx.setVirtualContext(PendingMemoryCommitKey,{history:c.history,projectedMessages:l,state:c.state}),e.ctx.delete(PreparedMemoryCompactionKey),l}async function dispatchMemoryTurnCompleted(e){let t=e.ctx.get(TurnMemoryLocksKey)??{},n=buildCallbackContext(),r=projectMemoryHistory({locks:t,messages:e.messages});await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async i=>{let a=t[i.slot],o=i.provider.capture?.[`turn.completed`];if(a===void 0||o===void 0)return;let s=memoryOperationId({phase:`turn.completed`,sequence:e.event.data.sequence,sessionId:n.session.id,slot:i.slot,turnId:e.event.data.turnId});await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`upsert_memory`,phase:`turn.completed`,slot:i.slot,storeId:a.scope.key,turnId:a.turn.id}),async()=>(await o({...n,abortSignal:e.abortSignal??fallbackAbortSignal,memory:{scope:a.scope,slot:i.slot},messages:r,operationId:s,turn:a.turn}),{value:void 0}))}))}async function resolveCompactionLocks(e){let t=e.ctx.get(TurnMemoryLocksKey);if(e.event.data.turnId.length>0&&t!==void 0)return t;let n=Object.freeze({id:``,input:[],sequence:e.event.data.sequence});return Object.fromEntries((await Promise.all(e.memories.map(async t=>{let r=await resolveMemoryLock({abortSignal:e.abortSignal??fallbackAbortSignal,appRoot:e.appRoot,ctx:e.ctx,memory:t,nodeId:e.nodeId,turn:n});return r===null?null:[t.slot,r]}))).filter(e=>e!==null))}function firstLockedTurn(e){return Object.values(e)[0]?.turn??null}async function resolveMemoryLock(e){let t=buildResolveContext(e.ctx,[]),n={abortSignal:e.abortSignal,channel:t.channel,session:t.session},r=typeof e.memory.scope==`function`?await e.memory.scope(n):e.memory.scope;if(r===null)return reportDisabledMemorySlot(e.memory.slot,`scope`),null;let i={appRoot:e.appRoot,node:e.nodeId,slot:e.memory.slot},a=e.memory.namespace===void 0?defaultNamespace(i):typeof e.memory.namespace==`function`?await e.memory.namespace(i):e.memory.namespace;return a===null?(reportDisabledMemorySlot(e.memory.slot,`namespace`),null):createMemoryLock({namespace:a,scope:r,slot:e.memory.slot,turn:e.turn,visibility:e.memory.visibility})}function reportDisabledMemorySlot(e,t){isEveDevEnvironment()&&log.info(`Memory slot is disabled for this operation`,{resolver:t,slot:e})}async function settleMemoryOperations(e){let t=await Promise.allSettled(e),n=[],r;for(let e of t)e.status===`rejected`?r??=e:n.push(e.value);if(r!==void 0)throw r.reason;return n}function memoryOperationId(e){return[`eve-memory-operation-v1`,e.sessionId,String(e.sequence),e.turnId??`standalone`,...e.stepIndex===void 0?[]:[String(e.stepIndex)],e.phase,e.slot].join(`:`)}function memoryInstrumentationOperation(e){return{idempotencyKey:e.operationId,operationName:e.operationName,phase:e.phase,slot:e.slot,storeId:e.storeId,turnId:e.turnId}}function memoryRecords(e){return e==null?[]:e.messages.map(e=>e.id===void 0?{content:e.content}:{content:e.content,id:e.id})}export{dispatchMemoryCompactionCompleted,dispatchMemoryCompactionRequested,dispatchMemoryTurnCompleted,dispatchMemoryTurnStarted,drainMemoryCommit,
|
|
1
|
+
import{createLogger}from"#internal/logging.js";import{PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,TurnMemoryLocksKey}from"#context/keys.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isEveDevEnvironment}from"#internal/application/dev-environment.js";import{defaultNamespace}from"#public/memory/index.js";import{instrumentMemoryOperation}from"#instrumentation/memory.js";import{applyMemoryRecallBatches,createMemoryLock,projectMemoryHistory,validateMemoryRecallResult}from"#shared/memory-state.js";const fallbackAbortSignal=new AbortController().signal,log=createLogger(`memory`);function prepareMemoryPreamble(e,t){e.setVirtualContext(PreparedMemoryPreambleKey,t)}async function dispatchMemoryTurnStarted(e){let t=e.ctx.get(PreparedMemoryPreambleKey);if(t===void 0)return[];let n=Object.freeze({id:e.event.data.turnId,input:Object.freeze([...t.input]),sequence:e.event.data.sequence}),r=Object.fromEntries((await Promise.all([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let r=await resolveMemoryLock({abortSignal:e.abortSignal??fallbackAbortSignal,appRoot:e.appRoot,ctx:e.ctx,memory:t,nodeId:e.nodeId,turn:n});return r===null?null:[t.slot,r]}))).filter(e=>e!==null));e.ctx.set(TurnMemoryLocksKey,r);let i=projectMemoryHistory({locks:r,messages:t.history}),a=buildCallbackContext(),o=(await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let o=r[t.slot];if(o===void 0)return null;let s=memoryOperationId({phase:`turn.started`,sequence:e.event.data.sequence,sessionId:a.session.id,slot:t.slot,turnId:n.id});return{lock:o,messages:await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`search_memory`,phase:`turn.started`,slot:t.slot,storeId:o.scope.key,turnId:n.id}),async()=>{let r=await t.provider.recall[`turn.started`]({...a,abortSignal:e.abortSignal??fallbackAbortSignal,memory:{scope:o.scope,slot:t.slot},messages:i,operationId:s,turn:n}),c=validateMemoryRecallResult(r,t.slot);return{outputRecords:memoryRecords(r),recordCount:c.length,value:c}}),operationId:s}}))).filter(e=>e!==null),s=applyMemoryRecallBatches({batches:o,history:t.history,state:t.state}),c=[...projectMemoryHistory({locks:r,messages:s.history}),...t.input],l=t.projector?.({messages:c,state:s.state})??c;return e.ctx.setVirtualContext(PendingMemoryCommitKey,{history:s.history,projectedMessages:l,state:s.state}),l}function drainMemoryCommit(e){let t=e.get(PendingMemoryCommitKey);return e.delete(PendingMemoryCommitKey),e.delete(PreparedMemoryPreambleKey),t}function prepareMemoryCompaction(e,t){e.setVirtualContext(PreparedMemoryCompactionKey,t)}async function dispatchMemoryCompactionRequested(e){let t=buildCallbackContext(),n=await resolveCompactionLocks(e);e.ctx.set(TurnMemoryLocksKey,n);let r=e.event.data.turnId.length===0?null:firstLockedTurn(n);await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async i=>{let a=n[i.slot],o=i.provider.capture?.[`compaction.requested`];if(a===void 0||o===void 0)return;let s=memoryOperationId({phase:`compaction.requested`,sequence:e.event.data.sequence,sessionId:t.session.id,slot:i.slot,stepIndex:e.event.data.stepIndex,turnId:r?.id??null});await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`upsert_memory`,phase:`compaction.requested`,slot:i.slot,storeId:a.scope.key,turnId:r?.id}),async()=>(await o({...t,abortSignal:e.abortSignal??fallbackAbortSignal,compaction:{modelId:e.event.data.modelId,usageInputTokens:e.event.data.usageInputTokens},memory:{scope:a.scope,slot:i.slot},messages:e.messages,operationId:s,turn:r}),{value:void 0}))}))}async function dispatchMemoryCompactionCompleted(e){let t=e.ctx.get(PreparedMemoryCompactionKey),n=t?.history??e.messages,r=e.ctx.get(TurnMemoryLocksKey)??{},i=projectMemoryHistory({locks:r,messages:n}),a=buildCallbackContext(),o=e.event.data.turnId.length===0?null:firstLockedTurn(r),s=(await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async t=>{let n=r[t.slot],s=t.provider.recall[`compaction.completed`];if(n===void 0||s===void 0)return null;let c=memoryOperationId({phase:`compaction.completed`,sequence:e.event.data.sequence,sessionId:a.session.id,slot:t.slot,stepIndex:e.event.data.stepIndex,turnId:o?.id??null});return{lock:n,messages:await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:c,operationName:`search_memory`,phase:`compaction.completed`,slot:t.slot,storeId:n.scope.key,turnId:o?.id}),async()=>{let r=await s({...a,abortSignal:e.abortSignal??fallbackAbortSignal,compaction:{modelId:e.event.data.modelId},memory:{scope:n.scope,slot:t.slot},messages:i,operationId:c,turn:o}),l=validateMemoryRecallResult(r,t.slot);return{outputRecords:memoryRecords(r),recordCount:l.length,value:l}}),operationId:c}}))).filter(e=>e!==null),c=applyMemoryRecallBatches({batches:s,history:n,state:t?.state}),l=projectMemoryHistory({locks:r,messages:c.history});return e.ctx.setVirtualContext(PendingMemoryCommitKey,{history:c.history,projectedMessages:l,state:c.state}),e.ctx.delete(PreparedMemoryCompactionKey),l}async function dispatchMemoryTurnCompleted(e){let t=e.ctx.get(TurnMemoryLocksKey)??{},n=buildCallbackContext(),r=projectMemoryHistory({locks:t,messages:e.messages});await settleMemoryOperations([...e.memories].sort((e,t)=>e.logicalPath.localeCompare(t.logicalPath)).map(async i=>{let a=t[i.slot],o=i.provider.capture?.[`turn.completed`];if(a===void 0||o===void 0)return;let s=memoryOperationId({phase:`turn.completed`,sequence:e.event.data.sequence,sessionId:n.session.id,slot:i.slot,turnId:e.event.data.turnId});await instrumentMemoryOperation(e.instrumentation,memoryInstrumentationOperation({operationId:s,operationName:`upsert_memory`,phase:`turn.completed`,slot:i.slot,storeId:a.scope.key,turnId:a.turn.id}),async()=>(await o({...n,abortSignal:e.abortSignal??fallbackAbortSignal,memory:{scope:a.scope,slot:i.slot},messages:r,operationId:s,turn:a.turn}),{value:void 0}))}))}async function resolveCompactionLocks(e){let t=e.ctx.get(TurnMemoryLocksKey);if(e.event.data.turnId.length>0&&t!==void 0)return t;let n=Object.freeze({id:``,input:[],sequence:e.event.data.sequence});return Object.fromEntries((await Promise.all(e.memories.map(async t=>{let r=await resolveMemoryLock({abortSignal:e.abortSignal??fallbackAbortSignal,appRoot:e.appRoot,ctx:e.ctx,memory:t,nodeId:e.nodeId,turn:n});return r===null?null:[t.slot,r]}))).filter(e=>e!==null))}function firstLockedTurn(e){return Object.values(e)[0]?.turn??null}async function resolveMemoryLock(e){let t=buildResolveContext(e.ctx,[]),n={abortSignal:e.abortSignal,channel:t.channel,session:t.session},r=typeof e.memory.scope==`function`?await e.memory.scope(n):e.memory.scope;if(r===null)return reportDisabledMemorySlot(e.memory.slot,`scope`),null;let i={appRoot:e.appRoot,node:e.nodeId,slot:e.memory.slot},a=e.memory.namespace===void 0?defaultNamespace(i):typeof e.memory.namespace==`function`?await e.memory.namespace(i):e.memory.namespace;return a===null?(reportDisabledMemorySlot(e.memory.slot,`namespace`),null):createMemoryLock({namespace:a,scope:r,slot:e.memory.slot,turn:e.turn,visibility:e.memory.visibility})}function reportDisabledMemorySlot(e,t){isEveDevEnvironment()&&log.info(`Memory slot is disabled for this operation`,{resolver:t,slot:e})}async function settleMemoryOperations(e){let t=await Promise.allSettled(e),n=[],r;for(let e of t)e.status===`rejected`?r??=e:n.push(e.value);if(r!==void 0)throw r.reason;return n}function memoryOperationId(e){return[`eve-memory-operation-v1`,e.sessionId,String(e.sequence),e.turnId??`standalone`,...e.stepIndex===void 0?[]:[String(e.stepIndex)],e.phase,e.slot].join(`:`)}function memoryInstrumentationOperation(e){return{idempotencyKey:e.operationId,operationName:e.operationName,phase:e.phase,slot:e.slot,storeId:e.storeId,turnId:e.turnId}}function memoryRecords(e){return e==null?[]:e.messages.map(e=>e.id===void 0?{content:e.content}:{content:e.content,id:e.id})}export{dispatchMemoryCompactionCompleted,dispatchMemoryCompactionRequested,dispatchMemoryTurnCompleted,dispatchMemoryTurnStarted,drainMemoryCommit,prepareMemoryCompaction,prepareMemoryPreamble};
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
import { type DiscoverDiagnostic } from "#discover/diagnostics.js";
|
|
2
2
|
import { type ConnectionSourceRef } from "#discover/manifest.js";
|
|
3
3
|
import type { ProjectSource, ProjectSourceEntry } from "#discover/project-source.js";
|
|
4
|
-
/**
|
|
5
|
-
* Shared diagnostic emitted when the authored `connections/` root is not a
|
|
6
|
-
* directory.
|
|
7
|
-
*/
|
|
8
|
-
export declare const DISCOVER_CONNECTIONS_DIRECTORY_INVALID = "discover/connections-directory-invalid";
|
|
9
|
-
/**
|
|
10
|
-
* Discovery diagnostic emitted when a connection exists in both file form
|
|
11
|
-
* (`connections/<name>.ts`) and folder form (`connections/<name>/`).
|
|
12
|
-
*/
|
|
13
|
-
export declare const DISCOVER_CONNECTION_FILE_FOLDER_COLLISION = "discover/connection-file-folder-collision";
|
|
14
|
-
/**
|
|
15
|
-
* Discovery diagnostic emitted when a folder-form connection contains no
|
|
16
|
-
* `connection.ts` definition module.
|
|
17
|
-
*/
|
|
18
|
-
export declare const DISCOVER_CONNECTION_FOLDER_EMPTY = "discover/connection-folder-empty";
|
|
19
4
|
/**
|
|
20
5
|
* Result of discovering authored connection sources from a single agent root.
|
|
21
6
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join}from"node:path";import{normalizeLogicalPath}from"#discover/filesystem.js";import{createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{
|
|
1
|
+
import{join}from"node:path";import{normalizeLogicalPath}from"#discover/filesystem.js";import{createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{DISCOVER_MODULE_SLOT_COLLISION,createConnectionNameDiagnostic,createModuleSlotCollisionDiagnostic,readSortedDirectoryEntries}from"#discover/grammar.js";import{createConnectionSourceRef}from"#discover/manifest.js";import{collectNamedSlotCandidates}from"#discover/slots.js";async function discoverConnectionSources(e){let t=`connections`,n=join(e.rootPath,t),r=e.rootEntries.find(e=>e.name===t);if(r===void 0)return{connections:[],diagnostics:[]};if(!r.isDirectory())return{connections:[],diagnostics:[createDiscoverErrorDiagnostic({code:`discover/connections-directory-invalid`,message:`Expected "${n}" to be a directory of authored connections.`,sourcePath:n})]};let i=await readSortedDirectoryEntries(e.source,n),a=[],o=[],s=new Set;for(let e of collectNamedSlotCandidates(i,{allowMarkdown:!1,allowModules:!0})){let r=normalizeLogicalPath(join(t,e.slotName));if(e.moduleFileNames.length>1){s.add(e.slotName),o.push(createModuleSlotCollisionDiagnostic(n,r,e.moduleFileNames));continue}let[i]=e.moduleFileNames;if(i===void 0)continue;s.add(e.slotName);let c=createConnectionNameDiagnostic(e.slotName,join(n,i));if(c!==null){o.push(c);continue}a.push(createConnectionSourceRef({connectionName:e.slotName,logicalPath:join(t,i)}))}for(let r of i){if(!r.isDirectory())continue;let i=r.name,c=join(n,i);if(s.has(i)){o.push(createDiscoverErrorDiagnostic({code:`discover/connection-file-folder-collision`,message:`Connection "${i}" is defined twice. Found both file-form "connections/${i}.ts" and folder-form "connections/${i}/". Use one form, not both.`,sourcePath:c}));let e=a.findIndex(e=>e.connectionName===i);e!==-1&&a.splice(e,1);continue}let l=createConnectionNameDiagnostic(i,c);if(l!==null){o.push(l);continue}let u=collectFolderConnectionModuleCandidates(await readSortedDirectoryEntries(e.source,c));if(u.length>1){o.push(createDiscoverErrorDiagnostic({code:DISCOVER_MODULE_SLOT_COLLISION,message:`Found multiple connection definition modules inside "${normalizeLogicalPath(join(t,i))}": `+u.map(e=>`"${e}"`).join(`, `),sourcePath:c}));continue}let[d]=u;if(d===void 0){o.push(createDiscoverErrorDiagnostic({code:`discover/connection-folder-empty`,message:`Connection folder "connections/${i}/" contains no "connection.ts" definition. Add "connections/${i}/connection.ts" or use the file form "connections/${i}.ts".`,sourcePath:c}));continue}a.push(createConnectionSourceRef({connectionName:i,logicalPath:join(t,i,d)}))}return{connections:a,diagnostics:o}}function collectFolderConnectionModuleCandidates(e){let t=e.filter(e=>e.isFile()),n=[];for(let e of collectNamedSlotCandidates(t,{allowMarkdown:!1,allowModules:!0}))e.slotName===`connection`&&n.push(...e.moduleFileNames);return n}export{discoverConnectionSources};
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
import { z } from "#compiled/zod/index.js";
|
|
2
|
-
/**
|
|
3
|
-
* Structured discovery diagnostic severity.
|
|
4
|
-
*/
|
|
5
|
-
export type DiscoverDiagnosticSeverity = z.infer<typeof discoverDiagnosticSeveritySchema>;
|
|
6
|
-
/**
|
|
7
|
-
* Zod schema for structured discovery diagnostic severities.
|
|
8
|
-
*/
|
|
9
|
-
export declare const discoverDiagnosticSeveritySchema: z.ZodUnion<readonly [z.ZodLiteral<"error">, z.ZodLiteral<"warning">]>;
|
|
10
2
|
/**
|
|
11
3
|
* Structured discovery diagnostic emitted while classifying authored sources.
|
|
12
4
|
*/
|
|
@@ -47,7 +39,3 @@ export declare function createDiscoverWarningDiagnostic(input: Omit<DiscoverDiag
|
|
|
47
39
|
* Summarizes discovery diagnostics into error and warning counts.
|
|
48
40
|
*/
|
|
49
41
|
export declare function summarizeDiscoverDiagnostics(diagnostics: readonly DiscoverDiagnostic[]): DiscoverDiagnosticsSummary;
|
|
50
|
-
/**
|
|
51
|
-
* Returns whether discovery diagnostics include at least one error.
|
|
52
|
-
*/
|
|
53
|
-
export declare function hasDiscoverErrors(diagnostics: readonly DiscoverDiagnostic[]): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z}from"#compiled/zod/index.js";const discoverDiagnosticSeveritySchema=z.union([z.literal(`error`),z.literal(`warning`)]),discoverDiagnosticSchema=z.object({code:z.string(),message:z.string(),severity:discoverDiagnosticSeveritySchema,sourcePath:z.string()}).strict(),discoverDiagnosticsSummarySchema=z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict(),DISCOVER_PROJECT_NOT_FOUND=`discover/project-not-found`;function createDiscoverErrorDiagnostic(e){return{...e,severity:`error`}}function createDiscoverWarningDiagnostic(e){return{...e,severity:`warning`}}function summarizeDiscoverDiagnostics(e){return e.reduce((e,t)=>(t.severity===`error`?e.errors+=1:e.warnings+=1,e),{errors:0,warnings:0})}
|
|
1
|
+
import{z}from"#compiled/zod/index.js";const discoverDiagnosticSeveritySchema=z.union([z.literal(`error`),z.literal(`warning`)]),discoverDiagnosticSchema=z.object({code:z.string(),message:z.string(),severity:discoverDiagnosticSeveritySchema,sourcePath:z.string()}).strict(),discoverDiagnosticsSummarySchema=z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict(),DISCOVER_PROJECT_NOT_FOUND=`discover/project-not-found`;function createDiscoverErrorDiagnostic(e){return{...e,severity:`error`}}function createDiscoverWarningDiagnostic(e){return{...e,severity:`warning`}}function summarizeDiscoverDiagnostics(e){return e.reduce((e,t)=>(t.severity===`error`?e.errors+=1:e.warnings+=1,e),{errors:0,warnings:0})}export{DISCOVER_PROJECT_NOT_FOUND,createDiscoverErrorDiagnostic,createDiscoverWarningDiagnostic,discoverDiagnosticSchema,discoverDiagnosticsSummarySchema,summarizeDiscoverDiagnostics};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join,resolve}from"node:path";import{classifyAgentRootEntry,normalizeLogicalPath}from"#discover/filesystem.js";import{
|
|
1
|
+
import{join,resolve}from"node:path";import{classifyAgentRootEntry,normalizeLogicalPath}from"#discover/filesystem.js";import{DISCOVER_EXTENSION_AGENT_CONFIG_UNSUPPORTED,DISCOVER_EXTENSION_INSTRUMENTATION_UNSUPPORTED,DISCOVER_EXTENSION_MEMORY_UNSUPPORTED,DISCOVER_EXTENSION_MOUNT_AMBIGUOUS,DISCOVER_EXTENSION_MOUNT_MISSING_DECLARATION,DISCOVER_EXTENSION_NESTED_MOUNT_UNSUPPORTED,DISCOVER_EXTENSION_SANDBOX_UNSUPPORTED,locateExtensionMount,mountNamespace}from"#discover/extensions.js";import{createDiskProjectSource}from"#discover/project-source.js";import{createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{DISCOVER_CHANNELS_DIRECTORY_INVALID,DISCOVER_EXTENSIONS_DIRECTORY_INVALID,DISCOVER_HOOKS_DIRECTORY_INVALID,DISCOVER_TOOLS_DIRECTORY_INVALID,createChannelNameDiagnostic,createExtensionNameDiagnostic,createHookNameDiagnostic,createToolNameDiagnostic,createUnsupportedRootDirectoryDiagnostics,discoverFlatModuleSource,discoverInstructionsSource,discoverNamedSourceDirectory,readSortedDirectoryEntries}from"#discover/grammar.js";import{createAgentSourceManifest,createModuleSourceRef}from"#discover/manifest.js";import{discoverConnectionSources}from"#discover/connections.js";import{discoverSubagents}from"#discover/discover-subagent.js";import{discoverLibSources}from"#discover/lib.js";import{discoverMemorySources}from"#discover/memory.js";import{discoverSandboxSource}from"#discover/sandbox.js";import{discoverScheduleSources}from"#discover/schedules.js";import{discoverSkills}from"#discover/skills.js";import{stripNpmPackageScope}from"#shared/package-name.js";async function discoverAgent(e){let t=e.source??createDiskProjectSource(),n=resolve(e.appRoot),r=resolve(e.agentRoot),i=e.role??`agent`,a=[],o=await tryReadPackageJsonName(t,n),s=await readSortedDirectoryEntries(t,r);a.push(...createUnsupportedRootDirectoryDiagnostics({classifyEntry:classifyAgentRootEntry,createUnsupportedDirectoryMessage(e){return`Ignoring unsupported directory "${e}/" in the agent root.`},rootEntries:s,rootPath:r}));let c=await discoverInstructionsSource({rootEntries:s,rootPath:r,source:t,required:i!==`extension`});a.push(...c.diagnostics);let l=discoverFlatModuleSource({rootEntries:s,rootPath:r,slotName:`agent`});a.push(...l.diagnostics);let u=await discoverNamedSourceDirectory({directoryName:`channels`,invalidDirectoryCode:DISCOVER_CHANNELS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(r,`channels`)}" to be a directory of authored channels.`,recursive:!0,rootEntries:s,rootPath:r,source:t,validateSegment:createChannelNameDiagnostic});a.push(...u.diagnostics);let d=await discoverLibSources({agentRoot:r,rootEntries:s,source:t});a.push(...d.diagnostics);let f=await discoverScheduleSources({agentRoot:r,rootEntries:s,source:t});a.push(...f.diagnostics);let p=await discoverConnectionSources({rootEntries:s,rootPath:r,source:t});a.push(...p.diagnostics);let m=await discoverMemorySources({rootEntries:s,rootPath:r,source:t});a.push(...m.diagnostics);let h=await discoverSandboxSource({rootEntries:s,rootPath:r,source:t});if(a.push(...h.diagnostics),i===`extension`){l.module!==void 0&&a.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_AGENT_CONFIG_UNSUPPORTED,message:`An extension may not declare agent config (agent.ts) — model, limits, and sandbox are the consuming agent's to own.`,sourcePath:join(r,l.module.logicalPath)}));let e=s.find(e=>e.name===`instrumentation`&&e.isDirectory());e!==void 0&&a.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_INSTRUMENTATION_UNSUPPORTED,message:`An extension may not declare instrumentation providers — process-wide observability belongs to the consuming agent.`,sourcePath:join(r,e.name)}));let[t]=m.memories;t!==void 0&&a.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_MEMORY_UNSUPPORTED,message:`An extension may not declare memory — scope and lifecycle state belong to the consuming application.`,sourcePath:join(r,t.logicalPath)})),h.sandbox!==null&&a.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_SANDBOX_UNSUPPORTED,message:`An extension may not declare a sandbox — it is the consuming agent's to own.`,sourcePath:join(r,h.sandbox.logicalPath)}))}let g=await discoverNamedSourceDirectory({directoryName:`tools`,invalidDirectoryCode:DISCOVER_TOOLS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(r,`tools`)}" to be a directory of authored tools.`,recursive:!0,rootEntries:s,rootPath:r,source:t,validateSegment:createToolNameDiagnostic});a.push(...g.diagnostics);let _=await discoverNamedSourceDirectory({directoryName:`hooks`,invalidDirectoryCode:DISCOVER_HOOKS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(r,`hooks`)}" to be a directory of authored hooks.`,recursive:!0,rootEntries:s,rootPath:r,source:t,validateSegment:createHookNameDiagnostic});a.push(..._.diagnostics);let v=await discoverNamedSourceDirectory({directoryName:`extensions`,invalidDirectoryCode:DISCOVER_EXTENSIONS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(r,`extensions`)}" to be a directory of extension mounts.`,recursive:!1,rootEntries:s,rootPath:r,source:t,validateSegment:createExtensionNameDiagnostic});a.push(...v.diagnostics);let y=await discoverSkills({agentRoot:r,source:t});a.push(...y.diagnostics);let b=await discoverSubagents({agentRoot:r,appRoot:n,source:t});a.push(...b.diagnostics);let x=await collectExtensionMounts({agentRoot:r,fileMounts:v.sources,rootEntries:s,source:t});a.push(...x.diagnostics);let S=[];if(i!==`agent`)for(let e of x.mounts)a.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_NESTED_MOUNT_UNSUPPORTED,message:`"${e.mountRef.logicalPath}" mounts an extension from inside an extension, which is not supported yet. Extensions cannot mount other extensions; remove the "extensions/" slot.`,sourcePath:join(r,e.mountRef.logicalPath)}));else{let e=await resolveExtensionMounts({agentRoot:r,appRoot:n,mounts:x.mounts,source:t});a.push(...e.diagnostics),S=e.mounts}let C={agentRoot:r,appRoot:n,channels:u.sources,connections:p.connections,packageName:o,diagnostics:a,extensions:i===`extension`?[]:x.mounts.map(e=>e.mountRef),resolvedExtensions:S,hooks:_.sources,memories:i===`extension`?[]:m.memories,lib:d.lib,instructions:c.instructions,sandbox:i===`extension`?null:h.sandbox,sandboxWorkspaces:i===`extension`||h.sandboxWorkspace===null?[]:[h.sandboxWorkspace],schedules:f.schedules,skills:y.skills,tools:g.sources,subagents:b.subagents};return i!==`extension`&&l.module!==void 0&&(C.configModule=l.module),{diagnostics:a,manifest:createAgentSourceManifest(C)}}async function resolveExtensionMounts(e){let t=[],n=[];for(let r of e.mounts){let i=await locateExtensionMount({source:e.source,agentRoot:e.agentRoot,appRoot:e.appRoot,mount:r.mountRef,namespace:r.namespace});if(t.push(...i.diagnostics),i.location===void 0)continue;let a=await discoverAgent({agentRoot:i.location.sourceRoot,appRoot:i.location.packageRoot,source:e.source,role:`extension`});t.push(...a.diagnostics);let o;if(r.overridesRoot!==void 0){let n=await discoverAgent({agentRoot:r.overridesRoot,appRoot:e.appRoot,source:e.source,role:`extension`});t.push(...n.diagnostics),o=n.manifest}n.push({namespace:i.location.namespace,specifier:i.location.specifier,packageName:i.location.packageName,packageRoot:i.location.packageRoot,sourceRoot:i.location.sourceRoot,manifest:a.manifest,externalDependencies:i.location.externalDependencies,overrides:o})}return{diagnostics:t,mounts:n}}async function discoverExtensionMountDeclarations(e){let t=e.source??createDiskProjectSource(),n=resolve(e.agentRoot),r=await readSortedDirectoryEntries(t,n),i=await discoverNamedSourceDirectory({directoryName:`extensions`,invalidDirectoryCode:DISCOVER_EXTENSIONS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(n,`extensions`)}" to be a directory of extension mounts.`,recursive:!1,rootEntries:r,rootPath:n,source:t,validateSegment:createExtensionNameDiagnostic}),a=await collectExtensionMounts({agentRoot:n,fileMounts:i.sources,rootEntries:r,source:t});return{diagnostics:[...i.diagnostics,...a.diagnostics],mounts:a.mounts}}async function collectExtensionMounts(e){let t=[],n=join(e.agentRoot,`extensions`),r=e.fileMounts.map(e=>({namespace:mountNamespace(e.logicalPath),mountRef:e})),i=new Set(r.map(e=>e.namespace)),a=e.rootEntries.find(e=>e.name===`extensions`),o=[],s=new Set;if(a?.isDirectory()===!0){let r=await readSortedDirectoryEntries(e.source,n);for(let a of r){if(!a.isDirectory())continue;let r=a.name,c=join(n,r),l=createExtensionNameDiagnostic(r,c);if(l!==null){t.push(l);continue}let u=discoverFlatModuleSource({rootEntries:await readSortedDirectoryEntries(e.source,c),rootPath:c,slotName:`extension`});if(t.push(...u.diagnostics),u.module===void 0){t.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_MOUNT_MISSING_DECLARATION,message:`Extension mount directory "extensions/${r}/" must declare its mount in "extension.ts" (or another supported module extension).`,sourcePath:c}));continue}i.has(r)&&s.add(r),o.push({namespace:r,mountRef:createModuleSourceRef({logicalPath:normalizeLogicalPath(join(`extensions`,r,u.module.logicalPath))}),overridesRoot:c})}}for(let e of s)t.push(createDiscoverErrorDiagnostic({code:DISCOVER_EXTENSION_MOUNT_AMBIGUOUS,message:`Extension namespace "${e}" is claimed by both a file mount ("extensions/${e}.ts") and a directory mount ("extensions/${e}/"). Keep only one.`,sourcePath:n}));return{diagnostics:t,mounts:[...r,...o].filter(e=>!s.has(e.namespace))}}async function tryReadPackageJsonName(e,t){try{let n=join(t,`package.json`),r=JSON.parse(await e.readTextFile(n)).name;return typeof r!=`string`||r.length===0?void 0:stripNpmPackageScope(r)}catch{return}}export{discoverAgent,discoverExtensionMountDeclarations,resolveExtensionMounts};
|
|
@@ -6,7 +6,6 @@ import { type ProjectSource } from "#discover/project-source.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const DISCOVER_LOCAL_SUBAGENT_SCHEDULES_INVALID = "discover/local-subagent-schedules-invalid";
|
|
8
8
|
export declare const DISCOVER_REQUIRED_SUBAGENT_CONFIG_MODULE_MISSING = "discover/required-subagent-config-module-missing";
|
|
9
|
-
export declare const DISCOVER_SUBAGENTS_DIRECTORY_INVALID = "discover/subagents-directory-invalid";
|
|
10
9
|
/**
|
|
11
10
|
* Input for discovering subagent entries beneath one authored source root.
|
|
12
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join,relative,resolve}from"node:path";import{
|
|
1
|
+
import{join,relative,resolve}from"node:path";import{classifyLocalSubagentEntry,getDirectoryEntryType,getSupportedModuleBaseName,normalizeLogicalPath}from"#discover/filesystem.js";import{discoverExtensionMountDeclarations,resolveExtensionMounts}from"#discover/discover-agent.js";import{createDiskProjectSource}from"#discover/project-source.js";import{createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{DISCOVER_HOOKS_DIRECTORY_INVALID,DISCOVER_TOOLS_DIRECTORY_INVALID,createHookNameDiagnostic,createToolNameDiagnostic,createUnsupportedRootDirectoryDiagnostics,discoverFlatModuleSource,discoverInstructionsSource,discoverNamedSourceDirectory,readSortedDirectoryEntries}from"#discover/grammar.js";import{createAgentSourceManifest,createLocalSubagentSourceRef,createModuleSourceRef}from"#discover/manifest.js";import{discoverConnectionSources}from"#discover/connections.js";import{discoverLibSources}from"#discover/lib.js";import{discoverMemorySources}from"#discover/memory.js";import{discoverSandboxSource}from"#discover/sandbox.js";import{discoverSkills}from"#discover/skills.js";const DISCOVER_LOCAL_SUBAGENT_SCHEDULES_INVALID=`discover/local-subagent-schedules-invalid`,DISCOVER_REQUIRED_SUBAGENT_CONFIG_MODULE_MISSING=`discover/required-subagent-config-module-missing`;async function discoverSubagents(e){let t=e.source??createDiskProjectSource(),n=resolve(e.agentRoot),r=resolve(e.subagentsDirectoryPath??join(n,`subagents`)),i=normalizeLogicalPath(e.subagentsLogicalPath??relative(n,r)),a=await t.stat(r);if(a===`missing`)return{diagnostics:[],subagents:[]};if(a!==`directory`)return{diagnostics:[createDiscoverErrorDiagnostic({code:`discover/subagents-directory-invalid`,message:`Expected "${r}" to be a directory of authored subagents.`,sourcePath:r})],subagents:[]};let o=await readSortedDirectoryEntries(t,r),s=[],c=[];for(let a of o){if(a.isFile()){let t=getSupportedModuleBaseName(a.name);if(t===null)continue;c.push(discoverSingleFileSubagent({agentRoot:n,appRoot:e.appRoot,subagentId:t,subagentLogicalPath:join(i,a.name),subagentPath:join(r,a.name)}));continue}if(!a.isDirectory())continue;let o=await discoverLocalSubagentPackage({appRoot:e.appRoot,source:t,subagentId:a.name,subagentLogicalPath:join(i,a.name),subagentRoot:join(r,a.name)});s.push(...o.diagnostics),c.push(o.subagent)}return{diagnostics:s,subagents:c}}function discoverSingleFileSubagent(e){let t=createModuleSourceRef({logicalPath:e.subagentLogicalPath}),n=createAgentSourceManifest({agentId:e.subagentId,agentRoot:e.agentRoot,appRoot:e.appRoot,configModule:t});return createLocalSubagentSourceRef({entryPath:e.subagentPath,logicalPath:e.subagentLogicalPath,manifest:n,rootPath:e.agentRoot,subagentId:e.subagentId})}async function discoverLocalSubagentPackage(e){let t=[],n=await readSortedDirectoryEntries(e.source,e.subagentRoot);t.push(...createUnsupportedRootDirectoryDiagnostics({classifyEntry:classifyLocalSubagentEntry,createUnsupportedDirectoryMessage(e){return`Ignoring unsupported directory "${e}/" in the local subagent root.`},rootEntries:n,rootPath:e.subagentRoot}));let r=await discoverInstructionsSource({required:!1,rootEntries:n,rootPath:e.subagentRoot,source:e.source});t.push(...r.diagnostics);let i=discoverFlatModuleSource({missingDiagnostic:{code:DISCOVER_REQUIRED_SUBAGENT_CONFIG_MODULE_MISSING,message:`Expected one authored subagent config module at "agent.ts", "agent.cts", "agent.mts", "agent.js", "agent.cjs", or "agent.mjs".`},rootEntries:n,rootPath:e.subagentRoot,slotName:`agent`});t.push(...i.diagnostics);let a=await discoverConnectionSources({rootEntries:n,rootPath:e.subagentRoot,source:e.source});t.push(...a.diagnostics);let o=await discoverMemorySources({rootEntries:n,rootPath:e.subagentRoot,source:e.source});t.push(...o.diagnostics);let s=await discoverSandboxSource({rootEntries:n,rootPath:e.subagentRoot,source:e.source});t.push(...s.diagnostics);let c=await discoverNamedSourceDirectory({directoryName:`tools`,invalidDirectoryCode:DISCOVER_TOOLS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(e.subagentRoot,`tools`)}" to be a directory of authored tools.`,recursive:!0,rootEntries:n,rootPath:e.subagentRoot,source:e.source,validateSegment:createToolNameDiagnostic});t.push(...c.diagnostics);let l=await discoverNamedSourceDirectory({directoryName:`hooks`,invalidDirectoryCode:DISCOVER_HOOKS_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(e.subagentRoot,`hooks`)}" to be a directory of authored hooks.`,recursive:!0,rootEntries:n,rootPath:e.subagentRoot,source:e.source,validateSegment:createHookNameDiagnostic});t.push(...l.diagnostics);let u=await discoverLibSources({agentRoot:e.subagentRoot,rootEntries:n,source:e.source});t.push(...u.diagnostics),t.push(...createLocalSubagentScheduleDiagnostics(e.subagentRoot,n));let d=await discoverSkills({agentRoot:e.subagentRoot,source:e.source});t.push(...d.diagnostics);let f=await discoverSubagents({agentRoot:e.subagentRoot,appRoot:e.appRoot,source:e.source});t.push(...f.diagnostics);let p=await discoverExtensionMountDeclarations({agentRoot:e.subagentRoot,source:e.source});t.push(...p.diagnostics);let m=await resolveExtensionMounts({agentRoot:e.subagentRoot,appRoot:e.appRoot,mounts:p.mounts,source:e.source});t.push(...m.diagnostics);let h={agentRoot:e.subagentRoot,appRoot:e.appRoot,connections:a.connections,diagnostics:t,extensions:p.mounts.map(e=>e.mountRef),resolvedExtensions:m.mounts,hooks:l.sources,memories:o.memories,lib:u.lib,instructions:r.instructions,sandbox:s.sandbox,sandboxWorkspaces:s.sandboxWorkspace===null?[]:[s.sandboxWorkspace],skills:d.skills,tools:c.sources,subagents:f.subagents};i.module!==void 0&&(h.configModule=i.module);let g=createAgentSourceManifest(h);return{diagnostics:t,subagent:createLocalSubagentSourceRef({entryPath:e.subagentRoot,logicalPath:e.subagentLogicalPath,manifest:g,rootPath:e.subagentRoot,subagentId:e.subagentId})}}function createLocalSubagentScheduleDiagnostics(e,t){return t.flatMap(t=>classifyLocalSubagentEntry(t.name,getDirectoryEntryType(t))===`invalid-schedules-directory`?[createDiscoverErrorDiagnostic({code:DISCOVER_LOCAL_SUBAGENT_SCHEDULES_INVALID,message:`Local subagent packages cannot define schedules at "${join(e,t.name)}".`,sourcePath:join(e,t.name)})]:[])}export{DISCOVER_LOCAL_SUBAGENT_SCHEDULES_INVALID,DISCOVER_REQUIRED_SUBAGENT_CONFIG_MODULE_MISSING,discoverSubagents};
|