@noodleseed/one 0.151.1 → 0.153.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/agent-product-skill-state.d.ts +2 -2
- package/dist/agent-product-skill-state.d.ts.map +1 -1
- package/dist/agent-product-skill-state.js.map +1 -1
- package/dist/agent-skills-state.d.ts +2 -2
- package/dist/agent-skills-state.d.ts.map +1 -1
- package/dist/agent-skills-state.js +1 -1
- package/dist/agent-skills-state.js.map +1 -1
- package/dist/agents.d.ts +2 -3
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js.map +1 -1
- package/dist/assistant-embed-scaffold-template.d.ts +1 -0
- package/dist/assistant-embed-scaffold-template.d.ts.map +1 -1
- package/dist/assistant-embed-scaffold-template.js +80 -12
- package/dist/assistant-embed-scaffold-template.js.map +1 -1
- package/dist/checklist.d.ts +2 -1
- package/dist/checklist.d.ts.map +1 -1
- package/dist/commands/apps-ops.d.ts +0 -4
- package/dist/commands/apps-ops.d.ts.map +1 -1
- package/dist/commands/apps-ops.js +3 -3
- package/dist/commands/apps-ops.js.map +1 -1
- package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
- package/dist/commands/assistant-embed-ops.js +141 -4
- package/dist/commands/assistant-embed-ops.js.map +1 -1
- package/dist/commands/assistant-ops.js +1 -1
- package/dist/commands/assistant-ops.js.map +1 -1
- package/dist/commands/auth-ops.d.ts +0 -14
- package/dist/commands/auth-ops.d.ts.map +1 -1
- package/dist/commands/auth-ops.js +1 -1
- package/dist/commands/auth-ops.js.map +1 -1
- package/dist/commands/author-loop.d.ts +0 -2
- package/dist/commands/author-loop.d.ts.map +1 -1
- package/dist/commands/author-loop.js +2 -2
- package/dist/commands/author-loop.js.map +1 -1
- package/dist/commands/catalog.d.ts +1 -7
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +3 -3
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config-values.d.ts +1 -47
- package/dist/commands/config-values.d.ts.map +1 -1
- package/dist/commands/config-values.js +11 -11
- package/dist/commands/config-values.js.map +1 -1
- package/dist/commands/connect-oauth.d.ts +0 -1
- package/dist/commands/connect-oauth.d.ts.map +1 -1
- package/dist/commands/connect-oauth.js +1 -1
- package/dist/commands/connect-oauth.js.map +1 -1
- package/dist/commands/connect.d.ts +0 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +1 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/customer-auth-smoke.d.ts +2 -1
- package/dist/commands/customer-auth-smoke.d.ts.map +1 -1
- package/dist/commands/customer-auth-smoke.js +3 -2
- package/dist/commands/customer-auth-smoke.js.map +1 -1
- package/dist/commands/deploy-ops.d.ts +0 -9
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +3 -4
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-resume.d.ts +0 -1
- package/dist/commands/deploy-resume.d.ts.map +1 -1
- package/dist/commands/deploy-resume.js +1 -1
- package/dist/commands/deploy-resume.js.map +1 -1
- package/dist/commands/deploy-version-resolution.d.ts +0 -2
- package/dist/commands/deploy-version-resolution.d.ts.map +1 -1
- package/dist/commands/deploy-version-resolution.js +1 -1
- package/dist/commands/deploy-version-resolution.js.map +1 -1
- package/dist/commands/deployments-ops.d.ts +0 -2
- package/dist/commands/deployments-ops.d.ts.map +1 -1
- package/dist/commands/deployments-ops.js +2 -2
- package/dist/commands/deployments-ops.js.map +1 -1
- package/dist/commands/envs-ops.d.ts +0 -3
- package/dist/commands/envs-ops.d.ts.map +1 -1
- package/dist/commands/envs-ops.js +3 -3
- package/dist/commands/envs-ops.js.map +1 -1
- package/dist/commands/feedback-ops.d.ts +0 -8
- package/dist/commands/feedback-ops.d.ts.map +1 -1
- package/dist/commands/feedback-ops.js +1 -1
- package/dist/commands/feedback-ops.js.map +1 -1
- package/dist/commands/github-ops.d.ts +0 -2
- package/dist/commands/github-ops.d.ts.map +1 -1
- package/dist/commands/github-ops.js +2 -2
- package/dist/commands/github-ops.js.map +1 -1
- package/dist/commands/mcp-apps.d.ts +0 -1
- package/dist/commands/mcp-apps.d.ts.map +1 -1
- package/dist/commands/org-admin.d.ts +0 -17
- package/dist/commands/org-admin.d.ts.map +1 -1
- package/dist/commands/org-admin.js +1 -2
- package/dist/commands/org-admin.js.map +1 -1
- package/dist/commands/output.d.ts +3 -12
- package/dist/commands/output.d.ts.map +1 -1
- package/dist/commands/output.js.map +1 -1
- package/dist/commands/platform-account-reset-files.d.ts +0 -3
- package/dist/commands/platform-account-reset-files.d.ts.map +1 -1
- package/dist/commands/platform-account-reset-files.js +1 -1
- package/dist/commands/platform-account-reset-files.js.map +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.d.ts +0 -3
- package/dist/commands/platform-auth-rollout-acceleration-files.d.ts.map +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.js +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.js.map +1 -1
- package/dist/commands/project-setup.d.ts +0 -1
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +1 -1
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/commands/resource-shared.d.ts +0 -6
- package/dist/commands/resource-shared.d.ts.map +1 -1
- package/dist/commands/resource-shared.js +1 -1
- package/dist/commands/resource-shared.js.map +1 -1
- package/dist/commands/session.d.ts +3 -13
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +2 -2
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/target-picker.d.ts +0 -2
- package/dist/commands/target-picker.d.ts.map +1 -1
- package/dist/commands/target-picker.js +1 -1
- package/dist/commands/target-picker.js.map +1 -1
- package/dist/commands/update-ops.d.ts +0 -8
- package/dist/commands/update-ops.d.ts.map +1 -1
- package/dist/commands/update-ops.js +1 -1
- package/dist/commands/update-ops.js.map +1 -1
- package/dist/control-plane.d.ts +1 -1
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js.map +1 -1
- package/dist/deploy.d.ts +0 -12
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +2 -2
- package/dist/deploy.js.map +1 -1
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +2 -3
- package/dist/dev.js.map +1 -1
- package/dist/devtools-auth-session.d.ts +0 -1
- package/dist/devtools-auth-session.d.ts.map +1 -1
- package/dist/devtools-auth-session.js.map +1 -1
- package/dist/devtools-chat.d.ts +1 -1
- package/dist/devtools-chat.d.ts.map +1 -1
- package/dist/devtools-chat.js.map +1 -1
- package/dist/devtools-delegated-exchange-state.d.ts +1 -1
- package/dist/devtools-delegated-exchange-state.d.ts.map +1 -1
- package/dist/devtools-design-contract.d.ts +3 -3
- package/dist/devtools-design-contract.d.ts.map +1 -1
- package/dist/devtools-design-contract.js +1 -1
- package/dist/devtools-design-contract.js.map +1 -1
- package/dist/devtools-preview.d.ts +1 -1
- package/dist/devtools-preview.d.ts.map +1 -1
- package/dist/devtools-rpc-forwarder.d.ts +2 -1
- package/dist/devtools-rpc-forwarder.d.ts.map +1 -1
- package/dist/devtools-rpc-forwarder.js +11 -12
- package/dist/devtools-rpc-forwarder.js.map +1 -1
- package/dist/gradient.d.ts +0 -3
- package/dist/gradient.d.ts.map +1 -1
- package/dist/gradient.js +1 -3
- package/dist/gradient.js.map +1 -1
- package/dist/local-compile.d.ts +2 -1
- package/dist/local-compile.d.ts.map +1 -1
- package/dist/local-target.d.ts +2 -1
- package/dist/local-target.d.ts.map +1 -1
- package/dist/node-version.d.ts +0 -2
- package/dist/node-version.d.ts.map +1 -1
- package/dist/node-version.js +2 -2
- package/dist/node-version.js.map +1 -1
- package/dist/plugin-mode/build-readiness-tools.d.ts +5 -4
- package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.d.ts +0 -35
- package/dist/plugin-mode/plugin-operation-contract.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.js +1 -1
- package/dist/plugin-mode/plugin-operation-contract.js.map +1 -1
- package/dist/project-entrypoint.d.ts +2 -1
- package/dist/project-entrypoint.d.ts.map +1 -1
- package/dist/project.d.ts +3 -3
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js.map +1 -1
- package/dist/skills-update.d.ts +0 -1
- package/dist/skills-update.d.ts.map +1 -1
- package/dist/skills-update.js +1 -1
- package/dist/skills-update.js.map +1 -1
- package/dist/status.d.ts +0 -9
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -16
- package/dist/status.js.map +1 -1
- package/dist/update-binary.d.ts +3 -2
- package/dist/update-binary.d.ts.map +1 -1
- package/dist/update-check.d.ts +0 -3
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +1 -1
- package/dist/update-check.js.map +1 -1
- package/dist/validate.d.ts +2 -1
- package/dist/validate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/behavior-skills.js +10 -10
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +11 -8
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +13 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.d.ts +0 -2
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +8 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +6 -6
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-operations-ref.js +78 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +156 -135
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-renderer-ref.js +109 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.d.ts +2 -3
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-browser-fields.d.ts +3 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-browser-fields.js +15 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.d.ts +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.js +3 -2
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +19 -11
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +24 -23
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript-events.d.ts +24 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript-events.js +39 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript.d.ts +6 -2
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-transcript.js +11 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-view-availability.d.ts +8 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-view-availability.js +8 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts +3 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +7 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js +1 -0
- 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/package.json +2 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +2 -1
- package/node_modules/@noodle-borg/authoring/dist/connections.d.ts +0 -2
- package/node_modules/@noodle-borg/authoring/dist/connections.js +1 -1
- package/node_modules/@noodle-borg/authoring/dist/load-authored.js +2 -2
- package/node_modules/@noodle-borg/authoring/dist/react/bridge.d.ts +3 -2
- package/node_modules/@noodle-borg/authoring/dist/react/form-components.d.ts +0 -8
- package/node_modules/@noodle-borg/authoring/dist/react/form-components.js +2 -4
- package/node_modules/@noodle-borg/authoring/dist/react/hooks.d.ts +2 -2
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts +2 -0
- package/node_modules/@noodle-borg/authoring/dist/server.js +3 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +12 -11
- package/node_modules/@noodle-borg/compiler/dist/artifact/version.d.ts +4 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/version.js +4 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +0 -1
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.d.ts +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +14 -14
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +4 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +20 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +2 -1
- package/node_modules/@noodle-borg/compiler/dist/state-handles.js +1 -0
- package/node_modules/@noodle-borg/compiler/package.json +1 -4
- package/node_modules/@noodle-borg/connector-defs/dist/credential-profiles.js +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +0 -6
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -2
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +2 -1
- package/node_modules/@noodle-borg/connector-http/dist/mcp/config.js +1 -1
- package/node_modules/@noodle-borg/control-plane/dist/deploy-auth.d.ts +0 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +1 -1
- package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts +2 -1
- package/node_modules/@noodle-borg/knowledge-operations/package.json +1 -2
- package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js +3 -1
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.js +2 -2
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +4 -6
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +0 -9
- package/node_modules/@noodle-borg/protocol/dist/observation.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/handler.d.ts +2 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/versions.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/v2/versions.js +2 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/domain-projection.d.ts +2 -1
- package/node_modules/@noodle-borg/protocol/package.json +0 -1
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +2 -2
- package/node_modules/@noodle-borg/runtime/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/runtime/dist/index.js +1 -0
- package/node_modules/@noodle-borg/runtime/dist/state-handle-ownership.d.ts +21 -0
- package/node_modules/@noodle-borg/runtime/dist/state-handle-ownership.js +10 -0
- package/node_modules/@noodle-borg/runtime/package.json +6 -1
- package/node_modules/@noodle-borg/service/dist/app-package-snapshot.d.ts +1 -2
- package/node_modules/@noodle-borg/service/dist/app-package-snapshot.js +1 -2
- package/node_modules/@noodle-borg/service/dist/archive-preflight.js +1 -1
- package/node_modules/@noodle-borg/service/dist/assets.js +1 -1
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +2 -2
- package/node_modules/@noodle-borg/service/dist/client-compatibility.js +1 -2
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +2 -2
- package/node_modules/@noodle-borg/service/dist/external-credential-exchange.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/external-credential-exchange.js +1 -1
- package/node_modules/@noodle-borg/service/dist/http-util.js +1 -72
- package/node_modules/@noodle-borg/service/dist/managed-config-expressions.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/managed-config-expressions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +2 -2
- package/node_modules/@noodle-borg/service/dist/observability-runtime.js +2 -3
- package/node_modules/@noodle-borg/service/dist/registry-targets.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +0 -4
- package/node_modules/@noodle-borg/service/dist/routes/access.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/alerts.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/apps.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/archive.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/asset-control-plane.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +7 -2
- package/node_modules/@noodle-borg/service/dist/routes/assistant-appearance.js +2 -1
- 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-elevation.js +15 -8
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-replay.js +5 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +5 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-configuration.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-route-http.js +4 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-sandbox.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-suggestions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-transcript.js +48 -9
- package/node_modules/@noodle-borg/service/dist/routes/assistant-usage.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js +2 -2
- package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values-paths.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +2 -3
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-activation-response.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-lock.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/environment-production.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/google-workload-identity.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/openai-apps-challenge.js +1 -2
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/org-domains.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/org-mcp-subdomain.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +0 -39
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/service-principals-dispatch.js +2 -3
- package/node_modules/@noodle-borg/service/dist/routes/service-principals.js +1 -1
- package/node_modules/@noodle-borg/service/dist/service-config.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/service-config.js +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +5 -2
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/audit.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/records.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts +2 -2
- package/node_modules/@noodle-borg/service/dist/store.js +1 -1
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/client-identity.js +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -2
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts +51 -0
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js +7 -7
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +4 -2
- package/node_modules/@noodle-borg/transport-http/dist/index.js +3 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-body.d.ts +29 -0
- package/node_modules/@noodle-borg/transport-http/dist/request-body.js +64 -0
- package/node_modules/@noodle-borg/transport-http/dist/responses.d.ts +28 -0
- package/node_modules/@noodle-borg/transport-http/dist/routing.d.ts +2 -4
- package/node_modules/@noodle-borg/transport-http/dist/routing.js +3 -3
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +2 -13
- package/node_modules/@noodle-borg/transport-http/package.json +0 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +19 -25
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +20 -34
- package/node_modules/@noodleseed/assistant/README.md +1 -1
- package/node_modules/@noodleseed/assistant/package.json +2 -1
- package/package.json +2 -2
- package/dist/commands/catalog-data-billing.d.ts +0 -3
- package/dist/commands/catalog-data-billing.d.ts.map +0 -1
- package/dist/commands/catalog-data-billing.js +0 -3
- package/dist/commands/catalog-data-billing.js.map +0 -1
- package/dist/commands/catalog-data-policy.d.ts +0 -3
- package/dist/commands/catalog-data-policy.d.ts.map +0 -1
- package/dist/commands/catalog-data-policy.js +0 -3
- package/dist/commands/catalog-data-policy.js.map +0 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts +0 -50
- package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts +0 -17
- package/node_modules/@noodle-borg/transport-http/dist/module-http.d.ts +0 -13
- package/node_modules/@noodle-borg/transport-http/dist/module-http.js +0 -28
|
@@ -8,4 +8,6 @@ export const SERVED_MCP_PROTOCOL_VERSIONS = [
|
|
|
8
8
|
'2024-10-07',
|
|
9
9
|
];
|
|
10
10
|
export const MODERN_MCP_PROTOCOL_VERSION = SERVED_MCP_PROTOCOL_VERSIONS[0];
|
|
11
|
+
/** The newest revision served through the legacy (v1 SDK) path. */
|
|
12
|
+
export const LEGACY_MCP_PROTOCOL_VERSION = SERVED_MCP_PROTOCOL_VERSIONS[1];
|
|
11
13
|
//# sourceMappingURL=versions.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
type WidgetHostKind = 'claude' | 'generic';
|
|
2
2
|
export interface WidgetDomainProjection {
|
|
3
3
|
readonly host: WidgetHostKind;
|
|
4
4
|
readonly mcpServerUrl?: string;
|
|
5
5
|
}
|
|
6
6
|
export declare function claudeWidgetDomain(mcpServerUrl: string): string | undefined;
|
|
7
7
|
export declare function projectWidgetResourceMeta(meta: Readonly<Record<string, unknown>>, projection?: WidgetDomainProjection): Readonly<Record<string, unknown>>;
|
|
8
|
+
export {};
|
|
8
9
|
//# sourceMappingURL=domain-projection.d.ts.map
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@noodle-borg/app-package": "0.0.0",
|
|
26
26
|
"@noodle-borg/uri-template": "0.0.0",
|
|
27
|
-
"@modelcontextprotocol/core": "2.0.0",
|
|
28
27
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
29
28
|
"@modelcontextprotocol/server": "2.0.0",
|
|
30
29
|
"@noodle-borg/compiler": "0.0.0",
|
|
@@ -34,14 +34,14 @@ export declare function credentialUnavailableErrorSnapshot(value: unknown): Cred
|
|
|
34
34
|
* to business backends (docs/SPEC.md "Auth And Identity").
|
|
35
35
|
*/
|
|
36
36
|
export type DownstreamCredential = BearerDownstreamCredential | CookieDownstreamCredential;
|
|
37
|
-
|
|
37
|
+
interface BearerDownstreamCredential {
|
|
38
38
|
readonly kind?: 'bearer';
|
|
39
39
|
/** Opaque secret material the connector presents to its backing system. */
|
|
40
40
|
readonly token: string;
|
|
41
41
|
/** Optional scope marker, for the broker's own bookkeeping. */
|
|
42
42
|
readonly scope?: string;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
interface CookieDownstreamCredential {
|
|
45
45
|
readonly kind: 'cookie';
|
|
46
46
|
/** Cookie header value scoped by the broker to the connector's allowed downstream origin. */
|
|
47
47
|
readonly cookie: string;
|
|
@@ -18,6 +18,7 @@ export { AllowAllPolicy } from './policy/allow-all.js';
|
|
|
18
18
|
export type { PolicyContext, PolicyDecision, PolicyGate } from './policy/types.js';
|
|
19
19
|
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';
|
|
20
20
|
export { splitResultMeta } from './result-meta.js';
|
|
21
|
+
export { type CallerStateAdoptionInput, type CallerStateAdoptionResult, claimableStateHandleNames, } from './state-handle-ownership.js';
|
|
21
22
|
export { assertExpectedStateRevision, assertNoSecretValue, assertSchemaValue, assertStateHandleNotCompleted, COMPLETE_STATE_OPERATION, createMutableStateHandleRecord, createStateConnector, InMemoryStateHandleStore, type MutableStateHandleRecord, PATCH_STATE_OPERATION, READ_STATE_OPERATION, STATE_CONNECTOR_ID, STATE_CONNECTOR_VERSION, STATE_OPERATION_SIGNATURES, StateConnector, type StateHandleRecord, type StateHandleStore, type StateInput, type StateMutationInput, type StatePatchInput, stateHandleRecordForMutation, toPublicStateHandleRecord, } from './state-handles.js';
|
|
22
23
|
export type { ToolDispatchContext, ToolDispatchDecision, ToolDispatchHook, } from './tool-dispatch.js';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -15,5 +15,6 @@ export { resolveManagedOrigins, } from './managed-origins.js';
|
|
|
15
15
|
export { AllowAllPolicy } from './policy/allow-all.js';
|
|
16
16
|
export { isConfirmationRequired, isInputRequired, isInputRequiredForConfirmation, } from './result.js';
|
|
17
17
|
export { splitResultMeta } from './result-meta.js';
|
|
18
|
+
export { claimableStateHandleNames, } from './state-handle-ownership.js';
|
|
18
19
|
export { assertExpectedStateRevision, assertNoSecretValue, assertSchemaValue, assertStateHandleNotCompleted, COMPLETE_STATE_OPERATION, createMutableStateHandleRecord, createStateConnector, InMemoryStateHandleStore, PATCH_STATE_OPERATION, READ_STATE_OPERATION, STATE_CONNECTOR_ID, STATE_CONNECTOR_VERSION, STATE_OPERATION_SIGNATURES, StateConnector, stateHandleRecordForMutation, toPublicStateHandleRecord, } from './state-handles.js';
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ArtifactState } from '@noodle-borg/compiler';
|
|
2
|
+
export interface CallerStateAdoptionInput {
|
|
3
|
+
readonly deploymentId: string;
|
|
4
|
+
readonly handles: readonly string[];
|
|
5
|
+
readonly sourceCallerSubject: string;
|
|
6
|
+
readonly targetCallerSubject: string;
|
|
7
|
+
/** The old anonymous session's absolute expiry; redirects never extend its authority. */
|
|
8
|
+
readonly redirectExpiresAt: Date;
|
|
9
|
+
readonly now: Date;
|
|
10
|
+
}
|
|
11
|
+
export type CallerStateAdoptionResult = {
|
|
12
|
+
readonly ok: true;
|
|
13
|
+
readonly adoptedHandles: readonly string[];
|
|
14
|
+
readonly adoptedRecords: number;
|
|
15
|
+
} | {
|
|
16
|
+
readonly ok: false;
|
|
17
|
+
readonly reason: 'state_key_conflict';
|
|
18
|
+
};
|
|
19
|
+
/** The canonical sorted declaration projection stored on an elevation ticket. */
|
|
20
|
+
export declare function claimableStateHandleNames(state: ArtifactState | undefined): readonly string[];
|
|
21
|
+
//# sourceMappingURL=state-handle-ownership.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** The canonical sorted declaration projection stored on an elevation ticket. */
|
|
2
|
+
export function claimableStateHandleNames(state) {
|
|
3
|
+
if (state === undefined)
|
|
4
|
+
return [];
|
|
5
|
+
return Object.entries(state.handles)
|
|
6
|
+
.filter(([, handle]) => handle.claimOnAuthentication === true)
|
|
7
|
+
.map(([name]) => name)
|
|
8
|
+
.sort();
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=state-handle-ownership.js.map
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
".": {
|
|
13
13
|
"types": "./dist/index.d.ts",
|
|
14
14
|
"import": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./postgres": {
|
|
17
|
+
"types": "./dist/postgres.d.ts",
|
|
18
|
+
"import": "./dist/postgres.js"
|
|
15
19
|
}
|
|
16
20
|
},
|
|
17
21
|
"files": [
|
|
@@ -26,6 +30,7 @@
|
|
|
26
30
|
"@noodle-borg/module": "0.0.0"
|
|
27
31
|
},
|
|
28
32
|
"devDependencies": {
|
|
29
|
-
"@types/node": "^24.13.1"
|
|
33
|
+
"@types/node": "^24.13.1",
|
|
34
|
+
"@types/pg": "^8.20.0"
|
|
30
35
|
}
|
|
31
36
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { type ProductSkillPackageInput, type RenderedProductSkillBundleV1 } from '@noodle-borg/agent-kit';
|
|
2
|
-
import { type AppPackageArtifactV1, type AppPackageSnapshotV1
|
|
2
|
+
import { type AppPackageArtifactV1, type AppPackageSnapshotV1 } from '@noodle-borg/app-package';
|
|
3
3
|
import type { DeployError } from './registry-types.js';
|
|
4
4
|
import type { DeployRecord } from './store.js';
|
|
5
5
|
export type { AppPackageSnapshotV1 };
|
|
6
|
-
export { appPackageSnapshotV1Schema };
|
|
7
6
|
export type AppPackageRenderer = (input: ProductSkillPackageInput) => RenderedProductSkillBundleV1;
|
|
8
7
|
export declare class AppPackageSnapshotError extends Error {
|
|
9
8
|
readonly deployError: DeployError;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ProductSkillRenderError, renderProductSkillBundle, validateRenderedProductSkillFiles, } from '@noodle-borg/agent-kit';
|
|
2
|
-
import {
|
|
3
|
-
export { appPackageSnapshotV1Schema };
|
|
2
|
+
import { createAppPackageSnapshotV1, parseAppPackageSnapshotV1, } from '@noodle-borg/app-package';
|
|
4
3
|
export class AppPackageSnapshotError extends Error {
|
|
5
4
|
deployError;
|
|
6
5
|
constructor(deployError) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash, randomBytes } from 'node:crypto';
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import { sendJson } from '
|
|
3
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
4
4
|
export { AssetPlanError, } from '@noodle-borg/module';
|
|
5
5
|
export class InMemoryAssetStore {
|
|
6
6
|
#objects = new Map();
|
|
@@ -2,7 +2,7 @@ import { serverAuthVariableBindings } from './managed-config-expressions.js';
|
|
|
2
2
|
import { missingSecretErrors, missingVariableErrors } from './registry-helpers.js';
|
|
3
3
|
import { serverAuthSecretBindings } from './server-auth-bindings.js';
|
|
4
4
|
const VARIABLE = /\$\{env\.([A-Za-z0-9_]+)\}/g;
|
|
5
|
-
|
|
5
|
+
function assistantSecretBindings(assistant) {
|
|
6
6
|
return assistant?.model.kind === 'openai-compatible'
|
|
7
7
|
? [
|
|
8
8
|
{
|
|
@@ -14,7 +14,7 @@ export function assistantSecretBindings(assistant) {
|
|
|
14
14
|
]
|
|
15
15
|
: [];
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
function assistantVariableBindings(assistant) {
|
|
18
18
|
if (!assistant)
|
|
19
19
|
return [];
|
|
20
20
|
if (assistant.model.kind !== 'openai-compatible')
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { applySecurityHeaders } from '@noodle-borg/transport-http';
|
|
1
|
+
import { applySecurityHeaders, sendJson } from '@noodle-borg/transport-http';
|
|
2
2
|
import { cliCompatibilityError } from './build-info.js';
|
|
3
|
-
import { sendJson } from './http-util.js';
|
|
4
3
|
export function rejectIncompatibleCli(req, res, buildInfo, tls) {
|
|
5
4
|
const error = cliCompatibilityError(buildInfo, req.headers['x-noodle-cli-version']);
|
|
6
5
|
if (!error)
|
|
@@ -2,9 +2,9 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { bearerToken } from '@noodle-borg/control-plane/portable';
|
|
3
3
|
import { createDeveloperMcpServer, DEVELOPER_MCP_PATH, developerMcpContextSchema, environmentNameSchema, tenantSlugSchema, } from '@noodle-borg/developer-mcp';
|
|
4
4
|
import { createPlatformDualEraMcpHandler } from '@noodle-borg/protocol';
|
|
5
|
-
import { applySecurityHeaders, enforceHttps, toWebRequest, writeWebResponse, } from '@noodle-borg/transport-http';
|
|
5
|
+
import { applySecurityHeaders, enforceHttps, readJsonBody, sendJson, toWebRequest, writeWebResponse, } from '@noodle-borg/transport-http';
|
|
6
6
|
import { activeDeveloperGrantForIdentity } from '../auth/developer-grant-guard.js';
|
|
7
|
-
import { baseFromRequest, normalizeServiceBase
|
|
7
|
+
import { baseFromRequest, normalizeServiceBase } from '../http-util.js';
|
|
8
8
|
import { ServiceDeveloperControlPlane } from './control-plane-adapter.js';
|
|
9
9
|
export { DEVELOPER_MCP_PATH };
|
|
10
10
|
const DEVELOPER_MCP_SCOPES = ['cloud:read'];
|
|
@@ -77,6 +77,5 @@ export declare function exchangeExternalCredential(input: {
|
|
|
77
77
|
readonly config: ExternalCredentialProviderConfig;
|
|
78
78
|
readonly nowMs: number;
|
|
79
79
|
}): Promise<ExternalCredentialExchangeResponse>;
|
|
80
|
-
export declare function validateExternalCredentialProviderEndpoint(config: ExternalCredentialProviderConfig): URL;
|
|
81
80
|
export {};
|
|
82
81
|
//# sourceMappingURL=external-credential-exchange.d.ts.map
|
|
@@ -111,7 +111,7 @@ export async function exchangeExternalCredential(input) {
|
|
|
111
111
|
}
|
|
112
112
|
return externalCredentialExchangeResponseSchema.parse(await readBoundedJson(response, EXTERNAL_CREDENTIAL_EXCHANGE_MAX_RESPONSE_BYTES));
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
function validateExternalCredentialProviderEndpoint(config) {
|
|
115
115
|
if (!isVisibleBoundedUrlText(config.endpoint) || !isVisibleBoundedUrlText(config.allowedOrigin)) {
|
|
116
116
|
throw new Error('external credential provider endpoint is not allowed');
|
|
117
117
|
}
|
|
@@ -1,75 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { effectiveProto } from '@noodle-borg/transport-http';
|
|
3
|
-
export async function readBody(req, max) {
|
|
4
|
-
const body = await readBodyBuffer(req, max);
|
|
5
|
-
return body.ok ? { ok: true, text: body.buffer.toString('utf8') } : body;
|
|
6
|
-
}
|
|
7
|
-
async function readBodyBuffer(req, max) {
|
|
8
|
-
const chunks = [];
|
|
9
|
-
let size = 0;
|
|
10
|
-
for await (const chunk of req) {
|
|
11
|
-
const buf = chunk;
|
|
12
|
-
size += buf.length;
|
|
13
|
-
if (size > max)
|
|
14
|
-
return { ok: false, receivedBytes: size, maxBytes: max };
|
|
15
|
-
chunks.push(buf);
|
|
16
|
-
}
|
|
17
|
-
return { ok: true, buffer: Buffer.concat(chunks) };
|
|
18
|
-
}
|
|
19
|
-
/** Read exact request bytes for signature-verified provider webhooks. */
|
|
20
|
-
export function readRawBody(req, max) {
|
|
21
|
-
return readBodyBuffer(req, max);
|
|
22
|
-
}
|
|
23
|
-
export async function readDeployBody(req, max) {
|
|
24
|
-
const encoding = (req.headers['content-encoding'] ?? 'identity').trim().toLowerCase();
|
|
25
|
-
if (encoding !== 'identity' && encoding !== 'gzip') {
|
|
26
|
-
return { ok: false, status: 415, error: `unsupported content encoding "${encoding}"` };
|
|
27
|
-
}
|
|
28
|
-
const body = await readBodyBuffer(req, max);
|
|
29
|
-
if (!body.ok) {
|
|
30
|
-
return {
|
|
31
|
-
ok: false,
|
|
32
|
-
status: 413,
|
|
33
|
-
error: `${encoding === 'gzip' ? 'compressed deploy' : 'deploy'} request exceeds the ${body.maxBytes} byte limit (received at least ${body.receivedBytes} bytes)`,
|
|
34
|
-
receivedBytes: body.receivedBytes,
|
|
35
|
-
maxBytes: body.maxBytes,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
if (encoding === 'identity') {
|
|
39
|
-
return { ok: true, text: body.buffer.toString('utf8'), encoding };
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
const expanded = gunzipSync(body.buffer, { maxOutputLength: max });
|
|
43
|
-
return { ok: true, text: expanded.toString('utf8'), encoding };
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
const code = error instanceof Error && 'code' in error ? String(error.code) : '';
|
|
47
|
-
if (code === 'ERR_BUFFER_TOO_LARGE') {
|
|
48
|
-
return {
|
|
49
|
-
ok: false,
|
|
50
|
-
status: 413,
|
|
51
|
-
error: `expanded deploy request exceeds the ${max} byte limit`,
|
|
52
|
-
maxBytes: max,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return { ok: false, status: 400, error: 'invalid gzip deploy request' };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export async function readJsonBody(req, max) {
|
|
59
|
-
const body = await readBody(req, max);
|
|
60
|
-
if (!body.ok)
|
|
61
|
-
return { ok: false, status: 413, error: 'request body too large' };
|
|
62
|
-
try {
|
|
63
|
-
return { ok: true, value: JSON.parse(body.text) };
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
return { ok: false, status: 400, error: `invalid JSON: ${error.message}` };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
export function sendJson(res, status, body) {
|
|
70
|
-
res.writeHead(status, { 'content-type': 'application/json; charset=utf-8' });
|
|
71
|
-
res.end(JSON.stringify(body));
|
|
72
|
-
}
|
|
1
|
+
import { effectiveProto, sendJson, } from '@noodle-borg/transport-http';
|
|
73
2
|
/**
|
|
74
3
|
* Log a thrown route error (redacted to name/message/short-stack — never a body, key, or secret) and
|
|
75
4
|
* answer 500 if the response hasn't already started. The shared catch tail for async route handlers so
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { TenantAuthConfig, TenantBridgeAuthConfig } from './store.js';
|
|
2
|
-
export declare function managedVariableNamesInString(value: string): readonly string[];
|
|
3
2
|
export declare function resolveManagedVariablesInString(value: string, variables: Readonly<Record<string, string>>): string;
|
|
4
3
|
export declare function serverAuthVariableBindings(auth: TenantAuthConfig | undefined): readonly string[];
|
|
5
4
|
export declare function resolveTenantBridgeAuthVariables(auth: TenantBridgeAuthConfig, variables: Readonly<Record<string, string>>): TenantBridgeAuthConfig;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const MANAGED_VARIABLE_RE = /\$\{env\.([A-Za-z0-9_]+)\}/g;
|
|
2
|
-
|
|
2
|
+
function managedVariableNamesInString(value) {
|
|
3
3
|
const names = new Set();
|
|
4
4
|
for (const match of value.matchAll(MANAGED_VARIABLE_RE)) {
|
|
5
5
|
if (match[1] !== undefined)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { renderOAuthPage } from './branding.js';
|
|
2
2
|
const FIREBASE_AUTHORIZE_PATH = '/oauth/customer/firebase/authorize';
|
|
3
3
|
const FIREBASE_CALLBACK_PATH = '/oauth/customer/firebase/callback';
|
|
4
|
-
|
|
4
|
+
const MICROSOFT_CALLBACK_PATH = '/oauth/customer/microsoft/callback';
|
|
5
5
|
const MICROSOFT_REQUIRED_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
|
|
6
6
|
export function bridgeAuthorizeUrl(auth, input) {
|
|
7
7
|
const issuer = trimTrailingSlash(input.issuer);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { capabilitiesForDeveloperResource, isDeveloperCapability, isDeveloperResource, } from '@noodle-borg/developer-mcp';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const DEVELOPER_GRANT_VERSION = 2;
|
|
4
|
+
const DEVELOPER_GRANT_ACCESS_MODEL = 'live_user';
|
|
5
5
|
export class InMemoryDeveloperGrantStore {
|
|
6
6
|
#records = new Map();
|
|
7
7
|
#now;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { InMemoryIntentCaptureSettingsStore, InMemoryIntentEventStore, InMemoryRequestEventStore, } from '@noodle-borg/observability';
|
|
2
|
-
import { applySecurityHeaders, enforceHttps, } from '@noodle-borg/transport-http';
|
|
3
|
-
import { sendJson } from './http-util.js';
|
|
2
|
+
import { applySecurityHeaders, enforceHttps, sendJson, } from '@noodle-borg/transport-http';
|
|
4
3
|
import { dispatchAnalyticsReads } from './routes/analytics-dispatch.js';
|
|
5
4
|
import { dispatchIntentCaptureRoutes } from './routes/intent-capture-dispatch.js';
|
|
6
5
|
export function createObservabilityStores(options) {
|
|
@@ -11,7 +10,7 @@ export function createObservabilityStores(options) {
|
|
|
11
10
|
new Set(options.intentCapturePreviewOrgs ?? []),
|
|
12
11
|
];
|
|
13
12
|
}
|
|
14
|
-
|
|
13
|
+
async function resolveIntentMode(target, ref, previewOrgs, settings) {
|
|
15
14
|
if (target === undefined)
|
|
16
15
|
return undefined;
|
|
17
16
|
const resolved = ref ??
|
|
@@ -36,7 +36,7 @@ export function servedTargetFor(record, served, customerVerifierFactory) {
|
|
|
36
36
|
: {}),
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
class MissingCustomerAuthError extends Error {
|
|
40
40
|
deploymentId;
|
|
41
41
|
constructor(deploymentId) {
|
|
42
42
|
super('customers access mode requires server.auth');
|
|
@@ -54,7 +54,7 @@ export function tryServedTargetFor(record, served, customerVerifierFactory) {
|
|
|
54
54
|
throw error;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
function servedTargetMatchesRecord(target, record) {
|
|
58
58
|
const expectedOwner = record.accessMode === 'owner-only' ? deploymentOwnerSubject(record) : undefined;
|
|
59
59
|
const expectedMembership = record.accessMode === 'org-members' ? record.orgMembershipSources : undefined;
|
|
60
60
|
return (target.deploymentId === record.deploymentId &&
|
|
@@ -98,7 +98,7 @@ function sameStrings(left, right) {
|
|
|
98
98
|
left.length === right.length &&
|
|
99
99
|
left.every((value, index) => value === right[index])));
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
function customerTargetFields(auth, customerVerifierFactory) {
|
|
102
102
|
if (auth.kind === 'bridge') {
|
|
103
103
|
return {
|
|
104
104
|
verifyToken: customerVerifierFactory?.(auth) ?? denyAllCustomerToken,
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { accessModeSchema } from '@noodle-borg/wire-contracts';
|
|
2
|
-
export function isAccessMode(value) {
|
|
3
|
-
return accessModeSchema.safeParse(value).success;
|
|
4
|
-
}
|
|
5
1
|
export function isIdentityAccessMode(accessMode) {
|
|
6
2
|
return (accessMode === 'owner-only' ||
|
|
7
3
|
accessMode === 'org-members' ||
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { normalizeServerVersion } from '@noodle-borg/module';
|
|
2
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
2
3
|
import { accessUpdateRequestSchema } from '@noodle-borg/wire-contracts';
|
|
3
|
-
import { readJsonBody, sendJson } from '../http-util.js';
|
|
4
4
|
import { deploymentOwnerSubject } from '../registry-helpers.js';
|
|
5
5
|
import { authorizeControlPlane } from './control-plane.js';
|
|
6
6
|
import { canManageMembers } from './org-admin.js';
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
1
2
|
import { AlertRuleResponseSchema, AlertRulesListResponseSchema } from '@noodle-borg/wire-contracts';
|
|
2
3
|
import { buildAlertWebhookPayload, deliverAlertWebhook, validateAlertWebhookUrl, } from '../alert-webhook.js';
|
|
3
|
-
import {
|
|
4
|
+
import { sendForbidden } from '../http-util.js';
|
|
4
5
|
import { ALERT_METRICS, ALERT_WINDOWS_MINUTES, MAX_ALERT_RULES_PER_ENV, } from '../store/alert-rules.js';
|
|
5
6
|
import { sendContract } from './apps.js';
|
|
6
7
|
import { authorizeControlPlane, authorizeTenantControl } from './control-plane.js';
|
|
7
8
|
import { canManageMembers } from './org-admin.js';
|
|
8
9
|
/** Redact a webhook URL to its origin — path/query (where tokens live) never leave the service. */
|
|
9
|
-
|
|
10
|
+
function redactWebhookUrl(url) {
|
|
10
11
|
try {
|
|
11
12
|
return `${new URL(url).origin}/…`;
|
|
12
13
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { aggregateRequestEvents, parseRequestEventQuery } from '@noodle-borg/observability';
|
|
2
|
-
import {
|
|
2
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
3
|
+
import { normalizedTimestamps } from '../http-util.js';
|
|
3
4
|
import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
|
|
4
5
|
/**
|
|
5
6
|
* Tenant analytics read routes (ADR 0121 Stage B): `metrics` (aggregated), `events` (the stream), and
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
1
2
|
import { AppResponseSchema, AppsListResponseSchema } from '@noodle-borg/wire-contracts';
|
|
2
|
-
import { sendJson } from '../http-util.js';
|
|
3
3
|
import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
|
|
4
4
|
import { appWithEndpointUrl } from './endpoint-enrichment.js';
|
|
5
5
|
const MAX_APPS_LIMIT = 500;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
1
2
|
import { CustomerAuthAudienceConflictError } from '../customer-auth-audience-binding.js';
|
|
2
|
-
import { sendForbidden
|
|
3
|
+
import { sendForbidden } from '../http-util.js';
|
|
3
4
|
import { authorizeControlPlane } from './control-plane.js';
|
|
4
5
|
import { respondDeploymentActivationError } from './deployment-activation-response.js';
|
|
5
6
|
import { canManageMembers } from './org-admin.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
1
2
|
import { AssetPlanError } from '../assets.js';
|
|
2
|
-
import { baseFromRequest,
|
|
3
|
+
import { baseFromRequest, sendForbidden } from '../http-util.js';
|
|
3
4
|
import { parsePreparedAssets } from './assets.js';
|
|
4
5
|
import { authorizeControlPlane } from './control-plane.js';
|
|
5
6
|
export async function handleAssetPreflight(req, res, options, maxBody, tenant, gate, controlPlane, audit) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ADMISSION_DEFAULTS } from '@noodle-borg/admission-limits/portable';
|
|
2
2
|
import { assistantCoreModelMessages, assistantTurnModelContextMessages, requestAssistantSuggestedPrompts, requestModelCompletion, resolveAssistantContextProviderModelResult, } from '@noodle-borg/assistant-gateway/model-runtime';
|
|
3
|
-
import { assistantGuideModelContext, assistantModelToolOncePerSession, assistantModelToolRequiredWhenVisible, assistantOmittedToolResult, assistantViewAvailableData, dispatchAssistantTool, projectAssistantGuide, publicSurfaceOf, remainingTurnTokens, selectAssistantModelTools, toolTouchesDelegatedAuth, withAssistantSessionExecutionAuthority, } from '@noodle-borg/assistant-gateway/portable';
|
|
3
|
+
import { assistantGuideModelContext, assistantModelToolOncePerSession, assistantModelToolRequiredWhenVisible, assistantOmittedToolResult, assistantViewAvailableData, dispatchAssistantTool, projectAssistantGuide, publicSurfaceOf, recoverableAssistantView, remainingTurnTokens, selectAssistantModelTools, toolTouchesDelegatedAuth, withAssistantSessionExecutionAuthority, } from '@noodle-borg/assistant-gateway/portable';
|
|
4
4
|
import { validateJsonSchemaWithDefaults } from '@noodle-borg/compiler';
|
|
5
5
|
import { guardedFetch } from '@noodle-borg/connector-http';
|
|
6
6
|
import { evaluateToolAuthorization } from '@noodle-borg/protocol';
|
|
@@ -207,6 +207,9 @@ export async function runAgentTurn(target, session, message, context, deps, emit
|
|
|
207
207
|
tool,
|
|
208
208
|
session,
|
|
209
209
|
assistant,
|
|
210
|
+
...(target.served.artifact.server.state === undefined
|
|
211
|
+
? {}
|
|
212
|
+
: { state: target.served.artifact.server.state }),
|
|
210
213
|
elevations: deps.elevations,
|
|
211
214
|
...(delegatedKeys !== undefined && delegatedKeys.size > 0
|
|
212
215
|
? {
|
|
@@ -269,8 +272,10 @@ export async function runAgentTurn(target, session, message, context, deps, emit
|
|
|
269
272
|
result: dispatch.output,
|
|
270
273
|
arguments: args,
|
|
271
274
|
}, (failure) => deps.logger?.warn('assistant.view.unresolved', { ...failure }));
|
|
272
|
-
if (view)
|
|
275
|
+
if (view) {
|
|
276
|
+
await deps.store.replaceLatestView(session.id, recoverableAssistantView(view));
|
|
273
277
|
emit({ event: 'view_available', data: { ...view } });
|
|
278
|
+
}
|
|
274
279
|
messages.push({
|
|
275
280
|
role: 'tool',
|
|
276
281
|
tool_call_id: call.id,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { assistantAppearanceOverrideSchema, assistantBrowserConfiguration, resolveAssistantAppearanceConfiguration, } from '@noodle-borg/assistant-gateway/portable';
|
|
2
|
-
import { readJsonBody,
|
|
2
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
3
|
+
import { sendForbidden } from '../http-util.js';
|
|
3
4
|
import { now } from './assistant-route-http.js';
|
|
4
5
|
import { authorizeControlPlane } from './control-plane.js';
|
|
5
6
|
export async function handleAssistantAppearance(req, res, tenant, deps) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { readJsonBody,
|
|
1
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
2
|
+
import { sendForbidden } from '../http-util.js';
|
|
2
3
|
import { now } from './assistant-route-http.js';
|
|
3
4
|
import { authorizeControlPlane } from './control-plane.js';
|
|
4
5
|
export async function handleAssistantClients(req, res, tenant, id, action, deps) {
|
|
@@ -3,7 +3,8 @@ import { probeAssistantModelBoundary } from '@noodle-borg/assistant-gateway/mode
|
|
|
3
3
|
import { assistantCustomerIssuer, completeElevation, publicSurfaceOf, } from '@noodle-borg/assistant-gateway/portable';
|
|
4
4
|
import { guardedFetch } from '@noodle-borg/connector-http';
|
|
5
5
|
import { tenantMcpUrl } from '@noodle-borg/module';
|
|
6
|
-
import { readJsonBody,
|
|
6
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
7
|
+
import { sendForbidden } from '../http-util.js';
|
|
7
8
|
import { resolveAssistantModelBinding } from './assistant-model-binding.js';
|
|
8
9
|
import { now } from './assistant-route-http.js';
|
|
9
10
|
import { authorizeControlPlane } from './control-plane.js';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { completeElevation, publicSurfaceOf } from '@noodle-borg/assistant-gateway/portable';
|
|
2
2
|
import { anonymousBehavior } from '@noodle-borg/compiler';
|
|
3
|
+
import { claimableStateHandleNames } from '@noodle-borg/runtime';
|
|
4
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
3
5
|
import { assistantSessionResponseSchema } from '@noodle-borg/wire-contracts';
|
|
4
|
-
import { sendJson } from '../http-util.js';
|
|
5
6
|
function isMixed(surface) {
|
|
6
7
|
return surface?.mode === 'mixed';
|
|
7
8
|
}
|
|
@@ -16,6 +17,7 @@ const ELEVATION_REFUSAL_MESSAGES = {
|
|
|
16
17
|
elevation_tenant_mismatch: 'sign-in ticket belongs to a different tenant',
|
|
17
18
|
elevation_session_unavailable: 'the conversation behind this sign-in is no longer available',
|
|
18
19
|
elevation_already_signed_in: 'this conversation is already signed in',
|
|
20
|
+
elevation_state_conflict: 'the signed-in account already has state at the same key; restart or resolve that draft first',
|
|
19
21
|
};
|
|
20
22
|
/**
|
|
21
23
|
* Decide whether this call is an elevation instead of an execution.
|
|
@@ -40,6 +42,7 @@ export async function interceptForElevation(input) {
|
|
|
40
42
|
sessionId: input.session.id,
|
|
41
43
|
tenant: input.session.tenant,
|
|
42
44
|
tool: input.tool.name,
|
|
45
|
+
claimableStateHandles: claimableStateHandleNames(input.state),
|
|
43
46
|
now: input.now,
|
|
44
47
|
});
|
|
45
48
|
return {
|
|
@@ -84,7 +87,7 @@ export async function elevateAssistantSession(res, deps, input) {
|
|
|
84
87
|
code: 'elevation_unavailable',
|
|
85
88
|
});
|
|
86
89
|
}
|
|
87
|
-
const
|
|
90
|
+
const request = {
|
|
88
91
|
continuation: input.signInTicket,
|
|
89
92
|
tenant: input.client.tenant,
|
|
90
93
|
caller: input.caller,
|
|
@@ -95,11 +98,14 @@ export async function elevateAssistantSession(res, deps, input) {
|
|
|
95
98
|
...(input.customerRouting ? { customerRouting: input.customerRouting } : {}),
|
|
96
99
|
...(input.boundSurface ? { boundSurface: input.boundSurface } : {}),
|
|
97
100
|
resume: input.resume,
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
};
|
|
102
|
+
const elevated = deps.elevationCoordinator
|
|
103
|
+
? await deps.elevationCoordinator.complete(request)
|
|
104
|
+
: await completeElevation(request, {
|
|
105
|
+
elevations: deps.elevations,
|
|
106
|
+
elevateSession: (elevation) => deps.store.elevateSession(elevation),
|
|
107
|
+
now: () => deps.clock?.() ?? new Date(),
|
|
108
|
+
});
|
|
103
109
|
if (!elevated.ok) {
|
|
104
110
|
await deps.audit.emit({
|
|
105
111
|
eventType: 'assistant.session.elevation_refused',
|
|
@@ -137,7 +143,8 @@ export async function elevateAssistantSession(res, deps, input) {
|
|
|
137
143
|
endpoints: input.endpoints,
|
|
138
144
|
...(input.configuration ? { configuration: input.configuration } : {}),
|
|
139
145
|
// The armed hint: the widget answers with one { resume: true } turn on the turns endpoint.
|
|
140
|
-
...(
|
|
146
|
+
...(elevated.resumeArmed ? { resume: { tool: elevated.tool } } : {}),
|
|
147
|
+
continuedAfterAuthentication: true,
|
|
141
148
|
};
|
|
142
149
|
assistantSessionResponseSchema.parse(body);
|
|
143
150
|
return sendJson(res, 200, body);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ADMISSION_DEFAULTS, clamp } from '@noodle-borg/admission-limits/portable';
|
|
2
2
|
import { assistantEmbedOperatorView, parsePublicEmbedBudget, publicSurfaceOf, surfaceEnvelope, } from '@noodle-borg/assistant-gateway/portable';
|
|
3
|
-
import { readJsonBody,
|
|
3
|
+
import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
|
|
4
|
+
import { sendForbidden } from '../http-util.js';
|
|
4
5
|
import { now } from './assistant-route-http.js';
|
|
5
6
|
import { authorizeControlPlane } from './control-plane.js';
|
|
6
7
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { assistantInteractionTool, assistantViewAvailableData, auditAssistantInteraction, } from '@noodle-borg/assistant-gateway/portable';
|
|
2
|
-
import { sendJson } from '
|
|
1
|
+
import { assistantInteractionTool, assistantViewAvailableData, auditAssistantInteraction, recoverableAssistantView, } from '@noodle-borg/assistant-gateway/portable';
|
|
2
|
+
import { sendJson } from '@noodle-borg/transport-http';
|
|
3
3
|
import { now } from './assistant.js';
|
|
4
4
|
import { assistantInteractionScope } from './assistant-interaction-resolution.js';
|
|
5
5
|
import { endInteractionSse, writeInputRequested, writeInteractionError, writeInteractionResolved, writeInteractionSseHeaders, writeToolCompleted, writeToolProposed, writeViewAvailable, } from './assistant-interaction-stream.js';
|
|
@@ -71,8 +71,10 @@ export async function replayOrConflict(res, deps, session, interaction, action)
|
|
|
71
71
|
replayed: true,
|
|
72
72
|
}, (failure) => deps.logger?.warn('assistant.view.unresolved', { ...failure }))
|
|
73
73
|
: undefined;
|
|
74
|
-
if (view)
|
|
74
|
+
if (view) {
|
|
75
|
+
await deps.store.replaceLatestView(session.id, recoverableAssistantView(view));
|
|
75
76
|
writeViewAvailable(res, view);
|
|
77
|
+
}
|
|
76
78
|
}
|
|
77
79
|
else if (current.status === 'failed') {
|
|
78
80
|
writeInteractionError(res, current.publicOutcome.code, false);
|