@noodleseed/one 0.84.5 → 0.86.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.
Files changed (93) hide show
  1. package/dist/commands/catalog-data-platform-auth.d.ts.map +1 -1
  2. package/dist/commands/catalog-data-platform-auth.js +10 -0
  3. package/dist/commands/catalog-data-platform-auth.js.map +1 -1
  4. package/dist/commands/platform-auth-migration-args.d.ts +4 -0
  5. package/dist/commands/platform-auth-migration-args.d.ts.map +1 -1
  6. package/dist/commands/platform-auth-migration-args.js +13 -0
  7. package/dist/commands/platform-auth-migration-args.js.map +1 -1
  8. package/dist/commands/platform-auth-migration-ops.d.ts.map +1 -1
  9. package/dist/commands/platform-auth-migration-ops.js +44 -6
  10. package/dist/commands/platform-auth-migration-ops.js.map +1 -1
  11. package/dist/commands/platform-auth-rollout-acceleration-files.d.ts +23 -0
  12. package/dist/commands/platform-auth-rollout-acceleration-files.d.ts.map +1 -0
  13. package/dist/commands/platform-auth-rollout-acceleration-files.js +74 -0
  14. package/dist/commands/platform-auth-rollout-acceleration-files.js.map +1 -0
  15. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +2 -2
  16. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  17. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  18. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +3 -1
  19. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  20. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  21. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +7 -0
  22. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  23. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  24. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts +15 -0
  25. package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts.map +1 -1
  26. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.d.ts.map +1 -1
  27. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js +2 -0
  28. package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js.map +1 -1
  29. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts +10 -1
  30. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js +13 -3
  32. package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js.map +1 -1
  33. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts +63 -0
  34. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts.map +1 -1
  35. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js +5 -0
  36. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js.map +1 -1
  37. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration-schema.d.ts +4 -0
  38. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration-schema.d.ts.map +1 -0
  39. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration-schema.js +43 -0
  40. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration-schema.js.map +1 -0
  41. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration.d.ts +38 -0
  42. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration.d.ts.map +1 -0
  43. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration.js +97 -0
  44. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-acceleration.js.map +1 -0
  45. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts +0 -1
  46. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts.map +1 -1
  47. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js +49 -16
  48. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js.map +1 -1
  49. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts +27 -1
  50. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts.map +1 -1
  51. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js +28 -4
  52. package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js.map +1 -1
  53. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +3 -1
  54. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  55. package/node_modules/@noodle-borg/service/dist/registry-state.js +4 -1
  56. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  57. package/node_modules/@noodle-borg/service/dist/registry-status.d.ts +16 -0
  58. package/node_modules/@noodle-borg/service/dist/registry-status.d.ts.map +1 -0
  59. package/node_modules/@noodle-borg/service/dist/registry-status.js +30 -0
  60. package/node_modules/@noodle-borg/service/dist/registry-status.js.map +1 -0
  61. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +6 -0
  62. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  63. package/node_modules/@noodle-borg/service/dist/registry-targets.js +42 -2
  64. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  65. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/service/dist/registry.js +77 -51
  67. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  68. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +4 -2
  69. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts.map +1 -1
  70. package/node_modules/@noodle-borg/service/dist/store/in-memory.js +16 -12
  71. package/node_modules/@noodle-borg/service/dist/store/in-memory.js.map +1 -1
  72. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +4 -2
  73. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/service/dist/store/json-file.js +50 -31
  75. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -1
  76. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -1
  77. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +19 -3
  78. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -1
  79. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +4 -2
  80. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  81. package/node_modules/@noodle-borg/service/dist/store/postgres.js +19 -9
  82. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  83. package/node_modules/@noodle-borg/service/dist/store.d.ts +4 -2
  84. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  85. package/node_modules/@noodle-borg/transport-http/dist/admission-context.d.ts +4 -0
  86. package/node_modules/@noodle-borg/transport-http/dist/admission-context.d.ts.map +1 -0
  87. package/node_modules/@noodle-borg/transport-http/dist/admission-context.js +37 -0
  88. package/node_modules/@noodle-borg/transport-http/dist/admission-context.js.map +1 -0
  89. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -1
  90. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  91. package/node_modules/@noodle-borg/transport-http/dist/handler.js +13 -38
  92. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  93. package/package.json +1 -1
@@ -49,11 +49,11 @@ export const BUNDLED_EXAMPLE_FILES = [
49
49
  { relPath: "examples/acme-tasks/src/views/widget-style.css", content: ":root {\n color-scheme: light dark;\n font-family:\n Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n --nw-bg: #ffffff;\n --nw-surface: #f7f5ff;\n --nw-text: #1c1830;\n --nw-muted: #635d80;\n --nw-border: #e2ddf5;\n --nw-accent: #7c3aed;\n --nw-accent-strong: #6d28d9;\n --nw-accent-soft: #efe9ff;\n --nw-high: #dc2626;\n --nw-medium: #b45309;\n --nw-low: #2563eb;\n --nw-radius: 10px;\n --nw-shadow: 0 18px 50px rgb(30 20 60 / 12%);\n}\n\n.dark,\n[data-theme=\"dark\"] {\n --nw-bg: #161228;\n --nw-surface: #1d1735;\n --nw-text: #f2eeff;\n --nw-muted: #a99fce;\n --nw-border: #342a54;\n --nw-accent: #a78bfa;\n --nw-accent-strong: #8b5cf6;\n --nw-accent-soft: #2a2148;\n --nw-high: #f87171;\n --nw-medium: #fbbf24;\n --nw-low: #60a5fa;\n --nw-shadow: 0 18px 50px rgb(0 0 0 / 32%);\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n background: var(--nw-bg);\n color: var(--nw-text);\n}\n\nbutton,\ninput,\nselect {\n font: inherit;\n}\n\n.nw-shell {\n min-height: 100vh;\n padding: 14px;\n background: var(--nw-bg);\n color: var(--nw-text);\n}\n\n.nw-card {\n max-width: 620px;\n margin: 0 auto;\n background: var(--nw-surface);\n border: 1px solid var(--nw-border);\n border-radius: var(--nw-radius);\n box-shadow: var(--nw-shadow);\n overflow: hidden;\n}\n\n.nw-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-bottom: 1px solid var(--nw-border);\n}\n\n.nw-icon svg {\n width: 24px;\n height: 24px;\n fill: none;\n stroke: var(--nw-accent);\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.nw-title-block {\n flex: 1;\n min-width: 0;\n}\n\n.nw-title {\n margin: 0;\n font-size: 17px;\n font-weight: 700;\n}\n\n.nw-subtitle {\n margin: 2px 0 0;\n font-size: 13px;\n color: var(--nw-muted);\n}\n\n.nw-chip {\n padding: 4px 10px;\n border-radius: 999px;\n background: var(--nw-accent-soft);\n color: var(--nw-accent-strong);\n font-size: 12px;\n font-weight: 600;\n}\n\n.nw-capture {\n display: flex;\n gap: 8px;\n padding: 14px 16px 4px;\n}\n\n.nw-input {\n flex: 1;\n padding: 9px 12px;\n border: 1px solid var(--nw-border);\n border-radius: 10px;\n background: var(--nw-bg);\n color: var(--nw-text);\n}\n\n.nw-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 9px 14px;\n border: 1px solid var(--nw-border);\n border-radius: 10px;\n background: var(--nw-bg);\n color: var(--nw-text);\n cursor: pointer;\n}\n\n.nw-button-primary {\n background: var(--nw-accent);\n border-color: var(--nw-accent);\n color: #ffffff;\n font-weight: 600;\n}\n\n.nw-button-primary:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n.nw-list {\n list-style: none;\n margin: 0;\n padding: 8px 16px 4px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.nw-task {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border: 1px solid var(--nw-border);\n border-radius: 12px;\n background: var(--nw-bg);\n}\n\n.nw-task-title {\n flex: 1;\n min-width: 0;\n}\n\n.nw-task-done {\n opacity: 0.55;\n}\n\n.nw-task-done .nw-task-title {\n text-decoration: line-through;\n}\n\n.nw-check {\n width: 22px;\n height: 22px;\n border: 1.5px solid var(--nw-border);\n border-radius: 999px;\n background: transparent;\n color: #ffffff;\n cursor: pointer;\n flex: none;\n}\n\n.nw-check-on {\n background: var(--nw-accent);\n border-color: var(--nw-accent);\n}\n\n.nw-priority {\n padding: 5px 8px;\n border: 1px solid var(--nw-border);\n border-radius: 8px;\n background: var(--nw-bg);\n color: var(--nw-text);\n font-size: 12px;\n font-weight: 600;\n}\n\n.nw-priority-high {\n color: var(--nw-high);\n}\n\n.nw-priority-medium {\n color: var(--nw-medium);\n}\n\n.nw-priority-low {\n color: var(--nw-low);\n}\n\n.nw-note {\n margin: 0;\n padding: 8px 16px 16px;\n font-size: 12px;\n color: var(--nw-muted);\n}\n" },
50
50
  { relPath: "examples/acme-tasks/test/server.test.ts", content: "import { describe, expect, it } from 'vitest';\nimport app from '../src/server.js';\n\ndescribe('acme-tasks example', () => {\n it('exports a Noodle server definition', () => {\n expect(typeof app.toManifest).toBe('function');\n });\n\n it('exposes a tool for each of the top-3 prioritized flows', async () => {\n // Capture → add_task, Prioritize → list_today (+ set_priority helper), Complete → complete_task.\n const text = JSON.stringify(await app.toManifest());\n expect(text).toContain('add_task');\n expect(text).toContain('list_today');\n expect(text).toContain('complete_task');\n expect(text).toContain('set_priority');\n });\n\n it('seeds today’s list highest-priority first', async () => {\n const text = JSON.stringify(await app.toManifest());\n expect(text).toMatch(/\"tasks\":\\[\\{\"id\":\"email_vendor\".*\"priority\":\"high\"/);\n });\n\n it('opts the conversational completion action into runtime confirmation', async () => {\n const manifest = await app.toManifest();\n const completeTask = manifest.tools.find((candidate) => candidate.name === 'complete_task');\n const addTask = manifest.tools.find((candidate) => candidate.name === 'add_task');\n\n expect(completeTask?.annotations?.confirm).toBe(true);\n expect(addTask?.annotations).not.toHaveProperty('confirm');\n });\n});\n" },
51
51
  { relPath: "examples/acme-tasks/vitest.config.ts", content: "import { defineConfig } from 'vitest/config';\n\n// Local config so `npm test` (vitest run) discovers this example's own tests instead of inheriting a\n// parent monorepo config's include globs.\nexport default defineConfig({\n test: { include: ['test/**/*.test.ts'] },\n});\n" },
52
- { relPath: "examples/customer-auth/README.md", content: "# Customer Auth - NoodleSeed.com Firebase customer identity\n\nThis curated example owns the customer/end-user authentication with Firebase bridge capability slot. It is\nthe NoodleSeed.com dogfood app for proving that a SaaS app can protect an MCP endpoint with its own customer\nidentity provider while still using the generic Noodle Seed authoring API.\n\nIt also owns the embedded-assistant showcase: the same authenticated MCP surface can be dropped into the\nSaaS web application as a fully customer-branded assistant with independent light and dark themes. The\nassistant loads the active deployment's instructions and model-visible tools rather than installing a stale\nsecond skill bundle. The standard embedded element also hosts linked MCP Apps behind its sandbox bridge.\n\nThe public developer entrypoint is [`src/server.ts`](src/server.ts). It declares `customerAuth.firebase(...)` with\nthe NoodleSeed.com Firebase project and Firebase Web App public config. It exposes a deliberately small MCP\nsurface for org discovery:\n\n- `list_my_organizations` lists the NoodleSeed.com organizations the signed-in customer belongs to (no\n arguments — the org set comes from the verified customer session).\n- `list_org_apps` lists apps for one of those organizations through the dev app API.\n\nThe two tools chain: `list_my_organizations` surfaces the `org_id`s the customer can act on, and\n`list_org_apps` takes one of those `org_id`s. There is no NoodleSeed-specific SDK helper. The downstream API\nis an ordinary authored HTTP connector.\n\n## Direct or federated OIDC instead of the built-in adapter\n\nThis flagship uses the managed Firebase adapter. If an app replaces it with `customerAuth.oidc(...)` or\n`customerAuth.federatedOidc(...)`, the app developer owns the authorization server. It must publish the\nprimary path-inserted RFC 8414 URL as direct HTTP 200 JSON with the exact issuer, HTTPS authorization/token/\nregistration/JWKS endpoints, authorization-code and refresh grants, PKCE S256, public-client auth method\n`none`, RFC 8707 resource handling, an access-token `aud` equal to the exact MCP URL, and public signing keys.\n\nRun `noodle auth doctor src/server.ts` before sharing the endpoint. Its issuer-readiness probes perform\nbounded read-only GET checks and never register a client. A successful\n`noodle deploy --access customers` reports the same findings as nonblocking warnings; the application team\nrepairs the issuer rather than adding a Noodle OAuth proxy.\n\nDuring MCP OAuth login, Noodle Cloud hosts the Firebase bridge page at\n`https://cloud.noodleseed.dev/oauth/customer/firebase/authorize`. The customer app does not add an\nauthorization route. The SaaS operator only configures Firebase Auth to allow the Noodle Cloud origin, and\nNoodle Cloud signs the customer in with Firebase before posting the Firebase ID token back to its own bridge\ncallback.\n\n## How delegated customer credentials are used\n\nThis flagship uses the legacy Firebase provider bridge because it is runnable today. That is distinct from\nCore-v2 account-selecting connector aliases: those declare catalog `credentialProfiles` and bind each alias\nwith `bind(connector, { profile, connection })`. Hosted bound `managedSecret(...)` connections are runnable;\nbound `externalExchange()` and `clientCredentials(...)` currently compile as portable metadata but fail\nclosed before secret or network access until their provider slice lands. Do not replace this example's\nworking delegated-session-cookie path with either unsupported bound exchange source.\n\nThe example has two declarations that work together:\n\n```ts\nauth: customerAuth.firebase({\n projectId: variable('FIREBASE_PROJECT_ID'),\n apiKey: variable('FIREBASE_WEB_API_KEY'),\n authDomain: variable('FIREBASE_AUTH_DOMAIN'),\n user: {\n id: 'sub',\n email: 'email',\n name: 'name',\n tenant: 'firebase.tenant',\n orgs: 'claims.orgs',\n roles: 'claims.roles',\n },\n}),\n```\n\nThat protects the MCP endpoint with the SaaS customer's Firebase identity. The connector then opts into\ndelegated customer credentials:\n\n```ts\nauth: {\n kind: 'delegatedSessionCookie',\n provider: 'firebase',\n sessionUrl: `${noodleseedApiOrigin}/api/auth/session`,\n tokenField: 'idToken',\n},\n```\n\nTool code calls the connector normally:\n\n```ts\nfulfil({ input, connectors }) {\n const apps = connectors.app_api.listOrgApps({\n org_id: input.org_id,\n skip: input.skip,\n limit: input.limit,\n });\n\n return { result: apps.result };\n}\n```\n\nAt runtime, Noodle Seed verifies the Firebase customer during MCP OAuth, stores that customer's delegated\nFirebase refresh token in the credential broker, and refreshes a short-lived Firebase ID token only when a\nconnector-backed tool calls the NoodleSeed.com API. For this app API, the broker exchanges that ID token at\nthe existing Next.js `/api/auth/session` route and sends the resulting session cookie to the API. The MCP\naccess token remains a Noodle-issued resource-bound token and is never sent to the downstream API.\n\n## Delegated downstream auth for your own API (token exchange)\n\nThe Firebase path above only works for Firebase-session downstreams. When the downstream is **your own\nAPI** with its own token issuance, use `delegatedTokenExchange` instead\n([ADR 0152](../../docs/decisions/0152-delegated-token-exchange-connector-auth.md)): the platform signs a\nshort-lived, JWKS-verifiable assertion of the signed-in user and exchanges it (RFC 8693) at a token\nendpoint you implement, which mints your own user-scoped token — so your API enforces its own per-user\nauthorization on every call. It works for verified direct/federated OIDC, built-in provider identities, and\nembedded assistant sessions, with no per-user OAuth enrollment.\n\n```ts\nauth: {\n kind: 'delegatedTokenExchange',\n tokenUrl: 'https://app.example.com/api/assistant/oauth/token', // origin must be in allowedOrigins\n clientId: variable('EXAMPLE_DELEG_CLIENT_ID'),\n clientSecret: secret('EXAMPLE_DELEG_CLIENT_SECRET'),\n scopes: ['time_off'],\n},\n```\n\nYour endpoint authenticates the broker's client credential, verifies the `subject_token` JWT against the\nplatform issuer JWKS (claims include the verified `sub`, `email`, `name`, declared session `claims`,\n`tenant`, and `deployment`), mints a short-lived user-scoped token, and returns the standard\n`{ access_token, token_type, expires_in }` response. The exact wire contract and a copyable endpoint\nimplementation live in [docs/spec/connectors.md](../../docs/spec/connectors.md) and the Agent Kit\nauthoring-workflow reference (\"Delegated downstream auth\"). `noodle auth doctor` reports each declared\nexchange endpoint.\n\n## Validate\n\n```bash\nnoodle auth doctor examples/customer-auth/src/server.ts\nnoodle validate examples/customer-auth/src/server.ts\n```\n\nAgainst a deployed customer-protected environment, set a short-lived real customer token only in\n`NOODLE_CUSTOMER_TOKEN` and add `--live --org <org> --app <app> --env <env>`. The live doctor performs\ncredential exchanges without invoking either business tool.\n\n## Run locally\n\n```bash\nnoodle dev examples/customer-auth/src/server.ts --app noodleseed-customer-auth\n```\n\n## Configuration\n\nThe embedded assistant uses a customer-supplied OpenAI Chat Completions-compatible endpoint. Configure its\nmanaged values at the Noodle deployment environment; none of these values belongs in the customer web\napplication environment, and the API key never reaches the browser:\n\n```bash\nnoodle variables set ASSISTANT_MODEL_BASE_URL https://model.example.com/v1 --scope env\nnoodle variables set ASSISTANT_MODEL your-model --scope env\nnoodle secrets set ASSISTANT_MODEL_API_KEY --scope env\nnoodle variables set FIREBASE_PROJECT_ID your-firebase-project --scope env\nnoodle variables set FIREBASE_WEB_API_KEY your-firebase-web-api-key --scope env\nnoodle variables set FIREBASE_AUTH_DOMAIN your-firebase-project.firebaseapp.com --scope env\nnoodle check --target embedded-assistant src/server.ts\n```\n\nAssistant origins are exact. Production embedding origins must use HTTPS; plain HTTP is accepted only for\nloopback development origins such as `http://localhost:3000`, `http://127.0.0.1:3000`, or\n`http://[::1]:3000`. `noodle dev` serves the MCP project, not that separate embedding application.\n\nThe assistant's panel, launcher, status header, composer, and message treatment are configured through the\nbounded `presentation` object in `src/server.ts`. The Atlas-style product treatment is the supported\ncustomization ceiling. These primitives derive their colors from the shared server `branding` block and\nrequire no edits to `@noodleseed/assistant`; raw HTML, CSS, inline SVG, renderer class names, and callbacks\nare intentionally not accepted in deployment configuration.\n\nCreate the backend credential after deployment. The CLI writes it to a mode-0600 file and never prints the\nsecret:\n\n```bash\nnoodle assistant clients create --name web --org noodleseed --app customer-auth --env prod\n```\n\nOnly the Noodle service URL, assistant client ID, and assistant client secret belong in the authenticated\ncustomer backend. The model URL, model name, and model API key remain managed by the Noodle deployment.\n\nThe customer's authenticated backend calls `createAssistantSession(...)` from\n`@noodleseed/assistant/server`, passing the already-verified user and browser origin. The browser then uses\nthe returned short-lived session through the managed Web Component/React renderer or a customer-owned UI:\n\n```bash\npnpm add @noodleseed/assistant\n```\n\n```tsx\nimport { NoodleAssistant } from '@noodleseed/assistant/react';\n\n<NoodleAssistant\n sessionEndpoint=\"/api/noodle-assistant/session\"\n theme={resolvedTheme}\n onSessionExpired={() => console.info('Assistant session renewed')}\n/>;\n```\n\n`resolvedTheme` is the application's current `'light' | 'dark'` value. Use `theme=\"auto\"` only when the\nbrowser operating-system preference is intentionally authoritative.\n\nFor an entirely application-owned React renderer, use the renderer-free hook. It creates no custom element\nand returns the AI SDK transcript plus the canonical client commands:\n\n```tsx\n'use client';\n\nimport { useEffect, useState } from 'react';\nimport { NoodleAppView } from '@noodleseed/assistant/react';\nimport { useNoodleAssistant } from '@noodleseed/assistant/react/client';\n\nexport function CustomerAssistant({\n principalKey,\n resolvedTheme,\n}: {\n principalKey: string;\n resolvedTheme: 'light' | 'dark';\n}) {\n const [draft, setDraft] = useState('');\n const { client, messages, status, error } = useNoodleAssistant({\n sessionEndpoint: '/api/noodle-assistant/session',\n principalKey,\n });\n const busy = status === 'submitted' || status === 'streaming';\n const settle = (operation: Promise<void>) => {\n void operation.catch(() => {\n // The hook exposes this same structured failure through `error`.\n });\n };\n\n return (\n <section aria-label=\"Assistant\" aria-busy={busy}>\n {messages.map((message) => (\n <article key={message.id} data-role={message.role}>\n {message.parts.map((part, index) => {\n if (part.type === 'text') return <p key={index}>{part.text}</p>;\n if (part.type === 'data-confirmation') {\n const review = part.data;\n return (\n <section key={review.id} aria-label=\"Review proposed action\">\n <h3>{review.title ?? 'Review proposed action'}</h3>\n {review.description ? <p>{review.description}</p> : null}\n <pre aria-label=\"Proposed action arguments\">\n {JSON.stringify(review.arguments ?? {}, null, 2)}\n </pre>\n <button\n disabled={busy || review.status !== 'pending'}\n onClick={() => settle(client.respond(review.id, { action: 'accept' }))}\n >\n Confirm\n </button>\n <button\n disabled={busy || review.status !== 'pending'}\n onClick={() => settle(client.respond(review.id, { action: 'decline' }))}\n >\n Don't proceed\n </button>\n </section>\n );\n }\n if (part.type === 'data-input-request') {\n const request = part.data;\n return (\n <section key={request.id} aria-label=\"Assistant needs input\">\n <p>{request.message}</p>\n <p>This renderer has not implemented the requested form.</p>\n <button\n disabled={busy || request.status !== 'pending'}\n onClick={() => settle(client.respond(request.id, { action: 'decline' }))}\n >\n Cancel request\n </button>\n </section>\n );\n }\n if (part.type === 'data-tool-result') {\n return (\n <pre key={part.data.id} aria-label={`${part.data.tool} result`}>\n {JSON.stringify(part.data.result, null, 2)}\n </pre>\n );\n }\n if (part.type === 'data-view') {\n return (\n <NoodleAppView\n key={`${part.data.id}:${part.data.resourceUri}`}\n client={client}\n view={part.data}\n theme={resolvedTheme}\n />\n );\n }\n return <p key={index}>Unsupported assistant content.</p>;\n })}\n </article>\n ))}\n {error ? <p role=\"alert\">{error.message}</p> : null}\n <form\n onSubmit={(event) => {\n event.preventDefault();\n const message = draft.trim();\n if (!message) return;\n setDraft('');\n settle(client.sendMessage(message));\n }}\n >\n <input\n aria-label=\"Message\"\n value={draft}\n onChange={(event) => setDraft(event.currentTarget.value)}\n />\n {busy ? (\n <button type=\"button\" onClick={() => client.abort()}>\n Stop\n </button>\n ) : (\n <button type=\"submit\">Send</button>\n )}\n </form>\n </section>\n );\n}\n```\n\n`principalKey` stays in the browser. Change it whenever the authenticated user or tenant changes; the hook\nthen aborts and clears the prior session and transcript. The sample fails closed on input requests until its\nfallback is replaced with a form generated from `requestedSchema`. A production renderer must show the\ncomplete confirmation review and both decisions. For `data-view`, map `resourceUri` or `tool` and the\nbounded/redacted result to a component already trusted by this application only when intentionally replacing\nthe linked App with a native UI. Otherwise use `NoodleAppView`; JSON result data is not the App UI. Its\nsemantic lifecycle identity is the client plus `view.id` plus `view.resourceUri`, so parent payload/callback\nrerenders keep the iframe and only a different view or unmount tears down the bridge.\nNever inject `part.data.html`, assign it to `srcdoc`, fetch a `ui://` URI, or reproduce the bridge directly. Pages with a\nContent-Security-Policy must include the Noodle service origin in both `connect-src` and `frame-src`.\n\nBefore the production-equivalent host build, run the presence-only handoff check:\n\n```sh\nnoodle assistant embed --check --json\n```\n\nAdd application-owned delegated-exchange requirements with repeatable `--require-env NAME` flags. The JSON\nreports required and missing names, CSP status, and post-deploy probes without returning environment values\nor writing scaffold files. Map the names through the production secret manager, CI environment, and any\nsecret allowlist; regenerate existing framework-owned environment binding types before the build. Default\nDevtools/model exercises to synthetic data, and obtain approval before sending real connector data to an\nexternal model.\n\nAfter deployment, verify the public delegated exchange without extracting a customer bearer token or invoking\na business operation:\n\n```sh\nnoodle assistant doctor --user-id <real-test-user> --origin \"$PUBLIC_APP_ORIGIN\" --org <org> --app <app> --env <env>\n```\n\nIf the application deliberately sends a first turn on mount, do not combine a persistent \"sent\" ref with a\nmount effect. React Strict Mode can abort that provisional request and then suppress the stable remount.\nSchedule the send after the provisional cleanup and settle its promise:\n\n```tsx\nuseEffect(() => {\n let active = true;\n queueMicrotask(() => {\n if (active) settle(client.sendMessage(initialMessage));\n });\n return () => {\n active = false;\n };\n}, [client, initialMessage]);\n```\n\nFor a chat-first custom host, raw `tool_started` supplies the direct call `id` and technical tool name. Map\nknown tools to concise application copy and use a neutral fallback. Reserve a stable `role=\"status\"` region\nfor thinking, tool activity, and the view skeleton; switch to the ready `NoodleAppView` on `view_available`\nor to `role=\"alert\"` on error. Decorative skeleton shapes stay hidden from assistive technology, and shimmer\nor transition motion is disabled under `prefers-reduced-motion`.\n\nUse `${view.id}:${view.resourceUri}` as transport identity. Different call IDs are distinct invocations and\nmust not be deduplicated generically. If this application intentionally owns one current panel for a known\nresource, declare an application-owned slot for that resource and replace only that slot.\n\nOutside React, subscribe to the DOM-free client directly. It exposes the same conversation as headless AI\nSDK `UIMessage` state, including typed confirmation, input, tool-result, and linked-view parts:\n\n```ts\nimport { createAssistantClient } from '@noodleseed/assistant/client';\n\nconst assistant = createAssistantClient({\n sessionEndpoint: '/api/noodle-assistant/session',\n});\n\nassistant.subscribeChat((state) => {\n renderUIMessageState(state);\n for (const message of state.messages) {\n for (const part of message.parts) {\n if (part.type === 'data-confirmation' && part.data.status === 'pending') {\n renderConfirmation(part.data, (response) => assistant.respond(part.data.id, response));\n }\n }\n }\n});\n```\n\n`theme=\"auto\"` follows the browser operating-system preference, not a SaaS-owned theme toggle. Pass the\napplication's resolved `light`/`dark` theme to both `NoodleAssistant` and `NoodleAppView`; later updates\nreach mounted MCP Apps without remounting them. CSS custom properties inherit through the assistant host, so\ntyped appearance roles may reuse existing application tokens with `var(--app-token)`. The server-level\n`branding` block is inherited by both MCP App widgets and the assistant; documented `--ns-assistant-*`\nsemantic CSS variables remain the final integration escape hatch. There is no second assistant branding\ndeclaration.\nThe end-user UI contains only customer branding.\nText streams progressively. Expired turns re-exchange through the authenticated backend and retry once;\nconsent-bound tool confirmations never replay automatically.\n\nThe Firebase project ID is required because Firebase ID tokens use the project ID as the token audience and\nissuer suffix. The runtime verifies `aud` against the project ID and `iss` against\n`https://securetoken.google.com/<projectId>`.\n\nThe Firebase Web API key and auth domain are public Firebase browser configuration. They let the Noodle\nCloud-hosted bridge initialize Firebase Auth for this customer project; they are not server secrets. Keep\nthem out of source with `variable(...)`, restrict the Firebase key to the expected browser origins and APIs,\nand use `secret(...)` only for credentials that must never reach a browser.\n\nThe `noodleseed_app_api` connector currently points at the NoodleSeed.com dev app surface:\n\n```text\nhttps://dev.noodleseed.com\n```\n\nWhen the customer app moves from `dev.noodleseed.com` to `app.noodleseed.com`, update the connector's\n`noodleseedApiOrigin` constant to the production API origin that serves the same paths.\n\nThe connector uses delegated Firebase customer credentials. During the customer OAuth bridge, Noodle Seed\nverifies the Firebase ID token, stores the Firebase refresh token through the credential broker, and refreshes\na Firebase ID token when the connector calls the NoodleSeed.com app API. The broker then exchanges that ID\ntoken for the app's existing Next.js session cookie. There is no shared `NOODLESEED_APP_API_TOKEN` for this\nexample.\n\nFirebase Auth must list `cloud.noodleseed.dev` as an authorized domain before browser sign-in works in\nproduction.\n\n## Deploy customer-protected to Noodle Seed Cloud\n\n```bash\nnoodle deploy examples/customer-auth/src/server.ts \\\n --org noodleseed \\\n --app customer-auth \\\n --env prod \\\n --access customers\n```\n\nEndpoint:\n\n```text\nhttps://cloud.noodleseed.dev/o/noodleseed/customer-auth/mcp\n```\n\n## MCP Primitives\n\n- Tool `list_my_organizations`: calls `GET /api/organizations` and returns the organizations the signed-in\n customer is a member of. Takes no arguments; the org set is scoped by the verified customer session.\n- Tool `list_org_apps`: calls `GET /api/organizations/{org_id}/apps` for one organization `org_id`.\n\n## Auth boundary\n\nFirebase ID-token verification is handled by Noodle Seed's generic Firebase bridge adapter during OAuth\nissuance. The MCP client receives a Noodle-issued, resource-bound access token marked as a Firebase customer\nidentity; raw Firebase tokens and inbound MCP bearer tokens are never forwarded to tools, connectors,\nwidgets, or downstream systems.\n\nThe connector-backed tools use the credential broker to turn the signed-in Firebase customer session into the\nsame session-cookie credential that the existing NoodleSeed.com Next.js API already expects. The inbound MCP\nbearer token is never used as an app API credential.\n" },
52
+ { relPath: "examples/customer-auth/README.md", content: "# Customer Auth - NoodleSeed.com Firebase customer identity\n\nThis curated example owns the customer/end-user authentication with Firebase bridge capability slot. It is\nthe NoodleSeed.com dogfood app for proving that a SaaS app can protect an MCP endpoint with its own customer\nidentity provider while still using the generic Noodle Seed authoring API.\n\nIt also owns the embedded-assistant showcase: the same authenticated MCP surface can be dropped into the\nSaaS web application as a fully customer-branded assistant with independent light and dark themes. The\nassistant loads the active deployment's instructions and model-visible tools rather than installing a stale\nsecond skill bundle. The standard embedded element also hosts linked MCP Apps behind its sandbox bridge.\n\nThe public developer entrypoint is [`src/server.ts`](src/server.ts). It declares `customerAuth.firebase(...)` with\nthe NoodleSeed.com Firebase project and Firebase Web App public config. It exposes a deliberately small MCP\nsurface for org discovery:\n\n- `list_my_organizations` lists the NoodleSeed.com organizations the signed-in customer belongs to (no\n arguments — the org set comes from the verified customer session).\n- `list_org_apps` lists apps for one of those organizations through the dev app API.\n\nThe two tools chain: `list_my_organizations` surfaces the `org_id`s the customer can act on, and\n`list_org_apps` takes one of those `org_id`s. There is no NoodleSeed-specific SDK helper. The downstream API\nis an ordinary authored HTTP connector.\n\n## Direct or federated OIDC instead of the built-in adapter\n\nThis flagship uses the managed Firebase adapter. If an app replaces it with `customerAuth.oidc(...)` or\n`customerAuth.federatedOidc(...)`, the app developer owns the authorization server. It must publish the\nprimary path-inserted RFC 8414 URL as direct HTTP 200 JSON with the exact issuer, HTTPS authorization/token/\nregistration/JWKS endpoints, authorization-code and refresh grants, PKCE S256, public-client auth method\n`none`, RFC 8707 resource handling, an access-token `aud` equal to the exact MCP URL, and public signing keys.\n\nRun `noodle auth doctor src/server.ts` before sharing the endpoint. Its issuer-readiness probes perform\nbounded read-only GET checks and never register a client. A successful\n`noodle deploy --access customers` reports the same findings as nonblocking warnings; the application team\nrepairs the issuer rather than adding a Noodle OAuth proxy.\n\nAdding the embedded assistant does not choose or rewrite MCP customer auth. Inspect the exact active\ndeployment before changing configuration:\n\n```sh\nnoodle deployments list --org <org> --app <app> --env <env> --json\n```\n\nThis Firebase bridge intentionally advertises the Noodle authorization server. A direct or federated\nreplacement must advertise its configured tenant issuer. If the exact active direct/federated `customers`\ndeployment instead advertises the platform issuer, report `customer_auth_state_inconsistent` with only the\nendpoint, deployment ID, server version, and sanitized protected-resource metadata. Do not share tokens or\nsecrets, proxy or rewrite metadata, rotate credentials, or redeploy repeatedly to conceal the mismatch.\n\nDuring MCP OAuth login, Noodle Cloud hosts the Firebase bridge page at\n`https://cloud.noodleseed.dev/oauth/customer/firebase/authorize`. The customer app does not add an\nauthorization route. The SaaS operator only configures Firebase Auth to allow the Noodle Cloud origin, and\nNoodle Cloud signs the customer in with Firebase before posting the Firebase ID token back to its own bridge\ncallback.\n\n## How delegated customer credentials are used\n\nThis flagship uses the legacy Firebase provider bridge because it is runnable today. That is distinct from\nCore-v2 account-selecting connector aliases: those declare catalog `credentialProfiles` and bind each alias\nwith `bind(connector, { profile, connection })`. Hosted bound `managedSecret(...)` connections are runnable;\nbound `externalExchange()` and `clientCredentials(...)` currently compile as portable metadata but fail\nclosed before secret or network access until their provider slice lands. Do not replace this example's\nworking delegated-session-cookie path with either unsupported bound exchange source.\n\nThe example has two declarations that work together:\n\n```ts\nauth: customerAuth.firebase({\n projectId: variable('FIREBASE_PROJECT_ID'),\n apiKey: variable('FIREBASE_WEB_API_KEY'),\n authDomain: variable('FIREBASE_AUTH_DOMAIN'),\n user: {\n id: 'sub',\n email: 'email',\n name: 'name',\n tenant: 'firebase.tenant',\n orgs: 'claims.orgs',\n roles: 'claims.roles',\n },\n}),\n```\n\nThat protects the MCP endpoint with the SaaS customer's Firebase identity. The connector then opts into\ndelegated customer credentials:\n\n```ts\nauth: {\n kind: 'delegatedSessionCookie',\n provider: 'firebase',\n sessionUrl: `${noodleseedApiOrigin}/api/auth/session`,\n tokenField: 'idToken',\n},\n```\n\nTool code calls the connector normally:\n\n```ts\nfulfil({ input, connectors }) {\n const apps = connectors.app_api.listOrgApps({\n org_id: input.org_id,\n skip: input.skip,\n limit: input.limit,\n });\n\n return { result: apps.result };\n}\n```\n\nAt runtime, Noodle Seed verifies the Firebase customer during MCP OAuth, stores that customer's delegated\nFirebase refresh token in the credential broker, and refreshes a short-lived Firebase ID token only when a\nconnector-backed tool calls the NoodleSeed.com API. For this app API, the broker exchanges that ID token at\nthe existing Next.js `/api/auth/session` route and sends the resulting session cookie to the API. The MCP\naccess token remains a Noodle-issued resource-bound token and is never sent to the downstream API.\n\n## Delegated downstream auth for your own API (token exchange)\n\nThe Firebase path above only works for Firebase-session downstreams. When the downstream is **your own\nAPI** with its own token issuance, use `delegatedTokenExchange` instead\n([ADR 0152](../../docs/decisions/0152-delegated-token-exchange-connector-auth.md)): the platform signs a\nshort-lived, JWKS-verifiable assertion of the signed-in user and exchanges it (RFC 8693) at a token\nendpoint you implement, which mints your own user-scoped token — so your API enforces its own per-user\nauthorization on every call. It works for verified direct/federated OIDC, built-in provider identities, and\nembedded assistant sessions, with no per-user OAuth enrollment.\n\n```ts\nauth: {\n kind: 'delegatedTokenExchange',\n tokenUrl: 'https://app.example.com/api/assistant/oauth/token', // origin must be in allowedOrigins\n clientId: variable('EXAMPLE_DELEG_CLIENT_ID'),\n clientSecret: secret('EXAMPLE_DELEG_CLIENT_SECRET'),\n scopes: ['time_off'],\n},\n```\n\nYour endpoint authenticates the broker's client credential, verifies the `subject_token` JWT against the\nplatform issuer JWKS (claims include the verified `sub`, `email`, `name`, declared session `claims`,\n`tenant`, and `deployment`), mints a short-lived user-scoped token, and returns the standard\n`{ access_token, token_type, expires_in }` response. The exact wire contract and a copyable endpoint\nimplementation live in [docs/spec/connectors.md](../../docs/spec/connectors.md) and the Agent Kit\nauthoring-workflow reference (\"Delegated downstream auth\"). `noodle auth doctor` reports each declared\nexchange endpoint.\n\n## Validate\n\n```bash\nnoodle auth doctor examples/customer-auth/src/server.ts\nnoodle validate examples/customer-auth/src/server.ts\n```\n\nAgainst a deployed customer-protected environment, set a short-lived real customer token only in\n`NOODLE_CUSTOMER_TOKEN` and add `--live --org <org> --app <app> --env <env>`. The live doctor performs\ncredential exchanges without invoking either business tool.\n\n## Run locally\n\n```bash\nnoodle dev examples/customer-auth/src/server.ts --app noodleseed-customer-auth\n```\n\n## Configuration\n\nThe embedded assistant uses a customer-supplied OpenAI Chat Completions-compatible endpoint. Configure its\nmanaged values at the Noodle deployment environment; none of these values belongs in the customer web\napplication environment, and the API key never reaches the browser:\n\n```bash\nnoodle variables set ASSISTANT_MODEL_BASE_URL https://model.example.com/v1 --scope env\nnoodle variables set ASSISTANT_MODEL your-model --scope env\nnoodle secrets set ASSISTANT_MODEL_API_KEY --scope env\nnoodle variables set FIREBASE_PROJECT_ID your-firebase-project --scope env\nnoodle variables set FIREBASE_WEB_API_KEY your-firebase-web-api-key --scope env\nnoodle variables set FIREBASE_AUTH_DOMAIN your-firebase-project.firebaseapp.com --scope env\nnoodle check --target embedded-assistant src/server.ts\n```\n\nAssistant origins are exact. Production embedding origins must use HTTPS; plain HTTP is accepted only for\nloopback development origins such as `http://localhost:3000`, `http://127.0.0.1:3000`, or\n`http://[::1]:3000`. `noodle dev` serves the MCP project, not that separate embedding application.\n\nThe assistant's panel, launcher, status header, composer, and message treatment are configured through the\nbounded `presentation` object in `src/server.ts`. The Atlas-style product treatment is the supported\ncustomization ceiling. These primitives derive their colors from the shared server `branding` block and\nrequire no edits to `@noodleseed/assistant`; raw HTML, CSS, inline SVG, renderer class names, and callbacks\nare intentionally not accepted in deployment configuration.\n\nCreate the backend credential after deployment. The CLI writes it to a mode-0600 file and never prints the\nsecret:\n\n```bash\nnoodle assistant clients create --name web --org noodleseed --app customer-auth --env prod\n```\n\nOnly the Noodle service URL, assistant client ID, and assistant client secret belong in the authenticated\ncustomer backend. The model URL, model name, and model API key remain managed by the Noodle deployment.\n\nThe customer's authenticated backend calls `createAssistantSession(...)` from\n`@noodleseed/assistant/server`, passing the already-verified user and browser origin. The browser then uses\nthe returned short-lived session through the managed Web Component/React renderer or a customer-owned UI:\n\n```bash\npnpm add @noodleseed/assistant\n```\n\n```tsx\nimport { NoodleAssistant } from '@noodleseed/assistant/react';\n\n<NoodleAssistant\n sessionEndpoint=\"/api/noodle-assistant/session\"\n theme={resolvedTheme}\n onSessionExpired={() => console.info('Assistant session renewed')}\n/>;\n```\n\n`resolvedTheme` is the application's current `'light' | 'dark'` value. Use `theme=\"auto\"` only when the\nbrowser operating-system preference is intentionally authoritative.\n\nFor an entirely application-owned React renderer, use the renderer-free hook. It creates no custom element\nand returns the AI SDK transcript plus the canonical client commands:\n\n```tsx\n'use client';\n\nimport { useEffect, useState } from 'react';\nimport { NoodleAppView } from '@noodleseed/assistant/react';\nimport { useNoodleAssistant } from '@noodleseed/assistant/react/client';\n\nexport function CustomerAssistant({\n principalKey,\n resolvedTheme,\n}: {\n principalKey: string;\n resolvedTheme: 'light' | 'dark';\n}) {\n const [draft, setDraft] = useState('');\n const { client, messages, status, error } = useNoodleAssistant({\n sessionEndpoint: '/api/noodle-assistant/session',\n principalKey,\n });\n const busy = status === 'submitted' || status === 'streaming';\n const settle = (operation: Promise<void>) => {\n void operation.catch(() => {\n // The hook exposes this same structured failure through `error`.\n });\n };\n\n return (\n <section aria-label=\"Assistant\" aria-busy={busy}>\n {messages.map((message) => (\n <article key={message.id} data-role={message.role}>\n {message.parts.map((part, index) => {\n if (part.type === 'text') return <p key={index}>{part.text}</p>;\n if (part.type === 'data-confirmation') {\n const review = part.data;\n return (\n <section key={review.id} aria-label=\"Review proposed action\">\n <h3>{review.title ?? 'Review proposed action'}</h3>\n {review.description ? <p>{review.description}</p> : null}\n <pre aria-label=\"Proposed action arguments\">\n {JSON.stringify(review.arguments ?? {}, null, 2)}\n </pre>\n <button\n disabled={busy || review.status !== 'pending'}\n onClick={() => settle(client.respond(review.id, { action: 'accept' }))}\n >\n Confirm\n </button>\n <button\n disabled={busy || review.status !== 'pending'}\n onClick={() => settle(client.respond(review.id, { action: 'decline' }))}\n >\n Don't proceed\n </button>\n </section>\n );\n }\n if (part.type === 'data-input-request') {\n const request = part.data;\n return (\n <section key={request.id} aria-label=\"Assistant needs input\">\n <p>{request.message}</p>\n <p>This renderer has not implemented the requested form.</p>\n <button\n disabled={busy || request.status !== 'pending'}\n onClick={() => settle(client.respond(request.id, { action: 'decline' }))}\n >\n Cancel request\n </button>\n </section>\n );\n }\n if (part.type === 'data-tool-result') {\n return (\n <pre key={part.data.id} aria-label={`${part.data.tool} result`}>\n {JSON.stringify(part.data.result, null, 2)}\n </pre>\n );\n }\n if (part.type === 'data-view') {\n return (\n <NoodleAppView\n key={`${part.data.id}:${part.data.resourceUri}`}\n client={client}\n view={part.data}\n theme={resolvedTheme}\n />\n );\n }\n return <p key={index}>Unsupported assistant content.</p>;\n })}\n </article>\n ))}\n {error ? <p role=\"alert\">{error.message}</p> : null}\n <form\n onSubmit={(event) => {\n event.preventDefault();\n const message = draft.trim();\n if (!message) return;\n setDraft('');\n settle(client.sendMessage(message));\n }}\n >\n <input\n aria-label=\"Message\"\n value={draft}\n onChange={(event) => setDraft(event.currentTarget.value)}\n />\n {busy ? (\n <button type=\"button\" onClick={() => client.abort()}>\n Stop\n </button>\n ) : (\n <button type=\"submit\">Send</button>\n )}\n </form>\n </section>\n );\n}\n```\n\n`principalKey` stays in the browser. Change it whenever the authenticated user or tenant changes; the hook\nthen aborts and clears the prior session and transcript. The sample fails closed on input requests until its\nfallback is replaced with a form generated from `requestedSchema`. A production renderer must show the\ncomplete confirmation review and both decisions. For `data-view`, map `resourceUri` or `tool` and the\nbounded/redacted result to a component already trusted by this application only when intentionally replacing\nthe linked App with a native UI. Otherwise use `NoodleAppView`; JSON result data is not the App UI. Its\nsemantic lifecycle identity is the client plus `view.id` plus `view.resourceUri`, so parent payload/callback\nrerenders keep the iframe and only a different view or unmount tears down the bridge.\nNever inject `part.data.html`, assign it to `srcdoc`, fetch a `ui://` URI, or reproduce the bridge directly. Pages with a\nContent-Security-Policy must include the Noodle service origin in both `connect-src` and `frame-src`.\n\nBefore the production-equivalent host build, run the presence-only handoff check:\n\n```sh\nnoodle assistant embed --check --json\n```\n\nAdd application-owned delegated-exchange requirements with repeatable `--require-env NAME` flags. The JSON\nreports required and missing names, CSP status, and post-deploy probes without returning environment values\nor writing scaffold files. Map the names through the production secret manager, CI environment, and any\nsecret allowlist; regenerate existing framework-owned environment binding types before the build. Default\nDevtools/model exercises to synthetic data, and obtain approval before sending real connector data to an\nexternal model.\n\nAfter deployment, verify the public delegated exchange without extracting a customer bearer token or invoking\na business operation:\n\n```sh\nnoodle assistant doctor --user-id <real-test-user> --origin \"$PUBLIC_APP_ORIGIN\" --org <org> --app <app> --env <env>\n```\n\nIf the application deliberately sends a first turn on mount, do not combine a persistent \"sent\" ref with a\nmount effect. React Strict Mode can abort that provisional request and then suppress the stable remount.\nSchedule the send after the provisional cleanup and settle its promise:\n\n```tsx\nuseEffect(() => {\n let active = true;\n queueMicrotask(() => {\n if (active) settle(client.sendMessage(initialMessage));\n });\n return () => {\n active = false;\n };\n}, [client, initialMessage]);\n```\n\nFor a chat-first custom host, raw `tool_started` supplies the direct call `id` and technical tool name. Map\nknown tools to concise application copy and use a neutral fallback. Reserve a stable `role=\"status\"` region\nfor thinking, tool activity, and the view skeleton; switch to the ready `NoodleAppView` on `view_available`\nor to `role=\"alert\"` on error. Decorative skeleton shapes stay hidden from assistive technology, and shimmer\nor transition motion is disabled under `prefers-reduced-motion`.\n\nUse `${view.id}:${view.resourceUri}` as transport identity. Different call IDs are distinct invocations and\nmust not be deduplicated generically. If this application intentionally owns one current panel for a known\nresource, declare an application-owned slot for that resource and replace only that slot.\n\nOutside React, subscribe to the DOM-free client directly. It exposes the same conversation as headless AI\nSDK `UIMessage` state, including typed confirmation, input, tool-result, and linked-view parts:\n\n```ts\nimport { createAssistantClient } from '@noodleseed/assistant/client';\n\nconst assistant = createAssistantClient({\n sessionEndpoint: '/api/noodle-assistant/session',\n});\n\nassistant.subscribeChat((state) => {\n renderUIMessageState(state);\n for (const message of state.messages) {\n for (const part of message.parts) {\n if (part.type === 'data-confirmation' && part.data.status === 'pending') {\n renderConfirmation(part.data, (response) => assistant.respond(part.data.id, response));\n }\n }\n }\n});\n```\n\n`theme=\"auto\"` follows the browser operating-system preference, not a SaaS-owned theme toggle. Pass the\napplication's resolved `light`/`dark` theme to both `NoodleAssistant` and `NoodleAppView`; later updates\nreach mounted MCP Apps without remounting them. CSS custom properties inherit through the assistant host, so\ntyped appearance roles may reuse existing application tokens with `var(--app-token)`. The server-level\n`branding` block is inherited by both MCP App widgets and the assistant; documented `--ns-assistant-*`\nsemantic CSS variables remain the final integration escape hatch. There is no second assistant branding\ndeclaration.\nThe end-user UI contains only customer branding.\nText streams progressively. Expired turns re-exchange through the authenticated backend and retry once;\nconsent-bound tool confirmations never replay automatically.\n\nThe Firebase project ID is required because Firebase ID tokens use the project ID as the token audience and\nissuer suffix. The runtime verifies `aud` against the project ID and `iss` against\n`https://securetoken.google.com/<projectId>`.\n\nThe Firebase Web API key and auth domain are public Firebase browser configuration. They let the Noodle\nCloud-hosted bridge initialize Firebase Auth for this customer project; they are not server secrets. Keep\nthem out of source with `variable(...)`, restrict the Firebase key to the expected browser origins and APIs,\nand use `secret(...)` only for credentials that must never reach a browser.\n\nThe `noodleseed_app_api` connector currently points at the NoodleSeed.com dev app surface:\n\n```text\nhttps://dev.noodleseed.com\n```\n\nWhen the customer app moves from `dev.noodleseed.com` to `app.noodleseed.com`, update the connector's\n`noodleseedApiOrigin` constant to the production API origin that serves the same paths.\n\nThe connector uses delegated Firebase customer credentials. During the customer OAuth bridge, Noodle Seed\nverifies the Firebase ID token, stores the Firebase refresh token through the credential broker, and refreshes\na Firebase ID token when the connector calls the NoodleSeed.com app API. The broker then exchanges that ID\ntoken for the app's existing Next.js session cookie. There is no shared `NOODLESEED_APP_API_TOKEN` for this\nexample.\n\nFirebase Auth must list `cloud.noodleseed.dev` as an authorized domain before browser sign-in works in\nproduction.\n\n## Deploy customer-protected to Noodle Seed Cloud\n\n```bash\nnoodle deploy examples/customer-auth/src/server.ts \\\n --org noodleseed \\\n --app customer-auth \\\n --env prod \\\n --access customers\n```\n\nEndpoint:\n\n```text\nhttps://cloud.noodleseed.dev/o/noodleseed/customer-auth/mcp\n```\n\n## MCP Primitives\n\n- Tool `list_my_organizations`: calls `GET /api/organizations` and returns the organizations the signed-in\n customer is a member of. Takes no arguments; the org set is scoped by the verified customer session.\n- Tool `list_org_apps`: calls `GET /api/organizations/{org_id}/apps` for one organization `org_id`.\n\n## Auth boundary\n\nFirebase ID-token verification is handled by Noodle Seed's generic Firebase bridge adapter during OAuth\nissuance. The MCP client receives a Noodle-issued, resource-bound access token marked as a Firebase customer\nidentity; raw Firebase tokens and inbound MCP bearer tokens are never forwarded to tools, connectors,\nwidgets, or downstream systems.\n\nThe connector-backed tools use the credential broker to turn the signed-in Firebase customer session into the\nsame session-cookie credential that the existing NoodleSeed.com Next.js API already expects. The inbound MCP\nbearer token is never used as an app API credential.\n" },
53
53
  { relPath: "examples/customer-auth/noodle.json", content: "{\n \"entrypoint\": \"src/server.ts\",\n \"name\": \"customer-auth\"\n}\n" },
54
54
  { relPath: "examples/customer-auth/package.json", content: "{\n \"name\": \"customer-auth\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"vitest run\",\n \"validate\": \"noodle validate\",\n \"dev\": \"noodle dev\",\n \"deploy\": \"noodle deploy\"\n },\n \"devDependencies\": {\n \"@noodleseed/one\": \"latest\",\n \"vitest\": \"latest\"\n }\n}\n" },
55
55
  { relPath: "examples/customer-auth/src/server.ts", content: "import {\n annotations,\n connector,\n customerAuth,\n embeddedAssistant,\n openAICompatible,\n secret,\n server,\n tool,\n variable,\n z,\n} from '@noodleseed/one';\n\nconst noodleseedApiOrigin = 'https://dev.noodleseed.com';\n\nconst noodleseedApi = connector('noodleseed_app_api')\n .version('1.0.0')\n .http({\n baseUrl: noodleseedApiOrigin,\n allowedOrigins: [noodleseedApiOrigin],\n auth: {\n kind: 'delegatedSessionCookie',\n provider: 'firebase',\n sessionUrl: `${noodleseedApiOrigin}/api/auth/session`,\n tokenField: 'idToken',\n },\n operations: {\n list_org_apps: {\n type: 'read',\n method: 'GET',\n path: '/api/organizations/${args.org_id}/apps',\n query: ['skip', 'limit'],\n input: z.object({\n org_id: z.string(),\n skip: z.number().optional(),\n limit: z.number().optional(),\n }),\n output: z.object({ result: z.unknown().optional() }),\n response: {\n result: '${response}',\n },\n },\n list_organizations: {\n type: 'read',\n method: 'GET',\n path: '/api/organizations',\n output: z.object({ organizations: z.array(z.unknown()).optional() }),\n response: {\n organizations: '${response.organizations}',\n },\n },\n },\n });\n\nexport default server(\n 'noodleseed_customer_auth',\n {\n title: 'NoodleSeed.com Customer Auth',\n version: '1.0.0',\n branding: {\n name: 'Noodle Seed Assistant',\n accent: '#E85D24',\n surface: '#FFFFFF',\n surfaceDark: '#171310',\n colorScheme: 'auto',\n theme: {\n light: { accentText: '#FFFFFF', text: '#1C1714' },\n dark: { accent: '#FF8A4C', accentText: '#1C100A', text: '#FFF8F2' },\n },\n },\n use: { app_api: noodleseedApi },\n auth: customerAuth.firebase({\n projectId: variable('FIREBASE_PROJECT_ID'),\n apiKey: variable('FIREBASE_WEB_API_KEY'),\n authDomain: variable('FIREBASE_AUTH_DOMAIN'),\n user: {\n id: 'sub',\n email: 'email',\n name: 'name',\n tenant: 'firebase.tenant',\n orgs: 'claims.orgs',\n roles: 'claims.roles',\n },\n }),\n instructions:\n 'Customer-authenticated demo. Firebase proves the customer identity, while read-only NoodleSeed.com API calls use broker-managed delegated Firebase customer credentials.',\n assistant: embeddedAssistant({\n model: openAICompatible({\n baseUrl: variable('ASSISTANT_MODEL_BASE_URL'),\n model: variable('ASSISTANT_MODEL'),\n apiKey: secret('ASSISTANT_MODEL_API_KEY'),\n }),\n // Production origins are exact HTTPS; http://localhost:<port> is allowed for local development.\n allowedOrigins: [\n 'https://app.noodleseed.com',\n 'https://dev.noodleseed.com',\n 'http://localhost:3000',\n ],\n layout: { mode: 'floating', position: 'bottom-right', panelWidth: 420 },\n labels: {\n welcomeHeading: 'How can I help with Noodle Seed?',\n composerPlaceholder: 'Ask about your apps…',\n },\n presentation: {\n panel: { surface: 'glass', elevation: 'soft', border: 'subtle' },\n launcher: { icon: 'brand-mark', status: 'session', effect: 'pulse' },\n header: {\n mark: 'status',\n badge: { text: 'Workspace online', tone: 'success', indicator: true },\n },\n composer: { leadingIcon: 'brand-mark', shape: 'pill' },\n },\n suggestedPrompts: ['Show my organizations', 'List the apps in my organization'],\n }),\n },\n [\n tool('list_org_apps', {\n title: 'List organization apps',\n description: 'List NoodleSeed.com apps for an organization from the dev app API.',\n input: z.object({\n org_id: z.string().meta({ title: 'Organization' }),\n skip: z.number().int().min(0).optional().meta({ title: 'Starting item' }),\n limit: z.number().int().min(1).max(100).optional().meta({ title: 'Maximum results' }),\n }),\n output: z.object({\n result: z.unknown(),\n }),\n annotations: annotations.readOnly(),\n fulfil({ input, connectors }) {\n const apps = connectors.app_api.listOrgApps({\n org_id: input.org_id,\n skip: input.skip,\n limit: input.limit,\n });\n return {\n result: apps.result,\n };\n },\n }),\n tool('list_my_organizations', {\n title: 'List my organizations',\n description: 'List the NoodleSeed.com organizations the signed-in customer belongs to.',\n contextProvider: true,\n input: z.object({}),\n // The dev app API returns every organization for the signed-in customer in one response, with no\n // page parameter to pass through, so the bound is declared on the shape. A customer belongs to a\n // handful of organizations; `noodle check` reports an unbounded list as\n // `tool_design_output_bounds`.\n output: z.object({\n organizations: z.array(z.unknown()).max(100),\n }),\n annotations: annotations.readOnly(),\n fulfil({ connectors }) {\n const organizations = connectors.app_api.listOrganizations();\n return {\n organizations: organizations.organizations,\n };\n },\n }),\n ],\n);\n" },
56
- { relPath: "examples/customer-auth/test/server.test.ts", content: "import { describe, expect, it } from 'vitest';\nimport app from '../src/server.js';\n\ndescribe('customer-auth example', () => {\n it('exports a customer-authenticated, customer-branded embedded assistant', async () => {\n expect(typeof app.toManifest).toBe('function');\n const manifest = await app.toManifest();\n expect(manifest.server.assistant).toMatchObject({\n model: { kind: 'openai-compatible', apiKey: 'ASSISTANT_MODEL_API_KEY' },\n layout: { mode: 'floating' },\n presentation: {\n panel: { surface: 'glass', elevation: 'soft', border: 'subtle' },\n launcher: { icon: 'brand-mark', status: 'session', effect: 'pulse' },\n header: { mark: 'status', badge: { text: 'Workspace online', tone: 'success' } },\n },\n });\n expect(\n manifest.server.assistant?.allowedOrigins.every(\n (origin) => origin.startsWith('https://') || origin.startsWith('http://localhost:'),\n ),\n ).toBe(true);\n expect(manifest.server.branding).toMatchObject({\n name: 'Noodle Seed Assistant',\n colorScheme: 'auto',\n });\n expect(manifest.server.auth).toMatchObject({\n projectId: '${env.FIREBASE_PROJECT_ID}',\n apiKey: '${env.FIREBASE_WEB_API_KEY}',\n authDomain: '${env.FIREBASE_AUTH_DOMAIN}',\n });\n });\n});\n" },
56
+ { relPath: "examples/customer-auth/test/server.test.ts", content: "import { describe, expect, it } from 'vitest';\nimport app from '../src/server.js';\n\ndescribe('customer-auth example', () => {\n it('exports a customer-authenticated, customer-branded embedded assistant', async () => {\n expect(typeof app.toManifest).toBe('function');\n const manifest = await app.toManifest();\n expect(manifest.server.assistant).toMatchObject({\n model: { kind: 'openai-compatible', apiKey: 'ASSISTANT_MODEL_API_KEY' },\n layout: { mode: 'floating' },\n presentation: {\n panel: { surface: 'glass', elevation: 'soft', border: 'subtle' },\n launcher: { icon: 'brand-mark', status: 'session', effect: 'pulse' },\n header: { mark: 'status', badge: { text: 'Workspace online', tone: 'success' } },\n },\n });\n expect(\n manifest.server.assistant?.allowedOrigins.every(\n (origin) => origin.startsWith('https://') || origin.startsWith('http://localhost:'),\n ),\n ).toBe(true);\n expect(manifest.server.branding).toMatchObject({\n name: 'Noodle Seed Assistant',\n colorScheme: 'auto',\n });\n expect(manifest.server.auth).toMatchObject({\n kind: 'bridge',\n provider: 'firebase',\n projectId: '${env.FIREBASE_PROJECT_ID}',\n apiKey: '${env.FIREBASE_WEB_API_KEY}',\n authDomain: '${env.FIREBASE_AUTH_DOMAIN}',\n });\n });\n});\n" },
57
57
  { relPath: "examples/food-ordering/README.md", content: "# Food Ordering\n\n**Owns:** The flagship consumer ordering MCP App example: React view authoring, app-only helper tools,\ncaller-scoped cart state handles, invocation context, model-visible widget state/lifecycle, packaged image\nassets, portable structured elicitation, checkout handoff policy, host actions, CSP/permissions metadata,\nand widget preview coverage.\n\nFood Ordering is a generic, synthetic version of a live marketplace ordering app. It lets a user search\nstores, browse menus, customize an item, build a multi-line cart, review the order, and hand off checkout to\nan allowlisted example domain. It does not use real restaurant APIs, real checkout, customer credentials, or\nprivate customer data.\n\n## What It Shows\n\n| Capability | Example |\n| :--- | :--- |\n| Public entry tool | `open_ordering` returns structured fallback content and renders the React widget |\n| App-only helper tools | `search_stores`, `load_menu`, `load_item`, `read_cart`, `sync_cart`, `prepare_checkout`; mutating widget-owned helpers use `confirm: false` (equivalent to omission) and execute directly because action hints alone never gate |\n| Durable cart state | `server(..., { state: { handles: { cart } }, use: { state } })` with caller scope and revision checks |\n| React app runtime kit | `@noodleseed/one/react` supplies app flow, shell/nav/view, async state, form, quantity, choice, and handoff primitives |\n| Multi-step widget flow | One React shell navigates stores, menu, item customization, cart, review, and handoff views through `useAppFlow` |\n| Invocation context | `server.context` sets locale/time-zone defaults, derives an ambient service area/date, and makes the same snapshot available to tools and the reserved `noodle_context` MCP adapter |\n| Structured missing input | `plan_order` uses `ctx.elicit` to collect a fulfilment method and date through embedded/headless forms, standard bidirectional elicitation, a linked MCP App form, or an exact structured conversational retry on stateless hosts |\n| Model-visible widget state | `useUpdateModelContext` publishes one cohesive replacement snapshot when supported; `useWidgetLifecycle` auto-publishes mounted/cancelled/dismissed and reports author-owned submitted milestones for future context (not host-presentation proof), while the user-triggered submit pairs `useSendFollowUpMessage` for an immediate reply |\n| Handoff | `handoff.allowedDomains` allows only `https://orders.example.com` checkout URLs |\n| Progressive enhancement | Non-Apps hosts still receive stores, featured items, and a readable fallback summary |\n| Fail-closed hydration | The React view treats only the unhydrated, pre-result `{}` envelope as pending; a hydrated empty success remains distinct. It surfaces `isError`, validates required records and identifiers, and withholds ordering actions from malformed results |\n\nThe example is intentionally richer than the generated starter, but each inline view still follows the\nsame default: one immediate purpose, one primary action, at most one subordinate action, and progressive\ndisclosure for the rest. Preview it at 280px before adding navigation or local CSS; loading, empty, stale,\nerror/retry, and success states must remain readable without nested vertical scrolling.\n\nLike the comprehensive default `noodle init my-app` scaffold, this flagship keeps the server feature-rich\nwhile making each individual widget view focused; server capability breadth and screen density are separate.\nThe compiled initial widget should normally remain under the 1 MiB performance recommendation; Noodle Seed's\nhard ceilings are 10 MiB per compiled widget and 20 MiB across one deployment. Run `noodle check` to see raw\nand gzip-estimated sizes. Deploy requests are gzip-compressed as one stream so repeated self-contained React\nruntime bytes deduplicate on the wire without a cross-tenant CDN. Keep menu images or large live datasets in assets/resources and app-only tools\nrather than embedding them into the initial HTML bundle.\n\n## Local Author Loop\n\n```sh\nnoodle validate\nnoodle test\nnoodle dev\n```\n\nIn another terminal:\n\n```sh\nnoodle tools list\nnoodle tools call open_ordering --args '{\"customer\":\"Asha\",\"query\":\"noodles\"}'\nnoodle tools call summarize_ordering_options --args '{}'\n```\n\nFor Apps metadata conformance, start `noodle dev`, copy the loopback MCP endpoint, then run:\n\n```sh\nnpx @mcpjam/cli@latest apps conformance --url http://127.0.0.1:<port>/o/demo/food-ordering/mcp --quiet --format json\n```\n\n## Client Setup\n\nUse the CLI to print the exact setup flow for your MCP client:\n\n```sh\nnoodle connect claude\nnoodle connect chatgpt\nnoodle connect inspector\n```\n\n## Deploy\n\n```sh\nnoodle link --org demo --app food-ordering\nnoodle deploy --access owner-only\nnoodle open\n```\n\nUse `--access org-members` for an org-wide internal demo. This example has no connector secrets and does not\ninclude tokens, caller-key mechanisms, or `.env.noodle` values.\n\n## Demo Assets\n\nThe packaged demo images live under `assets/` and are public web assets when deployed. The current app uses\n`assets/noodle-bowl.jpg` as the server branding image.\n\nImage sources:\n\n- `assets/noodle-bowl.jpg` — Unsplash photo\n [`IRv8V9Hb8gI`](https://unsplash.com/photos/IRv8V9Hb8gI), downloaded from Unsplash.\n- `assets/lentil-soup.jpg` — Unsplash image\n [`photo-1510431198580-7727c9fa1e3a`](https://images.unsplash.com/photo-1510431198580-7727c9fa1e3a), downloaded from Unsplash.\n- `assets/mint-lemonade.jpg` — Unsplash photo\n [`X7Nx327NtuA`](https://unsplash.com/photos/X7Nx327NtuA) by Imad 786.\n\nUnsplash photos are free to use under the [Unsplash License](https://unsplash.com/license); attribution is\nnot required, but source notes are kept here for provenance.\n" },
58
58
  { relPath: "examples/food-ordering/noodle.json", content: "{\n \"entrypoint\": \"src/server.ts\",\n \"name\": \"food-ordering\",\n \"template\": \"widget\"\n}\n" },
59
59
  { relPath: "examples/food-ordering/package.json", content: "{\n \"name\": \"food-ordering\",\n \"version\": \"0.1.0\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"vitest run test\",\n \"validate\": \"noodle validate\",\n \"dev\": \"noodle dev\",\n \"deploy\": \"noodle deploy\"\n },\n \"devDependencies\": {\n \"@vitejs/plugin-react\": \"latest\",\n \"@noodleseed/one\": \"latest\",\n \"@types/react\": \"latest\",\n \"@types/react-dom\": \"latest\",\n \"react\": \"latest\",\n \"react-dom\": \"latest\",\n \"vite\": \"latest\",\n \"vitest\": \"latest\"\n }\n}\n" },
@@ -1 +1 @@
1
- {"version":3,"file":"example-files.js","sourceRoot":"","sources":["../../src/generated/example-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example-files.js","sourceRoot":"","sources":["../../src/generated/example-files.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-embedded-assistant-ref.d.ts","sourceRoot":"","sources":["../src/skill-embedded-assistant-ref.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,wBAAgB,gCAAgC,IAAI,MAAM,CA4hBzD"}
1
+ {"version":3,"file":"skill-embedded-assistant-ref.d.ts","sourceRoot":"","sources":["../src/skill-embedded-assistant-ref.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,wBAAgB,gCAAgC,IAAI,MAAM,CA8hBzD"}
@@ -113,7 +113,9 @@ export function renderEmbeddedAssistantReference() {
113
113
  '',
114
114
  '## Access modes and customer auth',
115
115
  '',
116
- 'Session exchange authenticates with the backend client credentials, so the embed works under any `--access` mode. Add `--access customers` only when verified end customers should also call the MCP endpoint directly. That mode requires `server.auth`; `noodle deploy` preflights the rule locally and fails with `server_auth_required` before contacting the service. Fix by adding auth to server options:',
116
+ 'Session exchange authenticates with the backend client credentials, so the embed works under any `--access` mode. The assistant does not select direct MCP access or protected-resource discovery. If protected-resource metadata advertises an unexpected issuer, inspect the exact active deployment before changing auth by following `references/troubleshooting.md`.',
117
+ '',
118
+ 'Add `--access customers` only when verified end customers should also call the MCP endpoint directly. That mode requires `server.auth`; `noodle deploy` preflights the rule locally and fails with `server_auth_required` before contacting the service. Fix by adding auth to server options:',
117
119
  '',
118
120
  '```ts',
119
121
  'auth: customerAuth.federatedOidc({',
@@ -1 +1 @@
1
- {"version":3,"file":"skill-embedded-assistant-ref.js","sourceRoot":"","sources":["../src/skill-embedded-assistant-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-embedded-assistant-ref.js","sourceRoot":"","sources":["../src/skill-embedded-assistant-ref.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-operations-refs.d.ts","sourceRoot":"","sources":["../src/skill-operations-refs.ts"],"names":[],"mappings":"AAUA,wBAAgB,0BAA0B,IAAI,MAAM,CA0CnD;AAMD,wBAAgB,8BAA8B,IAAI,MAAM,CAgGvD;AAMD,wBAAgB,4BAA4B,IAAI,MAAM,CA6BrD;AAMD,wBAAgB,2BAA2B,IAAI,MAAM,CA4BpD;AAMD,wBAAgB,yBAAyB,IAAI,MAAM,CAgClD;AAMD,wBAAgB,qCAAqC,IAAI,MAAM,CA8D9D"}
1
+ {"version":3,"file":"skill-operations-refs.d.ts","sourceRoot":"","sources":["../src/skill-operations-refs.ts"],"names":[],"mappings":"AAUA,wBAAgB,0BAA0B,IAAI,MAAM,CA0CnD;AAMD,wBAAgB,8BAA8B,IAAI,MAAM,CAuGvD;AAMD,wBAAgB,4BAA4B,IAAI,MAAM,CA6BrD;AAMD,wBAAgB,2BAA2B,IAAI,MAAM,CA4BpD;AAMD,wBAAgB,yBAAyB,IAAI,MAAM,CAgClD;AAMD,wBAAgB,qCAAqC,IAAI,MAAM,CA8D9D"}
@@ -136,6 +136,7 @@ export function renderTroubleshootingReference() {
136
136
  '## Contents',
137
137
  '',
138
138
  '- First moves',
139
+ '- Customer-auth metadata',
139
140
  '- Symptom map',
140
141
  '',
141
142
  '## First moves',
@@ -144,6 +145,12 @@ export function renderTroubleshootingReference() {
144
145
  '',
145
146
  'For protocol/conformance checks, the headless harness is `@mcpjam/cli`, not a `noodle` subcommand. Use it against a local `noodle dev` URL without an access token, or against hosted URLs through the host/OAuth flow printed by `noodle connect`.',
146
147
  '',
148
+ '## Customer-auth metadata',
149
+ '',
150
+ 'Adding `embeddedAssistant(...)` does not select the MCP access mode or authorization server. Before changing auth, inspect the exact active deployment with `noodle deployments list --org <org> --app <app> --env <env> --json` and match its active deployment ID, server version, and access mode to the endpoint being tested.',
151
+ '',
152
+ 'For `customers` access, Direct or federated customer auth must advertise the configured tenant issuer; a managed Noodle bridge must advertise the Noodle authorization server. Owner-only access advertises the platform authorization server. If a direct or federated `customers` deployment still advertises the platform issuer, treat it as `customer_auth_state_inconsistent` and escalate with the endpoint, active deployment ID, and sanitized protected-resource metadata. Do not proxy, rewrite, rotate, or redeploy to hide the mismatch. Never share bearer tokens, refresh tokens, client secrets, or credential files.',
153
+ '',
147
154
  '## Symptom map',
148
155
  '',
149
156
  mdTable(['Symptom', 'Likely cause', 'Fix'], rows),
@@ -1 +1 @@
1
- {"version":3,"file":"skill-operations-refs.js","sourceRoot":"","sources":["../src/skill-operations-refs.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,+FAA+F;AAC/F,oFAAoF;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AAEvE,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,sBAAsB;QACtB,EAAE;QACF,2LAA2L;QAC3L,EAAE;QACF,aAAa;QACb,EAAE;QACF,0BAA0B;QAC1B,6CAA6C;QAC7C,4BAA4B;QAC5B,UAAU;QACV,iCAAiC;QACjC,kBAAkB;QAClB,EAAE;QACF,2BAA2B;QAC3B,EAAE;QACF,6OAA6O;QAC7O,EAAE;QACF,8CAA8C;QAC9C,EAAE;QACF,sXAAsX;QACtX,EAAE;QACF,6BAA6B;QAC7B,EAAE;QACF,sIAAsI;QACtI,gIAAgI;QAChI,sJAAsJ;QACtJ,6GAA6G;QAC7G,EAAE;QACF,WAAW;QACX,EAAE;QACF,wPAAwP;QACxP,EAAE;QACF,kCAAkC;QAClC,EAAE;QACF,2QAA2Q;QAC3Q,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,uZAAuZ;KACxZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,MAAM,UAAU,8BAA8B;IAC5C,MAAM,IAAI,GAAqD;QAC7D;YACE,uDAAuD;YACvD,yEAAyE;YACzE,yLAAyL;SAC1L;QACD;YACE,uCAAuC;YACvC,8BAA8B;YAC9B,4DAA4D;SAC7D;QACD;YACE,0CAA0C;YAC1C,+DAA+D;YAC/D,qEAAqE;SACtE;QACD;YACE,wDAAwD;YACxD,8EAA8E;YAC9E,uHAAuH;SACxH;QACD;YACE,qCAAqC;YACrC,oEAAoE;YACpE,8HAA8H;SAC/H;QACD;YACE,oCAAoC;YACpC,4EAA4E;YAC5E,2IAA2I;SAC5I;QACD;YACE,qCAAqC;YACrC,yDAAyD;YACzD,kFAAkF;SACnF;QACD;YACE,2EAA2E;YAC3E,2HAA2H;YAC3H,kGAAkG;SACnG;QACD;YACE,uCAAuC;YACvC,8EAA8E;YAC9E,iHAAiH;SAClH;QACD;YACE,+BAA+B;YAC/B,6EAA6E;YAC7E,0JAA0J;SAC3J;QACD;YACE,+EAA+E;YAC/E,2LAA2L;YAC3L,iQAAiQ;SAClQ;QACD;YACE,8FAA8F;YAC9F,yJAAyJ;YACzJ,mJAAmJ;SACpJ;QACD;YACE,8FAA8F;YAC9F,+KAA+K;YAC/K,wSAAwS;SACzS;QACD;YACE,yCAAyC;YACzC,gIAAgI;YAChI,8VAA8V;SAC/V;QACD;YACE,6DAA6D;YAC7D,wFAAwF;YACxF,+MAA+M;SAChN;KACF,CAAC;IACF,OAAO;QACL,4BAA4B;QAC5B,EAAE;QACF,aAAa;QACb,EAAE;QACF,eAAe;QACf,eAAe;QACf,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,+cAA+c;QAC/c,EAAE;QACF,qPAAqP;QACrP,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,OAAO,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,wBAAwB;QACxB,EAAE;QACF,+HAA+H;QAC/H,EAAE;QACF,aAAa;QACb,EAAE;QACF,sHAAsH;QACtH,6FAA6F;QAC7F,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,yVAAyV;QACzV,EAAE;QACF,aAAa;QACb,EAAE;QACF,gKAAgK;QAChK,gNAAgN;QAChN,iMAAiM;QACjM,8LAA8L;QAC9L,sLAAsL;QACtL,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,uHAAuH;QACvH,yIAAyI;QACzI,0IAA0I;KAC3I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,iCAAiC;QACjC,EAAE;QACF,+IAA+I;QAC/I,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,4EAA4E;QAC5E,sKAAsK;QACtK,oLAAoL;QACpL,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,2UAA2U;QAC3U,EAAE;QACF,4LAA4L;QAC5L,EAAE;QACF,iCAAiC;QACjC,EAAE;QACF,oUAAoU;QACpU,EAAE;QACF,iCAAiC;QACjC,EAAE;QACF,wEAAwE;QACxE,sGAAsG;QACtG,6HAA6H;KAC9H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,8BAA8B;QAC9B,EAAE;QACF,uOAAuO;QACvO,EAAE;QACF,kKAAkK;QAClK,EAAE;QACF,aAAa;QACb,EAAE;QACF,yBAAyB;QACzB,+BAA+B;QAC/B,uBAAuB;QACvB,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,SAAS,kCAAkC,2DAA2D;QACtG,EAAE;QACF,4RAA4R;QAC5R,EAAE;QACF,gCAAgC;QAChC,EAAE;QACF,iXAAiX;QACjX,EAAE;QACF,qLAAqL;QACrL,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,kQAAkQ;KACnQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,MAAM,UAAU,qCAAqC;IACnD,OAAO;QACL,6CAA6C;QAC7C,EAAE;QACF,qGAAqG;QACrG,oGAAoG;QACpG,6CAA6C;QAC7C,EAAE;QACF,aAAa;QACb,EAAE;QACF,uBAAuB;QACvB,sCAAsC;QACtC,sCAAsC;QACtC,iCAAiC;QACjC,4BAA4B;QAC5B,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,qGAAqG;QACrG,sGAAsG;QACtG,qGAAqG;QACrG,EAAE;QACF,uCAAuC;QACvC,EAAE;QACF,wGAAwG;QACxG,wBAAwB;QACxB,uGAAuG;QACvG,0DAA0D;QAC1D,0GAA0G;QAC1G,mDAAmD;QACnD,mGAAmG;QACnG,uDAAuD;QACvD,sGAAsG;QACtG,kDAAkD;QAClD,EAAE;QACF,uCAAuC;QACvC,EAAE;QACF,0GAA0G;QAC1G,6DAA6D;QAC7D,mGAAmG;QACnG,mEAAmE;QACnE,oGAAoG;QACpG,+BAA+B;QAC/B,oGAAoG;QACpG,6DAA6D;QAC7D,EAAE;QACF,kCAAkC;QAClC,EAAE;QACF,qGAAqG;QACrG,+BAA+B;QAC/B,yGAAyG;QACzG,2DAA2D;QAC3D,yGAAyG;QACzG,sBAAsB;QACtB,EAAE;QACF,6BAA6B;QAC7B,EAAE;QACF,yGAAyG;QACzG,sGAAsG;QACtG,wGAAwG;QACxG,wGAAwG;KACzG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"skill-operations-refs.js","sourceRoot":"","sources":["../src/skill-operations-refs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodle-borg/agent-kit",
3
- "version": "0.48.2",
3
+ "version": "0.49.0",
4
4
  "private": true,
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -62,6 +62,21 @@ export declare function configurationBoundPreviewRequest(state: DurableState, ag
62
62
  canaryClientIds: readonly string[];
63
63
  recoveryClientIds: readonly string[];
64
64
  releaseSha: string;
65
+ accelerationApproval: {
66
+ schemaVersion: 1;
67
+ exception: "exact_three_legacy_cutover";
68
+ targetEnvironment: "production";
69
+ releaseSha: string;
70
+ expectedGeneration: number;
71
+ fromPercentage: 1 | 50 | 100 | 10;
72
+ toPercentage: 1 | 50 | 100 | 10;
73
+ approvedAt: string;
74
+ evidence: {
75
+ stageVolumeChecksum: string;
76
+ criticalSmokesChecksum: string;
77
+ rollbackSmokeChecksum: string;
78
+ };
79
+ } | null;
65
80
  };
66
81
  export {};
67
82
  //# sourceMappingURL=platform-auth-configuration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-auth-configuration.d.ts","sourceRoot":"","sources":["../src/platform-auth-configuration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,cAAc,EACf,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,UAAU,yBAAyB;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,MAAM,MAAM,8BAA8B,GACtC;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACzB;IACE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,+BAA+B,GAAG,SAAS,CAAC;CACpE,CAAC;AAEN,iHAAiH;AACjH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wGAAwG;AACxG,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,iCAAiC,EAC1C,UAAU,EAAE,2BAA2B,GAAG,SAAS,GAClD,IAAI,CAiBN;AAED,0GAA0G;AAC1G,wBAAgB,6CAA6C,CAC3D,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,2BAA2B,GAAG,SAAS,EACnD,cAAc,EAAE,MAAM,GACrB,8BAA8B,CAyBhC;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,+BAA+B,GAAG,SAAS;;;;;;;;;;;;;;;;;;;EAM3D"}
1
+ {"version":3,"file":"platform-auth-configuration.d.ts","sourceRoot":"","sources":["../src/platform-auth-configuration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,cAAc,EACf,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,UAAU,yBAAyB;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,MAAM,MAAM,8BAA8B,GACtC;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACzB;IACE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,+BAA+B,GAAG,SAAS,CAAC;CACpE,CAAC;AAEN,iHAAiH;AACjH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wGAAwG;AACxG,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,iCAAiC,EAC1C,UAAU,EAAE,2BAA2B,GAAG,SAAS,GAClD,IAAI,CAiBN;AAED,0GAA0G;AAC1G,wBAAgB,6CAA6C,CAC3D,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,2BAA2B,GAAG,SAAS,EACnD,cAAc,EAAE,MAAM,GACrB,8BAA8B,CAyBhC;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAC3C,aAAa,EAAE,+BAA+B,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform-auth-migration-schema.d.ts","sourceRoot":"","sources":["../src/platform-auth-migration-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,KAAK,gBAAgB,GAAG,yBAAyB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAC7E,KAAK,UAAU,GAAG,yBAAyB,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3C,CAAC;AA0BF,gFAAgF;AAChF,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA4Qf;AAED;;;;GAIG;AACH,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGxF"}
1
+ {"version":3,"file":"platform-auth-migration-schema.d.ts","sourceRoot":"","sources":["../src/platform-auth-migration-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,KAAK,gBAAgB,GAAG,yBAAyB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAC7E,KAAK,UAAU,GAAG,yBAAyB,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3C,CAAC;AA0BF,gFAAgF;AAChF,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Qf;AAED;;;;GAIG;AACH,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGxF"}
@@ -1,5 +1,6 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { ensurePlatformAuthInventorySourceFenceSchema } from './platform-auth-inventory-source-fence-postgres.js';
3
+ import { ensurePlatformAuthRolloutAccelerationSchema } from './platform-auth-rollout-acceleration-schema.js';
3
4
  /** Additive Task 3 storage kept separate from the canonical identity schema. */
4
5
  export async function ensurePlatformAuthMigrationSchema(pool) {
5
6
  await pool.query(`
@@ -269,6 +270,7 @@ export async function ensurePlatformAuthMigrationSchema(pool) {
269
270
  ADD COLUMN IF NOT EXISTS staging_workos_only_smoke_checksum text
270
271
  CHECK (staging_workos_only_smoke_checksum IS NULL OR staging_workos_only_smoke_checksum ~ '^[0-9a-f]{64}$')
271
272
  `);
273
+ await ensurePlatformAuthRolloutAccelerationSchema(pool);
272
274
  }
273
275
  /**
274
276
  * Upgrades the rollout clock and frozen inventory shape shipped by preceding releases. Original inventory
@@ -1 +1 @@
1
- {"version":3,"file":"platform-auth-migration-schema.js","sourceRoot":"","sources":["../src/platform-auth-migration-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-auth-migration-schema.js","sourceRoot":"","sources":["../src/platform-auth-migration-schema.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PlatformAuthExecuteInput, PlatformAuthOperationPreview, PlatformAuthOperatorSnapshot, PlatformAuthPreviewRequest } from './platform-auth-operator.js';
2
+ import type { PlatformAuthRolloutAccelerationApproval } from './platform-auth-rollout-acceleration.js';
2
3
  export type PlatformAuthOperatorRolloutTarget = {
3
4
  readonly cohortMode: 'preserve';
4
5
  } | {
@@ -28,7 +29,15 @@ export declare function platformAuthFinalizationEvidence(input: Extract<Platform
28
29
  readonly rollbackRehearsalChecksum: string;
29
30
  readonly stagingWorkosOnlySmokeChecksum: string;
30
31
  } | {
31
- readonly operation: 'activate' | 'rollback';
32
+ readonly operation: 'activate';
33
+ readonly accelerationApproval?: PlatformAuthRolloutAccelerationApproval;
34
+ } | {
35
+ readonly operation: 'rollback';
36
+ };
37
+ export declare function platformAuthRolloutAcceleration(input: Extract<PlatformAuthPreviewRequest | PlatformAuthExecuteInput, {
38
+ operation: 'activate';
39
+ }>): {
40
+ readonly accelerationApproval?: PlatformAuthRolloutAccelerationApproval;
32
41
  };
33
42
  export declare function platformAuthExecutionPreviewRequest(input: Extract<PlatformAuthExecuteInput, {
34
43
  readonly operation: 'activate' | 'rollback' | 'finalize';
@@ -1 +1 @@
1
- {"version":3,"file":"platform-auth-operator-rollout.d.ts","sourceRoot":"","sources":["../src/platform-auth-operator-rollout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAGrC,MAAM,MAAM,iCAAiC,GACzC;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACnC;IACE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C,CAAC;AAEN,eAAO,MAAM,4CAA4C,QAA4B,CAAC;AAEtF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,4BAA4B,EACtC,GAAG,OAAa,GACf,4BAA4B,CAAC,UAAU,CAAC,CAuD1C;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC/C,4BAA4B,CAAC,QAAQ,CAAC,CA8CxC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACJ,iCAAiC,CAQnC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACJ,MAAM,CAMR;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GAEH;IACE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC;CACjD,GACD;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAAA;CAAE,CAQlD;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,CACZ,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACA,0BAA0B,CA0B5B"}
1
+ {"version":3,"file":"platform-auth-operator-rollout.d.ts","sourceRoot":"","sources":["../src/platform-auth-operator-rollout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,yCAAyC,CAAC;AAEvG,MAAM,MAAM,iCAAiC,GACzC;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACnC;IACE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C,CAAC;AAEN,eAAO,MAAM,4CAA4C,QAA4B,CAAC;AAEtF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,4BAA4B,EACtC,GAAG,OAAa,GACf,4BAA4B,CAAC,UAAU,CAAC,CAuD1C;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC/C,4BAA4B,CAAC,QAAQ,CAAC,CA8CxC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACJ,iCAAiC,CAQnC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACJ,MAAM,CAMR;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EACD,OAAO,CACL,0BAA0B,EAC1B;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACD,OAAO,CACL,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GAEH;IACE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC;CACjD,GACD;IACE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,uCAAuC,CAAC;CACzE,GACD;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;CAAE,CAWrC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,CAAC,0BAA0B,GAAG,wBAAwB,EAAE;IAAE,SAAS,EAAE,UAAU,CAAA;CAAE,CAAC,GAC/F;IACD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,uCAAuC,CAAC;CACzE,CAIA;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,CACZ,wBAAwB,EACxB;IAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAAE,CAC7D,GACA,0BAA0B,CA4B5B"}
@@ -115,14 +115,22 @@ export function platformAuthRolloutPercentage(input) {
115
115
  : 100;
116
116
  }
117
117
  export function platformAuthFinalizationEvidence(input) {
118
- return input.operation === 'finalize'
119
- ? {
118
+ if (input.operation === 'finalize') {
119
+ return {
120
120
  operation: input.operation,
121
121
  rollbackRehearsalChecksum: input.rollbackRehearsalChecksum,
122
122
  stagingWorkosOnlySmokeChecksum: input.stagingWorkosOnlySmokeChecksum,
123
- }
123
+ };
124
+ }
125
+ return input.operation === 'activate'
126
+ ? { operation: input.operation, ...platformAuthRolloutAcceleration(input) }
124
127
  : { operation: input.operation };
125
128
  }
129
+ export function platformAuthRolloutAcceleration(input) {
130
+ return input.accelerationApproval !== undefined
131
+ ? { accelerationApproval: input.accelerationApproval }
132
+ : {};
133
+ }
126
134
  export function platformAuthExecutionPreviewRequest(input) {
127
135
  if (input.operation === 'activate') {
128
136
  return input.cohortMode === 'replace'
@@ -131,6 +139,7 @@ export function platformAuthExecutionPreviewRequest(input) {
131
139
  operation: input.operation,
132
140
  percentage: input.percentage,
133
141
  cohortMode: input.cohortMode,
142
+ ...platformAuthRolloutAcceleration(input),
134
143
  canaryClientIds: [...input.canaryClientIds],
135
144
  recoveryClientIds: [...input.recoveryClientIds],
136
145
  }
@@ -139,6 +148,7 @@ export function platformAuthExecutionPreviewRequest(input) {
139
148
  operation: input.operation,
140
149
  percentage: input.percentage,
141
150
  cohortMode: input.cohortMode,
151
+ ...platformAuthRolloutAcceleration(input),
142
152
  };
143
153
  }
144
154
  return input.operation === 'finalize'
@@ -1 +1 @@
1
- {"version":3,"file":"platform-auth-operator-rollout.js","sourceRoot":"","sources":["../src/platform-auth-operator-rollout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-auth-operator-rollout.js","sourceRoot":"","sources":["../src/platform-auth-operator-rollout.ts"],"names":[],"mappings":"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"}