@noodleseed/one 0.57.0 → 0.59.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 (525) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +72 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/alerts-ops.d.ts +2 -1
  5. package/dist/commands/alerts-ops.d.ts.map +1 -1
  6. package/dist/commands/alerts-ops.js.map +1 -1
  7. package/dist/commands/analytics-ops.d.ts +4 -3
  8. package/dist/commands/analytics-ops.d.ts.map +1 -1
  9. package/dist/commands/analytics-ops.js.map +1 -1
  10. package/dist/commands/apps-ops.d.ts +5 -4
  11. package/dist/commands/apps-ops.d.ts.map +1 -1
  12. package/dist/commands/apps-ops.js.map +1 -1
  13. package/dist/commands/archive-ops.d.ts +3 -2
  14. package/dist/commands/archive-ops.d.ts.map +1 -1
  15. package/dist/commands/archive-ops.js.map +1 -1
  16. package/dist/commands/assistant-embed-ops.d.ts +9 -1
  17. package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
  18. package/dist/commands/assistant-embed-ops.js.map +1 -1
  19. package/dist/commands/assistant-ops.d.ts +2 -1
  20. package/dist/commands/assistant-ops.d.ts.map +1 -1
  21. package/dist/commands/assistant-ops.js +3 -2
  22. package/dist/commands/assistant-ops.js.map +1 -1
  23. package/dist/commands/audit-ops.d.ts +2 -1
  24. package/dist/commands/audit-ops.d.ts.map +1 -1
  25. package/dist/commands/audit-ops.js.map +1 -1
  26. package/dist/commands/auth-ops.d.ts +2 -1
  27. package/dist/commands/auth-ops.d.ts.map +1 -1
  28. package/dist/commands/auth-ops.js.map +1 -1
  29. package/dist/commands/author-loop.d.ts +4 -3
  30. package/dist/commands/author-loop.d.ts.map +1 -1
  31. package/dist/commands/author-loop.js.map +1 -1
  32. package/dist/commands/billing-apply-ops.d.ts +2 -1
  33. package/dist/commands/billing-apply-ops.d.ts.map +1 -1
  34. package/dist/commands/billing-apply-ops.js.map +1 -1
  35. package/dist/commands/billing-enforcement-activation-ops.d.ts +2 -1
  36. package/dist/commands/billing-enforcement-activation-ops.d.ts.map +1 -1
  37. package/dist/commands/billing-enforcement-activation-ops.js.map +1 -1
  38. package/dist/commands/billing-enforcement-ops.d.ts +2 -1
  39. package/dist/commands/billing-enforcement-ops.d.ts.map +1 -1
  40. package/dist/commands/billing-enforcement-ops.js.map +1 -1
  41. package/dist/commands/billing-metering-ops.d.ts +2 -1
  42. package/dist/commands/billing-metering-ops.d.ts.map +1 -1
  43. package/dist/commands/billing-metering-ops.js.map +1 -1
  44. package/dist/commands/billing-metering-validation-ops.d.ts +2 -1
  45. package/dist/commands/billing-metering-validation-ops.d.ts.map +1 -1
  46. package/dist/commands/billing-metering-validation-ops.js.map +1 -1
  47. package/dist/commands/billing-ops.d.ts +2 -1
  48. package/dist/commands/billing-ops.d.ts.map +1 -1
  49. package/dist/commands/billing-ops.js.map +1 -1
  50. package/dist/commands/billing-read-ops.d.ts +3 -2
  51. package/dist/commands/billing-read-ops.d.ts.map +1 -1
  52. package/dist/commands/billing-read-ops.js.map +1 -1
  53. package/dist/commands/billing-stripe-ops.d.ts +2 -1
  54. package/dist/commands/billing-stripe-ops.d.ts.map +1 -1
  55. package/dist/commands/billing-stripe-ops.js.map +1 -1
  56. package/dist/commands/config-values.d.ts +2 -1
  57. package/dist/commands/config-values.d.ts.map +1 -1
  58. package/dist/commands/config-values.js.map +1 -1
  59. package/dist/commands/deploy-github-hint.d.ts +6 -0
  60. package/dist/commands/deploy-github-hint.d.ts.map +1 -0
  61. package/dist/commands/deploy-github-hint.js +53 -0
  62. package/dist/commands/deploy-github-hint.js.map +1 -0
  63. package/dist/commands/deploy-ops.d.ts +5 -7
  64. package/dist/commands/deploy-ops.d.ts.map +1 -1
  65. package/dist/commands/deploy-ops.js +14 -54
  66. package/dist/commands/deploy-ops.js.map +1 -1
  67. package/dist/commands/deploy-status-ops.d.ts +5 -3
  68. package/dist/commands/deploy-status-ops.d.ts.map +1 -1
  69. package/dist/commands/deploy-status-ops.js +9 -1
  70. package/dist/commands/deploy-status-ops.js.map +1 -1
  71. package/dist/commands/deploy-target.d.ts +2 -1
  72. package/dist/commands/deploy-target.d.ts.map +1 -1
  73. package/dist/commands/deploy-target.js.map +1 -1
  74. package/dist/commands/deployments-ops.d.ts +5 -4
  75. package/dist/commands/deployments-ops.d.ts.map +1 -1
  76. package/dist/commands/deployments-ops.js.map +1 -1
  77. package/dist/commands/devtools.d.ts +2 -1
  78. package/dist/commands/devtools.d.ts.map +1 -1
  79. package/dist/commands/devtools.js.map +1 -1
  80. package/dist/commands/diagnostics-ops.d.ts +3 -2
  81. package/dist/commands/diagnostics-ops.d.ts.map +1 -1
  82. package/dist/commands/diagnostics-ops.js.map +1 -1
  83. package/dist/commands/envs-ops.d.ts +4 -3
  84. package/dist/commands/envs-ops.d.ts.map +1 -1
  85. package/dist/commands/envs-ops.js.map +1 -1
  86. package/dist/commands/feedback-ops.d.ts +2 -1
  87. package/dist/commands/feedback-ops.d.ts.map +1 -1
  88. package/dist/commands/feedback-ops.js.map +1 -1
  89. package/dist/commands/github-ops.d.ts +5 -4
  90. package/dist/commands/github-ops.d.ts.map +1 -1
  91. package/dist/commands/github-ops.js.map +1 -1
  92. package/dist/commands/github-runs-ops.d.ts +2 -1
  93. package/dist/commands/github-runs-ops.d.ts.map +1 -1
  94. package/dist/commands/github-runs-ops.js.map +1 -1
  95. package/dist/commands/github-shared.d.ts +2 -1
  96. package/dist/commands/github-shared.d.ts.map +1 -1
  97. package/dist/commands/github-shared.js.map +1 -1
  98. package/dist/commands/logs-ops.d.ts +2 -1
  99. package/dist/commands/logs-ops.d.ts.map +1 -1
  100. package/dist/commands/logs-ops.js.map +1 -1
  101. package/dist/commands/org-admin.d.ts +3 -2
  102. package/dist/commands/org-admin.d.ts.map +1 -1
  103. package/dist/commands/org-admin.js.map +1 -1
  104. package/dist/commands/org-openai-challenge.d.ts +2 -1
  105. package/dist/commands/org-openai-challenge.d.ts.map +1 -1
  106. package/dist/commands/org-openai-challenge.js.map +1 -1
  107. package/dist/commands/policy-ops.d.ts +2 -1
  108. package/dist/commands/policy-ops.d.ts.map +1 -1
  109. package/dist/commands/policy-ops.js.map +1 -1
  110. package/dist/commands/resource-shared.d.ts +2 -1
  111. package/dist/commands/resource-shared.d.ts.map +1 -1
  112. package/dist/commands/resource-shared.js.map +1 -1
  113. package/dist/commands/service-ops.d.ts +2 -1
  114. package/dist/commands/service-ops.d.ts.map +1 -1
  115. package/dist/commands/service-ops.js.map +1 -1
  116. package/dist/commands/session.d.ts +12 -4
  117. package/dist/commands/session.d.ts.map +1 -1
  118. package/dist/commands/session.js +40 -9
  119. package/dist/commands/session.js.map +1 -1
  120. package/dist/commands/shared.d.ts +2 -1
  121. package/dist/commands/shared.d.ts.map +1 -1
  122. package/dist/commands/shared.js.map +1 -1
  123. package/dist/config.d.ts +17 -8
  124. package/dist/config.d.ts.map +1 -1
  125. package/dist/config.js +2 -2
  126. package/dist/config.js.map +1 -1
  127. package/dist/control-plane.d.ts +10 -3
  128. package/dist/control-plane.d.ts.map +1 -1
  129. package/dist/control-plane.js +38 -2
  130. package/dist/control-plane.js.map +1 -1
  131. package/dist/doctor.d.ts +2 -1
  132. package/dist/doctor.d.ts.map +1 -1
  133. package/dist/doctor.js.map +1 -1
  134. package/dist/first-run-entry.d.ts +2 -1
  135. package/dist/first-run-entry.d.ts.map +1 -1
  136. package/dist/first-run-entry.js.map +1 -1
  137. package/dist/first-run.d.ts +2 -1
  138. package/dist/first-run.d.ts.map +1 -1
  139. package/dist/first-run.js.map +1 -1
  140. package/dist/index.d.ts +4 -1
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +3 -0
  143. package/dist/index.js.map +1 -1
  144. package/dist/local-target.d.ts +2 -1
  145. package/dist/local-target.d.ts.map +1 -1
  146. package/dist/local-target.js.map +1 -1
  147. package/dist/plugin-mode/build-readiness-contract.d.ts +36 -0
  148. package/dist/plugin-mode/build-readiness-contract.d.ts.map +1 -0
  149. package/dist/plugin-mode/build-readiness-contract.js +107 -0
  150. package/dist/plugin-mode/build-readiness-contract.js.map +1 -0
  151. package/dist/plugin-mode/build-readiness-fingerprint.d.ts +7 -0
  152. package/dist/plugin-mode/build-readiness-fingerprint.d.ts.map +1 -0
  153. package/dist/plugin-mode/build-readiness-fingerprint.js +83 -0
  154. package/dist/plugin-mode/build-readiness-fingerprint.js.map +1 -0
  155. package/dist/plugin-mode/build-readiness-recorder.d.ts +15 -0
  156. package/dist/plugin-mode/build-readiness-recorder.d.ts.map +1 -0
  157. package/dist/plugin-mode/build-readiness-recorder.js +150 -0
  158. package/dist/plugin-mode/build-readiness-recorder.js.map +1 -0
  159. package/dist/plugin-mode/build-readiness-server.d.ts +22 -0
  160. package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -0
  161. package/dist/plugin-mode/build-readiness-server.js +322 -0
  162. package/dist/plugin-mode/build-readiness-server.js.map +1 -0
  163. package/dist/plugin-mode/build-readiness-store.d.ts +16 -0
  164. package/dist/plugin-mode/build-readiness-store.d.ts.map +1 -0
  165. package/dist/plugin-mode/build-readiness-store.js +198 -0
  166. package/dist/plugin-mode/build-readiness-store.js.map +1 -0
  167. package/dist/plugin-mode/build-readiness-tools.d.ts +47 -0
  168. package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -0
  169. package/dist/plugin-mode/build-readiness-tools.js +159 -0
  170. package/dist/plugin-mode/build-readiness-tools.js.map +1 -0
  171. package/dist/plugin-mode/build-readiness-widget.css.d.ts +2 -0
  172. package/dist/plugin-mode/build-readiness-widget.css.d.ts.map +1 -0
  173. package/dist/plugin-mode/build-readiness-widget.css.js +217 -0
  174. package/dist/plugin-mode/build-readiness-widget.css.js.map +1 -0
  175. package/dist/plugin-mode/build-readiness-widget.d.ts +28 -0
  176. package/dist/plugin-mode/build-readiness-widget.d.ts.map +1 -0
  177. package/dist/plugin-mode/build-readiness-widget.js +60 -0
  178. package/dist/plugin-mode/build-readiness-widget.js.map +1 -0
  179. package/dist/plugin-mode/compatibility.d.ts +22 -0
  180. package/dist/plugin-mode/compatibility.d.ts.map +1 -0
  181. package/dist/plugin-mode/compatibility.js +59 -0
  182. package/dist/plugin-mode/compatibility.js.map +1 -0
  183. package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts +13 -0
  184. package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts.map +1 -0
  185. package/dist/plugin-mode/plugin-mcp-bootstrap.js +90 -0
  186. package/dist/plugin-mode/plugin-mcp-bootstrap.js.map +1 -0
  187. package/dist/plugin-mode/profile.d.ts +16 -0
  188. package/dist/plugin-mode/profile.d.ts.map +1 -0
  189. package/dist/plugin-mode/profile.js +66 -0
  190. package/dist/plugin-mode/profile.js.map +1 -0
  191. package/dist/plugin-mode/service-compatibility.d.ts +15 -0
  192. package/dist/plugin-mode/service-compatibility.d.ts.map +1 -0
  193. package/dist/plugin-mode/service-compatibility.js +57 -0
  194. package/dist/plugin-mode/service-compatibility.js.map +1 -0
  195. package/dist/update-check.d.ts +2 -16
  196. package/dist/update-check.d.ts.map +1 -1
  197. package/dist/update-check.js.map +1 -1
  198. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  199. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  200. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts +1 -1
  201. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  202. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -1
  203. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  204. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +3 -0
  205. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
  206. package/node_modules/@noodle-borg/agent-kit/dist/index.js +3 -0
  207. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  208. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +5 -0
  209. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
  210. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +106 -28
  211. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  212. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts +22 -0
  213. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts.map +1 -0
  214. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js +100 -0
  215. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js.map +1 -0
  216. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts +8 -0
  217. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -0
  218. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +55 -0
  219. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -0
  220. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts +27 -0
  221. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts.map +1 -0
  222. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +108 -0
  223. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -0
  224. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts +9 -0
  225. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -0
  226. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +121 -0
  227. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -0
  228. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts +130 -0
  229. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts.map +1 -0
  230. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js +220 -0
  231. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js.map +1 -0
  232. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  233. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +2 -0
  234. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  235. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  236. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +5 -0
  237. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  238. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +4 -0
  239. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -1
  240. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +2 -0
  241. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -1
  242. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +4 -0
  243. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  244. package/node_modules/@noodle-borg/auth/dist/verify.js +10 -0
  245. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
  246. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts +9 -0
  247. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts.map +1 -0
  248. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js +41 -0
  249. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js.map +1 -0
  250. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts +637 -0
  251. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts.map +1 -0
  252. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +364 -0
  253. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js.map +1 -0
  254. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts +79 -0
  255. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts.map +1 -0
  256. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js +138 -0
  257. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js.map +1 -0
  258. package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts +12 -0
  259. package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts.map +1 -0
  260. package/node_modules/@noodle-borg/developer-mcp/dist/index.js +12 -0
  261. package/node_modules/@noodle-borg/developer-mcp/dist/index.js.map +1 -0
  262. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts +16 -0
  263. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts.map +1 -0
  264. package/node_modules/@noodle-borg/developer-mcp/dist/port.js +9 -0
  265. package/node_modules/@noodle-borg/developer-mcp/dist/port.js.map +1 -0
  266. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts +16 -0
  267. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts.map +1 -0
  268. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js +51 -0
  269. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js.map +1 -0
  270. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts +13 -0
  271. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -0
  272. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js +90 -0
  273. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js.map +1 -0
  274. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts +31 -0
  275. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts.map +1 -0
  276. package/node_modules/@noodle-borg/developer-mcp/dist/results.js +80 -0
  277. package/node_modules/@noodle-borg/developer-mcp/dist/results.js.map +1 -0
  278. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts +19 -0
  279. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts.map +1 -0
  280. package/node_modules/@noodle-borg/developer-mcp/dist/server.js +79 -0
  281. package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -0
  282. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts +43 -0
  283. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts.map +1 -0
  284. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js +77 -0
  285. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js.map +1 -0
  286. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts +4 -0
  287. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts.map +1 -0
  288. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js +21 -0
  289. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js.map +1 -0
  290. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts +61 -0
  291. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts.map +1 -0
  292. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js +37 -0
  293. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js.map +1 -0
  294. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts +29 -0
  295. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts.map +1 -0
  296. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js +83 -0
  297. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js.map +1 -0
  298. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts +7 -0
  299. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts.map +1 -0
  300. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js +7 -0
  301. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js.map +1 -0
  302. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts +138 -0
  303. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts.map +1 -0
  304. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js +99 -0
  305. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js.map +1 -0
  306. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts +24 -0
  307. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts.map +1 -0
  308. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js +59 -0
  309. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js.map +1 -0
  310. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts +16 -0
  311. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts.map +1 -0
  312. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js +20 -0
  313. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js.map +1 -0
  314. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts +2 -0
  315. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts.map +1 -0
  316. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js +6 -0
  317. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js.map +1 -0
  318. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts +2 -0
  319. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts.map +1 -0
  320. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js +6 -0
  321. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js.map +1 -0
  322. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts +2 -0
  323. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts.map +1 -0
  324. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js +7 -0
  325. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js.map +1 -0
  326. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts +2 -0
  327. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts.map +1 -0
  328. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js +6 -0
  329. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js.map +1 -0
  330. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts +37 -0
  331. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts.map +1 -0
  332. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js +76 -0
  333. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js.map +1 -0
  334. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts +30 -0
  335. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts.map +1 -0
  336. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +23 -0
  337. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js.map +1 -0
  338. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts +2 -0
  339. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts.map +1 -0
  340. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js +153 -0
  341. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js.map +1 -0
  342. package/node_modules/@noodle-borg/developer-mcp/package.json +37 -0
  343. package/node_modules/@noodle-borg/module/dist/contract.d.ts +4 -0
  344. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  345. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  346. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +7 -1
  347. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
  348. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +17 -5
  349. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
  350. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts +16 -0
  351. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts.map +1 -0
  352. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js +40 -0
  353. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js.map +1 -0
  354. package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.d.ts +6 -0
  355. package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.d.ts.map +1 -1
  356. package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.js.map +1 -1
  357. package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.d.ts +45 -0
  358. package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.d.ts.map +1 -0
  359. package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.js +175 -0
  360. package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.js.map +1 -0
  361. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.d.ts.map +1 -1
  362. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js +17 -0
  363. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js.map +1 -1
  364. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.d.ts.map +1 -1
  365. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js +8 -0
  366. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js.map +1 -1
  367. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.d.ts.map +1 -1
  368. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.js +10 -0
  369. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.js.map +1 -1
  370. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
  371. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +2 -0
  372. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
  373. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.d.ts +4 -0
  374. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.d.ts.map +1 -0
  375. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.js +94 -0
  376. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.js.map +1 -0
  377. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.d.ts +10 -0
  378. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.d.ts.map +1 -0
  379. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.js +204 -0
  380. package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.js.map +1 -0
  381. package/node_modules/@noodle-borg/service/dist/build-info.d.ts +1 -0
  382. package/node_modules/@noodle-borg/service/dist/build-info.d.ts.map +1 -1
  383. package/node_modules/@noodle-borg/service/dist/build-info.js +11 -0
  384. package/node_modules/@noodle-borg/service/dist/build-info.js.map +1 -1
  385. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts +30 -0
  386. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts.map +1 -0
  387. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +311 -0
  388. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js.map +1 -0
  389. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts +69 -0
  390. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts.map +1 -0
  391. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js +118 -0
  392. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js.map +1 -0
  393. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts +29 -0
  394. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -0
  395. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +223 -0
  396. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -0
  397. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts +18 -0
  398. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts.map +1 -0
  399. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js +26 -0
  400. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js.map +1 -0
  401. package/node_modules/@noodle-borg/service/dist/index.d.ts +5 -0
  402. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  403. package/node_modules/@noodle-borg/service/dist/index.js +5 -0
  404. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  405. package/node_modules/@noodle-borg/service/dist/main.js +1 -0
  406. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  407. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  408. package/node_modules/@noodle-borg/service/dist/oauth/app.js +5 -0
  409. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  410. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +6 -0
  411. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
  412. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js +28 -0
  413. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js.map +1 -1
  414. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts +48 -0
  415. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts.map +1 -0
  416. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js +90 -0
  417. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js.map +1 -0
  418. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts +18 -0
  419. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts.map +1 -0
  420. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js +29 -0
  421. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js.map +1 -0
  422. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts +22 -0
  423. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -0
  424. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +144 -0
  425. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -0
  426. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts +12 -0
  427. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -0
  428. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +61 -0
  429. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -0
  430. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts +11 -0
  431. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts.map +1 -0
  432. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js +89 -0
  433. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js.map +1 -0
  434. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts +48 -0
  435. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts.map +1 -0
  436. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +123 -0
  437. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js.map +1 -0
  438. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
  439. package/node_modules/@noodle-borg/service/dist/oauth/paths.js +2 -0
  440. package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
  441. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +6 -1
  442. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  443. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +53 -0
  444. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  445. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
  446. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +17 -6
  447. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
  448. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +3 -0
  449. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
  450. package/node_modules/@noodle-borg/service/dist/oauth/store.js +2 -0
  451. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
  452. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts +2 -0
  453. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts.map +1 -1
  454. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js +8 -0
  455. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js.map +1 -1
  456. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts +52 -0
  457. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts.map +1 -0
  458. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js +120 -0
  459. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js.map +1 -0
  460. package/node_modules/@noodle-borg/service/dist/options.d.ts +7 -1
  461. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  462. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +2 -0
  463. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -1
  464. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +4 -4
  465. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -1
  466. package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts +4 -3
  467. package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts.map +1 -1
  468. package/node_modules/@noodle-borg/service/dist/routes/analytics.js +7 -7
  469. package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -1
  470. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +3 -2
  471. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -1
  472. package/node_modules/@noodle-borg/service/dist/routes/apps.js +28 -7
  473. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -1
  474. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +12 -1
  475. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  476. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +36 -4
  477. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  478. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +4 -3
  479. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  480. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +26 -18
  481. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  482. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.d.ts.map +1 -1
  483. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +8 -105
  484. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js.map +1 -1
  485. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +3 -2
  486. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -1
  487. package/node_modules/@noodle-borg/service/dist/routes/envs.js +9 -5
  488. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -1
  489. package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts +2 -1
  490. package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts.map +1 -1
  491. package/node_modules/@noodle-borg/service/dist/routes/logs.js +3 -3
  492. package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
  493. package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -1
  494. package/node_modules/@noodle-borg/service/dist/routes/plans.js +3 -14
  495. package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -1
  496. package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
  497. package/node_modules/@noodle-borg/service/dist/routes/policies.js +3 -14
  498. package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
  499. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts +8 -0
  500. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts.map +1 -0
  501. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +51 -0
  502. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js.map +1 -0
  503. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +2 -0
  504. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -1
  505. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +6 -6
  506. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -1
  507. package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
  508. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +25 -86
  509. package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
  510. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts +11 -0
  511. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts.map +1 -0
  512. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js +62 -0
  513. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js.map +1 -0
  514. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  515. package/node_modules/@noodle-borg/service/dist/serve.js +19 -62
  516. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  517. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  518. package/node_modules/@noodle-borg/service/dist/service.js +25 -45
  519. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  520. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -0
  521. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  522. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +35 -0
  523. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  524. package/node_modules/@noodle-borg/service/package.json +1 -0
  525. package/package.json +2 -1
@@ -0,0 +1,217 @@
1
+ export const BUILD_READINESS_WIDGET_STYLES = `
2
+ @layer reset, tokens, base, components, responsive, motion;
3
+
4
+ @layer reset {
5
+ *, *::before, *::after { box-sizing: border-box; }
6
+ html, body { margin: 0; min-width: 0; padding: 0; }
7
+ button { font: inherit; }
8
+ h1, h2, p, ol, ul { margin: 0; }
9
+ ol, ul { list-style: none; padding: 0; }
10
+ [hidden] { display: none !important; }
11
+ }
12
+
13
+ @layer tokens {
14
+ :root {
15
+ color-scheme: light dark;
16
+ --ns-bg: var(--color-background-primary, #ffffff);
17
+ --ns-surface: var(--color-background-secondary, #f7f7f8);
18
+ --ns-text: var(--color-text-primary, #17171a);
19
+ --ns-muted: var(--color-text-secondary, #6b6b73);
20
+ --ns-border: var(--color-border-secondary, #e4e4e8);
21
+ --ns-action: #0b0b0c;
22
+ --ns-on-action: #ffffff;
23
+ --ns-ok: var(--color-text-success, #16845b);
24
+ --ns-warn: var(--color-text-warning, #9a6700);
25
+ --ns-error: var(--color-text-danger, #c13c37);
26
+ --ns-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", Roboto, "Segoe UI", system-ui, sans-serif;
27
+ --ns-radius: 22px;
28
+ --ns-radius-sm: 14px;
29
+ --ns-shadow: 0 1px 2px rgb(0 0 0 / 0.04), 0 12px 34px rgb(0 0 0 / 0.06);
30
+ }
31
+ @media (prefers-color-scheme: dark) {
32
+ :root {
33
+ --ns-bg: var(--color-background-primary, #18181b);
34
+ --ns-surface: var(--color-background-secondary, #202024);
35
+ --ns-text: var(--color-text-primary, #f5f5f6);
36
+ --ns-muted: var(--color-text-secondary, #a7a7af);
37
+ --ns-border: var(--color-border-secondary, #35353b);
38
+ --ns-action: #f4f4f5;
39
+ --ns-on-action: #111113;
40
+ --ns-shadow: none;
41
+ }
42
+ }
43
+ }
44
+
45
+ @layer base {
46
+ body {
47
+ background: transparent;
48
+ color: var(--ns-text);
49
+ font-family: var(--ns-font);
50
+ font-size: 15px;
51
+ font-weight: 400;
52
+ line-height: 1.45;
53
+ text-rendering: optimizeLegibility;
54
+ }
55
+ button:focus-visible {
56
+ outline: 2px solid var(--ns-text);
57
+ outline-offset: 3px;
58
+ }
59
+ }
60
+
61
+ @layer components {
62
+ .readiness-card {
63
+ background: var(--ns-bg);
64
+ border: 1px solid var(--ns-border);
65
+ border-radius: var(--ns-radius);
66
+ box-shadow: var(--ns-shadow);
67
+ display: grid;
68
+ gap: 20px;
69
+ max-width: 560px;
70
+ min-width: 0;
71
+ overflow: hidden;
72
+ padding: 22px;
73
+ position: relative;
74
+ width: 100%;
75
+ }
76
+ .loading-shader {
77
+ background: linear-gradient(90deg, transparent 0%, rgb(120 119 198 / 0.16) 38%, rgb(255 255 255 / 0.5) 50%, rgb(120 119 198 / 0.16) 62%, transparent 100%);
78
+ height: 3px;
79
+ inset: 0 0 auto;
80
+ pointer-events: none;
81
+ position: absolute;
82
+ transform: translateX(-100%);
83
+ }
84
+ .brand-row, .decision-row, .action-row, .stage-row, .finding-row {
85
+ align-items: center;
86
+ display: flex;
87
+ min-width: 0;
88
+ }
89
+ .brand-row { color: var(--ns-muted); gap: 8px; }
90
+ .brand-mark {
91
+ align-items: center;
92
+ background: var(--ns-text);
93
+ border-radius: 7px;
94
+ color: var(--ns-bg);
95
+ display: inline-flex;
96
+ height: 24px;
97
+ justify-content: center;
98
+ width: 24px;
99
+ }
100
+ .brand-row p { font-size: 13px; letter-spacing: 0.01em; }
101
+ .decision { display: grid; gap: 10px; }
102
+ .decision-row { align-items: flex-start; gap: 12px; justify-content: space-between; }
103
+ .decision-copy { display: grid; gap: 6px; min-width: 0; }
104
+ h1 { font-size: clamp(22px, 6vw, 28px); font-weight: 500; letter-spacing: -0.035em; line-height: 1.12; }
105
+ h2 { font-size: 13px; font-weight: 500; letter-spacing: 0.01em; }
106
+ .summary { color: var(--ns-muted); max-width: 46ch; overflow-wrap: anywhere; }
107
+ .decision-badge {
108
+ align-items: center;
109
+ background: var(--ns-surface);
110
+ border: 1px solid var(--ns-border);
111
+ border-radius: 999px;
112
+ color: var(--ns-muted);
113
+ display: inline-flex;
114
+ flex: none;
115
+ font-size: 12px;
116
+ gap: 6px;
117
+ max-width: 44%;
118
+ min-height: 30px;
119
+ overflow-wrap: anywhere;
120
+ padding: 5px 10px;
121
+ }
122
+ .decision-badge::before, .stage-dot {
123
+ background: currentColor;
124
+ border-radius: 999px;
125
+ content: "";
126
+ flex: none;
127
+ height: 7px;
128
+ width: 7px;
129
+ }
130
+ [data-tone="ok"] { color: var(--ns-ok); }
131
+ [data-tone="warn"] { color: var(--ns-warn); }
132
+ [data-tone="error"] { color: var(--ns-error); }
133
+ [data-tone="neutral"] { color: var(--ns-muted); }
134
+ .section { border-top: 1px solid var(--ns-border); display: grid; gap: 12px; padding-top: 18px; }
135
+ .section-heading { align-items: baseline; display: flex; justify-content: space-between; }
136
+ .section-note { color: var(--ns-muted); font-size: 12px; }
137
+ .stage-list { display: grid; gap: 2px; }
138
+ .stage-row {
139
+ border-radius: 10px;
140
+ color: var(--ns-text);
141
+ gap: 10px;
142
+ justify-content: space-between;
143
+ min-height: 36px;
144
+ padding: 7px 8px;
145
+ }
146
+ .stage-row:hover { background: var(--ns-surface); }
147
+ .stage-label { align-items: center; display: flex; gap: 10px; min-width: 0; }
148
+ .stage-label span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
149
+ .stage-status { color: var(--ns-muted); font-size: 12px; text-transform: capitalize; }
150
+ .stage-row[data-tone="ok"] .stage-dot { background: var(--ns-ok); }
151
+ .stage-row[data-tone="warn"] .stage-dot { background: var(--ns-warn); }
152
+ .stage-row[data-tone="error"] .stage-dot { background: var(--ns-error); }
153
+ .stage-row[data-tone="neutral"] .stage-dot { background: var(--ns-muted); }
154
+ .finding-list { display: grid; gap: 8px; }
155
+ .finding-row {
156
+ align-items: flex-start;
157
+ background: var(--ns-surface);
158
+ border-radius: var(--ns-radius-sm);
159
+ gap: 10px;
160
+ padding: 11px 12px;
161
+ }
162
+ .finding-row svg { color: var(--ns-warn); flex: none; margin-top: 2px; }
163
+ .finding-copy { display: grid; gap: 2px; min-width: 0; }
164
+ .finding-code { font-size: 12px; font-weight: 500; overflow-wrap: anywhere; }
165
+ .finding-message { color: var(--ns-muted); font-size: 13px; overflow-wrap: anywhere; }
166
+ .empty-findings { color: var(--ns-muted); font-size: 13px; padding: 4px 0; }
167
+ .action-row { flex-wrap: wrap; gap: 8px; }
168
+ .action {
169
+ align-items: center;
170
+ border: 1px solid var(--ns-border);
171
+ border-radius: 999px;
172
+ cursor: pointer;
173
+ display: inline-flex;
174
+ font-weight: 500;
175
+ gap: 8px;
176
+ justify-content: center;
177
+ min-height: 44px;
178
+ padding: 10px 17px;
179
+ transition: transform 140ms ease, background-color 140ms ease, opacity 140ms ease;
180
+ }
181
+ .action:hover { transform: translateY(-1px); }
182
+ .action:active { transform: translateY(0); }
183
+ .action[aria-busy="true"] { cursor: wait; opacity: 0.62; }
184
+ .action-primary { background: var(--ns-action); border-color: var(--ns-action); color: var(--ns-on-action); }
185
+ .action-secondary { background: transparent; color: var(--ns-text); }
186
+ .action-cancel { color: var(--ns-error); }
187
+ .action-status { color: var(--ns-muted); font-size: 12px; min-height: 18px; }
188
+ .icon { display: block; height: 16px; width: 16px; }
189
+ }
190
+
191
+ @layer responsive {
192
+ @media (max-width: 430px) {
193
+ body { font-size: 14px; }
194
+ .readiness-card { border-radius: 18px; gap: 18px; padding: 18px 16px; }
195
+ .decision-row { align-items: stretch; flex-direction: column; }
196
+ .decision-badge { align-self: flex-start; max-width: 100%; }
197
+ .action-row { align-items: stretch; flex-direction: column; }
198
+ .action { width: 100%; }
199
+ .stage-row { padding-inline: 4px; }
200
+ }
201
+ }
202
+
203
+ @layer motion {
204
+ .loading-shader { animation: readiness-shader 1.25s cubic-bezier(.22,.72,.22,1) 1 forwards; }
205
+ @keyframes readiness-shader {
206
+ 0% { opacity: 0; transform: translateX(-100%); }
207
+ 18% { opacity: 1; }
208
+ 82% { opacity: 1; }
209
+ 100% { opacity: 0; transform: translateX(100%); }
210
+ }
211
+ @media (prefers-reduced-motion: reduce) {
212
+ .loading-shader { animation: none; display: none; }
213
+ .action { transition: none; }
214
+ }
215
+ }
216
+ `;
217
+ //# sourceMappingURL=build-readiness-widget.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-readiness-widget.css.js","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.css.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuN5C,CAAC"}
@@ -0,0 +1,28 @@
1
+ export declare const BUILD_READINESS_WIDGET_URI: "ui://noodle-developer/build-readiness/v1";
2
+ export declare const BUILD_READINESS_WIDGET_MIME_TYPE: "text/html;profile=mcp-app";
3
+ declare const CLOSED_WIDGET_META: {
4
+ ui: {
5
+ csp: {
6
+ connectDomains: never[];
7
+ resourceDomains: never[];
8
+ };
9
+ prefersBorder: true;
10
+ };
11
+ 'openai/widgetDescription': string;
12
+ };
13
+ export declare function BuildReadinessWidget(): import("react").JSX.Element;
14
+ export interface RenderedBuildReadinessWidget {
15
+ readonly uri: typeof BUILD_READINESS_WIDGET_URI;
16
+ readonly mimeType: typeof BUILD_READINESS_WIDGET_MIME_TYPE;
17
+ readonly text: string;
18
+ readonly _meta: typeof CLOSED_WIDGET_META;
19
+ }
20
+ export declare function renderBuildReadinessWidget(): RenderedBuildReadinessWidget;
21
+ export declare function buildReadinessWidgetToolMeta(): {
22
+ ui: {
23
+ resourceUri: "ui://noodle-developer/build-readiness/v1";
24
+ };
25
+ 'openai/outputTemplate': "ui://noodle-developer/build-readiness/v1";
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=build-readiness-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-readiness-widget.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,0CAAmD,CAAC;AAC9F,eAAO,MAAM,gCAAgC,EAAG,2BAAoC,CAAC;AAErF,QAAA,MAAM,kBAAkB;;;;;;;;;CAOvB,CAAC;AAUF,wBAAgB,oBAAoB,gCAqHnC;AA+GD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,OAAO,0BAA0B,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,gCAAgC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,kBAAkB,CAAC;CAC3C;AAED,wBAAgB,0BAA0B,IAAI,4BAA4B,CASzE;AAED,wBAAgB,4BAA4B;;;;;EAK3C"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { injectWidgetBridge } from '@noodle-borg/protocol';
3
+ import { renderToStaticMarkup } from 'react-dom/server';
4
+ import { BUILD_READINESS_WIDGET_STYLES } from './build-readiness-widget.css.js';
5
+ export const BUILD_READINESS_WIDGET_URI = 'ui://noodle-developer/build-readiness/v1';
6
+ export const BUILD_READINESS_WIDGET_MIME_TYPE = 'text/html;profile=mcp-app';
7
+ const CLOSED_WIDGET_META = {
8
+ ui: {
9
+ csp: { connectDomains: [], resourceDomains: [] },
10
+ prefersBorder: true,
11
+ },
12
+ 'openai/widgetDescription': 'A compact Noodle build decision with live local gates, bounded findings, and the next safe action.',
13
+ };
14
+ const GATE_ARGUMENTS = (operation) => JSON.stringify({ workspaceHandle: '{{data.workspaceHandle}}', operation });
15
+ const WORKSPACE_ARGUMENTS = JSON.stringify({ workspaceHandle: '{{data.workspaceHandle}}' });
16
+ const CANCEL_ARGUMENTS = JSON.stringify({
17
+ workspaceHandle: '{{data.workspaceHandle}}',
18
+ runId: '{{data.activeRunId}}',
19
+ });
20
+ export function BuildReadinessWidget() {
21
+ return (_jsxs("main", { className: "readiness-card", "data-build-readiness": "", children: [_jsx("div", { className: "loading-shader", "aria-hidden": "true" }), _jsxs("header", { className: "decision", children: [_jsxs("div", { className: "brand-row", children: [_jsx("span", { className: "brand-mark", "aria-hidden": "true", children: _jsx(NoodleIcon, {}) }), _jsx("p", { children: "Noodle Seed \u00B7 Build readiness" })] }), _jsxs("div", { className: "decision-row", children: [_jsxs("div", { className: "decision-copy", children: [_jsx("h1", { "data-bind": "data.title", children: "Checking project" }), _jsx("p", { className: "summary", "data-bind": "data.summary", children: "Resolving trustworthy local build evidence." })] }), _jsx("p", { className: "decision-badge", role: "status", "data-bind-tone": "data.tone", children: _jsx("span", { "data-bind": "data.decision", children: "Loading" }) })] })] }), _jsxs("section", { className: "section", "aria-labelledby": "readiness-stages", children: [_jsxs("div", { className: "section-heading", children: [_jsx("h2", { id: "readiness-stages", children: "Build path" }), _jsx("p", { className: "section-note", children: "Current source" })] }), _jsx("ol", { className: "stage-list", "data-collection": "data.stages", "data-collection-item": "stage", children: _jsx("template", { "data-collection-template": "", children: _jsxs("li", { className: "stage-row", "data-bind-tone": "stage.tone", children: [_jsxs("span", { className: "stage-label", children: [_jsx("span", { className: "stage-dot", "aria-hidden": "true" }), _jsx("span", { "data-bind": "stage.label", children: "Stage" })] }), _jsx("span", { className: "stage-status", "data-bind": "stage.status", children: "Not run" })] }) }) })] }), _jsxs("section", { className: "section", "aria-labelledby": "readiness-findings", children: [_jsxs("div", { className: "section-heading", children: [_jsx("h2", { id: "readiness-findings", children: "What needs attention" }), _jsx("p", { className: "section-note", children: "Up to 3" })] }), _jsxs("ul", { className: "finding-list", "data-collection": "data.findings", "data-collection-item": "finding", children: [_jsx("template", { "data-collection-template": "", children: _jsxs("li", { className: "finding-row", children: [_jsx(AlertIcon, {}), _jsxs("div", { className: "finding-copy", children: [_jsx("p", { className: "finding-code", "data-bind": "finding.code", children: "Finding" }), _jsx("p", { className: "finding-message", "data-bind": "finding.message", children: "Review this item." })] })] }) }), _jsx("p", { className: "empty-findings", "data-collection-empty": "", children: "No blocking findings in the latest bounded result." })] })] }), _jsxs("footer", { className: "section", children: [_jsxs("div", { className: "action-row", children: [_jsx(GateButton, { action: "validate", label: "Validate project", operation: "validate" }), _jsx(GateButton, { action: "test", label: "Run tests", operation: "test" }), _jsx(GateButton, { action: "targetCheck", label: "Check target", operation: "target-check" }), _jsxs("button", { type: "button", className: "action action-primary", "data-action": "call", "data-action-tool": "deploy_build", "data-action-args": WORKSPACE_ARGUMENTS, "data-bind-if": "data.actions.deploy", hidden: true, children: [_jsx(DeployIcon, {}), "Deploy build"] }), _jsxs("button", { type: "button", className: "action action-secondary", "data-action": "call", "data-action-tool": "run_build_gate", "data-action-args": GATE_ARGUMENTS('preview'), "data-bind-if": "data.actions.preview", hidden: true, children: [_jsx(PreviewIcon, {}), "Open preview"] }), _jsxs("button", { type: "button", className: "action action-secondary action-cancel", "data-action": "call", "data-action-tool": "cancel_build_run", "data-action-args": CANCEL_ARGUMENTS, "data-bind-if": "data.actions.cancel", hidden: true, children: [_jsx(StopIcon, {}), "Cancel run"] })] }), _jsx("output", { className: "action-status", "aria-live": "polite", "data-noodle-action-status": "", children: "Ready for the next decision." })] })] }));
22
+ }
23
+ function GateButton(props) {
24
+ return (_jsxs("button", { type: "button", className: "action action-primary", "data-action": "call", "data-action-tool": "run_build_gate", "data-action-args": GATE_ARGUMENTS(props.operation), "data-bind-if": `data.actions.${props.action}`, hidden: true, children: [_jsx(RunIcon, {}), props.label] }));
25
+ }
26
+ function NoodleIcon() {
27
+ return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M5 6.5h6.25a3.75 3.75 0 1 1 0 7.5H8.5", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round" }), _jsx("path", { d: "M5 10h6.1a2 2 0 1 1 0 4H10", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round" })] }));
28
+ }
29
+ function RunIcon() {
30
+ return (_jsx("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "m7.25 5 6 5-6 5V5Z", stroke: "currentColor", strokeWidth: "1.5", strokeLinejoin: "round" }) }));
31
+ }
32
+ function PreviewIcon() {
33
+ return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M2.75 10s2.5-4 7.25-4 7.25 4 7.25 4-2.5 4-7.25 4-7.25-4-7.25-4Z", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("circle", { cx: "10", cy: "10", r: "1.75", stroke: "currentColor", strokeWidth: "1.5" })] }));
34
+ }
35
+ function DeployIcon() {
36
+ return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M10 14.75v-9.5m0 0L6.5 8.75M10 5.25l3.5 3.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M4 13.5v2.25h12V13.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] }));
37
+ }
38
+ function StopIcon() {
39
+ return (_jsx("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: _jsx("rect", { x: "6", y: "6", width: "8", height: "8", rx: "1.5", stroke: "currentColor", strokeWidth: "1.5" }) }));
40
+ }
41
+ function AlertIcon() {
42
+ return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M10 3.25 17 16H3l7-12.75Z", stroke: "currentColor", strokeWidth: "1.4", strokeLinejoin: "round" }), _jsx("path", { d: "M10 7.25v4.25m0 2.25v.1", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round" })] }));
43
+ }
44
+ export function renderBuildReadinessWidget() {
45
+ const body = renderToStaticMarkup(_jsx(BuildReadinessWidget, {}));
46
+ const document = `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Noodle build readiness</title><style>${BUILD_READINESS_WIDGET_STYLES}</style></head><body>${body}</body></html>`;
47
+ return {
48
+ uri: BUILD_READINESS_WIDGET_URI,
49
+ mimeType: BUILD_READINESS_WIDGET_MIME_TYPE,
50
+ text: injectWidgetBridge(BUILD_READINESS_WIDGET_MIME_TYPE, document),
51
+ _meta: CLOSED_WIDGET_META,
52
+ };
53
+ }
54
+ export function buildReadinessWidgetToolMeta() {
55
+ return {
56
+ ui: { resourceUri: BUILD_READINESS_WIDGET_URI },
57
+ 'openai/outputTemplate': BUILD_READINESS_WIDGET_URI,
58
+ };
59
+ }
60
+ //# sourceMappingURL=build-readiness-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-readiness-widget.js","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type PluginCompatibilityManifest } from '@noodle-borg/agent-kit';
2
+ export type { PluginCompatibilityManifest } from '@noodle-borg/agent-kit';
3
+ export declare function readPluginCompatibility(path: string): PluginCompatibilityManifest;
4
+ export declare function pluginServiceOrigin(manifest: PluginCompatibilityManifest): string;
5
+ export declare function assertPluginServiceOrigin(manifest: PluginCompatibilityManifest, serviceUrl: string): void;
6
+ export declare function assertPluginCompatibility(input: {
7
+ readonly manifest: PluginCompatibilityManifest;
8
+ readonly cliVersion: string;
9
+ readonly serviceUrl?: string;
10
+ readonly developerMcpCapabilityVersion?: string;
11
+ }): void;
12
+ export interface PluginCompatibilityMismatch {
13
+ readonly kind: 'cli' | 'server';
14
+ readonly cause: string;
15
+ }
16
+ export declare function pluginCompatibilityMismatch(input: {
17
+ readonly manifest: PluginCompatibilityManifest;
18
+ readonly cliVersion: string;
19
+ readonly serviceUrl?: string;
20
+ readonly developerMcpCapabilityVersion?: string;
21
+ }): PluginCompatibilityMismatch | undefined;
22
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/compatibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,2BAA2B,EAA4B,MAAM,wBAAwB,CAAC;AAEpG,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CAOjF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAEjF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,2BAA2B,EACrC,UAAU,EAAE,MAAM,GACjB,IAAI,CAMN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACjD,GAAG,IAAI,CAGP;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACjD,GAAG,2BAA2B,GAAG,SAAS,CAgC1C"}
@@ -0,0 +1,59 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { parsePluginCompatibility } from '@noodle-borg/agent-kit';
3
+ export function readPluginCompatibility(path) {
4
+ try {
5
+ return parsePluginCompatibility(JSON.parse(readFileSync(path, 'utf8')));
6
+ }
7
+ catch (error) {
8
+ const detail = error instanceof Error ? error.message : String(error);
9
+ throw new Error(`Could not read plugin compatibility metadata: ${detail}`);
10
+ }
11
+ }
12
+ export function pluginServiceOrigin(manifest) {
13
+ return new URL(manifest.developerMcpUrl).origin;
14
+ }
15
+ export function assertPluginServiceOrigin(manifest, serviceUrl) {
16
+ const pinned = pluginServiceOrigin(manifest);
17
+ const selected = new URL(serviceUrl).origin;
18
+ if (selected !== pinned) {
19
+ throw new Error(`The installed Noodle plugin is pinned to ${pinned}, not ${selected}.`);
20
+ }
21
+ }
22
+ export function assertPluginCompatibility(input) {
23
+ const mismatch = pluginCompatibilityMismatch(input);
24
+ if (mismatch !== undefined)
25
+ throw new Error(mismatch.cause);
26
+ }
27
+ export function pluginCompatibilityMismatch(input) {
28
+ if (input.manifest.cliVersion !== input.cliVersion) {
29
+ return {
30
+ kind: 'cli',
31
+ cause: `The plugin pins CLI ${input.manifest.cliVersion}, but the launcher resolved ${input.cliVersion}.`,
32
+ };
33
+ }
34
+ if (input.serviceUrl !== undefined) {
35
+ let serviceOrigin;
36
+ try {
37
+ serviceOrigin = new URL(input.serviceUrl).origin;
38
+ }
39
+ catch {
40
+ return { kind: 'server', cause: 'The selected Noodle Cloud service URL is invalid.' };
41
+ }
42
+ const pinnedOrigin = pluginServiceOrigin(input.manifest);
43
+ if (serviceOrigin !== pinnedOrigin) {
44
+ return {
45
+ kind: 'server',
46
+ cause: `The plugin is pinned to ${pinnedOrigin}, not ${serviceOrigin}.`,
47
+ };
48
+ }
49
+ }
50
+ if (input.developerMcpCapabilityVersion !== undefined &&
51
+ input.manifest.developerMcpCapabilityVersion !== input.developerMcpCapabilityVersion) {
52
+ return {
53
+ kind: 'server',
54
+ cause: `The plugin requires Developer MCP capability ${input.manifest.developerMcpCapabilityVersion}, but Noodle Cloud provides ${input.developerMcpCapabilityVersion}.`,
55
+ };
56
+ }
57
+ return undefined;
58
+ }
59
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/plugin-mode/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAoC,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIpG,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC;QACH,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAqC;IACvE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAqC,EACrC,UAAkB;IAElB,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,SAAS,QAAQ,GAAG,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAKzC;IACC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAOD,MAAM,UAAU,2BAA2B,CAAC,KAK3C;IACC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,uBAAuB,KAAK,CAAC,QAAQ,CAAC,UAAU,+BAA+B,KAAK,CAAC,UAAU,GAAG;SAC1G,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC;QACxF,CAAC;QACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,2BAA2B,YAAY,SAAS,aAAa,GAAG;aACxE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IACE,KAAK,CAAC,6BAA6B,KAAK,SAAS;QACjD,KAAK,CAAC,QAAQ,CAAC,6BAA6B,KAAK,KAAK,CAAC,6BAA6B,EACpF,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gDAAgD,KAAK,CAAC,QAAQ,CAAC,6BAA6B,+BAA+B,KAAK,CAAC,6BAA6B,GAAG;SACzK,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,13 @@
1
+ interface BootstrapOptions {
2
+ readonly env: NodeJS.ProcessEnv;
3
+ readonly home: string;
4
+ readonly cliVersion: string;
5
+ }
6
+ interface BootstrappedInvocation {
7
+ readonly argv: readonly string[];
8
+ readonly env: NodeJS.ProcessEnv;
9
+ }
10
+ /** Materialize the signed plugin tuple when a host launches the exact pinned CLI package. */
11
+ export declare function bootstrapPluginMcpInvocation(argv: readonly string[], options: BootstrapOptions): Promise<BootstrappedInvocation | undefined>;
12
+ export {};
13
+ //# sourceMappingURL=plugin-mcp-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-mcp-bootstrap.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-mcp-bootstrap.ts"],"names":[],"mappings":"AAcA,UAAU,gBAAgB;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACjC;AAED,6FAA6F;AAC7F,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAuC7C"}
@@ -0,0 +1,90 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { chmod, mkdir, rename, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { createPluginCompatibility, renderPluginCompatibilityJson } from '@noodle-borg/agent-kit';
5
+ import { PluginModeError, resolvePluginMode } from './profile.js';
6
+ const BOOTSTRAP_FLAGS = [
7
+ '--plugin-host',
8
+ '--plugin-version',
9
+ '--developer-mcp-url',
10
+ '--developer-mcp-capability-version',
11
+ ];
12
+ /** Materialize the signed plugin tuple when a host launches the exact pinned CLI package. */
13
+ export async function bootstrapPluginMcpInvocation(argv, options) {
14
+ if (argv[0] !== 'plugin-mcp' || hasManagedPluginEnvironment(options.env))
15
+ return undefined;
16
+ const values = parseBootstrapArguments(argv.slice(1));
17
+ const host = pluginHost(values.get('--plugin-host'));
18
+ let compatibility;
19
+ try {
20
+ compatibility = createPluginCompatibility({
21
+ mode: 'release',
22
+ pluginVersion: requiredValue(values, '--plugin-version'),
23
+ cliVersion: options.cliVersion,
24
+ developerMcpUrl: requiredValue(values, '--developer-mcp-url'),
25
+ developerMcpCapabilityVersion: requiredValue(values, '--developer-mcp-capability-version'),
26
+ });
27
+ }
28
+ catch (error) {
29
+ throw bootstrapError(error instanceof Error ? error.message : String(error));
30
+ }
31
+ const configHome = join(options.home, '.noodle', 'plugin-profiles', host);
32
+ const compatibilityFile = join(configHome, 'plugin-mcp-compatibility.json');
33
+ const env = {
34
+ ...options.env,
35
+ NOODLE_PLUGIN_HOST: host,
36
+ NOODLE_CONFIG_HOME: configHome,
37
+ NOODLE_PLUGIN_COMPATIBILITY_FILE: compatibilityFile,
38
+ };
39
+ resolvePluginMode(env);
40
+ await mkdir(configHome, { recursive: true, mode: 0o700 });
41
+ await chmod(configHome, 0o700);
42
+ const temporaryFile = join(configHome, `.plugin-mcp-compatibility.${randomUUID()}.tmp`);
43
+ await writeFile(temporaryFile, renderPluginCompatibilityJson(compatibility), {
44
+ encoding: 'utf8',
45
+ flag: 'wx',
46
+ mode: 0o600,
47
+ });
48
+ await rename(temporaryFile, compatibilityFile);
49
+ await chmod(compatibilityFile, 0o600);
50
+ return { argv: ['plugin-mcp'], env };
51
+ }
52
+ function hasManagedPluginEnvironment(env) {
53
+ return (env.NOODLE_PLUGIN_HOST !== undefined ||
54
+ env.NOODLE_CONFIG_HOME !== undefined ||
55
+ env.NOODLE_PLUGIN_COMPATIBILITY_FILE !== undefined);
56
+ }
57
+ function parseBootstrapArguments(argv) {
58
+ if (argv.length !== BOOTSTRAP_FLAGS.length * 2) {
59
+ throw bootstrapError('expected one value for every supported flag');
60
+ }
61
+ const supported = new Set(BOOTSTRAP_FLAGS);
62
+ const values = new Map();
63
+ for (let index = 0; index < argv.length; index += 2) {
64
+ const flag = argv[index];
65
+ const value = argv[index + 1];
66
+ if (flag === undefined || !supported.has(flag) || values.has(flag) || value === undefined) {
67
+ throw bootstrapError('arguments must be unique supported flag-value pairs');
68
+ }
69
+ values.set(flag, value);
70
+ }
71
+ for (const flag of BOOTSTRAP_FLAGS)
72
+ requiredValue(values, flag);
73
+ return values;
74
+ }
75
+ function requiredValue(values, flag) {
76
+ const value = values.get(flag);
77
+ if (value === undefined || value === '')
78
+ throw bootstrapError(`${flag} requires a value`);
79
+ return value;
80
+ }
81
+ function pluginHost(value) {
82
+ if (value !== 'codex' && value !== 'claude-code' && value !== 'cursor') {
83
+ throw bootstrapError('--plugin-host must be codex, claude-code, or cursor');
84
+ }
85
+ return value;
86
+ }
87
+ function bootstrapError(reason) {
88
+ return new PluginModeError('plugin_mcp_bootstrap_invalid', `Plugin MCP bootstrap: ${reason}.`);
89
+ }
90
+ //# sourceMappingURL=plugin-mcp-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-mcp-bootstrap.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-mcp-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type PluginHost = 'codex' | 'claude-code' | 'cursor';
2
+ export interface PluginMode {
3
+ readonly host: PluginHost;
4
+ readonly configHome: string;
5
+ readonly compatibilityFile: string;
6
+ }
7
+ export declare class PluginModeError extends Error {
8
+ readonly code: string;
9
+ constructor(code: string, message: string);
10
+ }
11
+ /** Resolve the launcher's complete fail-closed environment tuple exactly once. */
12
+ export declare function resolvePluginMode(env: NodeJS.ProcessEnv): PluginMode | undefined;
13
+ /** Plugin credentials and service selection are owned exclusively by the signed release tuple. */
14
+ export declare function assertPluginInvocation(argv: readonly string[]): void;
15
+ export declare function splitPluginPathComponents(path: string, root: string, separator: string): readonly string[];
16
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/profile.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAQD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,CAwBhF;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAQpE;AA+BD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,SAAS,MAAM,EAAE,CAEnB"}
@@ -0,0 +1,66 @@
1
+ import { existsSync, lstatSync } from 'node:fs';
2
+ import { isAbsolute, normalize, parse, resolve, sep } from 'node:path';
3
+ const PLUGIN_VARIABLES = [
4
+ 'NOODLE_PLUGIN_HOST',
5
+ 'NOODLE_CONFIG_HOME',
6
+ 'NOODLE_PLUGIN_COMPATIBILITY_FILE',
7
+ ];
8
+ export class PluginModeError extends Error {
9
+ code;
10
+ constructor(code, message) {
11
+ super(message);
12
+ this.name = 'PluginModeError';
13
+ this.code = code;
14
+ }
15
+ }
16
+ /** Resolve the launcher's complete fail-closed environment tuple exactly once. */
17
+ export function resolvePluginMode(env) {
18
+ const values = PLUGIN_VARIABLES.map((name) => env[name]);
19
+ if (values.every((value) => value === undefined))
20
+ return undefined;
21
+ if (values.some((value) => value === undefined || value === '')) {
22
+ throw new PluginModeError('plugin_environment_incomplete', `Plugin mode requires all three variables: ${PLUGIN_VARIABLES.join(', ')}.`);
23
+ }
24
+ const host = env.NOODLE_PLUGIN_HOST;
25
+ if (host !== 'codex' && host !== 'claude-code' && host !== 'cursor') {
26
+ throw new PluginModeError('plugin_host_invalid', `Unknown plugin host: ${host ?? '(missing)'}.`);
27
+ }
28
+ const configHome = canonicalAbsolutePath('NOODLE_CONFIG_HOME', env.NOODLE_CONFIG_HOME);
29
+ rejectSymlinkComponents(configHome);
30
+ const compatibilityFile = canonicalAbsolutePath('NOODLE_PLUGIN_COMPATIBILITY_FILE', env.NOODLE_PLUGIN_COMPATIBILITY_FILE);
31
+ return { host, configHome, compatibilityFile };
32
+ }
33
+ /** Plugin credentials and service selection are owned exclusively by the signed release tuple. */
34
+ export function assertPluginInvocation(argv) {
35
+ const forbidden = argv.find((arg) => arg === '--auth-token' || arg === '--service');
36
+ if (forbidden !== undefined) {
37
+ throw new PluginModeError('plugin_override_forbidden', `${forbidden} is not allowed in plugin mode; use the service and OAuth grant pinned by the installed plugin.`);
38
+ }
39
+ }
40
+ function canonicalAbsolutePath(name, value) {
41
+ if (value === undefined ||
42
+ value.includes('\0') ||
43
+ !isAbsolute(value) ||
44
+ normalize(value) !== value ||
45
+ resolve(value) !== value) {
46
+ throw new PluginModeError('plugin_path_invalid', `${name} must be a canonical absolute path.`);
47
+ }
48
+ return value;
49
+ }
50
+ function rejectSymlinkComponents(path) {
51
+ const root = parse(path).root;
52
+ const parts = splitPluginPathComponents(path, root, sep);
53
+ let cursor = root;
54
+ for (const part of parts) {
55
+ cursor = resolve(cursor, part);
56
+ if (!existsSync(cursor))
57
+ continue;
58
+ if (lstatSync(cursor).isSymbolicLink()) {
59
+ throw new PluginModeError('plugin_profile_symlink', `NOODLE_CONFIG_HOME must not traverse a symbolic link (${cursor}).`);
60
+ }
61
+ }
62
+ }
63
+ export function splitPluginPathComponents(path, root, separator) {
64
+ return path.slice(root.length).split(separator).filter(Boolean);
65
+ }
66
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/plugin-mode/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAUvE,MAAM,gBAAgB,GAAG;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,kCAAkC;CAC1B,CAAC;AAEX,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,eAAe,CACvB,+BAA+B,EAC/B,6CAA6C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACpC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,eAAe,CACvB,qBAAqB,EACrB,wBAAwB,IAAI,IAAI,WAAW,GAAG,CAC/C,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvF,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,kCAAkC,EAClC,GAAG,CAAC,gCAAgC,CACrC,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACjD,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,sBAAsB,CAAC,IAAuB;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,WAAW,CAAC,CAAC;IACpF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CACvB,2BAA2B,EAC3B,GAAG,SAAS,iGAAiG,CAC9G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAyB;IACpE,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,CAAC,UAAU,CAAC,KAAK,CAAC;QAClB,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EACxB,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,qBAAqB,EAAE,GAAG,IAAI,qCAAqC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAClC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,CACvB,wBAAwB,EACxB,yDAAyD,MAAM,IAAI,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,IAAY,EACZ,SAAiB;IAEjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC"}