@noodleseed/one 0.162.0 → 0.164.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/dist/banner.d.ts +6 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +29 -0
- package/dist/banner.js.map +1 -0
- package/dist/commands/billing-catalog-ops.d.ts +4 -0
- package/dist/commands/billing-catalog-ops.d.ts.map +1 -0
- package/dist/commands/billing-catalog-ops.js +58 -0
- package/dist/commands/billing-catalog-ops.js.map +1 -0
- package/dist/commands/billing-ops.d.ts.map +1 -1
- package/dist/commands/billing-ops.js +3 -0
- package/dist/commands/billing-ops.js.map +1 -1
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +2 -0
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config-values.d.ts.map +1 -1
- package/dist/commands/config-values.js +16 -0
- package/dist/commands/config-values.js.map +1 -1
- package/dist/commands/installation-variables.d.ts +26 -0
- package/dist/commands/installation-variables.d.ts.map +1 -0
- package/dist/commands/installation-variables.js +171 -0
- package/dist/commands/installation-variables.js.map +1 -0
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +2 -0
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/commands/solutions-activity.d.ts +5 -0
- package/dist/commands/solutions-activity.d.ts.map +1 -0
- package/dist/commands/solutions-activity.js +116 -0
- package/dist/commands/solutions-activity.js.map +1 -0
- package/dist/commands/solutions-connections.d.ts +7 -0
- package/dist/commands/solutions-connections.d.ts.map +1 -0
- package/dist/commands/solutions-connections.js +88 -0
- package/dist/commands/solutions-connections.js.map +1 -0
- package/dist/commands/solutions-installation-options.d.ts +5 -0
- package/dist/commands/solutions-installation-options.d.ts.map +1 -0
- package/dist/commands/solutions-installation-options.js +52 -0
- package/dist/commands/solutions-installation-options.js.map +1 -0
- package/dist/commands/solutions-onboarding.d.ts +5 -0
- package/dist/commands/solutions-onboarding.d.ts.map +1 -0
- package/dist/commands/solutions-onboarding.js +113 -0
- package/dist/commands/solutions-onboarding.js.map +1 -0
- package/dist/commands/solutions-ops.d.ts.map +1 -1
- package/dist/commands/solutions-ops.js +278 -17
- package/dist/commands/solutions-ops.js.map +1 -1
- package/dist/first-run.d.ts.map +1 -1
- package/dist/first-run.js +2 -0
- package/dist/first-run.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts +21 -2
- package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js +10 -1
- package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.d.ts +5 -1
- package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js +31 -2
- package/node_modules/@noodle-borg/admission-limits/dist/portable.d.ts +3 -0
- package/node_modules/@noodle-borg/admission-limits/dist/portable.js +3 -0
- package/node_modules/@noodle-borg/admission-limits/dist/public-admission-assertion.d.ts +28 -0
- package/node_modules/@noodle-borg/admission-limits/dist/public-admission-assertion.js +124 -0
- package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.d.ts +54 -0
- package/node_modules/@noodle-borg/admission-limits/dist/public-record-admission.js +74 -0
- package/node_modules/@noodle-borg/admission-limits/dist/request-attribution.d.ts +11 -0
- package/node_modules/@noodle-borg/admission-limits/dist/request-attribution.js +19 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +3 -0
- package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.js +10 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +15 -3
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/welcome-wordmark.d.ts +3 -0
- package/node_modules/@noodle-borg/agent-kit/dist/welcome-wordmark.js +10 -0
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.d.ts +9 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.js +33 -2
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-execution-bound.d.ts +3 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-execution-bound.js +29 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-interaction-state.d.ts +5 -3
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-interaction-state.js +21 -10
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +3 -3
- package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/session-target.js +5 -4
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/config.d.ts +20 -0
- package/node_modules/@noodle-borg/authoring/dist/config.js +29 -2
- package/node_modules/@noodle-borg/authoring/dist/connectors.d.ts +6 -1
- package/node_modules/@noodle-borg/authoring/dist/connectors.js +5 -0
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -2
- package/node_modules/@noodle-borg/authoring/dist/json-schema.d.ts +1 -1
- package/node_modules/@noodle-borg/authoring/dist/json-schema.js +15 -2
- package/node_modules/@noodle-borg/authoring/dist/load-authored.js +1 -1
- package/node_modules/@noodle-borg/authoring/dist/managed-collection.d.ts +18 -4
- package/node_modules/@noodle-borg/authoring/dist/managed-collection.js +22 -3
- package/node_modules/@noodle-borg/authoring/dist/platform.d.ts +3 -0
- package/node_modules/@noodle-borg/authoring/dist/platform.js +4 -0
- package/node_modules/@noodle-borg/authoring/dist/server-presentation.js +43 -0
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts +3 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js +4 -44
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.js +18 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-config.js +31 -4
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solutions.js +778 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-tenant-resources.js +0 -241
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-types.js +7 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/index.js +20 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +2 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.js +3 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/config.js +3 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +17 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +6 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +6 -1
- package/node_modules/@noodle-borg/compiler/dist/business-variables.d.ts +27 -0
- package/node_modules/@noodle-borg/compiler/dist/business-variables.js +230 -0
- package/node_modules/@noodle-borg/compiler/dist/compile.js +7 -1
- package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
- package/node_modules/@noodle-borg/compiler/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/compiler/dist/index.js +3 -0
- package/node_modules/@noodle-borg/compiler/dist/managed-collection-controls.d.ts +52 -0
- package/node_modules/@noodle-borg/compiler/dist/managed-collection-controls.js +92 -0
- package/node_modules/@noodle-borg/compiler/dist/managed-collections.d.ts +26 -1
- package/node_modules/@noodle-borg/compiler/dist/managed-collections.js +190 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +100 -36
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +2 -0
- package/node_modules/@noodle-borg/compiler/dist/native-record-operations.d.ts +7 -0
- package/node_modules/@noodle-borg/compiler/dist/native-record-operations.js +59 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-http.js +83 -8
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +31 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js +16 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +12 -3
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +41 -2
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js +3 -2
- package/node_modules/@noodle-borg/connector-http/dist/mcp/config.js +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/url-resolution.js +1 -1
- package/node_modules/@noodle-borg/control-plane/dist/contracts.d.ts +4 -1
- package/node_modules/@noodle-borg/control-plane/dist/deploy-gates.js +1 -0
- package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.d.ts +3 -0
- package/node_modules/@noodle-borg/control-plane/dist/in-memory-organization-store.js +11 -0
- package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.d.ts +45 -0
- package/node_modules/@noodle-borg/control-plane/dist/organization-agreements.js +74 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +1 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts +22 -0
- package/node_modules/@noodle-borg/module/dist/platform-human-identity.d.ts +2 -0
- package/node_modules/@noodle-borg/protocol/dist/request-deps.js +1 -0
- package/node_modules/@noodle-borg/protocol/dist/request-state.d.ts +1 -0
- package/node_modules/@noodle-borg/protocol/dist/request-state.js +11 -2
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +2 -0
- package/node_modules/@noodle-borg/protocol/dist/v2/input-required.js +2 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/server.js +2 -1
- package/node_modules/@noodle-borg/runtime/dist/ambient-context.js +6 -1
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +2 -0
- package/node_modules/@noodle-borg/runtime/dist/business-variables.d.ts +15 -0
- package/node_modules/@noodle-borg/runtime/dist/business-variables.js +75 -0
- package/node_modules/@noodle-borg/runtime/dist/confirmation-continuation.js +2 -1
- package/node_modules/@noodle-borg/runtime/dist/confirmation.js +23 -3
- package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +17 -1
- package/node_modules/@noodle-borg/runtime/dist/connector-snapshot.js +6 -0
- package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +18 -3
- package/node_modules/@noodle-borg/runtime/dist/execute.js +13 -3
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts +2 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js +1 -0
- package/node_modules/@noodle-borg/runtime/dist/interactive.js +11 -0
- package/node_modules/@noodle-borg/runtime/dist/managed-origins.d.ts +3 -1
- package/node_modules/@noodle-borg/runtime/dist/managed-origins.js +32 -7
- package/node_modules/@noodle-borg/runtime/dist/operation-credential.js +6 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-evidence.d.ts +30 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-evidence.js +68 -0
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.d.ts +2 -2
- package/node_modules/@noodle-borg/runtime/dist/operation-execution.js +142 -71
- package/node_modules/@noodle-borg/runtime/dist/result.d.ts +6 -4
- package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.d.ts +7 -0
- package/node_modules/@noodle-borg/runtime/dist/tool-dispatch.js +48 -4
- package/node_modules/@noodle-borg/service/dist/admission.js +2 -1
- package/node_modules/@noodle-borg/service/dist/application-activity.js +236 -0
- package/node_modules/@noodle-borg/service/dist/application-business-notice.js +28 -0
- package/node_modules/@noodle-borg/service/dist/application-runtime-target.js +141 -0
- package/node_modules/@noodle-borg/service/dist/application-settings-targets.js +72 -0
- package/node_modules/@noodle-borg/service/dist/application-settings.js +210 -0
- package/node_modules/@noodle-borg/service/dist/business-api-admission.js +121 -0
- package/node_modules/@noodle-borg/service/dist/business-information/activity-pagination.js +73 -0
- package/node_modules/@noodle-borg/service/dist/business-information/business-notice.d.ts +24 -0
- package/node_modules/@noodle-borg/service/dist/business-information/business-notice.js +18 -0
- package/node_modules/@noodle-borg/service/dist/business-information/collection-controls.js +51 -0
- package/node_modules/@noodle-borg/service/dist/business-information/contracts.d.ts +439 -0
- package/node_modules/@noodle-borg/service/dist/business-information/definition-resolver.js +94 -0
- package/node_modules/@noodle-borg/service/dist/business-information/in-memory-installation-lifecycle.js +136 -0
- package/node_modules/@noodle-borg/service/dist/business-information/in-memory-invitations.js +160 -0
- package/node_modules/@noodle-borg/service/dist/business-information/in-memory-locks.js +23 -0
- package/node_modules/@noodle-borg/service/dist/business-information/in-memory-store.js +287 -132
- package/node_modules/@noodle-borg/service/dist/business-information/installation-capacity.js +10 -0
- package/node_modules/@noodle-borg/service/dist/business-information/invitations.js +68 -0
- package/node_modules/@noodle-borg/service/dist/business-information/legacy-request-migration.js +60 -0
- package/node_modules/@noodle-borg/service/dist/business-information/managed-releases.js +245 -0
- package/node_modules/@noodle-borg/service/dist/business-information/managed-solution-blueprints.js +51 -0
- package/node_modules/@noodle-borg/service/dist/business-information/managed-solution-executable.js +76 -0
- package/node_modules/@noodle-borg/service/dist/business-information/model.js +124 -23
- package/node_modules/@noodle-borg/service/dist/business-information/native-query.js +162 -0
- package/node_modules/@noodle-borg/service/dist/business-information/native-storage-budget.js +60 -0
- package/node_modules/@noodle-borg/service/dist/business-information/pagination.js +28 -0
- package/node_modules/@noodle-borg/service/dist/business-information/portable.js +9 -0
- package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/business-information/principal-authority.js +42 -0
- package/node_modules/@noodle-borg/service/dist/business-information/profiles.js +137 -6
- package/node_modules/@noodle-borg/service/dist/business-information/reader-floor.js +26 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-credential-fence.js +79 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-custody-budget.js +30 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-custody-memory.js +122 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-executor.js +191 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-contracts.js +2 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-coordinator.js +136 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-failures.js +32 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-memory-state.js +154 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-memory-store.js +568 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-memory-types.js +26 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-memory-values.js +59 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-pagination.js +54 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-ingestion-validation.js +163 -0
- package/node_modules/@noodle-borg/service/dist/business-information/source-refresh-retention.js +29 -0
- package/node_modules/@noodle-borg/service/dist/business-information-runtime.js +80 -0
- package/node_modules/@noodle-borg/service/dist/business-onboarding.js +73 -0
- package/node_modules/@noodle-borg/service/dist/connections/types.js +8 -0
- package/node_modules/@noodle-borg/service/dist/credential-binding-index.js +38 -33
- package/node_modules/@noodle-borg/service/dist/deployment-execution.js +275 -0
- package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.js +19 -1
- package/node_modules/@noodle-borg/service/dist/external-credential-exchange.d.ts +16 -1
- package/node_modules/@noodle-borg/service/dist/modules/host.js +4 -1
- package/node_modules/@noodle-borg/service/dist/native-record-connector.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/native-record-connector.js +206 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/operation-evidence.js +89 -0
- package/node_modules/@noodle-borg/service/dist/recovery-quarantine.js +49 -0
- package/node_modules/@noodle-borg/service/dist/registry-compile.js +60 -11
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js +18 -0
- package/node_modules/@noodle-borg/service/dist/registry-rollback.js +2 -1
- package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-state.js +6 -3
- package/node_modules/@noodle-borg/service/dist/registry-targets.js +49 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/registry.d.ts +15 -3
- package/node_modules/@noodle-borg/service/dist/registry.js +177 -137
- package/node_modules/@noodle-borg/service/dist/routes/assistant-appearance.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-clients.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-doctor.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +8 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-replay.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +48 -36
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-configuration.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +10 -10
- package/node_modules/@noodle-borg/service/dist/routes/assistant-session-target.js +32 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-suggestions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-transcript.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +10 -10
- package/node_modules/@noodle-borg/service/dist/routes/business-information-activity.js +83 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-admission.js +26 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-channels.js +153 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-connections.js +107 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-dispatch.js +87 -4
- package/node_modules/@noodle-borg/service/dist/routes/business-information-external.js +79 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-installation.js +24 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-notice.js +69 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-onboarding.js +58 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-paths.js +76 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-public.js +151 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-reader-floor.js +15 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-record-create.js +29 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-record-reads.js +36 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-request.js +64 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-settings.js +64 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-source.js +249 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-staff.js +258 -0
- package/node_modules/@noodle-borg/service/dist/routes/business-information-wire.js +226 -26
- package/node_modules/@noodle-borg/service/dist/routes/business-information.js +238 -197
- package/node_modules/@noodle-borg/service/dist/routes/config-values-dispatch.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values.js +26 -4
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +33 -234
- package/node_modules/@noodle-borg/service/dist/routes/deployment-activation-response.js +13 -4
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +4 -0
- package/node_modules/@noodle-borg/service/dist/service.js +57 -11
- package/node_modules/@noodle-borg/service/dist/solution-installation-activation.js +149 -0
- package/node_modules/@noodle-borg/service/dist/source-configuration-authority.js +94 -0
- package/node_modules/@noodle-borg/service/dist/state-catalog.js +6 -5
- package/node_modules/@noodle-borg/service/dist/store/config-values.d.ts +42 -17
- package/node_modules/@noodle-borg/service/dist/store/config-values.js +123 -24
- package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/store/in-memory.js +3 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.js +3 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +3 -1
- package/node_modules/@noodle-borg/service/package.json +2 -2
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +9 -0
- package/node_modules/@noodle-borg/transport-http/package.json +1 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.d.ts +143 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.js +90 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-channels.d.ts +130 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-channels.js +77 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-connections.d.ts +105 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-connections.js +67 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-onboarding.d.ts +27 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-onboarding.js +28 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-settings.d.ts +112 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-settings.js +88 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-catalog.d.ts +62 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-catalog.js +57 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-enforcement.d.ts +12 -12
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-metering.d.ts +4 -4
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-org-transfer.d.ts +3 -3
- package/node_modules/@noodle-borg/wire-contracts/dist/business-information-query.d.ts +25 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/business-information-query.js +37 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/business-information.d.ts +1816 -158
- package/node_modules/@noodle-borg/wire-contracts/dist/business-information.js +416 -41
- package/node_modules/@noodle-borg/wire-contracts/dist/control-plane.d.ts +2 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/distribution.d.ts +5 -5
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +8 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +8 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/knowledge.d.ts +3 -3
- package/node_modules/@noodle-borg/wire-contracts/dist/managed-assistant-sponsorship.d.ts +7 -7
- package/node_modules/@noodle-borg/wire-contracts/dist/platform-account-reset.d.ts +5 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/platform-account-reset.js +1 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/platform-auth.d.ts +66 -66
- package/node_modules/@noodle-borg/wire-contracts/dist/solution-onboarding.d.ts +143 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/solution-onboarding.js +94 -0
- package/node_modules/@noodleseed/assistant/README.md +5 -0
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { validateSlug } from './validation.js';
|
|
3
|
+
export class OrganizationAgreementError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
constructor(code) {
|
|
6
|
+
super(code === 'agreement_owner_required'
|
|
7
|
+
? 'Organization owner required to accept agreements.'
|
|
8
|
+
: 'Agreement version has a different immutable document identity.');
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.name = 'OrganizationAgreementError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function validateAgreementDocuments(input) {
|
|
14
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$/.test(input.version))
|
|
15
|
+
throw new Error('Invalid agreement version');
|
|
16
|
+
const document = (value) => {
|
|
17
|
+
if (typeof value.url !== 'string' ||
|
|
18
|
+
value.url.length > 2048 ||
|
|
19
|
+
!/^[a-f0-9]{64}$/.test(value.sha256))
|
|
20
|
+
throw new Error('Invalid agreement document');
|
|
21
|
+
const url = new URL(value.url);
|
|
22
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.hash)
|
|
23
|
+
throw new Error('Invalid agreement document URL');
|
|
24
|
+
return { url: value.url, sha256: value.sha256 };
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
version: input.version,
|
|
28
|
+
terms: document(input.terms),
|
|
29
|
+
privacy: document(input.privacy),
|
|
30
|
+
processing: document(input.processing),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function agreementDocumentDigest(documents) {
|
|
34
|
+
return createHash('sha256')
|
|
35
|
+
.update(JSON.stringify(validateAgreementDocuments(documents)))
|
|
36
|
+
.digest('hex');
|
|
37
|
+
}
|
|
38
|
+
/** Synchronous commit boundary keeps membership recheck, catalog registration and receipt indivisible. */
|
|
39
|
+
export class InMemoryOrganizationAgreements {
|
|
40
|
+
isOwner;
|
|
41
|
+
now;
|
|
42
|
+
#catalog = new Map();
|
|
43
|
+
#receipts = new Map();
|
|
44
|
+
constructor(isOwner, now) {
|
|
45
|
+
this.isOwner = isOwner;
|
|
46
|
+
this.now = now;
|
|
47
|
+
}
|
|
48
|
+
getOrganizationAgreement(org, version) {
|
|
49
|
+
const receipt = this.#receipts.get(JSON.stringify([validateSlug('org', org), version]));
|
|
50
|
+
return Promise.resolve(receipt ? structuredClone(receipt) : undefined);
|
|
51
|
+
}
|
|
52
|
+
async acceptOrganizationAgreement(input) {
|
|
53
|
+
const org = validateSlug('org', input.org);
|
|
54
|
+
if (!this.isOwner(org, input.actorSubject))
|
|
55
|
+
throw new OrganizationAgreementError('agreement_owner_required');
|
|
56
|
+
const documents = validateAgreementDocuments(input.documents);
|
|
57
|
+
const documentDigest = agreementDocumentDigest(documents);
|
|
58
|
+
const registered = this.#catalog.get(documents.version);
|
|
59
|
+
if (registered !== undefined && registered !== documentDigest)
|
|
60
|
+
throw new OrganizationAgreementError('agreement_version_conflict');
|
|
61
|
+
const key = JSON.stringify([org, documents.version]);
|
|
62
|
+
const receipt = this.#receipts.get(key) ?? {
|
|
63
|
+
org,
|
|
64
|
+
actorSubject: input.actorSubject,
|
|
65
|
+
documents,
|
|
66
|
+
documentDigest,
|
|
67
|
+
acceptedAt: this.now().toISOString(),
|
|
68
|
+
};
|
|
69
|
+
this.#catalog.set(documents.version, documentDigest);
|
|
70
|
+
this.#receipts.set(key, receipt);
|
|
71
|
+
return structuredClone(receipt);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=organization-agreements.js.map
|
|
@@ -6,6 +6,7 @@ export { CompositeControlPlaneGate, type ControlPlaneSignupMode, GoogleControlPl
|
|
|
6
6
|
export { InMemoryControlPlaneStore } from './in-memory-control-plane-store.js';
|
|
7
7
|
export { bindInMemoryOrganizationStore, type InMemoryOrganizationOperations, InMemoryOrganizationStore, } from './in-memory-organization-store.js';
|
|
8
8
|
export { InMemoryMcpSubdomainClaimStore, McpSubdomainCooldownError, McpSubdomainIdempotencyConflictError, McpSubdomainOwnerRequiredError, type McpSubdomainRouteRef, McpSubdomainUnavailableError, mcpSubdomainEndpointOptions, type ResolvedMcpTenantRef, resolveMcpSubdomainTenant, } from './mcp-subdomain-claims.js';
|
|
9
|
+
export { type AcceptOrganizationAgreementInput, type AgreementDocument, type AgreementDocuments, agreementDocumentDigest, type OrganizationAgreementAcceptance, OrganizationAgreementError, type OrganizationAgreementStore, validateAgreementDocuments, } from './organization-agreements.js';
|
|
9
10
|
export { domainFromEmail, domainKey, memberKey, normalizeSignupAllowlistValue, personalOrgSlug, personalOrgSlugSuffix, signupKey, } from './organization-helpers.js';
|
|
10
11
|
export { ensurePersonalWorkspace } from './personal-workspace.js';
|
|
11
12
|
export { type RollbackControlPlane, type RollbackOperationDependencies, type RollbackOperationInput, type RollbackOperationResult, type RollbackRegistry, rollbackDeploymentOperation, } from './rollback-deployment.js';
|
|
@@ -5,6 +5,7 @@ export { CompositeControlPlaneGate, GoogleControlPlaneGate, GoogleWorkloadContro
|
|
|
5
5
|
export { InMemoryControlPlaneStore } from './in-memory-control-plane-store.js';
|
|
6
6
|
export { bindInMemoryOrganizationStore, InMemoryOrganizationStore, } from './in-memory-organization-store.js';
|
|
7
7
|
export { InMemoryMcpSubdomainClaimStore, McpSubdomainCooldownError, McpSubdomainIdempotencyConflictError, McpSubdomainOwnerRequiredError, McpSubdomainUnavailableError, mcpSubdomainEndpointOptions, resolveMcpSubdomainTenant, } from './mcp-subdomain-claims.js';
|
|
8
|
+
export { agreementDocumentDigest, OrganizationAgreementError, validateAgreementDocuments, } from './organization-agreements.js';
|
|
8
9
|
export { domainFromEmail, domainKey, memberKey, normalizeSignupAllowlistValue, personalOrgSlug, personalOrgSlugSuffix, signupKey, } from './organization-helpers.js';
|
|
9
10
|
export { ensurePersonalWorkspace } from './personal-workspace.js';
|
|
10
11
|
export { rollbackDeploymentOperation, } from './rollback-deployment.js';
|
|
@@ -53,6 +53,8 @@ export interface ControlPlaneAuthorizer {
|
|
|
53
53
|
authorize(req: IncomingMessage): Promise<ControlPlaneAuthResult> | ControlPlaneAuthResult;
|
|
54
54
|
}
|
|
55
55
|
export interface ControlPlaneIdentity {
|
|
56
|
+
/** Server-produced provenance from the exact Google workload verifier; never request data. */
|
|
57
|
+
readonly authenticationKind?: 'google-workload';
|
|
56
58
|
readonly subject: string;
|
|
57
59
|
readonly email: string;
|
|
58
60
|
readonly superAdmin: boolean;
|
|
@@ -181,7 +183,27 @@ export interface ModuleContributionsV1 {
|
|
|
181
183
|
readonly readiness?: ReadinessProbe;
|
|
182
184
|
readonly dispose?: ModuleDispose;
|
|
183
185
|
}
|
|
186
|
+
/** Verified current authority; absence must not synthesize a commercial tier. */
|
|
187
|
+
export interface ActivityHistoryAllowance {
|
|
188
|
+
readonly maximumDays: number;
|
|
189
|
+
readonly defaultDays: number;
|
|
190
|
+
readonly revision: string;
|
|
191
|
+
/** Read-only scenarios; this is not evidence that a plan change is selected or scheduled. */
|
|
192
|
+
readonly preview?: {
|
|
193
|
+
readonly asOf: string;
|
|
194
|
+
readonly paidPeriodEnd: string;
|
|
195
|
+
readonly scenarios: readonly {
|
|
196
|
+
readonly id: string;
|
|
197
|
+
readonly label: string;
|
|
198
|
+
readonly maximumDays: number;
|
|
199
|
+
}[];
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export type ResolveActivityHistoryAllowance = (org: string, options?: {
|
|
203
|
+
readonly includePreview: true;
|
|
204
|
+
}) => Promise<ActivityHistoryAllowance | undefined>;
|
|
184
205
|
export interface ModuleContributions extends ModuleContributionsV1 {
|
|
206
|
+
readonly resolveActivityHistoryAllowance?: ResolveActivityHistoryAllowance;
|
|
185
207
|
readonly assetStore?: AssetStore;
|
|
186
208
|
readonly deploymentAutomation?: DeploymentAutomationAuthorizer;
|
|
187
209
|
readonly platformHumanIdentity?: PlatformHumanIdentityContribution;
|
|
@@ -85,6 +85,8 @@ export interface PlatformHumanIdentityContribution {
|
|
|
85
85
|
readonly oldTokenHash: string;
|
|
86
86
|
readonly clientId: string;
|
|
87
87
|
}) => Promise<'continue' | 'unknown' | 'suspended'>;
|
|
88
|
+
/** Check a business assignee under the caller's borrowed transaction and suspension lock. */
|
|
89
|
+
readonly assertActivePrincipal?: (transaction: ModuleSqlTransaction, subject: string) => Promise<void>;
|
|
88
90
|
readonly continuityProbe?: () => void | Promise<void>;
|
|
89
91
|
}
|
|
90
92
|
//# sourceMappingURL=platform-human-identity.d.ts.map
|
|
@@ -4,6 +4,7 @@ export function buildProtocolRequestDeps(artifact, deps, context) {
|
|
|
4
4
|
return {
|
|
5
5
|
...deps,
|
|
6
6
|
...(context.caller !== undefined ? { caller: context.caller } : {}),
|
|
7
|
+
...(context.publicAdmission === undefined ? {} : { publicAdmission: context.publicAdmission }),
|
|
7
8
|
...(context.customerIssuer !== undefined ? { customerIssuer: context.customerIssuer } : {}),
|
|
8
9
|
...(artifact.customerEndpoints === undefined
|
|
9
10
|
? {}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ElicitationResponse, SecretBox } from '@noodle-borg/runtime';
|
|
2
2
|
export type RequestStateMethod = 'tools/call' | 'resources/read' | 'prompts/get';
|
|
3
3
|
export interface RequestStateBinding {
|
|
4
|
+
readonly executionRevision?: string;
|
|
4
5
|
readonly deploymentId: string;
|
|
5
6
|
readonly serverVersion: string;
|
|
6
7
|
readonly method: RequestStateMethod;
|
|
@@ -140,7 +140,14 @@ function assertPayload(value, maxRounds) {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
function assertBinding(actual, expected) {
|
|
143
|
-
for (const key of [
|
|
143
|
+
for (const key of [
|
|
144
|
+
'deploymentId',
|
|
145
|
+
'serverVersion',
|
|
146
|
+
'method',
|
|
147
|
+
'target',
|
|
148
|
+
'principal',
|
|
149
|
+
'executionRevision',
|
|
150
|
+
]) {
|
|
144
151
|
if (actual[key] !== expected[key]) {
|
|
145
152
|
throw new RequestStateError('request_state_binding_mismatch');
|
|
146
153
|
}
|
|
@@ -158,7 +165,9 @@ function isBinding(value) {
|
|
|
158
165
|
value.method === 'prompts/get') &&
|
|
159
166
|
typeof value.target === 'string' &&
|
|
160
167
|
typeof value.principal === 'string' &&
|
|
161
|
-
typeof value.argumentDigest === 'string'
|
|
168
|
+
typeof value.argumentDigest === 'string' &&
|
|
169
|
+
(value.executionRevision === undefined ||
|
|
170
|
+
(typeof value.executionRevision === 'string' && value.executionRevision.length <= 256)));
|
|
162
171
|
}
|
|
163
172
|
function isResponseMap(value) {
|
|
164
173
|
return (isRecord(value) &&
|
|
@@ -19,6 +19,8 @@ export interface ServedArtifact {
|
|
|
19
19
|
}
|
|
20
20
|
export interface ProtocolRequestContext {
|
|
21
21
|
readonly caller?: CallerIdentity;
|
|
22
|
+
/** Internal hosting attribution, never MCP payload metadata or caller-visible context. */
|
|
23
|
+
readonly publicAdmission?: NonNullable<ExecuteDeps['publicAdmission']>;
|
|
22
24
|
/** Origin-wide readiness for the complete OAuth client-credentials lifecycle. */
|
|
23
25
|
readonly oauthClientCredentialsReady?: boolean;
|
|
24
26
|
/** Request-host-specific widget metadata projection; never persisted into the served artifact. */
|
|
@@ -2,7 +2,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { fromJsonSchema, inputRequired, } from '@modelcontextprotocol/server';
|
|
3
3
|
import { digestMcpArguments, RequestStateError, } from '../request-state.js';
|
|
4
4
|
const REQUEST_STATE_TTL_MS = 5 * 60_000;
|
|
5
|
-
export function toolRequestStateBinding(artifact, context, toolName, toolArguments) {
|
|
5
|
+
export function toolRequestStateBinding(artifact, context, toolName, toolArguments, executionRevision) {
|
|
6
6
|
return {
|
|
7
7
|
deploymentId: context.deploymentId ?? `local:${artifact.server.name}`,
|
|
8
8
|
serverVersion: artifact.server.version,
|
|
@@ -10,6 +10,7 @@ export function toolRequestStateBinding(artifact, context, toolName, toolArgumen
|
|
|
10
10
|
target: toolName,
|
|
11
11
|
principal: requestStatePrincipal(context),
|
|
12
12
|
argumentDigest: digestMcpArguments(toolArguments),
|
|
13
|
+
...(executionRevision === undefined ? {} : { executionRevision }),
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
function requestStatePrincipal(context) {
|
|
@@ -169,7 +169,7 @@ function registerV2Tools(server, artifact, deps, context, era) {
|
|
|
169
169
|
: { arguments: captured.arguments, responses: {} };
|
|
170
170
|
let toolArguments = interaction.arguments;
|
|
171
171
|
const requestState = era === 'modern' ? ctx.mcpReq.requestState() : undefined;
|
|
172
|
-
const modernBinding = () => toolRequestStateBinding(artifact, context, toolName, interaction.arguments);
|
|
172
|
+
const modernBinding = () => toolRequestStateBinding(artifact, context, toolName, interaction.arguments, deps.executionBinding?.revision);
|
|
173
173
|
const rejectRequestState = (error) => {
|
|
174
174
|
const rejection = asRequestStateError(error);
|
|
175
175
|
observe('mcp_error', { errorKind: rejection.reason });
|
|
@@ -229,6 +229,7 @@ function registerV2Tools(server, artifact, deps, context, era) {
|
|
|
229
229
|
}
|
|
230
230
|
const toolDeps = {
|
|
231
231
|
...deps,
|
|
232
|
+
...(requestState === undefined ? {} : { invocationId: requestState.nonce }),
|
|
232
233
|
signal: ctx.mcpReq.signal,
|
|
233
234
|
...(context.beforeToolDispatch === undefined
|
|
234
235
|
? {}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { resolveVariableEnvironment } from './business-variables.js';
|
|
1
2
|
import { canonicalizeContext } from './context-bounds.js';
|
|
2
|
-
import { runFulfilment, validateAgainstSchema } from './execute.js';
|
|
3
|
+
import { resolveEnv, runFulfilment, validateAgainstSchema } from './execute.js';
|
|
3
4
|
import { splitResultMeta } from './result-meta.js';
|
|
4
5
|
/**
|
|
5
6
|
* Resolve the server's declared ambient context against the invocation's temporal/caller snapshot.
|
|
@@ -19,6 +20,9 @@ export async function executeAmbientContext(artifact, deps) {
|
|
|
19
20
|
const ambient = artifact.server.context?.ambient;
|
|
20
21
|
if (ambient === undefined)
|
|
21
22
|
return { ok: true, output: undefined };
|
|
23
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps));
|
|
24
|
+
if (!variables.ok)
|
|
25
|
+
return variables;
|
|
22
26
|
const providerContext = deps.context === undefined
|
|
23
27
|
? undefined
|
|
24
28
|
: {
|
|
@@ -27,6 +31,7 @@ export async function executeAmbientContext(artifact, deps) {
|
|
|
27
31
|
};
|
|
28
32
|
const providerDeps = {
|
|
29
33
|
...deps,
|
|
34
|
+
env: variables.env,
|
|
30
35
|
...(providerContext !== undefined ? { context: providerContext } : {}),
|
|
31
36
|
};
|
|
32
37
|
const result = await runFulfilment(ambient.fulfilment, {}, 'server.context.ambient', providerDeps);
|
|
@@ -56,6 +56,8 @@ export interface CredentialRequest {
|
|
|
56
56
|
readonly bindingId?: string;
|
|
57
57
|
readonly connectionId?: string;
|
|
58
58
|
readonly connectionConfigRevision?: string;
|
|
59
|
+
/** Original operator account generation from trusted hosting state, never caller input. */
|
|
60
|
+
readonly expectedConnectionGeneration?: string;
|
|
59
61
|
readonly profile?: string;
|
|
60
62
|
readonly presentation?: CredentialProfile;
|
|
61
63
|
readonly requiredScopes?: readonly string[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ArtifactVariableDeclaration, type RuntimeArtifact } from '@noodle-borg/compiler';
|
|
2
|
+
import type { ExecutionError } from './result.js';
|
|
3
|
+
export type VariableEnvironmentResult = {
|
|
4
|
+
readonly ok: true;
|
|
5
|
+
readonly env: Record<string, unknown>;
|
|
6
|
+
readonly missing: readonly string[];
|
|
7
|
+
} | {
|
|
8
|
+
readonly ok: false;
|
|
9
|
+
readonly error: ExecutionError;
|
|
10
|
+
};
|
|
11
|
+
/** Decode the authoritative string store once at an invocation boundary. No implicit coercion. */
|
|
12
|
+
export declare function resolveVariableEnvironment(declarations: readonly ArtifactVariableDeclaration[], rawConfig: Readonly<Record<string, unknown>>, toolName?: string): VariableEnvironmentResult;
|
|
13
|
+
/** A resumed intent cannot silently continue under changed effective business configuration. */
|
|
14
|
+
export declare function validateVariableContinuation(artifact: RuntimeArtifact, previousEnv: Readonly<Record<string, unknown>>, current: VariableEnvironmentResult): ExecutionError | undefined;
|
|
15
|
+
//# sourceMappingURL=business-variables.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { canonicalJson, MAX_VARIABLE_VALUE_BYTES, validateJsonSchema, } from '@noodle-borg/compiler';
|
|
2
|
+
/** Decode the authoritative string store once at an invocation boundary. No implicit coercion. */
|
|
3
|
+
export function resolveVariableEnvironment(declarations, rawConfig, toolName) {
|
|
4
|
+
const env = { ...rawConfig };
|
|
5
|
+
const missing = [];
|
|
6
|
+
for (const declaration of declarations) {
|
|
7
|
+
const raw = Object.hasOwn(rawConfig, declaration.name)
|
|
8
|
+
? rawConfig[declaration.name]
|
|
9
|
+
: undefined;
|
|
10
|
+
if (raw === undefined && !Object.hasOwn(declaration, 'default')) {
|
|
11
|
+
missing.push(declaration.name);
|
|
12
|
+
delete env[declaration.name];
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
let value;
|
|
16
|
+
try {
|
|
17
|
+
if (raw === undefined)
|
|
18
|
+
value = structuredClone(declaration.default);
|
|
19
|
+
else if (typeof raw === 'string') {
|
|
20
|
+
if (Buffer.byteLength(raw) > MAX_VARIABLE_VALUE_BYTES)
|
|
21
|
+
return invalidVariable();
|
|
22
|
+
value = JSON.parse(raw);
|
|
23
|
+
}
|
|
24
|
+
else
|
|
25
|
+
value = structuredClone(raw);
|
|
26
|
+
if (Buffer.byteLength(canonicalJson(value)) > MAX_VARIABLE_VALUE_BYTES)
|
|
27
|
+
return invalidVariable();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return invalidVariable();
|
|
31
|
+
}
|
|
32
|
+
if (validateJsonSchema(declaration.valueSchema, value).length > 0)
|
|
33
|
+
return invalidVariable();
|
|
34
|
+
Object.defineProperty(env, declaration.name, {
|
|
35
|
+
value,
|
|
36
|
+
enumerable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
writable: true,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (toolName !== undefined &&
|
|
42
|
+
declarations.some((declaration) => missing.includes(declaration.name) && declaration.requiredFor.includes(toolName))) {
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
error: {
|
|
46
|
+
code: 'configuration_required',
|
|
47
|
+
message: 'This capability needs business settings before it can run.',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return { ok: true, env, missing };
|
|
52
|
+
}
|
|
53
|
+
/** A resumed intent cannot silently continue under changed effective business configuration. */
|
|
54
|
+
export function validateVariableContinuation(artifact, previousEnv, current) {
|
|
55
|
+
if (!current.ok)
|
|
56
|
+
return current.error;
|
|
57
|
+
const names = (artifact.server.variables ?? []).map((declaration) => declaration.name);
|
|
58
|
+
const project = (env) => Object.fromEntries(names.map((name) => [name, env[name]]));
|
|
59
|
+
if (canonicalJson(project(previousEnv)) !== canonicalJson(project(current.env)))
|
|
60
|
+
return {
|
|
61
|
+
code: 'configuration_changed',
|
|
62
|
+
message: 'Business settings changed. Prepare and confirm the action again.',
|
|
63
|
+
};
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
function invalidVariable() {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
error: {
|
|
70
|
+
code: 'configuration_invalid',
|
|
71
|
+
message: 'Business settings are unavailable or invalid.',
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=business-variables.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function confirmationRequired(artifact, toolName, input, nextStepIndex, completedSteps, elicited, env, action) {
|
|
1
|
+
export function confirmationRequired(artifact, toolName, input, nextStepIndex, completedSteps, elicited, env, action, executionRevision) {
|
|
2
2
|
const reviewedAction = action === undefined
|
|
3
3
|
? undefined
|
|
4
4
|
: {
|
|
@@ -43,6 +43,7 @@ export function confirmationRequired(artifact, toolName, input, nextStepIndex, c
|
|
|
43
43
|
},
|
|
44
44
|
continuation: {
|
|
45
45
|
kind: 'prepared_confirmation',
|
|
46
|
+
...(executionRevision === undefined ? {} : { executionRevision }),
|
|
46
47
|
version: 1,
|
|
47
48
|
artifact: artifactIdentity(artifact),
|
|
48
49
|
toolName,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveVariableEnvironment, validateVariableContinuation } from './business-variables.js';
|
|
1
2
|
import { analyzeEligibleActions, countTrailingEligibleOperations, isActionOperation, validateConfirmationFlow, } from './confirmation-analysis.js';
|
|
2
3
|
import { artifactIdentity, confirmationRequired, sameArtifact, } from './confirmation-continuation.js';
|
|
3
4
|
import { validatePreparedCustomerRoutes } from './confirmation-customer-routes.js';
|
|
@@ -21,6 +22,10 @@ export async function prepareToolForConfirmation(artifact, toolName, input, deps
|
|
|
21
22
|
const tool = artifact.tools.find((candidate) => candidate.name === toolName);
|
|
22
23
|
if (!tool)
|
|
23
24
|
return failPreparation('unknown_tool', `no tool named "${toolName}"`);
|
|
25
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps), toolName);
|
|
26
|
+
if (!variables.ok)
|
|
27
|
+
return { status: 'failed', error: variables.error };
|
|
28
|
+
deps = { ...deps, env: variables.env };
|
|
24
29
|
const invocationDeps = withConnectorSnapshot(deps);
|
|
25
30
|
const preflightError = preflightFulfilmentSignatures(tool.fulfilment, invocationDeps.connectors);
|
|
26
31
|
if (preflightError)
|
|
@@ -41,7 +46,7 @@ export async function prepareToolForConfirmation(artifact, toolName, input, deps
|
|
|
41
46
|
return confirmationRequired(artifact, toolName, input, 0, {}, {}, env, {
|
|
42
47
|
prepared: prepared.action,
|
|
43
48
|
review: prepared.review,
|
|
44
|
-
});
|
|
49
|
+
}, invocationDeps.executionBinding?.revision);
|
|
45
50
|
}
|
|
46
51
|
return runPreparation(artifact, toolName, tool.fulfilment, input, 0, {}, {}, env, invocationDeps);
|
|
47
52
|
}
|
|
@@ -57,6 +62,12 @@ export async function resumeToolPreparation(artifact, continuation, response, de
|
|
|
57
62
|
}
|
|
58
63
|
if (response.action !== 'accept')
|
|
59
64
|
return { status: 'stopped', action: response.action };
|
|
65
|
+
if ((artifact.server.variables?.length ?? 0) > 0) {
|
|
66
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps), continuation.toolName);
|
|
67
|
+
const configurationError = validateVariableContinuation(artifact, continuation.env, variables);
|
|
68
|
+
if (configurationError)
|
|
69
|
+
return { status: 'failed', error: configurationError };
|
|
70
|
+
}
|
|
60
71
|
const validated = validateElicitationContent(response.content ?? {}, continuation.pending.requestedSchema, `steps.${continuation.pending.id}`);
|
|
61
72
|
if (!validated.ok)
|
|
62
73
|
return { status: 'failed', error: validated.error };
|
|
@@ -94,6 +105,15 @@ export async function executePreparedTool(artifact, continuation, deps) {
|
|
|
94
105
|
const tool = artifact.tools.find((candidate) => candidate.name === continuation.toolName);
|
|
95
106
|
if (!tool)
|
|
96
107
|
return failInteractive('invalid_continuation', 'continued tool is unavailable');
|
|
108
|
+
if (continuation.executionRevision !== deps.executionBinding?.revision) {
|
|
109
|
+
return failInteractive('configuration_changed', 'Application configuration or connection changed; request a new confirmation.');
|
|
110
|
+
}
|
|
111
|
+
if ((artifact.server.variables?.length ?? 0) > 0) {
|
|
112
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps), continuation.toolName);
|
|
113
|
+
const configurationError = validateVariableContinuation(artifact, continuation.env, variables);
|
|
114
|
+
if (configurationError)
|
|
115
|
+
return { status: 'failed', error: configurationError };
|
|
116
|
+
}
|
|
97
117
|
const inputError = validateAgainstSchema(continuation.input, tool.inputSchema, 'input', 'arg_invalid', 'tool input');
|
|
98
118
|
if (inputError)
|
|
99
119
|
return { status: 'failed', error: inputError };
|
|
@@ -194,7 +214,7 @@ async function runPreparation(artifact, toolName, flow, input, startIndex, steps
|
|
|
194
214
|
return confirmationRequired(artifact, toolName, input, index, steps, elicited, env, {
|
|
195
215
|
prepared: prepared.action,
|
|
196
216
|
review: prepared.review,
|
|
197
|
-
});
|
|
217
|
+
}, deps.executionBinding?.revision);
|
|
198
218
|
}
|
|
199
219
|
if (step.kind === 'map') {
|
|
200
220
|
steps[step.id] = evalExprMap(step.value, scope, `steps.${step.id}`);
|
|
@@ -229,7 +249,7 @@ async function runPreparation(artifact, toolName, flow, input, startIndex, steps
|
|
|
229
249
|
if (actionAnalysis.flowHasActions && actionAnalysis.eligibleIndexes.length !== 1) {
|
|
230
250
|
return failPreparation('invalid_confirmation_flow', 'confirmable conditional flows must resolve exactly one eligible action');
|
|
231
251
|
}
|
|
232
|
-
return confirmationRequired(artifact, toolName, input, flow.steps.length, steps, elicited, env);
|
|
252
|
+
return confirmationRequired(artifact, toolName, input, flow.steps.length, steps, elicited, env, undefined, deps.executionBinding?.revision);
|
|
233
253
|
}
|
|
234
254
|
catch (error) {
|
|
235
255
|
if (error instanceof ExpressionEvalError) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CredentialProfile, OperationSignature, ResolvedOperationRef } from '@noodle-borg/compiler';
|
|
2
2
|
import type { DownstreamCredential } from '../broker/types.js';
|
|
3
3
|
import type { CustomerConnectorRoute } from '../customer-routing.js';
|
|
4
|
+
import type { OperationEvidence } from '../operation-evidence.js';
|
|
4
5
|
/** Verified caller claims that may be threaded into first-party connector operations. */
|
|
5
6
|
export interface CallerIdentity {
|
|
6
7
|
readonly subject: string;
|
|
@@ -78,10 +79,21 @@ export interface ConnectorCallHost {
|
|
|
78
79
|
/** A single connector-operation invocation, fully resolved and credentialed by the runtime. */
|
|
79
80
|
export interface ConnectorCall {
|
|
80
81
|
readonly operation: string;
|
|
82
|
+
/** Runtime-generated, deployment/step-bound identity. Not a business input or recovery authority. */
|
|
83
|
+
readonly execution?: Readonly<{
|
|
84
|
+
readonly id: string;
|
|
85
|
+
}>;
|
|
86
|
+
/** Connector/application-classified evidence; never infer completion from a transport status alone. */
|
|
87
|
+
readonly reportOutcome?: (evidence: OperationEvidence) => void;
|
|
88
|
+
/** Trusted request attribution for native public writes; never an argument or expression value. */
|
|
89
|
+
readonly publicAdmission?: {
|
|
90
|
+
readonly network: string;
|
|
91
|
+
readonly visitor?: string;
|
|
92
|
+
};
|
|
81
93
|
/** Evaluated, validated arguments. */
|
|
82
94
|
readonly args: Readonly<Record<string, unknown>>;
|
|
83
95
|
/** Managed variables resolved for the deployment scope. */
|
|
84
|
-
readonly env?: Readonly<Record<string,
|
|
96
|
+
readonly env?: Readonly<Record<string, unknown>>;
|
|
85
97
|
/** Request-scoped cancellation; connectors should propagate it to outbound work. */
|
|
86
98
|
readonly signal?: AbortSignal;
|
|
87
99
|
/**
|
|
@@ -91,6 +103,8 @@ export interface ConnectorCall {
|
|
|
91
103
|
readonly credential: DownstreamCredential;
|
|
92
104
|
/** Binding-selected presentation; when present it overrides connector-level legacy auth config. */
|
|
93
105
|
readonly credentialPresentation?: CredentialProfile;
|
|
106
|
+
/** Lazy deployment credential for an explicitly declared independent transport; called only after egress validation. */
|
|
107
|
+
readonly acquireTransportCredential?: () => Promise<DownstreamCredential>;
|
|
94
108
|
/** Verified caller claims, when the access mode intentionally exposes them to execution. */
|
|
95
109
|
readonly caller?: CallerIdentity;
|
|
96
110
|
/** Full request-local route supplied only to the connector that needs it. */
|
|
@@ -114,6 +128,8 @@ export interface Connector {
|
|
|
114
128
|
readonly version: string;
|
|
115
129
|
/** The operation's signature, used for signature-drift verification and argument/output checks. */
|
|
116
130
|
signature(operation: string): OperationSignature | undefined;
|
|
131
|
+
/** Maximum action execution duration owned by this connector; excludes confirmation/model time. */
|
|
132
|
+
executionBoundMs?(operation: string): number | undefined;
|
|
117
133
|
/** Invoke the operation. May reject; the runtime normalizes the failure (no secret leakage). */
|
|
118
134
|
invoke(call: ConnectorCall): Promise<unknown>;
|
|
119
135
|
}
|
|
@@ -21,6 +21,7 @@ export function withConnectorSnapshot(deps) {
|
|
|
21
21
|
return undefined;
|
|
22
22
|
}
|
|
23
23
|
const signatures = new Map();
|
|
24
|
+
const executionBounds = new Map();
|
|
24
25
|
const snapshot = {
|
|
25
26
|
id: connector.id,
|
|
26
27
|
version: connector.version,
|
|
@@ -32,6 +33,11 @@ export function withConnectorSnapshot(deps) {
|
|
|
32
33
|
}
|
|
33
34
|
return signatures.get(operation);
|
|
34
35
|
},
|
|
36
|
+
executionBoundMs(operation) {
|
|
37
|
+
if (!executionBounds.has(operation))
|
|
38
|
+
executionBounds.set(operation, connector.executionBoundMs?.(operation));
|
|
39
|
+
return executionBounds.get(operation);
|
|
40
|
+
},
|
|
35
41
|
invoke(call) {
|
|
36
42
|
return connector.invoke(call);
|
|
37
43
|
},
|
|
@@ -4,6 +4,7 @@ import type { CallerIdentity, ConnectorRegistry, ExecutionTraceSink } from './co
|
|
|
4
4
|
import type { FrozenCustomerRoutes } from './customer-routing.js';
|
|
5
5
|
import { type EvalScope } from './eval/evaluate.js';
|
|
6
6
|
import type { InvocationContext } from './invocation-context.js';
|
|
7
|
+
import type { OperationEvidencePort } from './operation-evidence.js';
|
|
7
8
|
import type { PolicyGate } from './policy/types.js';
|
|
8
9
|
import type { ExecutionResult } from './result.js';
|
|
9
10
|
import { type ToolDispatchHook } from './tool-dispatch.js';
|
|
@@ -19,17 +20,31 @@ export interface ExecuteDeps {
|
|
|
19
20
|
readonly connectors: ConnectorRegistry;
|
|
20
21
|
readonly broker: CredentialBroker;
|
|
21
22
|
readonly policy?: PolicyGate;
|
|
22
|
-
readonly env?: Record<string,
|
|
23
|
+
readonly env?: Record<string, unknown> | (() => Promise<Record<string, unknown>>);
|
|
23
24
|
readonly caller?: CallerIdentity;
|
|
25
|
+
/** Transport-owned admission attribution; absent network means public native writes must refuse. */
|
|
26
|
+
readonly publicAdmission?: {
|
|
27
|
+
readonly network: string;
|
|
28
|
+
readonly visitor?: string;
|
|
29
|
+
};
|
|
24
30
|
/** Verified customer IdP issuer, kept outside caller/expression scope for credential isolation. */
|
|
25
31
|
readonly customerIssuer?: string;
|
|
26
32
|
/** Request-local validated customer connector routes, kept separate from caller/expression scope. */
|
|
27
33
|
readonly customerRoutes?: FrozenCustomerRoutes;
|
|
28
34
|
readonly tenantId?: string;
|
|
29
35
|
readonly deploymentId?: string;
|
|
36
|
+
/** Trusted adapter invocation/confirmation identity; never read from tool input or expression scope. */
|
|
37
|
+
readonly invocationId?: string;
|
|
38
|
+
readonly operationEvidence?: OperationEvidencePort;
|
|
39
|
+
/** Hosting snapshot: operator configuration and original connected-account generations. */
|
|
40
|
+
readonly executionBinding?: {
|
|
41
|
+
readonly revision: string;
|
|
42
|
+
readonly connections: Readonly<Record<string, string>>;
|
|
43
|
+
};
|
|
30
44
|
/** Immutable facts resolved once for this invocation and exposed only through `${context...}`. */
|
|
31
45
|
readonly context?: InvocationContext;
|
|
32
46
|
readonly trace?: ExecutionTraceSink;
|
|
47
|
+
/** Host-owned cancellation; TimeoutError denotes a hard execution deadline. Never caller payload. */
|
|
33
48
|
readonly signal?: AbortSignal;
|
|
34
49
|
/** Deployment-bound knowledge search (ADR 0202); absent means no knowledge tools serve. */
|
|
35
50
|
readonly knowledgeSearch?: KnowledgeSearchPort;
|
|
@@ -100,7 +115,7 @@ export declare function executePrompt(artifact: RuntimeArtifact, promptName: str
|
|
|
100
115
|
/** @internal Shared with the ambient-context executor; not exported from the package barrel. */
|
|
101
116
|
export declare function runFulfilment(fulfilment: ArtifactFulfilment, input: unknown, label: string, deps: ExecuteDeps, beforeDispatch?: ToolDispatchHook): Promise<ExecutionResult>;
|
|
102
117
|
/** @internal Shared with the suspension-aware flow executor. */
|
|
103
|
-
export declare function scopeFor(input: unknown, steps: Record<string, unknown>, env: Record<string,
|
|
118
|
+
export declare function scopeFor(input: unknown, steps: Record<string, unknown>, env: Record<string, unknown>, deps: ExecuteDeps): EvalScope;
|
|
104
119
|
/** @internal Shared with the suspension-aware flow executor. */
|
|
105
|
-
export declare function resolveEnv(deps: ExecuteDeps): Promise<Record<string,
|
|
120
|
+
export declare function resolveEnv(deps: ExecuteDeps): Promise<Record<string, unknown>>;
|
|
106
121
|
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveVariableEnvironment } from './business-variables.js';
|
|
1
2
|
import { preflightFulfilmentSignatures } from './connector-snapshot.js';
|
|
2
3
|
import { preflightFulfilmentCustomerRoutes } from './customer-routing.js';
|
|
3
4
|
import { ExpressionEvalError, evaluateCondition } from './eval/evaluate.js';
|
|
@@ -25,7 +26,10 @@ export async function executeTool(artifact, toolName, input, deps) {
|
|
|
25
26
|
const tool = artifact.tools.find((t) => t.name === toolName);
|
|
26
27
|
if (!tool)
|
|
27
28
|
return fail('unknown_tool', `no tool named "${toolName}"`);
|
|
28
|
-
|
|
29
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps), toolName);
|
|
30
|
+
if (!variables.ok)
|
|
31
|
+
return variables;
|
|
32
|
+
return runFulfilment(tool.fulfilment, input, toolName, { ...deps, env: variables.env }, deps.beforeDispatch);
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
31
35
|
* Execute a resource read against a resolved artifact. `input` is the resource's variable scope — the
|
|
@@ -40,7 +44,10 @@ export async function executeResource(artifact, resourceName, input, deps) {
|
|
|
40
44
|
const resource = artifact.resources?.find((r) => r.name === resourceName);
|
|
41
45
|
if (!resource)
|
|
42
46
|
return fail('unknown_resource', `no resource named "${resourceName}"`);
|
|
43
|
-
|
|
47
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps));
|
|
48
|
+
if (!variables.ok)
|
|
49
|
+
return variables;
|
|
50
|
+
return runFulfilment(resource.fulfilment, input, resourceName, { ...deps, env: variables.env });
|
|
44
51
|
}
|
|
45
52
|
/**
|
|
46
53
|
* Execute a prompt against a resolved artifact. `args` is the supplied prompt-arguments map (the
|
|
@@ -54,7 +61,10 @@ export async function executePrompt(artifact, promptName, args, deps) {
|
|
|
54
61
|
const prompt = artifact.prompts?.find((p) => p.name === promptName);
|
|
55
62
|
if (!prompt)
|
|
56
63
|
return fail('unknown_prompt', `no prompt named "${promptName}"`);
|
|
57
|
-
|
|
64
|
+
const variables = resolveVariableEnvironment(artifact.server.variables ?? [], await resolveEnv(deps));
|
|
65
|
+
if (!variables.ok)
|
|
66
|
+
return variables;
|
|
67
|
+
return runFulfilment(prompt.fulfilment, args, promptName, { ...deps, env: variables.env });
|
|
58
68
|
}
|
|
59
69
|
/**
|
|
60
70
|
* Run a normalized fulfilment (single operation or non-suspending flow) against an `input` scope. Shared
|
|
@@ -3,6 +3,7 @@ export { MapServiceBroker } from './broker/map.js';
|
|
|
3
3
|
export { type MasterKeyProvider, type SealedSecret, type SealedSecretV1, type SealedSecretV2, SecretBox, SecretDecryptError, type StaticMasterKey, staticMasterKeyProvider, type WrappingMasterKey, } from './broker/secret-box.js';
|
|
4
4
|
export { StaticServiceBroker } from './broker/static.js';
|
|
5
5
|
export { type CredentialBindingDescriptor, type CredentialBroker, type CredentialProbeRouteResolver, type CredentialRequest, CredentialUnavailableError, type CredentialUnavailableErrorOptions, type CredentialUnavailableReason, credentialBindingDescriptorFromRequest, credentialUnavailableErrorSnapshot, type DelegatedCredentialProbe, type DownstreamCredential, } from './broker/types.js';
|
|
6
|
+
export { resolveVariableEnvironment, type VariableEnvironmentResult, validateVariableContinuation, } from './business-variables.js';
|
|
6
7
|
export { executePreparedTool, prepareToolForConfirmation, resumeToolPreparation, } from './confirmation.js';
|
|
7
8
|
export { sanitizeConnectorFailureDetails } from './connector/failure-details.js';
|
|
8
9
|
export { InMemoryConnector, InMemoryConnectorRegistry, type InMemoryOperation, type OperationHandler, } from './connector/in-memory.js';
|
|
@@ -14,6 +15,7 @@ export { type ExecuteDeps, type ExecuteToolDeps, executePrompt, executeResource,
|
|
|
14
15
|
export { executeToolInteractive, resumeTool } from './interactive.js';
|
|
15
16
|
export type { InvocationContext, InvocationContextPreferenceSource, InvocationLocationContext, InvocationTemporalContext, } from './invocation-context.js';
|
|
16
17
|
export { type ManagedOriginResolutionResult, resolveManagedOrigins, } from './managed-origins.js';
|
|
18
|
+
export type { OperationEvidence, OperationEvidenceIntent, OperationEvidencePort, } from './operation-evidence.js';
|
|
17
19
|
export { AllowAllPolicy } from './policy/allow-all.js';
|
|
18
20
|
export type { PolicyContext, PolicyDecision, PolicyGate } from './policy/types.js';
|
|
19
21
|
export { type ConfirmationActionReview, type ConfirmationPreparationResult, type ConfirmationReview, type ConnectorFailureAttribution, type ElicitationRequest, type ElicitationResponse, type ExecutionError, type ExecutionErrorCode, type ExecutionResult, type InteractiveExecutionResult, isConfirmationRequired, isInputRequired, isInputRequiredForConfirmation, type PreparedOperationAction, type PreparedToolContinuation, type ToolContinuation, type ToolPreparationContinuation, } from './result.js';
|
|
@@ -3,6 +3,7 @@ export { MapServiceBroker } from './broker/map.js';
|
|
|
3
3
|
export { SecretBox, SecretDecryptError, staticMasterKeyProvider, } from './broker/secret-box.js';
|
|
4
4
|
export { StaticServiceBroker } from './broker/static.js';
|
|
5
5
|
export { CredentialUnavailableError, credentialBindingDescriptorFromRequest, credentialUnavailableErrorSnapshot, } from './broker/types.js';
|
|
6
|
+
export { resolveVariableEnvironment, validateVariableContinuation, } from './business-variables.js';
|
|
6
7
|
export { executePreparedTool, prepareToolForConfirmation, resumeToolPreparation, } from './confirmation.js';
|
|
7
8
|
export { sanitizeConnectorFailureDetails } from './connector/failure-details.js';
|
|
8
9
|
export { InMemoryConnector, InMemoryConnectorRegistry, } from './connector/in-memory.js';
|