@noodleseed/one 0.41.0 → 0.42.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 (199) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +4 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth-ops.d.ts +1 -1
  5. package/dist/commands/auth-ops.d.ts.map +1 -1
  6. package/dist/commands/auth-ops.js +167 -34
  7. package/dist/commands/auth-ops.js.map +1 -1
  8. package/dist/commands/catalog-data-core.d.ts.map +1 -1
  9. package/dist/commands/catalog-data-core.js +27 -4
  10. package/dist/commands/catalog-data-core.js.map +1 -1
  11. package/dist/commands/deploy-ops.js +1 -1
  12. package/dist/commands/deploy-ops.js.map +1 -1
  13. package/dist/commands/features.d.ts +2 -0
  14. package/dist/commands/features.d.ts.map +1 -0
  15. package/dist/commands/features.js +25 -0
  16. package/dist/commands/features.js.map +1 -0
  17. package/dist/commands/mcp-apps.js +1 -1
  18. package/dist/commands/mcp-apps.js.map +1 -1
  19. package/dist/commands/project-setup.d.ts.map +1 -1
  20. package/dist/commands/project-setup.js +4 -4
  21. package/dist/commands/project-setup.js.map +1 -1
  22. package/dist/deploy.d.ts.map +1 -1
  23. package/dist/deploy.js +1 -0
  24. package/dist/deploy.js.map +1 -1
  25. package/dist/project.d.ts +1 -1
  26. package/dist/project.d.ts.map +1 -1
  27. package/dist/project.js +11 -8
  28. package/dist/project.js.map +1 -1
  29. package/dist/saas-scaffold-template.d.ts +4 -0
  30. package/dist/saas-scaffold-template.d.ts.map +1 -0
  31. package/dist/saas-scaffold-template.js +37 -0
  32. package/dist/saas-scaffold-template.js.map +1 -0
  33. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  34. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +5 -1
  35. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  36. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  37. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +2 -1
  38. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  39. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +2 -2
  40. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  41. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +2 -0
  43. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  44. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +5 -5
  45. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  46. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  47. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +9 -7
  48. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  49. package/node_modules/@noodle-borg/auth/dist/discovery.d.ts +8 -0
  50. package/node_modules/@noodle-borg/auth/dist/discovery.d.ts.map +1 -0
  51. package/node_modules/@noodle-borg/auth/dist/discovery.js +19 -0
  52. package/node_modules/@noodle-borg/auth/dist/discovery.js.map +1 -0
  53. package/node_modules/@noodle-borg/auth/dist/index.d.ts +1 -0
  54. package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -1
  55. package/node_modules/@noodle-borg/auth/dist/index.js +1 -0
  56. package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -1
  57. package/node_modules/@noodle-borg/authoring/dist/context.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/authoring/dist/context.js +0 -3
  59. package/node_modules/@noodle-borg/authoring/dist/context.js.map +1 -1
  60. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts +11 -7
  61. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts.map +1 -1
  62. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js +7 -7
  63. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js.map +1 -1
  64. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -1
  65. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/authoring/dist/index.js +1 -1
  67. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  68. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +2 -0
  69. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  70. package/node_modules/@noodle-borg/authoring/dist/server.js +19 -3
  71. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  72. package/node_modules/@noodle-borg/capabilities/dist/index.d.ts +12 -0
  73. package/node_modules/@noodle-borg/capabilities/dist/index.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/capabilities/dist/index.js +91 -0
  75. package/node_modules/@noodle-borg/capabilities/dist/index.js.map +1 -1
  76. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +13 -1
  77. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
  78. package/node_modules/@noodle-borg/compiler/dist/assets.js.map +1 -1
  79. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  80. package/node_modules/@noodle-borg/compiler/dist/compile.js +57 -2
  81. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  82. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  83. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
  84. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +1434 -29
  85. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  86. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +43 -8
  87. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  88. package/node_modules/@noodle-borg/protocol/dist/context-tool.d.ts.map +1 -1
  89. package/node_modules/@noodle-borg/protocol/dist/context-tool.js +3 -1
  90. package/node_modules/@noodle-borg/protocol/dist/context-tool.js.map +1 -1
  91. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -0
  92. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
  93. package/node_modules/@noodle-borg/protocol/dist/index.js +1 -0
  94. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
  95. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
  96. package/node_modules/@noodle-borg/protocol/dist/mapping.js +24 -1
  97. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
  98. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +30 -0
  99. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -1
  100. package/node_modules/@noodle-borg/runtime/dist/broker/types.js +18 -1
  101. package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -1
  102. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +1 -1
  103. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/runtime/dist/execute.js +14 -3
  105. package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -1
  106. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +1 -1
  107. package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/runtime/dist/index.js +1 -0
  109. package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -1
  110. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +6 -0
  111. package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -1
  112. package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -1
  113. package/node_modules/@noodle-borg/service/dist/assistant-view-availability.d.ts +9 -3
  114. package/node_modules/@noodle-borg/service/dist/assistant-view-availability.d.ts.map +1 -1
  115. package/node_modules/@noodle-borg/service/dist/assistant-view-availability.js +17 -3
  116. package/node_modules/@noodle-borg/service/dist/assistant-view-availability.js.map +1 -1
  117. package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts +2 -1
  118. package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts.map +1 -1
  119. package/node_modules/@noodle-borg/service/dist/credential-broker.js +75 -10
  120. package/node_modules/@noodle-borg/service/dist/credential-broker.js.map +1 -1
  121. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +46 -28
  123. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts +1 -1
  125. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts.map +1 -1
  126. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js +18 -5
  127. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js.map +1 -1
  128. package/node_modules/@noodle-borg/service/dist/github/deploy-pipeline.d.ts.map +1 -1
  129. package/node_modules/@noodle-borg/service/dist/github/deploy-pipeline.js +1 -0
  130. package/node_modules/@noodle-borg/service/dist/github/deploy-pipeline.js.map +1 -1
  131. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +4 -1
  132. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  133. package/node_modules/@noodle-borg/service/dist/registry-targets.js +16 -0
  134. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  135. package/node_modules/@noodle-borg/service/dist/registry.d.ts +2 -1
  136. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  137. package/node_modules/@noodle-borg/service/dist/registry.js +2 -1
  138. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  139. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts +3 -3
  140. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts.map +1 -1
  141. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +36 -1
  142. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js.map +1 -1
  143. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.d.ts.map +1 -1
  144. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js +6 -2
  145. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js.map +1 -1
  146. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts +2 -0
  147. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  148. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +94 -1
  149. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  150. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.d.ts +17 -0
  151. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.d.ts.map +1 -0
  152. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.js +20 -0
  153. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.js.map +1 -0
  154. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts +12 -0
  155. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts.map +1 -0
  156. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +37 -0
  157. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js.map +1 -0
  158. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +8 -0
  159. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -1
  160. package/node_modules/@noodle-borg/service/dist/routes/contracts.js +1 -0
  161. package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -1
  162. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  163. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +3 -1
  164. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  165. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +2 -1
  166. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  167. package/node_modules/@noodle-borg/service/dist/routes/paths.js +3 -0
  168. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  169. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/service.js +17 -10
  171. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts +3 -0
  173. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +35 -0
  175. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  177. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +8 -0
  178. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  179. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/store/postgres.js +5 -28
  181. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  182. package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/store/records.js +1 -0
  184. package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/store.d.ts +13 -1
  186. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  187. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  188. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +2 -0
  189. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  190. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  191. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +12 -0
  192. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -1
  193. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +21 -0
  194. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -1
  195. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +15 -0
  196. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
  197. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +4 -0
  198. package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
  199. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAsE5D,MAAM,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjD,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAChD,IACE,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,QAAQ,CAAC,GAAG,KAAK,SAAS;QAC1B,QAAQ,CAAC,GAAG,KAAK,SAAS;QAC1B,QAAQ,CAAC,GAAG,KAAK,SAAS;QAC1B,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,QAAQ,CAAC,UAAU,KAAK,SAAS,EACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC;AACD,SAAS,oBAAoB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAyB,CAAC;QAChG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AACD,MAAM,UAAU,uBAAuB,CACrC,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;IACjF,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnE,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC3F,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC/D,MAAM,UAAU,GAAG,aAAa,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAC5F,OAAO,oBAAoB,CACzB,MAAM,CAAC,MAAM,CACX,EAAE,EACF,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EACjE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAC9C,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EACxD,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAChC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAChC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAChC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAC9C,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EACpE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAC9D,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAC/C,CACF,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,IAAI,GAAgB;QACxB,UAAU,EACR,OAAO,CAAC,UAAU;YAClB,kBAAkB,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC;QAC5E,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB;QACrD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY;KAC/C,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,wBAAwB,CAAC,GAAG,EAAE;YAC5B,GAAG,uBAAuB,CAAC,GAAG,CAAC;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,UAAU,wBAAwB,CACtC,GAAW,EACX,MAA2B;IAE3B,MAAM,KAAK,GAAG,2BAA2B,CACvC,oBAAoB,CAAC,MAAM,CAA4B,CACxD,CAAC;IACF,aAAa,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,YAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACnB,CAAC;QAChC,IACE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;YACvC,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACrC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACpC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAChC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,GAAG,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AACD,MAAM,UAAU,sBAAsB,CACpC,UAA6B,EAC7B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACxC,iGAAiG;IACjG,2FAA2F;IAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;QAC1E,gGAAgG;QAChG,6FAA6F;QAC7F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GACT,QAAQ,KAAK,MAAM;QACjB,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC,CAAC,QAAQ,KAAK,OAAO;YACpB,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACpE,CAAC,CAAC,QAAQ,KAAK,UAAU;gBACvB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACtE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,aAAa,CAAC,EAAE,CAAC;YAC1E,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AACD;;;;;GAKG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,6BAA6B,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe,EAAE,KAAc;IACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC;IAC/D,OAAO,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,OAAO,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AACD,qGAAqG;AACrG,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,eAAe;IACf,WAAW;IACX,aAAa;IACb,UAAU;CACF,CAAC;AACX;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvE,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAChE,OAAO,uBAAuB,CAAC,GAAG,CAAC,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,CAAC;AACD,SAAS,2BAA2B,CAAC,MAA+B;IAClE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,SAAS;QACT,YAAY;QACZ,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,YAAY;KACb,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,aAAa,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAChG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAU,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,mBAAmB,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC3F,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,aAAa,CAAC,EAC7E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,oBAAoB,CAAC,MAA4B;IACxD,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAClG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAClG,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AACD,SAAS,oBAAoB,CAAC,MAA2B;IACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC;IACD,OAAO,KAA4B,CAAC;AACtC,CAAC;AACD,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ,CAAC;AAC7F,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,aAAa;QACvB,KAAK,KAAK,eAAe;QACzB,KAAK,KAAK,WAAW,CACtB,CAAC;AACJ,CAAC;AACD,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,CACL,KAAK;SACF,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,KAAK,CACpC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProjectAgentTarget } from './project.js';
2
+ /** Default SaaS starter: the portable Apps surface plus customer identity and verified context. */
3
+ export declare function saasFiles(name: string, agentTargets: readonly ProjectAgentTarget[]): Record<string, string>;
4
+ //# sourceMappingURL=saas-scaffold-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saas-scaffold-template.d.ts","sourceRoot":"","sources":["../src/saas-scaffold-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,mGAAmG;AACnG,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0CxB"}
@@ -0,0 +1,37 @@
1
+ import { widgetFiles } from './widget-scaffold-template.js';
2
+ /** Default SaaS starter: the portable Apps surface plus customer identity and verified context. */
3
+ export function saasFiles(name, agentTargets) {
4
+ const files = widgetFiles(name, agentTargets);
5
+ const server = files['src/server.ts'];
6
+ const config = files['noodle.json'];
7
+ if (server === undefined || config === undefined)
8
+ throw new Error('SaaS template source is incomplete');
9
+ return {
10
+ ...files,
11
+ 'noodle.json': config.replace('"template": "widget"', '"template": "saas"'),
12
+ 'src/server.ts': server
13
+ .replace(' annotations,\n', ' annotations,\n customerAuth,\n')
14
+ .replace(" instructions: 'Help users understand their workspace, update preferences, and plan a safe next step.',", ` instructions: 'Help users understand their workspace, update preferences, and plan a safe next step.',
15
+ // Replace these placeholders with the customer IdP values used by ChatGPT, Claude, and your app.
16
+ auth: customerAuth.federatedOidc({
17
+ issuers: [{
18
+ issuer: 'https://id.your-app.example.com',
19
+ audience: 'https://your-noodle-mcp.example.com/mcp',
20
+ }],
21
+ }),`)
22
+ .replace("description: 'List the current workspace items with concise status summaries.',", "description: 'List the current workspace items with concise status summaries.',\n contextProvider: true,")
23
+ .replace("input: z.object({ status: z.enum(['all', 'active', 'done']).default('all') }),", 'input: z.object({}),'),
24
+ 'README.md': `${files['README.md'] ?? ''}
25
+
26
+ ## Customer identity and delegated APIs
27
+
28
+ The default server uses standards-based federated OIDC so the same MCP endpoint works from Claude, ChatGPT,
29
+ and the embedded assistant. Add each trusted issuer/audience pair, then run \`noodle auth doctor\`.
30
+ Verified OIDC callers are classified as customers by the runtime; never add a caller-controlled identity
31
+ classification claim. For a customer-owned API, declare connector auth as \`delegatedTokenExchange\` and
32
+ store its client credential with \`noodle secrets set\`. Use \`noodle auth doctor --live\` before release to
33
+ exercise one credential exchange without invoking a business tool.
34
+ `,
35
+ };
36
+ }
37
+ //# sourceMappingURL=saas-scaffold-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saas-scaffold-template.js","sourceRoot":"","sources":["../src/saas-scaffold-template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,mGAAmG;AACnG,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,YAA2C;IAE3C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAC9C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,OAAO;QACL,GAAG,KAAK;QACR,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;QAC3E,eAAe,EAAE,MAAM;aACpB,OAAO,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;aAChE,OAAO,CACN,0GAA0G,EAC1G;;;;;;;MAOF,CACC;aACA,OAAO,CACN,iFAAiF,EACjF,6GAA6G,CAC9G;aACA,OAAO,CACN,gFAAgF,EAChF,sBAAsB,CACvB;QACH,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;;;;;;;;;;CAU3C;KACE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-groups.d.ts","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAShD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAoN5D,CAAC"}
1
+ {"version":3,"file":"command-groups.d.ts","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAShD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA0N5D,CAAC"}
@@ -53,7 +53,7 @@ export const COMMAND_GROUPS = {
53
53
  },
54
54
  auth: {
55
55
  group: 'Authoring & validation',
56
- summary: 'Diagnose `customerAuth` OIDC/bridge readiness.',
56
+ summary: 'Diagnose customer OIDC/provider declarations; `--live` probes delegated credentials without a business-tool call.',
57
57
  },
58
58
  doctor: {
59
59
  group: 'Authoring & validation',
@@ -200,6 +200,10 @@ export const COMMAND_GROUPS = {
200
200
  summary: 'Print the machine-readable command catalog (`--json`) or a compact human list. Agents: ' +
201
201
  '`noodle commands --json` for every command, subcommand, flag, and exit code without reading source.',
202
202
  },
203
+ features: {
204
+ group: 'CLI maintenance',
205
+ summary: 'Print the versioned Claude, ChatGPT, and Embedded compatibility registry (`--json` or `--markdown`).',
206
+ },
203
207
  update: {
204
208
  group: 'CLI maintenance',
205
209
  summary: 'Check for, install, or safely repair the CLI update. Agents: `noodle update --check --json`, then ' +
@@ -1 +1 @@
1
- {"version":3,"file":"command-groups.js","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-groups.js","sourceRoot":"","sources":["../../src/curated/command-groups.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-fixes.d.ts","sourceRoot":"","sources":["../../src/curated/error-fixes.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqF9C,CAAC"}
1
+ {"version":3,"file":"error-fixes.d.ts","sourceRoot":"","sources":["../../src/curated/error-fixes.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuF9C,CAAC"}
@@ -9,7 +9,8 @@ export const ERROR_FIXES = {
9
9
  yaml_parse_error: 'Author in TypeScript; this means the compiled manifest was malformed — re-run from server.ts, do not hand-edit manifest data.',
10
10
  invalid_shape: 'A field has the wrong type or structure; match the shape the compiler reports under `path` against the SDK builder you used.',
11
11
  invalid_name: 'Rename the identifier to match the allowed pattern (lowercase, no spaces/reserved characters) cited at `path`.',
12
- reserved_name: 'Rename the tool at `path`; TypeScript `server()` always reserves `noodle_context`, while raw manifests reserve it when `server.context` is present.',
12
+ reserved_name: 'For Core v1 with `server.context`, rename `noodle_context`; Core v2 does not reserve it and uses an explicit context-provider tool.',
13
+ invalid_context_provider: 'Designate at most one normal Core-v2 tool with `contextProvider: true`, and give it an empty object input schema.',
13
14
  duplicate_name: 'Two tools/components share a name; give each a unique name at the cited `path`.',
14
15
  unsupported_manifest_version: 'Update the SDK/CLI so the emitted manifest version is supported; do not pin an old manifest shape.',
15
16
  reserved_for_future_version: 'The verb at `path` (currently `compute` as a flow step) is reserved for a future core version; express the step with `use` (a connector operation), `map` (a pure mapping), or the shipped `ctx.elicit` input primitive instead.',
@@ -1 +1 @@
1
- {"version":3,"file":"error-fixes.js","sourceRoot":"","sources":["../../src/curated/error-fixes.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,uFAAuF;AACvF,yFAAyF;AACzF,0DAA0D;AAC1D,0FAA0F;AAC1F,6FAA6F;AAE7F,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,gBAAgB,EACd,+HAA+H;IACjI,aAAa,EACX,8HAA8H;IAChI,YAAY,EACV,gHAAgH;IAClH,aAAa,EACX,qJAAqJ;IACvJ,cAAc,EAAE,iFAAiF;IACjG,4BAA4B,EAC1B,oGAAoG;IACtG,2BAA2B,EACzB,kOAAkO;IACpO,qBAAqB,EACnB,4GAA4G;IAC9G,YAAY,EACV,2HAA2H;IAC7H,kBAAkB,EAChB,mGAAmG;IACrG,kBAAkB,EAChB,kHAAkH;IACpH,mBAAmB,EACjB,6FAA6F;IAC/F,kBAAkB,EAAE,kEAAkE;IACtF,iBAAiB,EACf,0GAA0G;IAC5G,qBAAqB,EACnB,4GAA4G;IAC9G,yBAAyB,EACvB,kHAAkH;IACpH,mBAAmB,EACjB,+FAA+F;IACjG,gBAAgB,EACd,0FAA0F;IAC5F,gBAAgB,EACd,gGAAgG;IAClG,aAAa,EAAE,8DAA8D;IAC7E,iBAAiB,EACf,uHAAuH;IACzH,kBAAkB,EAChB,oLAAoL;IACtL,0BAA0B,EACxB,mLAAmL;IACrL,wBAAwB,EACtB,uIAAuI;IACzI,yBAAyB,EACvB,kJAAkJ;IACpJ,iBAAiB,EACf,4GAA4G;IAC9G,sBAAsB,EACpB,kJAAkJ;IACpJ,kBAAkB,EAAE,2EAA2E;IAC/F,gBAAgB,EAAE,qDAAqD;IACvE,sBAAsB,EAAE,uEAAuE;IAC/F,wBAAwB,EACtB,wEAAwE;IAC1E,gBAAgB,EACd,2FAA2F;IAC7F,mBAAmB,EACjB,8GAA8G;IAChH,0BAA0B,EACxB,8FAA8F;IAChG,qBAAqB,EACnB,6EAA6E;IAC/E,sBAAsB,EACpB,oGAAoG;IACtG,2BAA2B,EACzB,mIAAmI;IACrI,aAAa,EACX,yFAAyF;IAC3F,8BAA8B,EAC5B,8EAA8E;IAChF,kBAAkB,EAChB,oHAAoH;IACtH,uBAAuB,EACrB,iHAAiH;IACnH,wBAAwB,EACtB,qHAAqH;IACvH,iBAAiB,EACf,oHAAoH;IACtH,sBAAsB,EACpB,mGAAmG;IACrG,YAAY,EACV,sGAAsG;CACzG,CAAC"}
1
+ {"version":3,"file":"error-fixes.js","sourceRoot":"","sources":["../../src/curated/error-fixes.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,uFAAuF;AACvF,yFAAyF;AACzF,0DAA0D;AAC1D,0FAA0F;AAC1F,6FAA6F;AAE7F,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,gBAAgB,EACd,+HAA+H;IACjI,aAAa,EACX,8HAA8H;IAChI,YAAY,EACV,gHAAgH;IAClH,aAAa,EACX,qIAAqI;IACvI,wBAAwB,EACtB,mHAAmH;IACrH,cAAc,EAAE,iFAAiF;IACjG,4BAA4B,EAC1B,oGAAoG;IACtG,2BAA2B,EACzB,kOAAkO;IACpO,qBAAqB,EACnB,4GAA4G;IAC9G,YAAY,EACV,2HAA2H;IAC7H,kBAAkB,EAChB,mGAAmG;IACrG,kBAAkB,EAChB,kHAAkH;IACpH,mBAAmB,EACjB,6FAA6F;IAC/F,kBAAkB,EAAE,kEAAkE;IACtF,iBAAiB,EACf,0GAA0G;IAC5G,qBAAqB,EACnB,4GAA4G;IAC9G,yBAAyB,EACvB,kHAAkH;IACpH,mBAAmB,EACjB,+FAA+F;IACjG,gBAAgB,EACd,0FAA0F;IAC5F,gBAAgB,EACd,gGAAgG;IAClG,aAAa,EAAE,8DAA8D;IAC7E,iBAAiB,EACf,uHAAuH;IACzH,kBAAkB,EAChB,oLAAoL;IACtL,0BAA0B,EACxB,mLAAmL;IACrL,wBAAwB,EACtB,uIAAuI;IACzI,yBAAyB,EACvB,kJAAkJ;IACpJ,iBAAiB,EACf,4GAA4G;IAC9G,sBAAsB,EACpB,kJAAkJ;IACpJ,kBAAkB,EAAE,2EAA2E;IAC/F,gBAAgB,EAAE,qDAAqD;IACvE,sBAAsB,EAAE,uEAAuE;IAC/F,wBAAwB,EACtB,wEAAwE;IAC1E,gBAAgB,EACd,2FAA2F;IAC7F,mBAAmB,EACjB,8GAA8G;IAChH,0BAA0B,EACxB,8FAA8F;IAChG,qBAAqB,EACnB,6EAA6E;IAC/E,sBAAsB,EACpB,oGAAoG;IACtG,2BAA2B,EACzB,mIAAmI;IACrI,aAAa,EACX,yFAAyF;IAC3F,8BAA8B,EAC5B,8EAA8E;IAChF,kBAAkB,EAChB,oHAAoH;IACtH,uBAAuB,EACrB,iHAAiH;IACnH,wBAAwB,EACtB,qHAAqH;IACvH,iBAAiB,EACf,oHAAoH;IACtH,sBAAsB,EACpB,mGAAmG;IACrG,YAAY,EACV,sGAAsG;CACzG,CAAC"}
@@ -47,10 +47,10 @@ export const BUNDLED_EXAMPLE_FILES = [
47
47
  { 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" },
48
48
  { 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" },
49
49
  { 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" },
50
- { 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. Interactive MCP Apps widgets continue to render in supported external hosts; the\ninitial embedded surface renders text and native tool confirmations.\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\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\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 identities from `customerAuth.bridge(...)` and from embedded\nassistant 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\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 Web Component or React wrapper:\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=\"auto\"\n onSessionExpired={() => console.info('Assistant session renewed')}\n/>;\n```\n\n`theme=\"auto\"` follows the SaaS application. The server-level `branding` block is inherited by both MCP App\nwidgets and the assistant; documented `--ns-assistant-*` semantic CSS variables remain the final integration\nescape hatch. There is no second assistant branding declaration.\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" },
50
+ { 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\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\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 Web Component or React wrapper:\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=\"auto\"\n onSessionExpired={() => console.info('Assistant session renewed')}\n/>;\n```\n\n`theme=\"auto\"` follows the SaaS application. The server-level `branding` block is inherited by both MCP App\nwidgets and the assistant; documented `--ns-assistant-*` semantic CSS variables remain the final integration\nescape hatch. There is no second assistant branding declaration.\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" },
51
51
  { relPath: "examples/customer-auth/noodle.json", content: "{\n \"entrypoint\": \"src/server.ts\",\n \"name\": \"customer-auth\"\n}\n" },
52
52
  { 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" },
53
- { 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 description: 'List NoodleSeed.com apps for an organization from the dev app API.',\n input: z.object({\n org_id: z.string(),\n skip: z.number().int().min(0).optional(),\n limit: z.number().int().min(1).max(100).optional(),\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 description: 'List the NoodleSeed.com organizations the signed-in customer belongs to.',\n input: z.object({}),\n output: z.object({\n organizations: z.array(z.unknown()),\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" },
53
+ { 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 description: 'List NoodleSeed.com apps for an organization from the dev app API.',\n input: z.object({\n org_id: z.string(),\n skip: z.number().int().min(0).optional(),\n limit: z.number().int().min(1).max(100).optional(),\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 description: 'List the NoodleSeed.com organizations the signed-in customer belongs to.',\n contextProvider: true,\n input: z.object({}),\n output: z.object({\n organizations: z.array(z.unknown()),\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" },
54
54
  { 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" },
55
55
  { 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 in embedded/headless renderers and bidirectional MCP adapters; the stateless hosted MCP endpoint does not yet carry the server-initiated exchange |\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\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.\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" },
56
56
  { relPath: "examples/food-ordering/noodle.json", content: "{\n \"entrypoint\": \"src/server.ts\",\n \"name\": \"food-ordering\",\n \"template\": \"widget\"\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":"surface.d.ts","sourceRoot":"","sources":["../../src/generated/surface.ts"],"names":[],"mappings":"AAIA,8FAA8F;AAC9F,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAwDzC,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAgBxC,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EA8ChD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAaxC,CAAC"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../src/generated/surface.ts"],"names":[],"mappings":"AAIA,8FAA8F;AAC9F,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAyDzC,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAgBxC,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EA+ChD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAaxC,CAAC"}
@@ -6,6 +6,7 @@ export const CLI_COMMANDS = [
6
6
  'help',
7
7
  'version',
8
8
  'commands',
9
+ 'features',
9
10
  'start',
10
11
  'update',
11
12
  'init',
@@ -79,6 +80,7 @@ export const SDK_EXPORTS = [
79
80
  ];
80
81
  /** Every compiler `CompileErrorCode`, in source order (from packages/compiler/src/errors.ts). */
81
82
  export const COMPILE_ERROR_CODES = [
83
+ 'invalid_context_provider',
82
84
  'yaml_parse_error',
83
85
  'invalid_shape',
84
86
  'invalid_name',
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../src/generated/surface.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,6EAA6E;AAC7E,iGAAiG;AAEjG,8FAA8F;AAC9F,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,MAAM;IACN,SAAS;IACT,UAAU;IACV,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,WAAW;IACX,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;CACZ,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,aAAa;IACb,OAAO;IACP,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,UAAU;IACV,MAAM;IACN,GAAG;CACJ,CAAC;AAEF,iGAAiG;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,kBAAkB;IAClB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,8BAA8B;IAC9B,6BAA6B;IAC7B,uBAAuB;IACvB,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,2BAA2B;IAC3B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,4BAA4B;IAC5B,0BAA0B;IAC1B,2BAA2B;IAC3B,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,kBAAkB;IAClB,wBAAwB;IACxB,0BAA0B;IAC1B,kBAAkB;IAClB,qBAAqB;IACrB,4BAA4B;IAC5B,uBAAuB;IACvB,wBAAwB;IACxB,6BAA6B;IAC7B,eAAe;IACf,gCAAgC;IAChC,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;IAC1B,mBAAmB;IACnB,wBAAwB;IACxB,cAAc;CACf,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,aAAa;IACb,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;IACb,uBAAuB;IACvB,iBAAiB;IACjB,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,YAAY;IACZ,YAAY;CACb,CAAC"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../src/generated/surface.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,6EAA6E;AAC7E,iGAAiG;AAEjG,8FAA8F;AAC9F,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,MAAM;IACN,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,WAAW;IACX,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;CACZ,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,aAAa;IACb,OAAO;IACP,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,UAAU;IACV,MAAM;IACN,GAAG;CACJ,CAAC;AAEF,iGAAiG;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,0BAA0B;IAC1B,kBAAkB;IAClB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,8BAA8B;IAC9B,6BAA6B;IAC7B,uBAAuB;IACvB,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,2BAA2B;IAC3B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,4BAA4B;IAC5B,0BAA0B;IAC1B,2BAA2B;IAC3B,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,kBAAkB;IAClB,wBAAwB;IACxB,0BAA0B;IAC1B,kBAAkB;IAClB,qBAAqB;IACrB,4BAA4B;IAC5B,uBAAuB;IACvB,wBAAwB;IACxB,6BAA6B;IAC7B,eAAe;IACf,gCAAgC;IAChC,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;IAC1B,mBAAmB;IACnB,wBAAwB;IACxB,cAAc;CACf,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,aAAa;IACb,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;IACb,uBAAuB;IACvB,iBAAiB;IACjB,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,YAAY;IACZ,YAAY;CACb,CAAC"}
@@ -120,7 +120,7 @@ export function renderAuthoringWorkflowReference() {
120
120
  '',
121
121
  'Use delegated connector auth when the downstream API must enforce its own per-user authorization — a shared service credential plus a forwarded user id would bypass it. Three shapes exist; pick by who owns the downstream:',
122
122
  '',
123
- '- **`delegatedTokenExchange`** — your own API. The platform signs a short-lived, verifiable assertion of the signed-in user and exchanges it at a token endpoint you implement (RFC 8693). Works with `customerAuth.bridge(...)` identities and embedded-assistant sessions; no per-user OAuth enrollment.',
123
+ '- **`delegatedTokenExchange`** — your own API. The platform signs a short-lived, verifiable assertion of the signed-in user and exchanges it at a token endpoint you implement (RFC 8693). Works with verified customer OIDC identities, the built-in Firebase/Microsoft adapters, and embedded-assistant sessions; no per-user OAuth enrollment.',
124
124
  '- **`delegatedOAuth` with `provider: "firebase" | "microsoft"`** — Noodle-managed bridge providers using stored per-user refresh tokens. Requires the matching `customerAuth` bridge; any other provider string is the compile error `unsupported_delegated_provider`.',
125
125
  '- **`delegatedSessionCookie`** — Firebase-managed session-cookie apps only; not a generic mechanism.',
126
126
  '',
@@ -183,7 +183,7 @@ export function renderAuthoringWorkflowReference() {
183
183
  '}',
184
184
  '```',
185
185
  '',
186
- 'Diagnose with `noodle auth doctor` (reports each delegated token exchange endpoint and whether managed delegated providers pair with the declared `customerAuth`). Common failures: `disallowed_token_origin` (add the tokenUrl origin to `allowedOrigins`), `unsupported_delegated_provider` (custom provider strings never reach a broker; use `delegatedTokenExchange`), and `delegated token exchange requires a verified customer caller` at runtime (the surface calling the tool has no verified customer identity check `customerAuth` and, for embeds, `createAssistantSession({ user })`).',
186
+ 'Diagnose statically with `noodle auth doctor`; set a short-lived real customer token only in `NOODLE_CUSTOMER_TOKEN` and add `--live --org <org> --app <app> --env <env>` to perform one exchange per delegated binding without invoking a business tool. Common failures include structured `credential_unavailable` reasons such as `caller_identity_not_customer`. Direct/federated OIDC verification assigns the customer identity at the trusted verifier boundary; never ask an IdP to mint a Noodle-specific classification claim.',
187
187
  '',
188
188
  '## Design tools for the model',
189
189
  '',
@@ -249,7 +249,7 @@ export function renderAuthoringWorkflowReference() {
249
249
  '',
250
250
  '## Invocation context',
251
251
  '',
252
- 'Every executable invocation receives one immutable server-authoritative temporal snapshot. Canonical TypeScript `server()` authoring emits an empty context declaration even when you omit the option, so MCP clients get the reserved read-only `noodle_context` temporal tool with zero setup. Use `server(..., { context })` only to add locale/time-zone defaults and trusted ambient facts that every surface should resolve the same way. Tools, resources, prompts, and the embedded assistant consume the same snapshot; do not create a host-specific date tool.',
252
+ 'Every executable invocation receives one immutable server-authoritative temporal snapshot. Canonical TypeScript authoring emits Core v2 and does not create a hidden context tool. Use `server(..., { context })` for locale/time-zone defaults and trusted ambient facts, and designate one normal zero-input tool with `contextProvider: true` when the model needs portable application context. The embedded host preloads it per turn; Claude, ChatGPT, and other MCP hosts call it normally.',
253
253
  '',
254
254
  '```ts',
255
255
  'context: {',
@@ -267,7 +267,7 @@ export function renderAuthoringWorkflowReference() {
267
267
  '},',
268
268
  '```',
269
269
  '',
270
- 'Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts. TypeScript-authored servers always reserve `noodle_context`; only a raw Core-v1 manifest that omits `server.context` retains that tool name. Ambient/model-visible context is capped at 16 KiB serialized JSON, depth 8, and 128 entries per container; credential-shaped keys are rejected.',
270
+ 'Ambient providers are recorded as fulfilment data at author time, may call read-only connector operations only, and have a declared output schema. Later fulfilments read `${context.temporal.localDate}`, `${context.temporal.timeZone}`, `${context.ambient.defaultTeamId}`, and `${context.ambientStatus}`. If ambient resolution fails, the status is `unavailable`; never invent the missing business facts. Core-v1 `server.context` keeps the reserved `noodle_context` adapter; Core v2 never reserves it. Ambient/model-visible context is capped at 16 KiB serialized JSON, depth 8, and 128 entries per container; credential-shaped keys are rejected.',
271
271
  '',
272
272
  '## Ask for structured missing input',
273
273
  '',
@@ -369,7 +369,7 @@ export function renderWidgetsAndAppsReference() {
369
369
  '',
370
370
  'Generated widgets, official examples, and agent-authored MCP Apps must start with `@noodleseed/one/react` primitives and semantic tokens. Custom React/CSS or third-party components remain valid when the kit lacks the required behavior or the developer explicitly requests them.',
371
371
  '',
372
- '`noodle init my-app` defaults to a comprehensive server—tools, resource, prompt, state contract, branding, handoff, widget, and embedded assistant—so begin by adapting that complete surface. Use `--template hello` only when the product explicitly needs the minimal server.',
372
+ '`noodle init my-app` defaults to the Core-v2 SaaS profile: federated OIDC placeholders, one explicit context-provider tool, MCP App UI, resource, prompt, state contract, branding, handoff, and embedded assistant. Begin by replacing the IdP/audience/domain placeholders. Use `--template widget`, `hello`, or `http-api` only when that narrower profile is intentional.',
373
373
  '',
374
374
  'The default composition rule is: build the smallest useful conversational surface. Inline has one purpose, one primary action, and at most two visible actions. Use progressive disclosure or a later conversational turn for secondary detail; request fullscreen only when the user asks or the task genuinely needs it. Never use nested scrolling. At 280px and wider, the widget must remain one-column, readable, touch-safe, and free of horizontal overflow. Remove secondary chrome before shrinking essential content.',
375
375
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"skill-authoring-refs.js","sourceRoot":"","sources":["../src/skill-authoring-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-authoring-refs.js","sourceRoot":"","sources":["../src/skill-authoring-refs.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,CAoUzD"}
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,CAsUzD"}
@@ -105,8 +105,10 @@ export function renderEmbeddedAssistantReference() {
105
105
  '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:',
106
106
  '',
107
107
  '```ts',
108
- 'auth: customerAuth.bridge({ verifyUrl: "https://app.example.com/api/auth/verify" }),',
109
- '// or a concrete adapter: customerAuth.firebase({ projectId, apiKey })',
108
+ 'auth: customerAuth.federatedOidc({',
109
+ ' issuers: [{ issuer: "https://id.example.com", audience: "https://api.example.com" }],',
110
+ '}),',
111
+ '// or a built-in adapter: customerAuth.firebase({ projectId, apiKey })',
110
112
  '```',
111
113
  '',
112
114
  '## Create the backend client',
@@ -171,7 +173,7 @@ export function renderEmbeddedAssistantReference() {
171
173
  '},',
172
174
  '```',
173
175
  '',
174
- 'The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. Canonical TypeScript `server()` authoring emits an empty context declaration even when you omit the option, so MCP clients receive the reserved read-only `noodle_context` temporal tool with zero setup; add `server.context` only for custom defaults or ambient facts. Raw Core-v1 manifests activate the adapter only when that field is present. Never declare a TypeScript author tool named `noodle_context`. Keep ambient facts compact: the platform caps serialized JSON at 16 KiB, depth 8, and 128 entries per container, and rejects credential-shaped keys.',
176
+ 'The callback records declarative fulfilment at author time; the shared runtime executes only read-only connector operations, validates the declared output, and freezes one snapshot for the whole invocation and any accepted interaction. Tools/resources/prompts read `context.temporal`, `context.ambient`, and `context.ambientStatus`. The embedded assistant receives the same snapshot in trusted platform context. For model-visible application context in every host, designate one normal zero-input tool with `contextProvider: true`; the embedded host preloads it per turn and external hosts call it normally. Core-v1 `server.context` retains the legacy reserved `noodle_context` adapter, while canonical Core-v2 TypeScript authoring does not create or reserve it. Keep ambient facts compact: the platform caps serialized JSON at 16 KiB, depth 8, and 128 entries per container, and rejects credential-shaped keys.',
175
177
  '',
176
178
  '## Structured missing input',
177
179
  '',
@@ -280,9 +282,9 @@ export function renderEmbeddedAssistantReference() {
280
282
  "// The same pending id also accepts { action: 'decline' } or { action: 'cancel' }.",
281
283
  '```',
282
284
  '',
283
- '`view_available` means a completed tool has a linked MCP App view. It carries the call/interaction id, tool, `ui://` identity, optional title, and bounded/redacted public result; it does not claim that anything rendered. A headless customer renderer maps that identity to an already-trusted component. Never fetch the `ui://` URI or inject its HTML. The standard element likewise does not render it; it dispatches `assistant-view-available` with the same detail.',
285
+ '`view_available` means a completed tool has a linked MCP App view. It carries the call/interaction id, tool, `ui://` identity, optional title, bounded/redacted public result, and—on current services—the self-contained bridged document. The standard element is an MCP Apps host and mounts that document behind a double iframe. It supports lifecycle, app tool/resource calls, ui/message, ui/update-model-context, links, resize, and inline/fullscreen; sampling, tasks, downloads, and remote DOM are not advertised. It also dispatches `assistant-view-available` for a customer-owned renderer.',
284
286
  '',
285
- '`clientContext` is recomputed for each turn. `updateContext(...)` changes separate untrusted page context for the next session exchange; call `resetSession()` when it must take effect immediately. `updateModelContext({ content, structuredContent })` publishes one cohesive renderer snapshot for later message turns without starting a turn; every call replaces the prior snapshot rather than merging fields. It is untrusted per-turn data, not conversation history or authorization input, and both boundaries reject credential-shaped or unbounded updates. A message may re-exchange once after a pre-execution `401`; the client never auto-retries interaction decisions. `tool_proposed.arguments` is a complete schema-aware review projection and, for connector-backed tools, names the sole exact connector version, operation, and resolved arguments. Sensitive/write-only fields are redacted; truncating or omitting any non-sensitive action field fails closed. Accept is bound to the server-held action and claims at most one execution attempt—clients cannot replace it. Normal terminal outcomes scrub private arguments and continuations immediately; only an accepted action still executing retains them for the one-hour unknown-outcome recovery window, after which it records `interaction_outcome_unknown` and scrubs. Without downstream idempotency this is not an exactly-once business-effect guarantee. To reconcile a lost response, explicitly repeat the same id and decision: the service returns its durable stored outcome without re-execution.',
287
+ '`clientContext` and typed `pageContext` are recomputed for each turn. `updateContext(...)` remains the legacy session-exchange context; `updatePageContext(...)` replaces the fresh per-turn application hint. `updateModelContext({ content, structuredContent })` publishes one cohesive renderer snapshot for later message turns without starting a turn; every call replaces the prior snapshot rather than merging fields. These are untrusted data, not conversation history or authorization input, and the boundaries reject credential-shaped or unbounded updates. A message may re-exchange once after a pre-execution `401`; the client never auto-retries interaction decisions. `tool_proposed.arguments` is a complete schema-aware review projection and, for connector-backed tools, names the sole exact connector version, operation, and resolved arguments. Sensitive/write-only fields are redacted; truncating or omitting any non-sensitive action field fails closed. Accept is bound to the server-held action and claims at most one execution attempt—clients cannot replace it. Normal terminal outcomes scrub private arguments and continuations immediately; only an accepted action still executing retains them for the one-hour unknown-outcome recovery window, after which it records `interaction_outcome_unknown` and scrubs. Without downstream idempotency this is not an exactly-once business-effect guarantee. To reconcile a lost response, explicitly repeat the same id and decision: the service returns its durable stored outcome without re-execution.',
286
288
  '',
287
289
  '## Toolchain requirements',
288
290
  '',
@@ -307,7 +309,7 @@ export function renderEmbeddedAssistantReference() {
307
309
  '| Widget renders but no reply arrives and model usage stays zero | Turns are not reaching the service: outdated `@noodleseed/assistant` package, or the session response was rebuilt/filtered by the backend route | Update the package to the latest version; forward the session response unchanged |',
308
310
  '| `assistant-error` with code `invalid_response` | The turn endpoint returned HTML or non-SSE content (auth redirect, proxy page) | Check the backend session route path and any middleware/rewrites on the embedding app |',
309
311
  '| Build error `Package path ./react is not exported` | Outdated package version with import-only export conditions | Update `@noodleseed/assistant`; do not add webpack aliases or type shims |',
310
- '| Deploy fails with `server_auth_required` | `--access customers` without `server.auth` | Add `customerAuth.bridge(...)` or an adapter to server options |',
312
+ '| Deploy fails with `server_auth_required` | `--access customers` without `server.auth` | Add direct/federated OIDC or a built-in Firebase/Microsoft adapter |',
311
313
  '| Validate rejects an origin | Non-loopback HTTP origin in `allowedOrigins` | Use the exact HTTPS production origin; HTTP is only for `localhost`/`127.0.0.1` |',
312
314
  '| Session exchange returns 404 | `serviceUrl` points at the deployment MCP endpoint | Use the control-plane service URL printed by `noodle assistant clients create` |',
313
315
  '| Session exchange returns 403 `origin is not allowed` | Request origin differs from `allowedOrigins` character-for-character | Align the exact scheme/host/port on both sides and redeploy |',
@@ -320,7 +322,7 @@ export function renderEmbeddedAssistantReference() {
320
322
  '| The model invents a team/holiday after context lookup fails | The ambient provider returned invalid data or its read-only connector failed (`ambientStatus: unavailable`) | Fix the provider/connector; treat unavailable ambient facts as missing, never prompt instructions |',
321
323
  '| Decline/cancel reports `unsupported_service` | The session came from a legacy service with no `endpoints.interactions` | Upgrade the service; legacy `toolConfirmations` supports accept only |',
322
324
  "| Behavior does not change after `noodle deploy` | Outdated platform: before the 2026-07 fix, clients were pinned to their creation-time deployment | Update the platform; sessions now follow the tenant's active deployment |",
323
- '| A delegated connector tool fails with `delegated token exchange requires a verified customer caller` | The calling surface has no verified customer identity (or an old session minted before the platform carried the resource audience) | Verify `customerAuth` is configured and the backend passes the verified `user` to `createAssistantSession`; re-mint the session |',
325
+ '| A delegated connector returns `credential_unavailable` / `caller_identity_not_customer` | The calling surface has no verified customer identity (or an old session minted before the platform carried the resource audience) | Verify `customerAuth` is configured, the backend passes the verified `user`, and run `noodle auth doctor --live` |',
324
326
  '| Deploy fails with `unsupported_delegated_provider` | `delegatedOAuth.provider` only supports the managed `firebase`/`microsoft` bridges | Use `auth.kind: "delegatedTokenExchange"` for your own token endpoint (see authoring-workflow.md) |',
325
327
  ].join('\n');
326
328
  }