@noodleseed/one 0.33.0 → 0.34.1

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 (255) hide show
  1. package/LICENSE +27 -1
  2. package/NOTICE +4 -0
  3. package/dist/assistant-embed-scaffold-template.d.ts +10 -0
  4. package/dist/assistant-embed-scaffold-template.d.ts.map +1 -0
  5. package/dist/assistant-embed-scaffold-template.js +74 -0
  6. package/dist/assistant-embed-scaffold-template.js.map +1 -0
  7. package/dist/bin.js +0 -0
  8. package/dist/commands/assistant-embed-ops.d.ts +2 -0
  9. package/dist/commands/assistant-embed-ops.d.ts.map +1 -0
  10. package/dist/commands/assistant-embed-ops.js +87 -0
  11. package/dist/commands/assistant-embed-ops.js.map +1 -0
  12. package/dist/commands/assistant-ops.d.ts.map +1 -1
  13. package/dist/commands/assistant-ops.js +36 -2
  14. package/dist/commands/assistant-ops.js.map +1 -1
  15. package/dist/commands/catalog-data-resources.d.ts.map +1 -1
  16. package/dist/commands/catalog-data-resources.js +11 -0
  17. package/dist/commands/catalog-data-resources.js.map +1 -1
  18. package/dist/commands/deploy-ops.d.ts +2 -0
  19. package/dist/commands/deploy-ops.d.ts.map +1 -1
  20. package/dist/commands/deploy-ops.js +18 -0
  21. package/dist/commands/deploy-ops.js.map +1 -1
  22. package/dist/commands/mcp-apps.d.ts.map +1 -1
  23. package/dist/commands/mcp-apps.js +40 -8
  24. package/dist/commands/mcp-apps.js.map +1 -1
  25. package/dist/commands/project-setup.d.ts +2 -2
  26. package/dist/commands/project-setup.d.ts.map +1 -1
  27. package/dist/commands/project-setup.js +5 -4
  28. package/dist/commands/project-setup.js.map +1 -1
  29. package/dist/control-plane.d.ts.map +1 -1
  30. package/dist/control-plane.js +2 -0
  31. package/dist/control-plane.js.map +1 -1
  32. package/dist/deploy.d.ts +2 -1
  33. package/dist/deploy.d.ts.map +1 -1
  34. package/dist/deploy.js +56 -39
  35. package/dist/deploy.js.map +1 -1
  36. package/dist/first-run.js +1 -1
  37. package/dist/first-run.js.map +1 -1
  38. package/dist/openapi-import.d.ts.map +1 -1
  39. package/dist/openapi-import.js +6 -1
  40. package/dist/openapi-import.js.map +1 -1
  41. package/dist/project-scaffold-templates.d.ts.map +1 -1
  42. package/dist/project-scaffold-templates.js +10 -3
  43. package/dist/project-scaffold-templates.js.map +1 -1
  44. package/dist/project.d.ts.map +1 -1
  45. package/dist/project.js +3 -1
  46. package/dist/project.js.map +1 -1
  47. package/dist/widget-focused-template.d.ts +4 -0
  48. package/dist/widget-focused-template.d.ts.map +1 -0
  49. package/dist/widget-focused-template.js +75 -0
  50. package/dist/widget-focused-template.js.map +1 -0
  51. package/dist/widget-scaffold-template.d.ts +1 -1
  52. package/dist/widget-scaffold-template.d.ts.map +1 -1
  53. package/dist/widget-scaffold-template.js +129 -41
  54. package/dist/widget-scaffold-template.js.map +1 -1
  55. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  56. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +1 -0
  57. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  58. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +7 -7
  59. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  60. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  61. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  62. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  63. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  64. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +32 -22
  65. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  66. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  67. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +6 -3
  68. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  69. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts +3 -0
  70. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -0
  71. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +214 -0
  72. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -0
  73. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +5 -0
  75. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  76. package/node_modules/@noodle-borg/agent-kit/package.json +2 -1
  77. package/node_modules/@noodle-borg/auth/package.json +1 -0
  78. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +11 -0
  79. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
  80. package/node_modules/@noodle-borg/authoring/dist/assistant.js +2 -1
  81. package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
  82. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts +5 -5
  83. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts.map +1 -1
  84. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js +11 -5
  85. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js.map +1 -1
  86. package/node_modules/@noodle-borg/authoring/dist/react/components.d.ts +1 -1
  87. package/node_modules/@noodle-borg/authoring/dist/react/components.d.ts.map +1 -1
  88. package/node_modules/@noodle-borg/authoring/dist/react/components.js +1 -1
  89. package/node_modules/@noodle-borg/authoring/dist/react/components.js.map +1 -1
  90. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +0 -1
  91. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  92. package/node_modules/@noodle-borg/authoring/dist/server.js +4 -2
  93. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  94. package/node_modules/@noodle-borg/authoring/package.json +1 -0
  95. package/node_modules/@noodle-borg/capabilities/package.json +1 -0
  96. package/node_modules/@noodle-borg/compiler/dist/artifact/consent.d.ts +8 -0
  97. package/node_modules/@noodle-borg/compiler/dist/artifact/consent.d.ts.map +1 -0
  98. package/node_modules/@noodle-borg/compiler/dist/artifact/consent.js +12 -0
  99. package/node_modules/@noodle-borg/compiler/dist/artifact/consent.js.map +1 -0
  100. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +3 -1
  101. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  103. package/node_modules/@noodle-borg/compiler/dist/compile.js +48 -3
  104. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  105. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  106. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
  107. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js +1 -4
  109. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js.map +1 -1
  110. package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.d.ts +7 -9
  111. package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.d.ts.map +1 -1
  112. package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.js +8 -18
  113. package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.js.map +1 -1
  114. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +2 -1
  115. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
  116. package/node_modules/@noodle-borg/compiler/dist/index.js +2 -1
  117. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
  118. package/node_modules/@noodle-borg/compiler/dist/manifest/csp-origins.js +2 -2
  119. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +4 -5
  120. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  121. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +25 -8
  122. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  123. package/node_modules/@noodle-borg/compiler/dist/schema-validation.d.ts +9 -0
  124. package/node_modules/@noodle-borg/compiler/dist/schema-validation.d.ts.map +1 -1
  125. package/node_modules/@noodle-borg/compiler/dist/schema-validation.js +42 -0
  126. package/node_modules/@noodle-borg/compiler/dist/schema-validation.js.map +1 -1
  127. package/node_modules/@noodle-borg/compiler/package.json +1 -0
  128. package/node_modules/@noodle-borg/compute/package.json +1 -0
  129. package/node_modules/@noodle-borg/connector-defs/package.json +1 -0
  130. package/node_modules/@noodle-borg/connector-http/package.json +1 -0
  131. package/node_modules/@noodle-borg/module/package.json +1 -0
  132. package/node_modules/@noodle-borg/module-audit/package.json +1 -0
  133. package/node_modules/@noodle-borg/openapi-import/dist/index.js +1 -1
  134. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  135. package/node_modules/@noodle-borg/openapi-import/package.json +1 -0
  136. package/node_modules/@noodle-borg/protocol/dist/input-validation.d.ts +9 -0
  137. package/node_modules/@noodle-borg/protocol/dist/input-validation.d.ts.map +1 -1
  138. package/node_modules/@noodle-borg/protocol/dist/input-validation.js +13 -1
  139. package/node_modules/@noodle-borg/protocol/dist/input-validation.js.map +1 -1
  140. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +8 -5
  141. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  142. package/node_modules/@noodle-borg/protocol/package.json +1 -0
  143. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +7 -0
  144. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -1
  145. package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -1
  146. package/node_modules/@noodle-borg/runtime/package.json +1 -0
  147. package/node_modules/@noodle-borg/service/dist/assistant-model-stream.d.ts +19 -0
  148. package/node_modules/@noodle-borg/service/dist/assistant-model-stream.d.ts.map +1 -0
  149. package/node_modules/@noodle-borg/service/dist/assistant-model-stream.js +84 -0
  150. package/node_modules/@noodle-borg/service/dist/assistant-model-stream.js.map +1 -0
  151. package/node_modules/@noodle-borg/service/dist/assistant-store.d.ts +2 -0
  152. package/node_modules/@noodle-borg/service/dist/assistant-store.d.ts.map +1 -1
  153. package/node_modules/@noodle-borg/service/dist/assistant-store.js +11 -0
  154. package/node_modules/@noodle-borg/service/dist/assistant-store.js.map +1 -1
  155. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +4 -0
  156. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
  157. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +10 -1
  158. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
  159. package/node_modules/@noodle-borg/service/dist/build-info.d.ts +9 -0
  160. package/node_modules/@noodle-borg/service/dist/build-info.d.ts.map +1 -1
  161. package/node_modules/@noodle-borg/service/dist/build-info.js +50 -0
  162. package/node_modules/@noodle-borg/service/dist/build-info.js.map +1 -1
  163. package/node_modules/@noodle-borg/service/dist/client-compatibility.d.ts +5 -0
  164. package/node_modules/@noodle-borg/service/dist/client-compatibility.d.ts.map +1 -0
  165. package/node_modules/@noodle-borg/service/dist/client-compatibility.js +12 -0
  166. package/node_modules/@noodle-borg/service/dist/client-compatibility.js.map +1 -0
  167. package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
  168. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  169. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  170. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  171. package/node_modules/@noodle-borg/service/dist/main.js +8 -0
  172. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  173. package/node_modules/@noodle-borg/service/dist/manifest-normalize.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/manifest-normalize.js +13 -0
  175. package/node_modules/@noodle-borg/service/dist/manifest-normalize.js.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/options.d.ts +7 -0
  177. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts +1 -0
  179. package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/personal-workspace.js +4 -5
  181. package/node_modules/@noodle-borg/service/dist/personal-workspace.js.map +1 -1
  182. package/node_modules/@noodle-borg/service/dist/routes/access-mode.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +2 -6
  184. package/node_modules/@noodle-borg/service/dist/routes/access-mode.js.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/routes/assets.d.ts +6 -2
  186. package/node_modules/@noodle-borg/service/dist/routes/assets.d.ts.map +1 -1
  187. package/node_modules/@noodle-borg/service/dist/routes/assets.js +12 -52
  188. package/node_modules/@noodle-borg/service/dist/routes/assets.js.map +1 -1
  189. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.d.ts.map +1 -1
  190. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js +7 -2
  191. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts +1 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  194. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +224 -46
  195. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  196. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  197. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +22 -27
  198. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  199. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts +3 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts.map +1 -1
  201. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js +6 -1
  202. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js.map +1 -1
  203. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +5 -1
  204. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -1
  205. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +31 -3
  206. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -1
  207. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  208. package/node_modules/@noodle-borg/service/dist/serve.js +12 -0
  209. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  210. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/service/dist/service.js +6 -3
  212. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  213. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +15 -1
  214. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  215. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +81 -0
  216. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  217. package/node_modules/@noodle-borg/service/dist/store/postgres-assistant.d.ts +1 -0
  218. package/node_modules/@noodle-borg/service/dist/store/postgres-assistant.d.ts.map +1 -1
  219. package/node_modules/@noodle-borg/service/dist/store/postgres-assistant.js +18 -0
  220. package/node_modules/@noodle-borg/service/dist/store/postgres-assistant.js.map +1 -1
  221. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +15 -1
  222. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
  223. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +83 -0
  224. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
  225. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  226. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +21 -0
  227. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  228. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts +22 -0
  229. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts.map +1 -0
  230. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +26 -0
  231. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -0
  232. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +2 -1
  233. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  234. package/node_modules/@noodle-borg/service/dist/store/postgres.js +10 -9
  235. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  236. package/node_modules/@noodle-borg/service/dist/store.d.ts +40 -0
  237. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  238. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  239. package/node_modules/@noodle-borg/service/dist/welcome-email.d.ts +65 -0
  240. package/node_modules/@noodle-borg/service/dist/welcome-email.d.ts.map +1 -0
  241. package/node_modules/@noodle-borg/service/dist/welcome-email.js +243 -0
  242. package/node_modules/@noodle-borg/service/dist/welcome-email.js.map +1 -0
  243. package/node_modules/@noodle-borg/service/package.json +2 -0
  244. package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js +1 -1
  245. package/node_modules/@noodle-borg/transport-http/package.json +1 -0
  246. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +26 -0
  247. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -0
  248. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +31 -0
  249. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -0
  250. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +261 -0
  251. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -0
  252. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +150 -0
  253. package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -0
  254. package/node_modules/@noodle-borg/wire-contracts/package.json +31 -0
  255. package/package.json +7 -5
@@ -0,0 +1,75 @@
1
+ /** Focused production starter for `noodle init --template widget`. */
2
+ export const widgetFocusedHelpers = `import type { ServerDefinition } from '@noodleseed/one';
3
+ import { generateHelpers } from '@noodleseed/one/react';
4
+
5
+ export { Action, ActionBar, AsyncBoundary, Feedback, Field, Flow, Frame, Region, Select } from '@noodleseed/one/react';
6
+ export const { useCallTool, useLayout, useToolInfo, useViewState } = generateHelpers<ServerDefinition>();
7
+ `;
8
+ export const widgetFocusedView = `import '@noodleseed/one/react/styles.css';
9
+ import {
10
+ Action,
11
+ ActionBar,
12
+ AsyncBoundary,
13
+ Feedback,
14
+ Field,
15
+ Flow,
16
+ Frame,
17
+ Region,
18
+ Select,
19
+ useCallTool,
20
+ useLayout,
21
+ useToolInfo,
22
+ useViewState,
23
+ } from '../helpers.js';
24
+
25
+ type Preferences = { readonly channel?: 'email' | 'sms'; readonly summary?: string };
26
+
27
+ export default function PreferencesCard() {
28
+ const layout = useLayout();
29
+ const shown = (useToolInfo('show_preferences').structuredContent ?? {}) as Preferences;
30
+ const save = useCallTool('save_preferences');
31
+ const [channel, setChannel] = useViewState('channel', shown.channel ?? 'email');
32
+ const saved = save.data?.structuredContent as Preferences | undefined;
33
+
34
+ return (
35
+ <Frame
36
+ className={layout.theme === 'dark' ? 'dark' : ''}
37
+ displayMode="auto"
38
+ title="Notification preferences"
39
+ subtitle="Choose where concise updates should arrive."
40
+ data-llm={saved?.summary ?? \`Notification channel: \${channel}\`}
41
+ >
42
+ <Flow variant="stack" density={layout.displayMode === 'inline' ? 'compact' : 'comfortable'}>
43
+ <AsyncBoundary
44
+ state={save}
45
+ loading="Saving your preference…"
46
+ error={(error) => \`Could not save: \${error.message}\`}
47
+ >
48
+ {saved?.summary ? <Feedback status="success">{saved.summary}</Feedback> : null}
49
+ <Region title="Delivery channel" description="You can change this later.">
50
+ <Field label="Channel" detail="Email is the safe default for this starter.">
51
+ <Select
52
+ value={channel}
53
+ onChange={(event) => setChannel(event.currentTarget.value as 'email' | 'sms')}
54
+ options={[{ value: 'email', label: 'Email' }, { value: 'sms', label: 'SMS' }]}
55
+ />
56
+ </Field>
57
+ </Region>
58
+ <ActionBar>
59
+ <Action
60
+ variant="primary"
61
+ pending={save.isPending}
62
+ pendingLabel="Saving…"
63
+ onClick={() => save.callTool({ channel })}
64
+ >
65
+ Save preference
66
+ </Action>
67
+ {save.status === 'error' ? <Action onClick={save.reset}>Try again</Action> : null}
68
+ </ActionBar>
69
+ </AsyncBoundary>
70
+ </Flow>
71
+ </Frame>
72
+ );
73
+ }
74
+ `;
75
+ //# sourceMappingURL=widget-focused-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-focused-template.js","sourceRoot":"","sources":["../src/widget-focused-template.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;CAKnC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEhC,CAAC"}
@@ -1,4 +1,4 @@
1
- /** The widget starter is a developer-facing gallery for the complete public React component surface. */
1
+ /** The widget starter is a focused production baseline; the full gallery stays an internal fixture. */
2
2
  import type { ProjectAgentTarget } from './project.js';
3
3
  export declare function widgetFiles(name: string, agentTargets: readonly ProjectAgentTarget[]): Record<string, string>;
4
4
  //# sourceMappingURL=widget-scaffold-template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget-scaffold-template.d.ts","sourceRoot":"","sources":["../src/widget-scaffold-template.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQvD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+IxB"}
1
+ {"version":3,"file":"widget-scaffold-template.d.ts","sourceRoot":"","sources":["../src/widget-scaffold-template.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIvD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuOxB"}
@@ -1,32 +1,85 @@
1
1
  import { commonFiles, manifestName, title } from './project-scaffold-templates.js';
2
- import { widgetShowcaseHelpers, widgetShowcaseSections, widgetShowcaseView, } from './widget-showcase-template.js';
2
+ import { widgetFocusedHelpers, widgetFocusedView } from './widget-focused-template.js';
3
3
  export function widgetFiles(name, agentTargets) {
4
4
  const serverName = manifestName(name);
5
- const files = commonFiles(name, 'widget', agentTargets, `import { annotations, server, tool, z } from '@noodleseed/one';
5
+ const files = commonFiles(name, 'widget', agentTargets, `import {
6
+ annotations,
7
+ embeddedAssistant,
8
+ openAICompatible,
9
+ prompt,
10
+ resource,
11
+ secret,
12
+ server,
13
+ tool,
14
+ variable,
15
+ z,
16
+ } from '@noodleseed/one';
6
17
 
7
- const showcaseOutput = z.object({
8
- title: z.string(),
9
- version: z.string(),
10
- description: z.string(),
11
- sections: z.array(z.string()),
18
+ const preferences = z.object({
19
+ channel: z.enum(['email', 'sms']),
20
+ summary: z.string(),
12
21
  });
13
22
 
14
- export default server('${serverName}', { title: '${title(name)}', version: '1.0.0' }, [
15
- tool('show_design_system', {
16
- description: 'Open an interactive developer gallery of every Noodle React component family.',
23
+ export default server('${serverName}', {
24
+ title: '${title(name)}',
25
+ version: '1.0.0',
26
+ instructions: 'Help users understand their workspace, update preferences, and plan a safe next step.',
27
+ branding: {
28
+ name: '${title(name)}',
29
+ accent: '#1D9E75',
30
+ radius: 'md',
31
+ density: 'comfortable',
32
+ },
33
+ handoff: { allowedDomains: ['https://your-app.example.com'] },
34
+ state: {
35
+ handles: {
36
+ workspace_draft: {
37
+ kind: 'draft',
38
+ scope: 'caller',
39
+ version: '1',
40
+ ttlSeconds: 86400,
41
+ schema: z.object({ note: z.string(), updatedAt: z.string() }),
42
+ },
43
+ },
44
+ },
45
+ assistant: embeddedAssistant({
46
+ model: openAICompatible({
47
+ baseUrl: variable('ASSISTANT_MODEL_BASE_URL'),
48
+ model: variable('ASSISTANT_MODEL'),
49
+ apiKey: secret('ASSISTANT_MODEL_API_KEY'),
50
+ }),
51
+ allowedOrigins: ['https://your-app.example.com'],
52
+ layout: { mode: 'floating', position: 'bottom-right', density: 'comfortable', mobileFullscreen: true },
53
+ labels: {
54
+ welcomeHeading: 'How can I help?',
55
+ composerPlaceholder: 'Ask about your workspace…',
56
+ },
57
+ suggestedPrompts: ['Show my workspace', 'Help me choose a next step'],
58
+ }),
59
+ }, [
60
+ tool('list_workspace_items', {
61
+ description: 'List the current workspace items with concise status summaries.',
62
+ annotations: annotations.readOnly(),
63
+ input: z.object({ status: z.enum(['all', 'active', 'done']).default('all') }),
64
+ output: z.object({ items: z.array(z.object({ id: z.string(), title: z.string(), status: z.string() })) }),
65
+ fulfil: () => ({ items: [
66
+ { id: 'item-1', title: 'Review the production starter', status: 'active' },
67
+ { id: 'item-2', title: 'Connect a real customer API', status: 'active' },
68
+ ] }),
69
+ }),
70
+ tool('show_preferences', {
71
+ description: 'Show the current notification preference in a focused widget.',
17
72
  annotations: annotations.readOnly(),
18
- input: z.object({ focus: z.string().default('foundations') }),
19
- output: showcaseOutput,
73
+ input: z.object({}),
74
+ output: preferences,
20
75
  fulfil: () => ({
21
- title: 'Noodle React design system',
22
- version: '1.0.0',
23
- description: 'Interactive reference for host-neutral MCP Apps components.',
24
- sections: ['foundations', 'forms', 'data', 'feedback', 'overlays', 'layouts'],
76
+ channel: 'email',
77
+ summary: 'Updates currently arrive by email.',
25
78
  }),
26
- viewTitle: 'Noodle React design system',
27
- viewDescription: 'Browse and interact with the public Noodle React design-system components.',
28
- invoking: 'Loading the design system…',
29
- invoked: 'Design system ready',
79
+ viewTitle: 'Notification preferences',
80
+ viewDescription: 'Review and update one notification preference.',
81
+ invoking: 'Loading preferences…',
82
+ invoked: 'Preferences ready',
30
83
  // Optional host compatibility metadata. Replace this placeholder before public distribution.
31
84
  domain: 'https://your-app.example.com',
32
85
  csp: {
@@ -35,27 +88,39 @@ export default server('${serverName}', { title: '${title(name)}', version: '1.0.
35
88
  frameDomains: [],
36
89
  },
37
90
  view: {
38
- component: 'design-system-showcase',
39
- entry: './views/design-system-showcase.tsx',
91
+ component: 'preferences-card',
92
+ entry: './views/preferences-card.tsx',
40
93
  },
41
94
  }),
42
- tool('run_component_demo', {
43
- description: 'Return a sample success result for interactive component demos in the gallery.',
95
+ tool('save_preferences', {
96
+ description: 'Save a notification preference selected explicitly in the widget.',
44
97
  annotations: annotations.localAction({ destructive: false }),
45
98
  visibility: ['app'],
46
99
  input: z.object({
47
- component: z.string(),
48
- value: z.string().default('example'),
100
+ channel: z.enum(['email', 'sms']),
49
101
  }),
50
102
  output: z.object({
51
- ok: z.boolean(),
103
+ channel: z.enum(['email', 'sms']),
52
104
  summary: z.string(),
53
105
  }),
54
106
  fulfil: ({ input }) => ({
55
- ok: true,
56
- summary: \`Ran \${input.component} with \${input.value}.\`,
107
+ channel: input.channel,
108
+ summary: \`Updates will arrive by \${input.channel}.\`,
57
109
  }),
58
110
  }),
111
+ resource('workspace_guide', {
112
+ uri: 'docs://workspace/guide',
113
+ title: 'Workspace guide',
114
+ description: 'Grounding information for the generated production starter.',
115
+ mimeType: 'text/markdown',
116
+ fulfil: () => '# Workspace guide\\n\\nThis starter demonstrates tools, resources, prompts, a widget, state, handoff, and an embedded assistant.',
117
+ }),
118
+ prompt('plan_next_step', {
119
+ title: 'Plan the next workspace step',
120
+ description: 'Prepare a grounded, human-reviewable next-step plan.',
121
+ arguments: z.object({ goal: z.string().default('Ship the first customer integration') }),
122
+ fulfil: (ctx) => ({ messages: [{ role: 'user', content: { type: 'text', text: \`Plan the safest next step for: \${ctx.params?.goal ?? 'Ship the first customer integration'}\` } }] }),
123
+ }),
59
124
  ]);
60
125
  `, {
61
126
  '@types/react': 'latest',
@@ -83,9 +148,8 @@ export default server('${serverName}', { title: '${title(name)}', version: '1.0.
83
148
  }
84
149
  `,
85
150
  'src/vite-env.d.ts': '/// <reference types="vite/client" />\n',
86
- 'src/helpers.ts': widgetShowcaseHelpers,
87
- 'src/views/design-system-showcase.tsx': widgetShowcaseView,
88
- 'src/views/showcase-sections.tsx': widgetShowcaseSections,
151
+ 'src/helpers.ts': widgetFocusedHelpers,
152
+ 'src/views/preferences-card.tsx': widgetFocusedView,
89
153
  'vite.config.ts': `import { defineConfig } from 'vite';
90
154
  import react from '@vitejs/plugin-react';
91
155
 
@@ -106,19 +170,20 @@ local widget preview and \`noodle check\` for readiness findings.
106
170
 
107
171
  ## Widget authoring
108
172
 
109
- This React-first widget authoring target for MCP Apps is a developer-facing design-system showcase. Browse
110
- the category navigation to inspect foundations, forms, data display, feedback states, overlays, and layout
111
- components, then interact with the controls in light/dark and desktop/mobile preview modes. It is a
112
- reference implementation, not a product UX prescription: production apps should still be focused around their own
113
- user task. Ordinary React, CSS, and third-party components remain supported alongside the optional,
114
- host-neutral \`@noodleseed/one/react\` kit.
173
+ This is a comprehensive production starter rather than a minimal demo. It ships model-visible and app-only
174
+ tools, a resource, prompt, caller-scoped state contract, branded widget, handoff policy, and an embedded
175
+ assistant configured through managed variables and a managed secret reference. The widget itself keeps one
176
+ purpose and one primary action, with safe prefilling and explicit loading, empty, error, retry, and success states.
115
177
 
116
178
  - \`tool(..., { view })\` links the model-visible tool to the React view.
117
- - \`tool(..., { visibility: ['app'] })\` powers the gallery's app-only interactive demo.
179
+ - \`tool(..., { visibility: ['app'] })\` powers the widget's explicit save action.
118
180
  - \`view.component\` links the tool to a React view in \`src/views/\`.
119
181
  - \`useLayout()\` adapts to MCP Apps host context without requiring a host-specific global.
120
- - \`useAppFlow()\`, \`ViewNav\`, \`ViewStack\`, and \`View\` organize the gallery categories.
182
+ - Keep inline widgets to one primary action and at most one subordinate action; use progressive disclosure
183
+ instead of nested navigation or scrolling.
121
184
  - Optional host extensions should always be feature-detected and must not be required for baseline use.
185
+ - \`agent:check:assistant\` validates the embedded assistant metadata; configure its managed model values
186
+ before deployment instead of putting credentials in source.
122
187
 
123
188
  ## Deploy (requires a Noodle Seed account)
124
189
 
@@ -128,7 +193,30 @@ noodle deploy --org <org> --app ${name}
128
193
  \`\`\`
129
194
 
130
195
  The generated project is fully usable locally before login. Authentication is only required when you
131
- choose to deploy it. Replace the placeholder domain before public distribution.
196
+ choose to deploy it. Replace the placeholder domain before public distribution. Configure
197
+ \`ASSISTANT_MODEL_BASE_URL\` and \`ASSISTANT_MODEL\` with \`noodle variables set\`, and
198
+ \`ASSISTANT_MODEL_API_KEY\` with \`noodle secrets set\`; those values belong to the Noodle deployment,
199
+ not the embedding SaaS environment.
200
+
201
+ ## Embedded assistant
202
+
203
+ The local MCP author loop above needs no account. A browser embed additionally needs an active deployment
204
+ before it can create a deployment-bound backend client:
205
+
206
+ 1. Replace \`assistant.allowedOrigins\` with exact HTTPS origins. For local browser testing, serve the
207
+ embedding SaaS over framework-supported HTTPS and use an origin such as \`https://localhost:3000\`;
208
+ \`http://localhost\`, paths, trailing slashes, and wildcards are invalid.
209
+ 2. Run \`noodle validate --json\` and \`noodle check --target embedded-assistant --json\`, then deploy
210
+ with \`noodle deploy\`.
211
+ 3. Run \`noodle assistant clients create --name web --org <org> --app ${name} --env prod\`.
212
+ 4. Install \`@noodleseed/assistant\` in the customer web application with its existing package manager.
213
+ 5. Keep only \`NOODLE_SERVICE_URL\`, \`NOODLE_ASSISTANT_CLIENT_ID\`, and
214
+ \`NOODLE_ASSISTANT_CLIENT_SECRET\` in the authenticated SaaS backend. Never use public/browser-prefixed
215
+ variables for the secret. The backend exchanges its verified user through
216
+ \`@noodleseed/assistant/server\`; the browser mounts the package root or \`/react\` export.
217
+
218
+ Run \`noodle commands --json\` before scripting flags. The installed Noodle Agent Kit contains the complete
219
+ \`references/embedded-assistant.md\` workflow.
132
220
 
133
221
  ## Agent setup
134
222
 
@@ -1 +1 @@
1
- {"version":3,"file":"widget-scaffold-template.js","sourceRoot":"","sources":["../src/widget-scaffold-template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,YAA2C;IAE3C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,WAAW,CACvB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ;;;;;;;;;yBASqB,UAAU,gBAAgB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C7D,EACG;QACE,cAAc,EAAE,QAAQ;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,sBAAsB,EAAE,QAAQ;QAChC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;KACf,CACF,CAAC;IAEF,OAAO;QACL,GAAG,KAAK;QACR,eAAe,EAAE;;;;;;;;;;;;;;CAcpB;QACG,mBAAmB,EAAE,yCAAyC;QAC9D,gBAAgB,EAAE,qBAAqB;QACvC,sCAAsC,EAAE,kBAAkB;QAC1D,iCAAiC,EAAE,sBAAsB;QACzD,gBAAgB,EAAE;;;;;;CAMrB;QACG,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA+BC,IAAI;;;;;;;;;;CAUrC;KACE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"widget-scaffold-template.js","sourceRoot":"","sources":["../src/widget-scaffold-template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEvF,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,YAA2C;IAE3C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,WAAW,CACvB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ;;;;;;;;;;;;;;;;;;yBAkBqB,UAAU;YACvB,KAAK,CAAC,IAAI,CAAC;;;;aAIV,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGvB,EACG;QACE,cAAc,EAAE,QAAQ;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,sBAAsB,EAAE,QAAQ;QAChC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;KACf,CACF,CAAC;IAEF,OAAO;QACL,GAAG,KAAK;QACR,eAAe,EAAE;;;;;;;;;;;;;;CAcpB;QACG,mBAAmB,EAAE,yCAAyC;QAC9D,gBAAgB,EAAE,oBAAoB;QACtC,gCAAgC,EAAE,iBAAiB;QACnD,gBAAgB,EAAE;;;;;;CAMrB;QACG,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAgCC,IAAI;;;;;;;;;;;;;;;;;;;wEAmBkC,IAAI;;;;;;;;;;;;;;CAc3E;KACE,CAAC;AACJ,CAAC"}
@@ -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,CAyE9C,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,CA2E9C,CAAC"}
@@ -11,6 +11,7 @@ export const ERROR_FIXES = {
11
11
  invalid_name: 'Rename the identifier to match the allowed pattern (lowercase, no spaces/reserved characters) cited at `path`.',
12
12
  duplicate_name: 'Two tools/components share a name; give each a unique name at the cited `path`.',
13
13
  unsupported_manifest_version: 'Update the SDK/CLI so the emitted manifest version is supported; do not pin an old manifest shape.',
14
+ reserved_for_future_version: 'The verb at `path` (e.g. `compute`, `elicit`) is reserved for a future core version; express the step with `use` (a connector operation) or `map` (a pure mapping) instead.',
14
15
  invalid_operation_ref: 'Fix the connector operation reference to `alias.operation` for an operation that exists on that connector.',
15
16
  external_ref: 'Remove the external/remote `$ref`; schemas must be self-contained — inline the definition instead of dereferencing a URL.',
16
17
  invalid_schema_ref: 'Correct the `$use` schema reference syntax at `path`; it does not name a resolvable local schema.',
@@ -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,cAAc,EAAE,iFAAiF;IACjG,4BAA4B,EAC1B,oGAAoG;IACtG,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,iBAAiB,EACf,4GAA4G;IAC9G,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,cAAc,EAAE,iFAAiF;IACjG,4BAA4B,EAC1B,oGAAoG;IACtG,2BAA2B,EACzB,6KAA6K;IAC/K,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,iBAAiB,EACf,4GAA4G;IAC9G,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"}