experimental-ash 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/docs/public/channels/README.md +50 -2
- package/dist/docs/public/channels/discord.md +15 -7
- package/dist/docs/public/channels/teams.md +121 -0
- package/dist/docs/public/channels/telegram.md +201 -0
- package/dist/docs/public/subagents.md +38 -0
- package/dist/docs/public/typescript-api.md +41 -1
- package/dist/src/_virtual/_rolldown/runtime.js +1 -0
- package/dist/src/channel/adapter-context.js +1 -24
- package/dist/src/channel/adapter.js +1 -62
- package/dist/src/channel/compiled-channel.js +1 -6
- package/dist/src/channel/cross-channel-receive.js +2 -108
- package/dist/src/channel/http.js +1 -30
- package/dist/src/channel/receive-args.js +1 -1
- package/dist/src/channel/resolve-text.js +1 -59
- package/dist/src/channel/routes.js +1 -15
- package/dist/src/channel/schedule.js +1 -81
- package/dist/src/channel/send.js +1 -81
- package/dist/src/channel/session-callback.js +1 -65
- package/dist/src/channel/session.js +1 -58
- package/dist/src/channel/types.js +1 -1
- package/dist/src/cli/commands/channels.js +3 -9
- package/dist/src/cli/commands/info.js +2 -2
- package/dist/src/cli/dev/environment.js +1 -1
- package/dist/src/cli/dev/input-requests.js +1 -1
- package/dist/src/cli/dev/input.js +1 -1
- package/dist/src/cli/dev/repl.js +2 -3
- package/dist/src/cli/dev/terminal.js +5 -5
- package/dist/src/cli/dev/url.js +1 -1
- package/dist/src/cli/run.js +2 -2
- package/dist/src/cli/ui/output.js +8 -8
- package/dist/src/client/client-error.js +1 -19
- package/dist/src/client/client.js +1 -128
- package/dist/src/client/index.js +1 -11
- package/dist/src/client/message-reducer-types.js +1 -1
- package/dist/src/client/message-reducer.js +1 -456
- package/dist/src/client/message-response.js +1 -55
- package/dist/src/client/ndjson.js +3 -62
- package/dist/src/client/open-stream.js +1 -45
- package/dist/src/client/reducer.js +1 -1
- package/dist/src/client/session-utils.js +1 -62
- package/dist/src/client/session.js +1 -206
- package/dist/src/client/types.js +1 -1
- package/dist/src/client/url.js +1 -34
- package/dist/src/compiled/.vendor-stamp.json +6 -1
- package/dist/src/compiled/@vercel/oidc/LICENSE +202 -0
- package/dist/src/compiled/@vercel/oidc/index.d.ts +21 -0
- package/dist/src/compiled/@vercel/oidc/index.js +2 -0
- package/dist/src/compiled/@vercel/oidc/package.json +7 -0
- package/dist/src/compiled/chokidar/LICENSE +21 -0
- package/dist/src/compiled/chokidar/index.d.ts +33 -0
- package/dist/src/compiled/chokidar/index.js +1 -0
- package/dist/src/compiled/chokidar/package.json +7 -0
- package/dist/src/compiled/commander/LICENSE +22 -0
- package/dist/src/compiled/commander/index.d.ts +1113 -0
- package/dist/src/{chunks/url-JdCGA634.js → compiled/commander/index.js} +10 -10
- package/dist/src/compiled/commander/package.json +7 -0
- package/dist/src/compiled/gray-matter/LICENSE +21 -0
- package/dist/src/compiled/gray-matter/index.d.ts +62 -0
- package/dist/src/{chunks/gray-matter-D-9jHwOT.js → compiled/gray-matter/index.js} +2 -2
- package/dist/src/compiled/gray-matter/package.json +7 -0
- package/dist/src/compiled/picocolors/LICENSE +15 -0
- package/dist/src/compiled/picocolors/index.d.ts +55 -0
- package/dist/src/compiled/picocolors/index.js +1 -0
- package/dist/src/compiled/picocolors/package.json +7 -0
- package/dist/src/compiler/artifacts.js +1 -147
- package/dist/src/compiler/compile-agent.js +3 -76
- package/dist/src/compiler/compile-from-memory.js +1 -59
- package/dist/src/compiler/manifest.js +1 -424
- package/dist/src/compiler/model-catalog.js +1 -224
- package/dist/src/compiler/module-map.js +5 -295
- package/dist/src/compiler/normalize-agent-config.js +1 -157
- package/dist/src/compiler/normalize-channel.js +1 -51
- package/dist/src/compiler/normalize-connection.js +1 -58
- package/dist/src/compiler/normalize-helpers.js +1 -23
- package/dist/src/compiler/normalize-hook.js +1 -19
- package/dist/src/compiler/normalize-instructions.js +1 -28
- package/dist/src/compiler/normalize-manifest.js +1 -79
- package/dist/src/compiler/normalize-sandbox.js +1 -20
- package/dist/src/compiler/normalize-schedule.js +1 -38
- package/dist/src/compiler/normalize-skill.js +1 -60
- package/dist/src/compiler/normalize-subagent.js +1 -174
- package/dist/src/compiler/normalize-tool.js +1 -40
- package/dist/src/compiler/remote-agent-node.js +1 -19
- package/dist/src/compiler/workspace-resources.js +1 -85
- package/dist/src/context/accessors.js +1 -93
- package/dist/src/context/container.js +1 -89
- package/dist/src/context/hook-lifecycle.js +1 -242
- package/dist/src/context/key.js +1 -39
- package/dist/src/context/keys.js +1 -43
- package/dist/src/context/node.js +1 -9
- package/dist/src/context/provider.js +1 -1
- package/dist/src/context/providers/connection.js +1 -17
- package/dist/src/context/providers/sandbox.js +1 -46
- package/dist/src/context/providers/session.js +1 -18
- package/dist/src/context/run-step.js +1 -51
- package/dist/src/context/seed-keys.js +1 -37
- package/dist/src/context/serialize.js +1 -44
- package/dist/src/discover/connections.js +1 -153
- package/dist/src/discover/diagnostics.js +1 -82
- package/dist/src/discover/discover-agent.js +1 -159
- package/dist/src/discover/discover-subagent.js +1 -223
- package/dist/src/discover/filesystem.js +1 -215
- package/dist/src/discover/grammar.js +1 -371
- package/dist/src/discover/lib.js +1 -34
- package/dist/src/discover/manifest.js +1 -136
- package/dist/src/discover/markdown.js +1 -17
- package/dist/src/discover/named-source-directory.js +1 -188
- package/dist/src/discover/project-source.js +1 -152
- package/dist/src/discover/project.js +1 -117
- package/dist/src/discover/sandbox.js +1 -220
- package/dist/src/discover/schedules.js +1 -41
- package/dist/src/discover/skills.js +1 -274
- package/dist/src/discover/slots.js +1 -68
- package/dist/src/evals/cli/eval.js +1 -1
- package/dist/src/evals/define-eval-suite.js +1 -1
- package/dist/src/evals/index.js +1 -1
- package/dist/src/evals/loaders/index.js +1 -1
- package/dist/src/evals/loaders/json.js +1 -1
- package/dist/src/evals/loaders/yaml.js +1 -1
- package/dist/src/evals/reporters/index.js +1 -1
- package/dist/src/evals/runner/artifacts.js +3 -3
- package/dist/src/evals/runner/derive-run-facts.js +1 -1
- package/dist/src/evals/runner/discover.js +1 -1
- package/dist/src/evals/runner/execute-case.js +1 -1
- package/dist/src/evals/runner/execute-suite.js +1 -1
- package/dist/src/evals/runner/reporters/braintrust.js +2 -2
- package/dist/src/evals/runner/reporters/console.js +1 -1
- package/dist/src/evals/runner/resolve-git-metadata.js +1 -1
- package/dist/src/evals/scorers/autoevals-client.js +2 -2
- package/dist/src/evals/scorers/autoevals.js +1 -1
- package/dist/src/evals/scorers/json.js +1 -1
- package/dist/src/evals/scorers/run.js +1 -1
- package/dist/src/evals/scorers/sql.js +1 -1
- package/dist/src/evals/scorers/text.js +1 -1
- package/dist/src/evals/scores/index.js +1 -1
- package/dist/src/execution/authorization-challenge-defaults.js +1 -60
- package/dist/src/execution/await-authorization-orchestrator.js +1 -192
- package/dist/src/execution/await-authorization-splice.js +1 -66
- package/dist/src/execution/connection-auth-steps.js +1 -338
- package/dist/src/execution/node-step.js +1 -146
- package/dist/src/execution/remote-agent-dispatch.js +1 -79
- package/dist/src/execution/runtime-context.js +1 -26
- package/dist/src/execution/runtime-errors.js +1 -19
- package/dist/src/execution/sandbox/bash-tool.js +1 -42
- package/dist/src/execution/sandbox/bindings/local.js +1 -296
- package/dist/src/execution/sandbox/bindings/vercel.js +1 -363
- package/dist/src/execution/sandbox/ensure.js +1 -91
- package/dist/src/execution/sandbox/glob-tool.js +3 -146
- package/dist/src/execution/sandbox/grep-tool.js +3 -183
- package/dist/src/execution/sandbox/lazy-backend.js +1 -33
- package/dist/src/execution/sandbox/prewarm.js +1 -132
- package/dist/src/execution/sandbox/read-file-tool.js +3 -118
- package/dist/src/execution/sandbox/require-sandbox.js +1 -32
- package/dist/src/execution/sandbox/ripgrep-probe.js +1 -36
- package/dist/src/execution/sandbox/session.js +3 -158
- package/dist/src/execution/sandbox/shell-quote.js +1 -14
- package/dist/src/execution/sandbox/stream-utils.js +1 -22
- package/dist/src/execution/sandbox/truncate-output.js +3 -110
- package/dist/src/execution/sandbox/write-file-tool.js +1 -62
- package/dist/src/execution/session-callback-step.js +1 -72
- package/dist/src/execution/session.js +3 -94
- package/dist/src/execution/skills/instructions.js +2 -30
- package/dist/src/execution/skills/types.js +1 -1
- package/dist/src/execution/subagent-adapter.js +1 -94
- package/dist/src/execution/subagent-hitl-proxy.js +1 -81
- package/dist/src/execution/subagent-invocation.js +2 -16
- package/dist/src/execution/subagent-tool.js +1 -48
- package/dist/src/execution/tool-compaction.js +1 -54
- package/dist/src/execution/turn-workflow.js +1 -95
- package/dist/src/execution/web-fetch/html.js +7 -60
- package/dist/src/execution/web-fetch/tool.js +1 -90
- package/dist/src/execution/workflow-entry.js +1 -494
- package/dist/src/execution/workflow-errors.js +1 -54
- package/dist/src/execution/workflow-runtime.js +3 -161
- package/dist/src/execution/workflow-steps.js +1 -467
- package/dist/src/harness/action-result-helpers.js +1 -82
- package/dist/src/harness/attachment-staging.js +1 -303
- package/dist/src/harness/compaction.js +4 -221
- package/dist/src/harness/emission.js +1 -323
- package/dist/src/harness/execute-tool.js +1 -1
- package/dist/src/harness/input-extraction.js +1 -62
- package/dist/src/harness/input-requests.js +1 -306
- package/dist/src/harness/instrumentation-config.js +1 -42
- package/dist/src/harness/messages.js +1 -144
- package/dist/src/harness/model-call-error.js +1 -368
- package/dist/src/harness/otel-integration.js +1 -18
- package/dist/src/harness/prompt-cache.js +1 -137
- package/dist/src/harness/provider-tools.js +1 -137
- package/dist/src/harness/proxy-input-requests.js +1 -91
- package/dist/src/harness/runtime-actions.js +1 -321
- package/dist/src/harness/step-hooks.js +1 -192
- package/dist/src/harness/tool-loop.js +1 -877
- package/dist/src/harness/tool-result-pruning.js +1 -124
- package/dist/src/harness/tools.js +1 -98
- package/dist/src/harness/types.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/internal/application/cache-metadata.js +1 -42
- package/dist/src/internal/application/compiled-artifacts.js +4 -114
- package/dist/src/internal/application/import-specifier.js +1 -58
- package/dist/src/internal/application/package.js +1 -196
- package/dist/src/internal/application/paths.js +1 -117
- package/dist/src/internal/application/runtime-compiled-artifacts-source.js +1 -11
- package/dist/src/internal/attachments/data.js +1 -127
- package/dist/src/internal/attachments/errors.js +1 -26
- package/dist/src/internal/attachments/refs.js +1 -94
- package/dist/src/internal/attachments/sandbox-refs.js +1 -78
- package/dist/src/internal/attachments/url-refs.js +1 -20
- package/dist/src/internal/authored-asset-import-plugin.js +1 -141
- package/dist/src/internal/authored-definition/channel.js +1 -21
- package/dist/src/internal/authored-definition/connection.js +1 -148
- package/dist/src/internal/authored-definition/core.js +1 -180
- package/dist/src/internal/authored-definition/sandbox.js +1 -47
- package/dist/src/internal/authored-definition/schema-backed.js +1 -56
- package/dist/src/internal/authored-module-bundle.js +2 -19
- package/dist/src/internal/authored-module-loader.js +2 -263
- package/dist/src/internal/authored-module-map-loader.js +1 -53
- package/dist/src/internal/authored-module.js +1 -81
- package/dist/src/internal/authored-package-tsconfig-paths.js +1 -209
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -42
- package/dist/src/internal/helpers/markdown.js +3 -174
- package/dist/src/internal/json-schema.js +1 -13
- package/dist/src/internal/logging.js +1 -226
- package/dist/src/internal/nitro/host/artifacts-config.js +1 -17
- package/dist/src/internal/nitro/host/build-application.js +1 -177
- package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -140
- package/dist/src/internal/nitro/host/channel-routes.js +2 -126
- package/dist/src/internal/nitro/host/compiled-sandbox-backend-prune-plugin.js +2 -28
- package/dist/src/internal/nitro/host/configure-nitro-routes.js +4 -272
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -491
- package/dist/src/internal/nitro/host/cron-handler-route.js +1 -49
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -390
- package/dist/src/internal/nitro/host/nitro-bundler-config.js +1 -10
- package/dist/src/internal/nitro/host/nitro-routing-import-specifier-plugin.js +1 -28
- package/dist/src/internal/nitro/host/prepare-application-host.js +1 -32
- package/dist/src/internal/nitro/host/schedule-task-routes.js +2 -148
- package/dist/src/internal/nitro/host/server-external-packages.js +1 -107
- package/dist/src/internal/nitro/host/start-development-server.js +1 -223
- package/dist/src/internal/nitro/host/types.js +1 -1
- package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -14
- package/dist/src/internal/nitro/host/vercel-build-prewarm.js +1 -30
- package/dist/src/internal/nitro/host.js +1 -2
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +2 -180
- package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -46
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -74
- package/dist/src/internal/nitro/routes/health.js +1 -17
- package/dist/src/internal/nitro/routes/index.js +2 -89
- package/dist/src/internal/nitro/routes/info.js +1 -50
- package/dist/src/internal/nitro/routes/runtime-artifacts.js +1 -24
- package/dist/src/internal/nitro/routes/runtime-stack.js +1 -23
- package/dist/src/internal/nitro/routes/schedule-task.js +1 -57
- package/dist/src/internal/nitro/routes/workflow-data.js +1 -141
- package/dist/src/internal/nitro/routes/workflow-route-helpers.js +1 -137
- package/dist/src/internal/nitro/routes/workflow-run-events.js +1 -41
- package/dist/src/internal/nitro/routes/workflow-run-steps.js +1 -41
- package/dist/src/internal/nitro/routes/workflow-run.js +1 -34
- package/dist/src/internal/nitro/routes/workflow-runs.js +1 -28
- package/dist/src/internal/node-esm-compat-banner.js +2 -65
- package/dist/src/internal/package-name.js +1 -8
- package/dist/src/internal/process/pnpm.js +1 -50
- package/dist/src/internal/runtime-model.js +1 -24
- package/dist/src/internal/runtime-registry.js +1 -93
- package/dist/src/internal/vercel-agent-summary.js +1 -72
- package/dist/src/internal/workflow/builtins.js +1 -18
- package/dist/src/internal/workflow/index.js +1 -9
- package/dist/src/internal/workflow-bundle/ash-service-route-output.js +3 -93
- package/dist/src/internal/workflow-bundle/builder-support.js +5 -372
- package/dist/src/internal/workflow-bundle/builder.js +5 -472
- package/dist/src/internal/workflow-bundle/nitro-step-entry.js +2 -132
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +3 -494
- package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -292
- package/dist/src/internal/workflow-bundle/workflow-core-shim.js +1 -84
- package/dist/src/internal/workflow-bundle/workflow-transformer.js +5 -318
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +2 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +4 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +4 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft7.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +1 -0
- package/dist/src/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +1 -0
- package/dist/src/node_modules/.pnpm/autoevals@0.0.132_ws@8.21.0/node_modules/autoevals/jsdist/index.js +384 -0
- package/dist/src/node_modules/.pnpm/compute-cosine-similarity@1.1.0/node_modules/compute-cosine-similarity/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/compute-dot@1.1.0/node_modules/compute-dot/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/compute-l2norm@1.1.0/node_modules/compute-l2norm/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +1 -0
- package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js +1 -0
- package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js +1 -0
- package/dist/src/node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js +1 -0
- package/dist/src/node_modules/.pnpm/js-levenshtein@1.1.6/node_modules/js-levenshtein/index.js +1 -0
- package/dist/src/node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/dist/js-yaml.js +32 -0
- package/dist/src/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +1 -0
- package/dist/src/node_modules/.pnpm/mustache@4.2.0/node_modules/mustache/mustache.js +4 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/_vendor/partial-json-parser/parser.js +2 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/auth/workload-identity-auth.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/azure.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/client.js +11 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/api-promise.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/error.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/pagination.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/resource.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/streaming.js +3 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/core/uploads.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/error.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/index.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/decoders/line.js +3 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/detect-platform.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/headers.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/parse.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/formats.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/stringify.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/qs/utils.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/request-options.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/shims.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/to-file.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/tslib.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/uploads.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/base64.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/bytes.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/env.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/log.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/path.js +2 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/query.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/sleep.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/uuid.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils/values.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/internal/utils.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/AbstractChatCompletionRunner.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/AssistantStream.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionRunner.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionStream.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ChatCompletionStreamingRunner.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/EventStream.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/ResponsesParser.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/RunnableFunction.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/Util.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/chatCompletionUtils.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/parser.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/lib/responses/ResponseStream.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/admin.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/admin-api-keys.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/audit-logs.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/certificates.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/data-retention.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/groups.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/groups/users.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/invites.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/organization.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/api-keys.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/certificates.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/data-retention.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/groups/groups.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/groups/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/model-permissions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/projects.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/rate-limits.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/service-accounts.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/spend-alerts.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/users/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/projects/users/users.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/spend-alerts.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/usage.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/users/roles.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/admin/organization/users/users.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/audio.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/speech.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/transcriptions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/audio/translations.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/batches.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/assistants.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/beta.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/chatkit.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/sessions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/chatkit/threads.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/realtime.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/sessions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/realtime/transcription-sessions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/messages.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/runs.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/runs/steps.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/beta/threads/threads.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/chat.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/completions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/index.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/completions/messages.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/chat/index.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/completions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/containers.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/files/content.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/containers/files/files.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/conversations/conversations.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/conversations/items.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/embeddings.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/evals.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/runs/output-items.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/evals/runs/runs.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/files.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/alpha.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/alpha/graders.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/checkpoints/permissions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/fine-tuning.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/jobs/jobs.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/fine-tuning/methods.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/graders/grader-models.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/graders/graders.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/images.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/index.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/models.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/moderations.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/calls.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/client-secrets.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/realtime/realtime.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/input-items.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/input-tokens.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/responses/responses.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/shared.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/content.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/skills.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/versions/content.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/skills/versions/versions.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/uploads/parts.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/uploads/uploads.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/file-batches.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/files.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/vector-stores/vector-stores.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/videos.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks/index.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks/webhooks.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/resources/webhooks.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/streaming.js +1 -0
- package/dist/src/node_modules/.pnpm/openai@6.39.0_ws@8.21.0_zod@3.25.76/node_modules/openai/version.js +1 -0
- package/dist/src/node_modules/.pnpm/validate.io-array@1.0.6/node_modules/validate.io-array/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/validate.io-function@1.0.2/node_modules/validate.io-function/lib/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseTypes.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +3 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js +1 -0
- package/dist/src/node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +1 -0
- package/dist/src/packages/ash-scaffold/src/channels.js +7 -0
- package/dist/src/packages/ash-scaffold/src/files.js +1 -0
- package/dist/src/packages/ash-scaffold/src/index.js +1 -0
- package/dist/src/packages/ash-scaffold/src/module-files.js +1 -0
- package/dist/src/packages/ash-scaffold/src/package-json.js +1 -0
- package/dist/src/packages/ash-scaffold/src/project.js +1 -0
- package/dist/src/protocol/message.js +2 -501
- package/dist/src/protocol/routes.js +1 -85
- package/dist/src/public/agents/auth.js +1 -37
- package/dist/src/public/channels/ash.js +2 -346
- package/dist/src/public/channels/auth.js +1 -414
- package/dist/src/public/channels/discord/api.js +2 -167
- package/dist/src/public/channels/discord/defaults.js +3 -74
- package/dist/src/public/channels/discord/discordChannel.js +1 -402
- package/dist/src/public/channels/discord/hitl.js +1 -194
- package/dist/src/public/channels/discord/inbound.js +2 -238
- package/dist/src/public/channels/discord/index.js +1 -6
- package/dist/src/public/channels/discord/responses.js +1 -40
- package/dist/src/public/channels/discord/verify.js +1 -72
- package/dist/src/public/channels/discord/verifyInbound.js +1 -19
- package/dist/src/public/channels/index.js +1 -1
- package/dist/src/public/channels/slack/api-encoding.js +1 -40
- package/dist/src/public/channels/slack/api.js +1 -333
- package/dist/src/public/channels/slack/attachments.js +1 -156
- package/dist/src/public/channels/slack/blocks.js +3 -266
- package/dist/src/public/channels/slack/connections.js +1 -70
- package/dist/src/public/channels/slack/constants.js +1 -7
- package/dist/src/public/channels/slack/defaults.js +4 -211
- package/dist/src/public/channels/slack/hitl.js +1 -242
- package/dist/src/public/channels/slack/inbound.js +2 -149
- package/dist/src/public/channels/slack/index.js +1 -13
- package/dist/src/public/channels/slack/interactions.js +1 -315
- package/dist/src/public/channels/slack/limits.js +1 -75
- package/dist/src/public/channels/slack/mrkdwn.js +1 -89
- package/dist/src/public/channels/slack/slackChannel.js +1 -251
- package/dist/src/public/channels/slack/thread.js +1 -45
- package/dist/src/public/channels/slack/verify.js +1 -70
- package/dist/src/public/channels/teams/api.d.ts +140 -0
- package/dist/src/public/channels/teams/api.js +4 -0
- package/dist/src/public/channels/teams/attachments.d.ts +25 -0
- package/dist/src/public/channels/teams/attachments.js +1 -0
- package/dist/src/public/channels/teams/defaults.d.ts +24 -0
- package/dist/src/public/channels/teams/defaults.js +3 -0
- package/dist/src/public/channels/teams/hitl.d.ts +36 -0
- package/dist/src/public/channels/teams/hitl.js +1 -0
- package/dist/src/public/channels/teams/inbound.d.ts +80 -0
- package/dist/src/public/channels/teams/inbound.js +3 -0
- package/dist/src/public/channels/teams/index.d.ts +8 -0
- package/dist/src/public/channels/teams/index.js +1 -0
- package/dist/src/public/channels/teams/limits.d.ts +8 -0
- package/dist/src/public/channels/teams/limits.js +1 -0
- package/dist/src/public/channels/teams/teamsChannel.d.ts +162 -0
- package/dist/src/public/channels/teams/teamsChannel.js +1 -0
- package/dist/src/public/channels/teams/verify.d.ts +43 -0
- package/dist/src/public/channels/teams/verify.js +1 -0
- package/dist/src/public/channels/telegram/api.d.ts +107 -0
- package/dist/src/public/channels/telegram/api.js +2 -0
- package/dist/src/public/channels/telegram/attachments.d.ts +23 -0
- package/dist/src/public/channels/telegram/attachments.js +1 -0
- package/dist/src/public/channels/telegram/defaults.d.ts +9 -0
- package/dist/src/public/channels/telegram/defaults.js +3 -0
- package/dist/src/public/channels/telegram/hitl.d.ts +44 -0
- package/dist/src/public/channels/telegram/hitl.js +1 -0
- package/dist/src/public/channels/telegram/inbound.d.ts +88 -0
- package/dist/src/public/channels/telegram/inbound.js +2 -0
- package/dist/src/public/channels/telegram/index.d.ts +8 -0
- package/dist/src/public/channels/telegram/index.js +1 -0
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +126 -0
- package/dist/src/public/channels/telegram/telegramChannel.js +1 -0
- package/dist/src/public/channels/telegram/verify.d.ts +30 -0
- package/dist/src/public/channels/telegram/verify.js +1 -0
- package/dist/src/public/channels/twilio/api.js +1 -103
- package/dist/src/public/channels/twilio/defaults.js +3 -69
- package/dist/src/public/channels/twilio/inbound.js +2 -123
- package/dist/src/public/channels/twilio/index.js +1 -4
- package/dist/src/public/channels/twilio/twilioChannel.js +1 -316
- package/dist/src/public/channels/twilio/twiml.js +1 -58
- package/dist/src/public/channels/twilio/verify.js +1 -73
- package/dist/src/public/channels/upload-policy.js +1 -170
- package/dist/src/public/connections/errors.js +1 -53
- package/dist/src/public/connections/index.js +1 -6
- package/dist/src/public/context/index.js +1 -13
- package/dist/src/public/definitions/agent.js +1 -6
- package/dist/src/public/definitions/channel.js +1 -24
- package/dist/src/public/definitions/connections/mcp.js +1 -20
- package/dist/src/public/definitions/defineChannel.js +1 -74
- package/dist/src/public/definitions/hook.js +1 -11
- package/dist/src/public/definitions/instructions.js +1 -7
- package/dist/src/public/definitions/instrumentation.js +1 -13
- package/dist/src/public/definitions/remote-agent.js +1 -11
- package/dist/src/public/definitions/sandbox-backend.js +1 -13
- package/dist/src/public/definitions/sandbox.js +1 -6
- package/dist/src/public/definitions/schedule.js +1 -32
- package/dist/src/public/definitions/skill.js +1 -7
- package/dist/src/public/definitions/source.js +1 -1
- package/dist/src/public/definitions/state.js +1 -34
- package/dist/src/public/definitions/tool.js +1 -27
- package/dist/src/public/hooks/index.js +1 -9
- package/dist/src/public/index.js +1 -5
- package/dist/src/public/instructions/index.js +1 -4
- package/dist/src/public/instrumentation/index.js +1 -4
- package/dist/src/public/next/index.js +1 -148
- package/dist/src/public/next/server.js +1 -348
- package/dist/src/public/next/vercel-json.js +1 -77
- package/dist/src/public/sandbox/backends/default.js +1 -15
- package/dist/src/public/sandbox/backends/local.js +1 -18
- package/dist/src/public/sandbox/backends/vercel.js +1 -25
- package/dist/src/public/sandbox/index.js +1 -10
- package/dist/src/public/sandbox/local-sandbox.js +1 -1
- package/dist/src/public/sandbox/vercel-sandbox.js +1 -1
- package/dist/src/public/schedules/index.js +1 -4
- package/dist/src/public/skills/index.js +1 -5
- package/dist/src/public/tool-result-narrowing.js +1 -87
- package/dist/src/public/tools/approval/approval-helpers.js +1 -22
- package/dist/src/public/tools/approval/index.js +1 -4
- package/dist/src/public/tools/defaults.js +1 -70
- package/dist/src/public/tools/define-bash-tool.js +1 -14
- package/dist/src/public/tools/define-glob-tool.js +1 -21
- package/dist/src/public/tools/define-grep-tool.js +1 -21
- package/dist/src/public/tools/define-read-file-tool.js +1 -27
- package/dist/src/public/tools/define-write-file-tool.js +1 -21
- package/dist/src/public/tools/index.js +1 -10
- package/dist/src/public/tools/internal.js +1 -24
- package/dist/src/public/types/json.js +1 -13
- package/dist/src/react/index.js +1 -3
- package/dist/src/react/use-ash-agent.js +2 -348
- package/dist/src/runtime/actions/keys.js +1 -30
- package/dist/src/runtime/actions/types.js +1 -99
- package/dist/src/runtime/agent/bootstrap-model-utils.js +1 -148
- package/dist/src/runtime/agent/bootstrap-model.js +1 -36
- package/dist/src/runtime/agent/bootstrap.js +1 -49
- package/dist/src/runtime/agent/mock-model-adapter.js +7 -358
- package/dist/src/runtime/agent/resolve-model.js +1 -48
- package/dist/src/runtime/cache-key.js +1 -52
- package/dist/src/runtime/channels/registry.js +1 -133
- package/dist/src/runtime/compiled-artifacts-source.js +1 -42
- package/dist/src/runtime/connections/authorization-complete-page.js +2 -21
- package/dist/src/runtime/connections/authorization-tokens.js +1 -66
- package/dist/src/runtime/connections/callback-route.js +1 -139
- package/dist/src/runtime/connections/mcp-client.js +1 -307
- package/dist/src/runtime/connections/principal-context.js +1 -111
- package/dist/src/runtime/connections/principal.js +1 -106
- package/dist/src/runtime/connections/registry.js +1 -61
- package/dist/src/runtime/connections/types.js +1 -41
- package/dist/src/runtime/connections/validate-authorization.js +1 -92
- package/dist/src/runtime/framework-channels/index.js +1 -38
- package/dist/src/runtime/framework-tools/ask-question.js +1 -30
- package/dist/src/runtime/framework-tools/bash.js +1 -40
- package/dist/src/runtime/framework-tools/connection-search.js +1 -224
- package/dist/src/runtime/framework-tools/connection-tools.js +1 -103
- package/dist/src/runtime/framework-tools/file-state.js +1 -71
- package/dist/src/runtime/framework-tools/glob.js +2 -56
- package/dist/src/runtime/framework-tools/grep.js +2 -75
- package/dist/src/runtime/framework-tools/index.js +1 -52
- package/dist/src/runtime/framework-tools/pending-connection-tool-calls.js +1 -63
- package/dist/src/runtime/framework-tools/read-file.js +2 -64
- package/dist/src/runtime/framework-tools/skill.js +1 -47
- package/dist/src/runtime/framework-tools/todo.js +3 -122
- package/dist/src/runtime/framework-tools/web-fetch.js +2 -42
- package/dist/src/runtime/framework-tools/web-search.js +1 -15
- package/dist/src/runtime/framework-tools/write-file.js +2 -48
- package/dist/src/runtime/governance/auth/http-basic.js +1 -63
- package/dist/src/runtime/governance/auth/jwt-ecdsa.js +1 -69
- package/dist/src/runtime/governance/auth/jwt-hmac.js +1 -39
- package/dist/src/runtime/governance/auth/oidc.js +1 -126
- package/dist/src/runtime/governance/auth/token-claims.js +1 -84
- package/dist/src/runtime/governance/auth/types.js +1 -14
- package/dist/src/runtime/governance/network/ip-allow-list.js +1 -66
- package/dist/src/runtime/graph.js +1 -17
- package/dist/src/runtime/hooks/registry.js +1 -55
- package/dist/src/runtime/input/types.js +1 -63
- package/dist/src/runtime/loaders/artifact-paths.js +1 -26
- package/dist/src/runtime/loaders/bundled-artifacts.js +1 -21
- package/dist/src/runtime/loaders/compile-metadata.js +1 -92
- package/dist/src/runtime/loaders/manifest.js +1 -56
- package/dist/src/runtime/loaders/module-map.js +1 -64
- package/dist/src/runtime/prompt/compose.js +2 -47
- package/dist/src/runtime/prompt/connections.js +2 -23
- package/dist/src/runtime/resolve-agent-graph.js +1 -287
- package/dist/src/runtime/resolve-agent.js +1 -134
- package/dist/src/runtime/resolve-channel.js +1 -62
- package/dist/src/runtime/resolve-connection.js +1 -72
- package/dist/src/runtime/resolve-helpers.js +1 -58
- package/dist/src/runtime/resolve-hook.js +1 -67
- package/dist/src/runtime/resolve-sandbox.js +1 -65
- package/dist/src/runtime/resolve-tool.js +1 -110
- package/dist/src/runtime/sandbox/keys.js +1 -72
- package/dist/src/runtime/sandbox/registry.js +1 -42
- package/dist/src/runtime/schedules/register.js +1 -62
- package/dist/src/runtime/schedules/resolve-schedule.js +1 -66
- package/dist/src/runtime/session-callback-route.js +1 -87
- package/dist/src/runtime/sessions/auth.js +1 -18
- package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -125
- package/dist/src/runtime/sessions/runtime-session.js +1 -50
- package/dist/src/runtime/sessions/turn.js +1 -1
- package/dist/src/runtime/skills/fragment-context.js +1 -4
- package/dist/src/runtime/skills/sandbox-access.js +1 -85
- package/dist/src/runtime/subagents/registry.js +1 -62
- package/dist/src/runtime/tools/registry.js +1 -40
- package/dist/src/runtime/types.js +1 -1
- package/dist/src/runtime/validation.js +1 -7
- package/dist/src/runtime/workspace/seed-files.js +1 -42
- package/dist/src/runtime/workspace/spec.js +2 -22
- package/dist/src/runtime/workspace/types.js +1 -9
- package/dist/src/sandbox/state.js +1 -1
- package/dist/src/services/dev-client/request-headers.js +1 -197
- package/dist/src/services/dev-client/stream.js +1 -7
- package/dist/src/services/dev-client/url.js +1 -25
- package/dist/src/services/dev-client/vercel-auth-error.js +2 -98
- package/dist/src/services/dev-client.js +1 -48
- package/dist/src/services/inspect-application.js +1 -45
- package/dist/src/shared/agent-definition.js +1 -1
- package/dist/src/shared/errors.js +1 -66
- package/dist/src/shared/guards.js +1 -35
- package/dist/src/shared/json-schemas.js +1 -41
- package/dist/src/shared/json.js +1 -80
- package/dist/src/shared/node.js +1 -1
- package/dist/src/shared/optional.js +1 -1
- package/dist/src/shared/run-mode.js +1 -1
- package/dist/src/shared/sandbox-backend.js +1 -1
- package/dist/src/shared/sandbox-definition.js +1 -1
- package/dist/src/shared/sandbox-session.js +1 -1
- package/dist/src/shared/skill-definition.js +1 -1
- package/dist/src/shared/skill-package.js +1 -100
- package/dist/src/shared/source-ref.js +1 -1
- package/dist/src/shared/tool-definition.js +1 -1
- package/package.json +14 -4
- package/dist/src/chunks/authored-module-loader-DcCfCiBm.js +0 -4
- package/dist/src/chunks/chunk-DSjMdhoD.js +0 -1
- package/dist/src/chunks/client-ZqNLLMZB.js +0 -4
- package/dist/src/chunks/compile-agent-DrIyb818.js +0 -5
- package/dist/src/chunks/dev-authored-source-watcher-C1WUVv9F.js +0 -1
- package/dist/src/chunks/errors-HYWjHxV6.js +0 -1
- package/dist/src/chunks/guards-26p6sOw3.js +0 -1
- package/dist/src/chunks/host-CwAcCrg7.js +0 -70
- package/dist/src/chunks/input-requests-DJiy6dG9.js +0 -1
- package/dist/src/chunks/jsdist-BkeWZ7EZ.js +0 -443
- package/dist/src/chunks/paths-CWZN-XRX.js +0 -85
- package/dist/src/chunks/picocolors-aAkqW4On.js +0 -1
- package/dist/src/chunks/runtime-model-Dh0Nz64z.js +0 -1
- package/dist/src/chunks/token-YW4VSeBB.js +0 -1
- package/dist/src/chunks/types-BJSR0JNV.js +0 -1
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Renders the static HTML landing page that the user's browser sees
|
|
3
|
-
* after an OAuth IdP redirects back to the framework's connection
|
|
4
|
-
* callback route.
|
|
5
|
-
*
|
|
6
|
-
* The framework would otherwise respond with an empty `202 Accepted`
|
|
7
|
-
* body, which looks broken. This helper is intentionally self-contained:
|
|
8
|
-
* no external assets, no script, so it renders identically regardless
|
|
9
|
-
* of where the runtime serves the callback from.
|
|
10
|
-
*/
|
|
11
|
-
export function buildAuthorizationCompletePage() {
|
|
12
|
-
const html = `<!doctype html>
|
|
1
|
+
function buildAuthorizationCompletePage(){return new Response(`<!doctype html>
|
|
13
2
|
<html lang="en">
|
|
14
3
|
<head>
|
|
15
4
|
<meta charset="utf-8" />
|
|
@@ -61,12 +50,4 @@ export function buildAuthorizationCompletePage() {
|
|
|
61
50
|
<p>You can close this tab and return to your app.</p>
|
|
62
51
|
</main>
|
|
63
52
|
</body>
|
|
64
|
-
</html
|
|
65
|
-
return new Response(html, {
|
|
66
|
-
headers: {
|
|
67
|
-
"cache-control": "no-store",
|
|
68
|
-
"content-type": "text/html; charset=utf-8",
|
|
69
|
-
},
|
|
70
|
-
status: 200,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
53
|
+
</html>`,{headers:{"cache-control":`no-store`,"content-type":`text/html; charset=utf-8`},status:200})}export{buildAuthorizationCompletePage};
|
|
@@ -1,66 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Per-step cache of resolved connection authorization tokens.
|
|
3
|
-
*
|
|
4
|
-
* Keyed by `(connectionName, principalKey)` so two users on the same
|
|
5
|
-
* session never share a user-scoped token. Stored as a virtual
|
|
6
|
-
* context value and wiped between workflow steps, so bearer tokens
|
|
7
|
-
* are never serialized into the durable step payload. Cross-step
|
|
8
|
-
* reuse is delegated to the upstream authorization provider (for
|
|
9
|
-
* example Connect's server-side cache), which owns the refresh grant.
|
|
10
|
-
*
|
|
11
|
-
* TODO(ash): once a server-derivable session key is available, promote
|
|
12
|
-
* this back to durable context via an AEAD codec so cross-step reuse
|
|
13
|
-
* is possible without exposing plaintext bearers in the WDK payload.
|
|
14
|
-
*/
|
|
15
|
-
import { ContextKey } from "#context/key.js";
|
|
16
|
-
/**
|
|
17
|
-
* Virtual context key mapping connection name to a per-principal
|
|
18
|
-
* {@link TokenResult} cache.
|
|
19
|
-
*
|
|
20
|
-
* The principal sub-key is produced by
|
|
21
|
-
* {@link principalKey} so identical string keys (for example
|
|
22
|
-
* `"user:${issuer}:${id}"`) collide only when the resolved principal
|
|
23
|
-
* genuinely matches.
|
|
24
|
-
*/
|
|
25
|
-
export const ConnectionAuthorizationTokensKey = new ContextKey("ash.connectionAuthorizationTokens");
|
|
26
|
-
/**
|
|
27
|
-
* Returns the cached {@link TokenResult} for
|
|
28
|
-
* `(connectionName, principalKey)` when the entry is still valid
|
|
29
|
-
* (not expired). Expired entries are treated as a cache miss so
|
|
30
|
-
* callers re-run the authorization flow.
|
|
31
|
-
*/
|
|
32
|
-
export function readCachedToken(ctx, connectionName, principalKey) {
|
|
33
|
-
const entry = ctx.get(ConnectionAuthorizationTokensKey)?.[connectionName]?.[principalKey];
|
|
34
|
-
if (entry === undefined)
|
|
35
|
-
return undefined;
|
|
36
|
-
if (entry.expiresAt !== undefined && entry.expiresAt <= Date.now()) {
|
|
37
|
-
return undefined;
|
|
38
|
-
}
|
|
39
|
-
return entry;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Persists a freshly resolved {@link TokenResult} on the cache under
|
|
43
|
-
* `(connectionName, principalKey)`. Existing entries for other
|
|
44
|
-
* principals on the same connection are left in place.
|
|
45
|
-
*
|
|
46
|
-
* Writes to the virtual context slot so the bearer is never serialized
|
|
47
|
-
* into the durable step payload. See the module docblock.
|
|
48
|
-
*/
|
|
49
|
-
export function writeCachedToken(ctx, connectionName, principalKey, token) {
|
|
50
|
-
const existing = ctx.get(ConnectionAuthorizationTokensKey) ?? {};
|
|
51
|
-
const perConnection = existing[connectionName] ?? {};
|
|
52
|
-
asContainer(ctx).setVirtualContext(ConnectionAuthorizationTokensKey, {
|
|
53
|
-
...existing,
|
|
54
|
-
[connectionName]: { ...perConnection, [principalKey]: token },
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Runtime installs `ContextContainer` as the concrete `AshContext`;
|
|
59
|
-
* we reach through the interface here because `setVirtualContext` is
|
|
60
|
-
* intentionally runtime-only and not exposed on the public
|
|
61
|
-
* {@link AshContext} surface. Mirrors the pattern in
|
|
62
|
-
* `principal-context.ts`.
|
|
63
|
-
*/
|
|
64
|
-
function asContainer(ctx) {
|
|
65
|
-
return ctx;
|
|
66
|
-
}
|
|
1
|
+
import{ContextKey}from"#context/key.js";var ConnectionAuthorizationTokensKey=new ContextKey(`ash.connectionAuthorizationTokens`);function readCachedToken(e,t,n){let r=e.get(ConnectionAuthorizationTokensKey)?.[t]?.[n];if(r!==void 0&&!(r.expiresAt!==void 0&&r.expiresAt<=Date.now()))return r}function writeCachedToken(e,t,n,r){let i=e.get(ConnectionAuthorizationTokensKey)??{},a=i[t]??{};asContainer(e).setVirtualContext(ConnectionAuthorizationTokensKey,{...i,[t]:{...a,[n]:r}})}function asContainer(e){return e}export{ConnectionAuthorizationTokensKey,readCachedToken,writeCachedToken};
|
|
@@ -1,139 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Framework-shipped callback route used by in-turn interactive
|
|
3
|
-
* connection authorization.
|
|
4
|
-
*
|
|
5
|
-
* The route at {@link ASH_CONNECTION_CALLBACK_ROUTE_PATTERN} is the
|
|
6
|
-
* redirect target the workflow body hands to the IdP via
|
|
7
|
-
* `startAuthorization`. When the IdP redirects the user's browser back
|
|
8
|
-
* with the OAuth `code`/`state` (or whatever payload the protocol
|
|
9
|
-
* carries), this handler:
|
|
10
|
-
*
|
|
11
|
-
* 1. Projects the inbound request into a JSON-serializable
|
|
12
|
-
* {@link AuthorizationCallbackRequest} (the same shape
|
|
13
|
-
* `completeAuthorization` already accepts).
|
|
14
|
-
* 2. Calls `resumeHook(token, payload)` to wake the suspended workflow.
|
|
15
|
-
* 3. Renders the standard "Authorization complete" landing page so the
|
|
16
|
-
* user sees a friendly UI instead of an empty `202 Accepted`.
|
|
17
|
-
*
|
|
18
|
-
* Owning this route in the framework - instead of routing the IdP at the
|
|
19
|
-
* workflow runtime's raw `/.well-known/workflow/v1/webhook/:token` -
|
|
20
|
-
* keeps the public surface namespaced under Ash and lets the framework
|
|
21
|
-
* decide delivery policy (auth, throttling, logging) for connection
|
|
22
|
-
* callbacks without leaking generic workflow primitives to the public
|
|
23
|
-
* internet.
|
|
24
|
-
*/
|
|
25
|
-
import { resumeHook } from "#compiled/@workflow/core/runtime.js";
|
|
26
|
-
import { ASH_CONNECTION_CALLBACK_ROUTE_PATTERN } from "#protocol/routes.js";
|
|
27
|
-
import { buildAuthorizationCompletePage } from "#runtime/connections/authorization-complete-page.js";
|
|
28
|
-
/**
|
|
29
|
-
* Logical name prefix of the framework-shipped connection callback
|
|
30
|
-
* channel. The trailing method segment (`get` or `post`) keeps each
|
|
31
|
-
* `(method, urlPath)` pair distinct in the channel registry.
|
|
32
|
-
*/
|
|
33
|
-
export const HTTP_CONNECTION_CALLBACK_CHANNEL_NAME_PREFIX = "ash/v1/connections/callback";
|
|
34
|
-
/**
|
|
35
|
-
* HTTP methods accepted by the connection callback route.
|
|
36
|
-
*
|
|
37
|
-
* Most OAuth IdPs redirect back over `GET` (authorization code in the
|
|
38
|
-
* query string). Some `form_post` response modes deliver the callback
|
|
39
|
-
* over `POST` instead, so the framework registers both. Both
|
|
40
|
-
* methods route through the same handler.
|
|
41
|
-
*/
|
|
42
|
-
const HANDLED_METHODS = ["GET", "POST"];
|
|
43
|
-
/**
|
|
44
|
-
* Returns the framework-shipped channel definitions that mount the
|
|
45
|
-
* connection callback route at {@link ASH_CONNECTION_CALLBACK_ROUTE_PATTERN}.
|
|
46
|
-
*
|
|
47
|
-
* Returns one definition per accepted HTTP method (see
|
|
48
|
-
* {@link HANDLED_METHODS}). The framework channel resolver mounts each
|
|
49
|
-
* `(method, urlPath)` pair as a separate Nitro route; sharing one URL
|
|
50
|
-
* pattern across multiple methods is not supported by the channel
|
|
51
|
-
* model.
|
|
52
|
-
*/
|
|
53
|
-
export function getConnectionCallbackChannelDefinitions() {
|
|
54
|
-
return HANDLED_METHODS.map((method) => buildCallbackChannelDefinition(method));
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Returns the set of logical channel names registered by the connection
|
|
58
|
-
* callback route. Used by `getAllFrameworkChannelNames` so authors who
|
|
59
|
-
* `disableRoute()` one of these names get a useful diagnostic instead
|
|
60
|
-
* of a silent no-op.
|
|
61
|
-
*/
|
|
62
|
-
export function getConnectionCallbackChannelNames() {
|
|
63
|
-
return new Set(HANDLED_METHODS.map(channelNameForMethod));
|
|
64
|
-
}
|
|
65
|
-
function buildCallbackChannelDefinition(method) {
|
|
66
|
-
const name = channelNameForMethod(method);
|
|
67
|
-
return {
|
|
68
|
-
name,
|
|
69
|
-
method,
|
|
70
|
-
urlPath: ASH_CONNECTION_CALLBACK_ROUTE_PATTERN,
|
|
71
|
-
fetch: handleConnectionCallbackRequest,
|
|
72
|
-
logicalPath: `framework://channels/${name}`,
|
|
73
|
-
sourceId: `ash:framework:connection-callback-${method.toLowerCase()}`,
|
|
74
|
-
sourceKind: "module",
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
function channelNameForMethod(method) {
|
|
78
|
-
return `${HTTP_CONNECTION_CALLBACK_CHANNEL_NAME_PREFIX}/${method.toLowerCase()}`;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Inbound handler for the connection callback route. Exported for test
|
|
82
|
-
* coverage; the framework channel resolver wires it into Nitro via
|
|
83
|
-
* {@link getConnectionCallbackChannelDefinitions}.
|
|
84
|
-
*/
|
|
85
|
-
export async function handleConnectionCallbackRequest(request, ctx) {
|
|
86
|
-
const name = ctx.params.name;
|
|
87
|
-
const token = ctx.params.token;
|
|
88
|
-
if (typeof name !== "string" || name.length === 0) {
|
|
89
|
-
return Response.json({ error: "Missing connection name.", ok: false }, { status: 400 });
|
|
90
|
-
}
|
|
91
|
-
if (typeof token !== "string" || token.length === 0) {
|
|
92
|
-
return Response.json({ error: "Missing callback token.", ok: false }, { status: 400 });
|
|
93
|
-
}
|
|
94
|
-
// `resumeHook` consumes the body if we hand it the live `Request`,
|
|
95
|
-
// so project the request into the JSON-serializable shape that
|
|
96
|
-
// matches what `completeAuthorization` expects.
|
|
97
|
-
const callback = await projectAuthorizationCallback(request);
|
|
98
|
-
try {
|
|
99
|
-
await resumeHook(token, callback);
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
// The most likely failure here is "no hook is currently registered
|
|
103
|
-
// for this token", e.g. the workflow already completed,
|
|
104
|
-
// disposed the hook, or the user replayed an expired callback URL.
|
|
105
|
-
// Surface a 404 rather than a 500 so IdP-side retries don't loop
|
|
106
|
-
// and operator dashboards don't page on a benign "user clicked
|
|
107
|
-
// stale link" event.
|
|
108
|
-
return Response.json({ error: "Connection callback not pending.", ok: false }, { status: 404 });
|
|
109
|
-
}
|
|
110
|
-
return buildAuthorizationCompletePage();
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Projects the live callback `Request` into the JSON-serializable
|
|
114
|
-
* {@link AuthorizationCallbackRequest} shape used as the hook payload.
|
|
115
|
-
* Body text is captured for non-GET/HEAD methods; reading the body here
|
|
116
|
-
* consumes it on the source request, but the framework no longer reads
|
|
117
|
-
* the request after dispatching to `resumeHook`.
|
|
118
|
-
*/
|
|
119
|
-
async function projectAuthorizationCallback(request) {
|
|
120
|
-
const headers = {};
|
|
121
|
-
request.headers.forEach((value, key) => {
|
|
122
|
-
headers[key] = value;
|
|
123
|
-
});
|
|
124
|
-
let body = "";
|
|
125
|
-
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
126
|
-
try {
|
|
127
|
-
body = await request.text();
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
body = "";
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
body,
|
|
135
|
-
headers,
|
|
136
|
-
method: request.method,
|
|
137
|
-
url: request.url,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
1
|
+
import{ASH_CONNECTION_CALLBACK_ROUTE_PATTERN}from"#protocol/routes.js";import{resumeHook}from"#compiled/@workflow/core/runtime.js";import{buildAuthorizationCompletePage}from"#runtime/connections/authorization-complete-page.js";var HTTP_CONNECTION_CALLBACK_CHANNEL_NAME_PREFIX=`ash/v1/connections/callback`,HANDLED_METHODS=[`GET`,`POST`];function getConnectionCallbackChannelDefinitions(){return HANDLED_METHODS.map(e=>buildCallbackChannelDefinition(e))}function getConnectionCallbackChannelNames(){return new Set(HANDLED_METHODS.map(channelNameForMethod))}function buildCallbackChannelDefinition(t){let n=channelNameForMethod(t);return{name:n,method:t,urlPath:ASH_CONNECTION_CALLBACK_ROUTE_PATTERN,fetch:handleConnectionCallbackRequest,logicalPath:`framework://channels/${n}`,sourceId:`ash:framework:connection-callback-${t.toLowerCase()}`,sourceKind:`module`}}function channelNameForMethod(e){return`${HTTP_CONNECTION_CALLBACK_CHANNEL_NAME_PREFIX}/${e.toLowerCase()}`}async function handleConnectionCallbackRequest(e,r){let i=r.params.name,a=r.params.token;if(typeof i!=`string`||i.length===0)return Response.json({error:`Missing connection name.`,ok:!1},{status:400});if(typeof a!=`string`||a.length===0)return Response.json({error:`Missing callback token.`,ok:!1},{status:400});let o=await projectAuthorizationCallback(e);try{await resumeHook(a,o)}catch{return Response.json({error:`Connection callback not pending.`,ok:!1},{status:404})}return buildAuthorizationCompletePage()}async function projectAuthorizationCallback(e){let t={};e.headers.forEach((e,n)=>{t[n]=e});let n=``;if(e.method!==`GET`&&e.method!==`HEAD`)try{n=await e.text()}catch{n=``}return{body:n,headers:t,method:e.method,url:e.url}}export{HTTP_CONNECTION_CALLBACK_CHANNEL_NAME_PREFIX,getConnectionCallbackChannelDefinitions,getConnectionCallbackChannelNames,handleConnectionCallbackRequest};
|
|
@@ -1,307 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { contextStorage } from "#context/container.js";
|
|
3
|
-
import { readCachedToken, writeCachedToken } from "#runtime/connections/authorization-tokens.js";
|
|
4
|
-
import { principalKey, resolveConnectionPrincipal } from "#runtime/connections/principal.js";
|
|
5
|
-
import { isObject } from "#shared/guards.js";
|
|
6
|
-
/**
|
|
7
|
-
* Wraps one `MCPClient` from `@ai-sdk/mcp` for a single connection.
|
|
8
|
-
*
|
|
9
|
-
* Created lazily per-connection per-session. Caches tool metadata after
|
|
10
|
-
* the first `getToolMetadata()` call.
|
|
11
|
-
*/
|
|
12
|
-
export class McpConnectionClient {
|
|
13
|
-
#clientPromise;
|
|
14
|
-
#client;
|
|
15
|
-
#toolsPromise;
|
|
16
|
-
#tools;
|
|
17
|
-
#connection;
|
|
18
|
-
constructor(connection) {
|
|
19
|
-
this.#connection = connection;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Connects to the MCP server, trying Streamable HTTP first and
|
|
23
|
-
* falling back to SSE for transport-compatibility failures.
|
|
24
|
-
*
|
|
25
|
-
* Concurrent callers share the same connection promise to avoid
|
|
26
|
-
* duplicate connections.
|
|
27
|
-
*/
|
|
28
|
-
async connect() {
|
|
29
|
-
if (this.#client !== undefined) {
|
|
30
|
-
return this.#client;
|
|
31
|
-
}
|
|
32
|
-
if (this.#clientPromise !== undefined) {
|
|
33
|
-
return this.#clientPromise;
|
|
34
|
-
}
|
|
35
|
-
this.#clientPromise = this.#createClient();
|
|
36
|
-
try {
|
|
37
|
-
this.#client = await this.#clientPromise;
|
|
38
|
-
return this.#client;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
this.#clientPromise = undefined;
|
|
42
|
-
throw error;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async #createClient() {
|
|
46
|
-
const headers = await resolveHeaders(this.#connection);
|
|
47
|
-
const url = this.#connection.url;
|
|
48
|
-
try {
|
|
49
|
-
return await createMCPClient({
|
|
50
|
-
transport: { type: "http", url, headers },
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
if (!isMcpHttpFallbackRetryableError(error)) {
|
|
55
|
-
throw error;
|
|
56
|
-
}
|
|
57
|
-
return await createMCPClient({
|
|
58
|
-
transport: { type: "sse", url, headers },
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Returns cached tool metadata for all tools this connection exposes,
|
|
64
|
-
* after applying any configured tool filter.
|
|
65
|
-
*
|
|
66
|
-
* The first call fetches tools from the server via `listTools()` and
|
|
67
|
-
* creates the AI SDK tool set in parallel. Subsequent calls return
|
|
68
|
-
* the cached result. Concurrent callers share the same in-flight
|
|
69
|
-
* promise.
|
|
70
|
-
*/
|
|
71
|
-
async getToolMetadata() {
|
|
72
|
-
const cache = await this.#ensureTools();
|
|
73
|
-
return cache.metadata;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Returns the AI SDK `ToolSet` produced by `@ai-sdk/mcp`'s
|
|
77
|
-
* `toolsFromDefinitions()`. Each entry is a full SDK `Tool` with
|
|
78
|
-
* `inputSchema`, `description`, and `execute` already set.
|
|
79
|
-
*/
|
|
80
|
-
async getTools() {
|
|
81
|
-
const cache = await this.#ensureTools();
|
|
82
|
-
return cache.tools;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Executes a named tool through the AI SDK's tool executor, which
|
|
86
|
-
* handles the JSON-RPC `tools/call` internally.
|
|
87
|
-
*/
|
|
88
|
-
async executeTool(toolName, args) {
|
|
89
|
-
const { tools } = await this.#ensureTools();
|
|
90
|
-
const sdkTool = tools[toolName];
|
|
91
|
-
if (sdkTool?.execute === undefined) {
|
|
92
|
-
throw new Error(`Tool "${toolName}" not found in connection "${this.#connection.connectionName}".`);
|
|
93
|
-
}
|
|
94
|
-
return sdkTool.execute(args, {});
|
|
95
|
-
}
|
|
96
|
-
async #ensureTools() {
|
|
97
|
-
if (this.#tools !== undefined) {
|
|
98
|
-
return this.#tools;
|
|
99
|
-
}
|
|
100
|
-
if (this.#toolsPromise !== undefined) {
|
|
101
|
-
return this.#toolsPromise;
|
|
102
|
-
}
|
|
103
|
-
this.#toolsPromise = this.#fetchTools();
|
|
104
|
-
try {
|
|
105
|
-
this.#tools = await this.#toolsPromise;
|
|
106
|
-
return this.#tools;
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
this.#toolsPromise = undefined;
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async #fetchTools() {
|
|
114
|
-
const client = await this.connect();
|
|
115
|
-
const listResult = await client.listTools();
|
|
116
|
-
const filter = this.#connection.tools;
|
|
117
|
-
const filteredTools = filter !== undefined
|
|
118
|
-
? listResult.tools.filter((t) => passesToolFilter(t.name, filter))
|
|
119
|
-
: listResult.tools;
|
|
120
|
-
// `toolsFromDefinitions` returns `McpToolSet<"automatic">`, whose
|
|
121
|
-
// elements are `Tool<unknown, CallToolResult>`. The AI SDK's
|
|
122
|
-
// `ToolSet` constraint only admits `Tool<any | never, any | never>`,
|
|
123
|
-
// so a single-hop cast is required — the runtime shape is identical.
|
|
124
|
-
const tools = client.toolsFromDefinitions({ tools: filteredTools });
|
|
125
|
-
const metadata = filteredTools.map((t) => ({
|
|
126
|
-
annotations: t.annotations,
|
|
127
|
-
description: t.description ?? "",
|
|
128
|
-
inputSchema: (t.inputSchema ?? {}),
|
|
129
|
-
name: t.name,
|
|
130
|
-
}));
|
|
131
|
-
return { metadata, tools };
|
|
132
|
-
}
|
|
133
|
-
async close() {
|
|
134
|
-
if (this.#client !== undefined) {
|
|
135
|
-
await this.#client.close();
|
|
136
|
-
this.#client = undefined;
|
|
137
|
-
}
|
|
138
|
-
this.#clientPromise = undefined;
|
|
139
|
-
this.#toolsPromise = undefined;
|
|
140
|
-
this.#tools = undefined;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Decides whether an error thrown while creating a streamable HTTP MCP
|
|
145
|
-
* client should trigger a fallback attempt against the legacy SSE
|
|
146
|
-
* transport.
|
|
147
|
-
*
|
|
148
|
-
* Per the MCP backwards-compatibility rules, clients should fall back
|
|
149
|
-
* to SSE when the streamable HTTP probe returns `400 Bad Request`,
|
|
150
|
-
* `404 Not Found`, or `405 Method Not Allowed`. All other failures
|
|
151
|
-
* (auth errors, network errors, server errors) should propagate so the
|
|
152
|
-
* caller sees the real problem instead of a misleading SSE failure.
|
|
153
|
-
*
|
|
154
|
-
* See: https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#backwards-compatibility
|
|
155
|
-
*/
|
|
156
|
-
function isMcpHttpFallbackRetryableError(error) {
|
|
157
|
-
const status = readHttpStatus(error);
|
|
158
|
-
return status === 400 || status === 404 || status === 405;
|
|
159
|
-
}
|
|
160
|
-
function readHttpStatus(error) {
|
|
161
|
-
for (const candidate of walkErrorChain(error)) {
|
|
162
|
-
if (!isObject(candidate)) {
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
const status = readStatusField(candidate);
|
|
166
|
-
if (status !== undefined) {
|
|
167
|
-
return status;
|
|
168
|
-
}
|
|
169
|
-
const response = candidate.response;
|
|
170
|
-
if (isObject(response)) {
|
|
171
|
-
const responseStatus = readStatusField(response);
|
|
172
|
-
if (responseStatus !== undefined) {
|
|
173
|
-
return responseStatus;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (typeof candidate.message === "string") {
|
|
177
|
-
const match = /\bHTTP\s+(\d{3})\b/u.exec(candidate.message);
|
|
178
|
-
if (match?.[1] !== undefined) {
|
|
179
|
-
return Number(match[1]);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return undefined;
|
|
184
|
-
}
|
|
185
|
-
function readStatusField(value) {
|
|
186
|
-
if (typeof value.status === "number") {
|
|
187
|
-
return value.status;
|
|
188
|
-
}
|
|
189
|
-
if (typeof value.statusCode === "number") {
|
|
190
|
-
return value.statusCode;
|
|
191
|
-
}
|
|
192
|
-
return undefined;
|
|
193
|
-
}
|
|
194
|
-
function* walkErrorChain(error) {
|
|
195
|
-
let current = error;
|
|
196
|
-
const seen = new Set();
|
|
197
|
-
while (current !== undefined && current !== null && !seen.has(current)) {
|
|
198
|
-
seen.add(current);
|
|
199
|
-
yield current;
|
|
200
|
-
if (!isObject(current) || !("cause" in current)) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
current = current.cause;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Returns `true` when a tool name passes the configured filter.
|
|
208
|
-
*/
|
|
209
|
-
export function passesToolFilter(toolName, filter) {
|
|
210
|
-
if (filter === undefined) {
|
|
211
|
-
return true;
|
|
212
|
-
}
|
|
213
|
-
if ("allow" in filter) {
|
|
214
|
-
return filter.allow.includes(toolName);
|
|
215
|
-
}
|
|
216
|
-
return !filter.block.includes(toolName);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Merges `authorization` (Bearer token) and `headers` into one
|
|
220
|
-
* flat `Record<string, string>` for the transport layer.
|
|
221
|
-
*
|
|
222
|
-
* Resolves the {@link ConnectionPrincipal} from the active session
|
|
223
|
-
* (or an orchestrator-installed override) and invokes
|
|
224
|
-
* `authorization.getToken({ principal })` to produce the bearer.
|
|
225
|
-
* `getToken` may throw {@link ConnectionAuthorizationRequiredError};
|
|
226
|
-
* callers (`connection_search`, wrapped connection tools) catch it
|
|
227
|
-
* and it propagates as-is from here.
|
|
228
|
-
*/
|
|
229
|
-
export async function resolveHeaders(connection) {
|
|
230
|
-
const merged = {};
|
|
231
|
-
if (connection.authorization !== undefined) {
|
|
232
|
-
const result = await resolveToken(connection);
|
|
233
|
-
merged.Authorization = `Bearer ${result.token}`;
|
|
234
|
-
}
|
|
235
|
-
if (connection.headers !== undefined) {
|
|
236
|
-
const resolved = await resolveHeadersDefinition(connection.headers);
|
|
237
|
-
for (const [key, value] of Object.entries(resolved)) {
|
|
238
|
-
if (connection.authorization !== undefined && key.toLowerCase() === "authorization") {
|
|
239
|
-
throw new Error(`Connection "${connection.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);
|
|
240
|
-
}
|
|
241
|
-
merged[key] = value;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return merged;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Resolves a connection's bearer token, consulting the per-session
|
|
248
|
-
* authorization-token cache before invoking the authored `getToken`.
|
|
249
|
-
*
|
|
250
|
-
* Returning a cached token lets interactive-OAuth flows that have
|
|
251
|
-
* completed their webhook dance stay authorized for the rest of the
|
|
252
|
-
* session without re-hitting the IdP (whose initial `getToken` would
|
|
253
|
-
* still throw `Required` until the grant propagates).
|
|
254
|
-
*
|
|
255
|
-
* The cache is keyed by `(connectionName, principalKey(principal))`
|
|
256
|
-
* so concurrent users on one session never alias onto each other's
|
|
257
|
-
* bearer. Principal resolution is delegated to
|
|
258
|
-
* {@link resolveConnectionPrincipal}, which is the single source of
|
|
259
|
-
* truth for the "app vs user, override vs session, context vs no
|
|
260
|
-
* context" decision tree. Outside a runtime scope the cache is
|
|
261
|
-
* unavailable, but `getToken` still runs with a framework-resolved
|
|
262
|
-
* principal so ad-hoc CLI and unit-test use of `"app"`-typed
|
|
263
|
-
* connections keeps working; `"user"`-typed connections without a
|
|
264
|
-
* context fail fast with `reason: "principal_required"`.
|
|
265
|
-
*/
|
|
266
|
-
async function resolveToken(connection) {
|
|
267
|
-
if (connection.authorization === undefined) {
|
|
268
|
-
throw new Error(`Connection "${connection.connectionName}" does not define authorization.`);
|
|
269
|
-
}
|
|
270
|
-
// Reading `contextStorage.getStore()` directly keeps this the only
|
|
271
|
-
// place in the runtime that tolerates a missing context; authored
|
|
272
|
-
// code must use `loadContext()` so misuse fails loudly.
|
|
273
|
-
const ctx = contextStorage.getStore();
|
|
274
|
-
const principal = resolveConnectionPrincipal(connection.connectionName, connection.authorization, ctx);
|
|
275
|
-
const authContext = { url: connection.url };
|
|
276
|
-
if (ctx === undefined) {
|
|
277
|
-
// No context → no per-session cache. Still invoke the authored
|
|
278
|
-
// `getToken` so `"app"`-typed connections resolve normally for
|
|
279
|
-
// ad-hoc use; `"user"`-typed connections will already have
|
|
280
|
-
// thrown above inside `resolveConnectionPrincipal`.
|
|
281
|
-
return await connection.authorization.getToken({ principal, connection: authContext });
|
|
282
|
-
}
|
|
283
|
-
const key = principalKey(principal);
|
|
284
|
-
const cached = readCachedToken(ctx, connection.connectionName, key);
|
|
285
|
-
if (cached !== undefined)
|
|
286
|
-
return cached;
|
|
287
|
-
const result = await connection.authorization.getToken({ principal, connection: authContext });
|
|
288
|
-
writeCachedToken(ctx, connection.connectionName, key, result);
|
|
289
|
-
return result;
|
|
290
|
-
}
|
|
291
|
-
async function resolveHeadersDefinition(headers) {
|
|
292
|
-
if (typeof headers === "function") {
|
|
293
|
-
return await headers();
|
|
294
|
-
}
|
|
295
|
-
const result = {};
|
|
296
|
-
const entries = Object.entries(headers);
|
|
297
|
-
for (const [key, value] of entries) {
|
|
298
|
-
result[key] = await resolveHeaderValue(value);
|
|
299
|
-
}
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
async function resolveHeaderValue(value) {
|
|
303
|
-
if (typeof value === "function") {
|
|
304
|
-
return await value();
|
|
305
|
-
}
|
|
306
|
-
return await value;
|
|
307
|
-
}
|
|
1
|
+
import{isObject}from"#shared/guards.js";import{contextStorage}from"#context/container.js";import{readCachedToken,writeCachedToken}from"#runtime/connections/authorization-tokens.js";import{principalKey,resolveConnectionPrincipal}from"#runtime/connections/principal.js";import{createMCPClient}from"#compiled/@ai-sdk/mcp/index.js";var McpConnectionClient=class{#e;#t;#n;#r;#i;constructor(e){this.#i=e}async connect(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#a();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#a(){let e=await resolveHeaders(this.#i),t=this.#i.url;try{return await createMCPClient({transport:{type:`http`,url:t,headers:e}})}catch(n){if(!isMcpHttpFallbackRetryableError(n))throw n;return await createMCPClient({transport:{type:`sse`,url:t,headers:e}})}}async getToolMetadata(){return(await this.#o()).metadata}async getTools(){return(await this.#o()).tools}async executeTool(e,t){let{tools:n}=await this.#o(),r=n[e];if(r?.execute===void 0)throw Error(`Tool "${e}" not found in connection "${this.#i.connectionName}".`);return r.execute(t,{})}async#o(){if(this.#r!==void 0)return this.#r;if(this.#n!==void 0)return this.#n;this.#n=this.#s();try{return this.#r=await this.#n,this.#r}catch(e){throw this.#n=void 0,e}}async#s(){let e=await this.connect(),t=await e.listTools(),n=this.#i.tools,r=n===void 0?t.tools:t.tools.filter(e=>passesToolFilter(e.name,n)),i=e.toolsFromDefinitions({tools:r});return{metadata:r.map(e=>({annotations:e.annotations,description:e.description??``,inputSchema:e.inputSchema??{},name:e.name})),tools:i}}async close(){this.#t!==void 0&&(await this.#t.close(),this.#t=void 0),this.#e=void 0,this.#n=void 0,this.#r=void 0}};function isMcpHttpFallbackRetryableError(e){let t=readHttpStatus(e);return t===400||t===404||t===405}function readHttpStatus(t){for(let n of walkErrorChain(t)){if(!isObject(n))continue;let t=readStatusField(n);if(t!==void 0)return t;let r=n.response;if(isObject(r)){let e=readStatusField(r);if(e!==void 0)return e}if(typeof n.message==`string`){let e=/\bHTTP\s+(\d{3})\b/u.exec(n.message);if(e?.[1]!==void 0)return Number(e[1])}}}function readStatusField(e){if(typeof e.status==`number`)return e.status;if(typeof e.statusCode==`number`)return e.statusCode}function*walkErrorChain(t){let n=t,r=new Set;for(;n!=null&&!r.has(n);){if(r.add(n),yield n,!isObject(n)||!(`cause`in n))return;n=n.cause}}function passesToolFilter(e,t){return t===void 0?!0:`allow`in t?t.allow.includes(e):!t.block.includes(e)}async function resolveHeaders(e){let t={};if(e.authorization!==void 0&&(t.Authorization=`Bearer ${(await resolveToken(e)).token}`),e.headers!==void 0){let n=await resolveHeadersDefinition(e.headers);for(let[r,i]of Object.entries(n)){if(e.authorization!==void 0&&r.toLowerCase()===`authorization`)throw Error(`Connection "${e.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);t[r]=i}}return t}async function resolveToken(e){if(e.authorization===void 0)throw Error(`Connection "${e.connectionName}" does not define authorization.`);let a=contextStorage.getStore(),o=resolveConnectionPrincipal(e.connectionName,e.authorization,a),s={url:e.url};if(a===void 0)return await e.authorization.getToken({principal:o,connection:s});let c=principalKey(o),l=readCachedToken(a,e.connectionName,c);if(l!==void 0)return l;let u=await e.authorization.getToken({principal:o,connection:s});return writeCachedToken(a,e.connectionName,c,u),u}async function resolveHeadersDefinition(e){if(typeof e==`function`)return await e();let t={},n=Object.entries(e);for(let[e,r]of n)t[e]=await resolveHeaderValue(r);return t}async function resolveHeaderValue(e){return typeof e==`function`?await e():await e}export{McpConnectionClient,passesToolFilter,resolveHeaders};
|
|
@@ -1,111 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Lexically scoped override for the connection principal resolver.
|
|
3
|
-
*
|
|
4
|
-
* `ConnectionPrincipalOverrideStackKey` lets one scope (currently the
|
|
5
|
-
* interactive-OAuth orchestrator) carry an already-resolved
|
|
6
|
-
* {@link ConnectionPrincipal} across a retry that may temporarily
|
|
7
|
-
* run under a different `SessionAuthContext` — for example, the
|
|
8
|
-
* step that resumes from an OAuth webhook sees the unauthenticated
|
|
9
|
-
* callback request as the current caller, not the user who started
|
|
10
|
-
* the turn. Rather than teaching
|
|
11
|
-
* {@link resolveConnectionPrincipal} about every possible
|
|
12
|
-
* restoration quirk, the orchestrator pushes an override frame,
|
|
13
|
-
* runs the retry, and the resolver picks it up.
|
|
14
|
-
*
|
|
15
|
-
* The value is a stack of frames rather than a single map so the
|
|
16
|
-
* push/pop lifecycle is race-safe under concurrent entry within the
|
|
17
|
-
* same ALS scope. Each `withConnectionPrincipalOverride` call owns
|
|
18
|
-
* exactly one frame (identified by object identity) and removes
|
|
19
|
-
* that specific frame on exit regardless of what other frames were
|
|
20
|
-
* pushed or popped while its body was awaited. A naive
|
|
21
|
-
* capture-previous / restore-on-finally pattern would race: if two
|
|
22
|
-
* concurrent calls entered this helper in the same container, both
|
|
23
|
-
* would capture the same `previous`, the last writer would win, and
|
|
24
|
-
* the `finally` blocks would non-deterministically restore to
|
|
25
|
-
* whichever state each happened to observe.
|
|
26
|
-
*
|
|
27
|
-
* Cross-session isolation is handled one layer up by the process
|
|
28
|
-
* `AsyncLocalStorage` in `context/container.ts` — every request runs
|
|
29
|
-
* inside its own `ContextContainer`, so frames never leak between
|
|
30
|
-
* sessions regardless of the in-container stack. The stack only has
|
|
31
|
-
* to handle same-scope concurrency.
|
|
32
|
-
*
|
|
33
|
-
* The key is stored as a **virtual** context value and is never
|
|
34
|
-
* serialized across step boundaries — the durable record is the
|
|
35
|
-
* principal journaled into the step state itself. See D6b in
|
|
36
|
-
* `research/connections/connection-principal-model.md` for the
|
|
37
|
-
* full rationale.
|
|
38
|
-
*/
|
|
39
|
-
import { ContextKey } from "#context/key.js";
|
|
40
|
-
/**
|
|
41
|
-
* Context key carrying the stack of in-flight principal override
|
|
42
|
-
* frames. Pushed onto by {@link withConnectionPrincipalOverride};
|
|
43
|
-
* read by {@link lookupConnectionPrincipalOverride}.
|
|
44
|
-
*
|
|
45
|
-
* The stack is ordered oldest-first; callers that want shadowing
|
|
46
|
-
* semantics (inner scopes take precedence over outer) walk the
|
|
47
|
-
* stack from the end backwards.
|
|
48
|
-
*/
|
|
49
|
-
export const ConnectionPrincipalOverrideStackKey = new ContextKey("ash.connection-principal-override-stack");
|
|
50
|
-
/**
|
|
51
|
-
* Returns the principal override that should apply to `connectionName`
|
|
52
|
-
* in the current scope, or `undefined` if no scope has pushed one.
|
|
53
|
-
*
|
|
54
|
-
* Walks the override stack from most-recently-pushed to least, so an
|
|
55
|
-
* inner `withConnectionPrincipalOverride` shadows outer frames for
|
|
56
|
-
* the same connection. Returns the override verbatim — callers are
|
|
57
|
-
* responsible for deciding whether to use it in place of a
|
|
58
|
-
* session-derived principal.
|
|
59
|
-
*/
|
|
60
|
-
export function lookupConnectionPrincipalOverride(ctx, connectionName) {
|
|
61
|
-
const stack = ctx?.get(ConnectionPrincipalOverrideStackKey);
|
|
62
|
-
if (stack === undefined) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
for (let i = stack.length - 1; i >= 0; i--) {
|
|
66
|
-
const frame = stack[i];
|
|
67
|
-
if (frame === undefined) {
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
const hit = frame.overrides[connectionName];
|
|
71
|
-
if (hit !== undefined) {
|
|
72
|
-
return hit;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Runs `fn` with the given per-connection principal overrides
|
|
79
|
-
* active on `ctx`.
|
|
80
|
-
*
|
|
81
|
-
* Pushes a new frame onto the override stack on entry and removes
|
|
82
|
-
* that specific frame (by object identity) on exit. Outer frames
|
|
83
|
-
* remain visible to the resolver via
|
|
84
|
-
* {@link lookupConnectionPrincipalOverride}, which walks the stack
|
|
85
|
-
* top-to-bottom so overrides from nested scopes shadow the same
|
|
86
|
-
* connection name in an outer scope.
|
|
87
|
-
*
|
|
88
|
-
* Takes `ctx` as an explicit argument rather than reading from
|
|
89
|
-
* `AsyncLocalStorage`: the helper has to reach `setVirtualContext`,
|
|
90
|
-
* which is intentionally only on the concrete {@link ContextContainer}
|
|
91
|
-
* and not on the public `AshContext` surface. Passing the container
|
|
92
|
-
* in directly keeps the type honest and lets callers thread the
|
|
93
|
-
* already-in-scope container through without an implicit ALS lookup.
|
|
94
|
-
*
|
|
95
|
-
* Safe under concurrent entry on a single container: each call owns
|
|
96
|
-
* exactly one frame and removes it by identity rather than by
|
|
97
|
-
* position, so two racing callers cannot corrupt each other's view
|
|
98
|
-
* of the stack.
|
|
99
|
-
*/
|
|
100
|
-
export async function withConnectionPrincipalOverride(ctx, overrides, fn) {
|
|
101
|
-
const frame = { overrides };
|
|
102
|
-
const before = ctx.get(ConnectionPrincipalOverrideStackKey) ?? [];
|
|
103
|
-
ctx.setVirtualContext(ConnectionPrincipalOverrideStackKey, [...before, frame]);
|
|
104
|
-
try {
|
|
105
|
-
return await fn();
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
const current = ctx.get(ConnectionPrincipalOverrideStackKey) ?? [];
|
|
109
|
-
ctx.setVirtualContext(ConnectionPrincipalOverrideStackKey, current.filter((f) => f !== frame));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
1
|
+
import{ContextKey}from"#context/key.js";var ConnectionPrincipalOverrideStackKey=new ContextKey(`ash.connection-principal-override-stack`);function lookupConnectionPrincipalOverride(e,n){let r=e?.get(ConnectionPrincipalOverrideStackKey);if(r!==void 0)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t===void 0)continue;let i=t.overrides[n];if(i!==void 0)return i}}async function withConnectionPrincipalOverride(e,n,r){let i={overrides:n},a=e.get(ConnectionPrincipalOverrideStackKey)??[];e.setVirtualContext(ConnectionPrincipalOverrideStackKey,[...a,i]);try{return await r()}finally{let n=e.get(ConnectionPrincipalOverrideStackKey)??[];e.setVirtualContext(ConnectionPrincipalOverrideStackKey,n.filter(e=>e!==i))}}export{ConnectionPrincipalOverrideStackKey,lookupConnectionPrincipalOverride,withConnectionPrincipalOverride};
|