noodleseed-cli 0.1.4

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 (356) hide show
  1. package/LICENSE +176 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +625 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/config.d.ts +52 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +77 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/control-plane.d.ts +33 -0
  11. package/dist/control-plane.d.ts.map +1 -0
  12. package/dist/control-plane.js +223 -0
  13. package/dist/control-plane.js.map +1 -0
  14. package/dist/deploy.d.ts +62 -0
  15. package/dist/deploy.d.ts.map +1 -0
  16. package/dist/deploy.js +182 -0
  17. package/dist/deploy.js.map +1 -0
  18. package/dist/dev.d.ts +50 -0
  19. package/dist/dev.d.ts.map +1 -0
  20. package/dist/dev.js +223 -0
  21. package/dist/dev.js.map +1 -0
  22. package/dist/index.d.ts +6 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +6 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/validate.d.ts +37 -0
  27. package/dist/validate.d.ts.map +1 -0
  28. package/dist/validate.js +46 -0
  29. package/dist/validate.js.map +1 -0
  30. package/node_modules/@noodle-borg/auth/dist/index.d.ts +14 -0
  31. package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -0
  32. package/node_modules/@noodle-borg/auth/dist/index.js +14 -0
  33. package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -0
  34. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +21 -0
  35. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -0
  36. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +24 -0
  37. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -0
  38. package/node_modules/@noodle-borg/auth/dist/metadata.d.ts +27 -0
  39. package/node_modules/@noodle-borg/auth/dist/metadata.d.ts.map +1 -0
  40. package/node_modules/@noodle-borg/auth/dist/metadata.js +21 -0
  41. package/node_modules/@noodle-borg/auth/dist/metadata.js.map +1 -0
  42. package/node_modules/@noodle-borg/auth/dist/signer.d.ts +45 -0
  43. package/node_modules/@noodle-borg/auth/dist/signer.d.ts.map +1 -0
  44. package/node_modules/@noodle-borg/auth/dist/signer.js +47 -0
  45. package/node_modules/@noodle-borg/auth/dist/signer.js.map +1 -0
  46. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +42 -0
  47. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -0
  48. package/node_modules/@noodle-borg/auth/dist/verify.js +48 -0
  49. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -0
  50. package/node_modules/@noodle-borg/auth/package.json +27 -0
  51. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +200 -0
  52. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -0
  53. package/node_modules/@noodle-borg/authoring/dist/index.js +504 -0
  54. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -0
  55. package/node_modules/@noodle-borg/authoring/package.json +29 -0
  56. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +203 -0
  57. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -0
  58. package/node_modules/@noodle-borg/compiler/dist/artifact/types.js +20 -0
  59. package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -0
  60. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts +13 -0
  61. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.d.ts.map +1 -0
  62. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js +19 -0
  63. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js.map +1 -0
  64. package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts +11 -0
  65. package/node_modules/@noodle-borg/compiler/dist/catalog/signature.d.ts.map +1 -0
  66. package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js +31 -0
  67. package/node_modules/@noodle-borg/compiler/dist/catalog/signature.js.map +1 -0
  68. package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts +43 -0
  69. package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts.map +1 -0
  70. package/node_modules/@noodle-borg/compiler/dist/catalog/types.js +11 -0
  71. package/node_modules/@noodle-borg/compiler/dist/catalog/types.js.map +1 -0
  72. package/node_modules/@noodle-borg/compiler/dist/cli.d.ts +3 -0
  73. package/node_modules/@noodle-borg/compiler/dist/cli.d.ts.map +1 -0
  74. package/node_modules/@noodle-borg/compiler/dist/cli.js +19 -0
  75. package/node_modules/@noodle-borg/compiler/dist/cli.js.map +1 -0
  76. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +50 -0
  77. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -0
  78. package/node_modules/@noodle-borg/compiler/dist/compile.js +719 -0
  79. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -0
  80. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +27 -0
  81. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -0
  82. package/node_modules/@noodle-borg/compiler/dist/errors.js +2 -0
  83. package/node_modules/@noodle-borg/compiler/dist/errors.js.map +1 -0
  84. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +13 -0
  85. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -0
  86. package/node_modules/@noodle-borg/compiler/dist/index.js +11 -0
  87. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -0
  88. package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +136 -0
  89. package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts.map +1 -0
  90. package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js +552 -0
  91. package/node_modules/@noodle-borg/compiler/dist/manifest/expression.js.map +1 -0
  92. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +14 -0
  93. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts.map +1 -0
  94. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +18 -0
  95. package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js.map +1 -0
  96. package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts +24 -0
  97. package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.d.ts.map +1 -0
  98. package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js +149 -0
  99. package/node_modules/@noodle-borg/compiler/dist/manifest/schema-refs.js.map +1 -0
  100. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +97 -0
  101. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -0
  102. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +157 -0
  103. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -0
  104. package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts +6 -0
  105. package/node_modules/@noodle-borg/compiler/dist/schema-export.d.ts.map +1 -0
  106. package/node_modules/@noodle-borg/compiler/dist/schema-export.js +28 -0
  107. package/node_modules/@noodle-borg/compiler/dist/schema-export.js.map +1 -0
  108. package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts +41 -0
  109. package/node_modules/@noodle-borg/compiler/dist/suggest.d.ts.map +1 -0
  110. package/node_modules/@noodle-borg/compiler/dist/suggest.js +105 -0
  111. package/node_modules/@noodle-borg/compiler/dist/suggest.js.map +1 -0
  112. package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts +33 -0
  113. package/node_modules/@noodle-borg/compiler/dist/uri-template.d.ts.map +1 -0
  114. package/node_modules/@noodle-borg/compiler/dist/uri-template.js +83 -0
  115. package/node_modules/@noodle-borg/compiler/dist/uri-template.js.map +1 -0
  116. package/node_modules/@noodle-borg/compiler/package.json +32 -0
  117. package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts +45 -0
  118. package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts.map +1 -0
  119. package/node_modules/@noodle-borg/compute/dist/code-connector.js +53 -0
  120. package/node_modules/@noodle-borg/compute/dist/code-connector.js.map +1 -0
  121. package/node_modules/@noodle-borg/compute/dist/engine.d.ts +73 -0
  122. package/node_modules/@noodle-borg/compute/dist/engine.d.ts.map +1 -0
  123. package/node_modules/@noodle-borg/compute/dist/engine.js +31 -0
  124. package/node_modules/@noodle-borg/compute/dist/engine.js.map +1 -0
  125. package/node_modules/@noodle-borg/compute/dist/index.d.ts +4 -0
  126. package/node_modules/@noodle-borg/compute/dist/index.d.ts.map +1 -0
  127. package/node_modules/@noodle-borg/compute/dist/index.js +4 -0
  128. package/node_modules/@noodle-borg/compute/dist/index.js.map +1 -0
  129. package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts +31 -0
  130. package/node_modules/@noodle-borg/compute/dist/quickjs-engine.d.ts.map +1 -0
  131. package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js +271 -0
  132. package/node_modules/@noodle-borg/compute/dist/quickjs-engine.js.map +1 -0
  133. package/node_modules/@noodle-borg/compute/package.json +29 -0
  134. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +46 -0
  135. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -0
  136. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +289 -0
  137. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -0
  138. package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts +3 -0
  139. package/node_modules/@noodle-borg/connector-defs/dist/index.d.ts.map +1 -0
  140. package/node_modules/@noodle-borg/connector-defs/dist/index.js +3 -0
  141. package/node_modules/@noodle-borg/connector-defs/dist/index.js.map +1 -0
  142. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +332 -0
  143. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -0
  144. package/node_modules/@noodle-borg/connector-defs/dist/schema.js +105 -0
  145. package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -0
  146. package/node_modules/@noodle-borg/connector-defs/package.json +32 -0
  147. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +86 -0
  148. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -0
  149. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +138 -0
  150. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -0
  151. package/node_modules/@noodle-borg/connector-http/dist/index.d.ts +3 -0
  152. package/node_modules/@noodle-borg/connector-http/dist/index.d.ts.map +1 -0
  153. package/node_modules/@noodle-borg/connector-http/dist/index.js +3 -0
  154. package/node_modules/@noodle-borg/connector-http/dist/index.js.map +1 -0
  155. package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts +45 -0
  156. package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts.map +1 -0
  157. package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +57 -0
  158. package/node_modules/@noodle-borg/connector-http/dist/ssrf.js.map +1 -0
  159. package/node_modules/@noodle-borg/connector-http/package.json +30 -0
  160. package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts +73 -0
  161. package/node_modules/@noodle-borg/protocol/dist/adapter.d.ts.map +1 -0
  162. package/node_modules/@noodle-borg/protocol/dist/adapter.js +2 -0
  163. package/node_modules/@noodle-borg/protocol/dist/adapter.js.map +1 -0
  164. package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts +19 -0
  165. package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.d.ts.map +1 -0
  166. package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js +34 -0
  167. package/node_modules/@noodle-borg/protocol/dist/adapters/mcp-2025-11-25.js.map +1 -0
  168. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +5 -0
  169. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -0
  170. package/node_modules/@noodle-borg/protocol/dist/index.js +5 -0
  171. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -0
  172. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +19 -0
  173. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts.map +1 -0
  174. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +14 -0
  175. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js.map +1 -0
  176. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +133 -0
  177. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -0
  178. package/node_modules/@noodle-borg/protocol/dist/mapping.js +181 -0
  179. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -0
  180. package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts +13 -0
  181. package/node_modules/@noodle-borg/protocol/dist/negotiate.d.ts.map +1 -0
  182. package/node_modules/@noodle-borg/protocol/dist/negotiate.js +18 -0
  183. package/node_modules/@noodle-borg/protocol/dist/negotiate.js.map +1 -0
  184. package/node_modules/@noodle-borg/protocol/dist/registry.d.ts +17 -0
  185. package/node_modules/@noodle-borg/protocol/dist/registry.d.ts.map +1 -0
  186. package/node_modules/@noodle-borg/protocol/dist/registry.js +33 -0
  187. package/node_modules/@noodle-borg/protocol/dist/registry.js.map +1 -0
  188. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +22 -0
  189. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -0
  190. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +91 -0
  191. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -0
  192. package/node_modules/@noodle-borg/protocol/dist/server.d.ts +38 -0
  193. package/node_modules/@noodle-borg/protocol/dist/server.d.ts.map +1 -0
  194. package/node_modules/@noodle-borg/protocol/dist/server.js +89 -0
  195. package/node_modules/@noodle-borg/protocol/dist/server.js.map +1 -0
  196. package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts +14 -0
  197. package/node_modules/@noodle-borg/protocol/dist/stateless.d.ts.map +1 -0
  198. package/node_modules/@noodle-borg/protocol/dist/stateless.js +28 -0
  199. package/node_modules/@noodle-borg/protocol/dist/stateless.js.map +1 -0
  200. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts +24 -0
  201. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.d.ts.map +1 -0
  202. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js +165 -0
  203. package/node_modules/@noodle-borg/protocol/dist/widget/bootstrap.js.map +1 -0
  204. package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts +4 -0
  205. package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.d.ts.map +1 -0
  206. package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js +10 -0
  207. package/node_modules/@noodle-borg/protocol/dist/widget/ext-apps-bundle.js.map +1 -0
  208. package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts +8 -0
  209. package/node_modules/@noodle-borg/protocol/dist/widget/inject.d.ts.map +1 -0
  210. package/node_modules/@noodle-borg/protocol/dist/widget/inject.js +36 -0
  211. package/node_modules/@noodle-borg/protocol/dist/widget/inject.js.map +1 -0
  212. package/node_modules/@noodle-borg/protocol/package.json +29 -0
  213. package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts +29 -0
  214. package/node_modules/@noodle-borg/runtime/dist/broker/map.d.ts.map +1 -0
  215. package/node_modules/@noodle-borg/runtime/dist/broker/map.js +38 -0
  216. package/node_modules/@noodle-borg/runtime/dist/broker/map.js.map +1 -0
  217. package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts +103 -0
  218. package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.d.ts.map +1 -0
  219. package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js +118 -0
  220. package/node_modules/@noodle-borg/runtime/dist/broker/secret-box.js.map +1 -0
  221. package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts +12 -0
  222. package/node_modules/@noodle-borg/runtime/dist/broker/static.d.ts.map +1 -0
  223. package/node_modules/@noodle-borg/runtime/dist/broker/static.js +15 -0
  224. package/node_modules/@noodle-borg/runtime/dist/broker/static.js.map +1 -0
  225. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +28 -0
  226. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -0
  227. package/node_modules/@noodle-borg/runtime/dist/broker/types.js +2 -0
  228. package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -0
  229. package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts +29 -0
  230. package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.d.ts.map +1 -0
  231. package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js +37 -0
  232. package/node_modules/@noodle-borg/runtime/dist/connector/in-memory.js.map +1 -0
  233. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +41 -0
  234. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -0
  235. package/node_modules/@noodle-borg/runtime/dist/connector/types.js +2 -0
  236. package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -0
  237. package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts +39 -0
  238. package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.d.ts.map +1 -0
  239. package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js +117 -0
  240. package/node_modules/@noodle-borg/runtime/dist/eval/evaluate.js.map +1 -0
  241. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +47 -0
  242. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -0
  243. package/node_modules/@noodle-borg/runtime/dist/execute.js +297 -0
  244. package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -0
  245. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +12 -0
  246. package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -0
  247. package/node_modules/@noodle-borg/runtime/dist/index.js +8 -0
  248. package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -0
  249. package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts +10 -0
  250. package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.d.ts.map +1 -0
  251. package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js +13 -0
  252. package/node_modules/@noodle-borg/runtime/dist/policy/allow-all.js.map +1 -0
  253. package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts +25 -0
  254. package/node_modules/@noodle-borg/runtime/dist/policy/types.d.ts.map +1 -0
  255. package/node_modules/@noodle-borg/runtime/dist/policy/types.js +2 -0
  256. package/node_modules/@noodle-borg/runtime/dist/policy/types.js.map +1 -0
  257. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +19 -0
  258. package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -0
  259. package/node_modules/@noodle-borg/runtime/dist/result.js +2 -0
  260. package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -0
  261. package/node_modules/@noodle-borg/runtime/package.json +27 -0
  262. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +48 -0
  263. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +79 -0
  265. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/index.d.ts +7 -0
  267. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -0
  268. package/node_modules/@noodle-borg/service/dist/index.js +7 -0
  269. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -0
  270. package/node_modules/@noodle-borg/service/dist/main.d.ts +3 -0
  271. package/node_modules/@noodle-borg/service/dist/main.d.ts.map +1 -0
  272. package/node_modules/@noodle-borg/service/dist/main.js +171 -0
  273. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -0
  274. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts +14 -0
  275. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -0
  276. package/node_modules/@noodle-borg/service/dist/oauth/app.js +48 -0
  277. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -0
  278. package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts +18 -0
  279. package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts.map +1 -0
  280. package/node_modules/@noodle-borg/service/dist/oauth/consent.js +55 -0
  281. package/node_modules/@noodle-borg/service/dist/oauth/consent.js.map +1 -0
  282. package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts +31 -0
  283. package/node_modules/@noodle-borg/service/dist/oauth/google.d.ts.map +1 -0
  284. package/node_modules/@noodle-borg/service/dist/oauth/google.js +39 -0
  285. package/node_modules/@noodle-borg/service/dist/oauth/google.js.map +1 -0
  286. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts +3 -0
  287. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -0
  288. package/node_modules/@noodle-borg/service/dist/oauth/paths.js +19 -0
  289. package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -0
  290. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +61 -0
  291. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -0
  292. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +313 -0
  293. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -0
  294. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +29 -0
  295. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -0
  296. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +176 -0
  297. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -0
  298. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +85 -0
  299. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -0
  300. package/node_modules/@noodle-borg/service/dist/oauth/store.js +57 -0
  301. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -0
  302. package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts +8 -0
  303. package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts.map +1 -0
  304. package/node_modules/@noodle-borg/service/dist/oauth/tokens.js +13 -0
  305. package/node_modules/@noodle-borg/service/dist/oauth/tokens.js.map +1 -0
  306. package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts +36 -0
  307. package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.d.ts.map +1 -0
  308. package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js +51 -0
  309. package/node_modules/@noodle-borg/service/dist/secret/kms-master-key.js.map +1 -0
  310. package/node_modules/@noodle-borg/service/dist/service.d.ts +221 -0
  311. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -0
  312. package/node_modules/@noodle-borg/service/dist/service.js +1163 -0
  313. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -0
  314. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts +34 -0
  315. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.d.ts.map +1 -0
  316. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js +38 -0
  317. package/node_modules/@noodle-borg/service/dist/store/cloudsql-pool.js.map +1 -0
  318. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +56 -0
  319. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -0
  320. package/node_modules/@noodle-borg/service/dist/store/postgres.js +372 -0
  321. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -0
  322. package/node_modules/@noodle-borg/service/dist/store.d.ts +192 -0
  323. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -0
  324. package/node_modules/@noodle-borg/service/dist/store.js +230 -0
  325. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -0
  326. package/node_modules/@noodle-borg/service/package.json +44 -0
  327. package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts +15 -0
  328. package/node_modules/@noodle-borg/transport-http/dist/caller-auth.d.ts.map +1 -0
  329. package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js +38 -0
  330. package/node_modules/@noodle-borg/transport-http/dist/caller-auth.js.map +1 -0
  331. package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts +2 -0
  332. package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.d.ts.map +1 -0
  333. package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js +129 -0
  334. package/node_modules/@noodle-borg/transport-http/dist/examples/serve-demo.js.map +1 -0
  335. package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts +46 -0
  336. package/node_modules/@noodle-borg/transport-http/dist/front-door.d.ts.map +1 -0
  337. package/node_modules/@noodle-borg/transport-http/dist/front-door.js +75 -0
  338. package/node_modules/@noodle-borg/transport-http/dist/front-door.js.map +1 -0
  339. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +142 -0
  340. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -0
  341. package/node_modules/@noodle-borg/transport-http/dist/handler.js +387 -0
  342. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -0
  343. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +6 -0
  344. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -0
  345. package/node_modules/@noodle-borg/transport-http/dist/index.js +6 -0
  346. package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -0
  347. package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts +41 -0
  348. package/node_modules/@noodle-borg/transport-http/dist/logging.d.ts.map +1 -0
  349. package/node_modules/@noodle-borg/transport-http/dist/logging.js +71 -0
  350. package/node_modules/@noodle-borg/transport-http/dist/logging.js.map +1 -0
  351. package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts +22 -0
  352. package/node_modules/@noodle-borg/transport-http/dist/serve.d.ts.map +1 -0
  353. package/node_modules/@noodle-borg/transport-http/dist/serve.js +25 -0
  354. package/node_modules/@noodle-borg/transport-http/dist/serve.js.map +1 -0
  355. package/node_modules/@noodle-borg/transport-http/package.json +30 -0
  356. package/package.json +78 -0
@@ -0,0 +1,89 @@
1
+ import { Mcp20251125Adapter } from './adapters/mcp-2025-11-25.js';
2
+ import { err, isRequest, JSON_RPC, ok, } from './jsonrpc.js';
3
+ import { negotiate } from './negotiate.js';
4
+ import { ProtocolRegistry } from './registry.js';
5
+ /** Per-connection state: the protocol version negotiated at `initialize`. */
6
+ export class McpSession {
7
+ adapter = undefined;
8
+ }
9
+ /**
10
+ * A transport-agnostic MCP server for one resolved artifact. `handleMessage` maps a parsed JSON-RPC
11
+ * message to a response (or `null` for notifications), dispatching to the session's negotiated
12
+ * protocol adapter. A stdio/HTTP transport that frames bytes and carries the `MCP-Protocol-Version`
13
+ * header is a separate, later layer.
14
+ */
15
+ export class McpServer {
16
+ #artifact;
17
+ #deps;
18
+ #registry;
19
+ constructor(options) {
20
+ this.#artifact = options.artifact;
21
+ this.#deps = options.deps;
22
+ this.#registry = options.registry ?? new ProtocolRegistry([new Mcp20251125Adapter()]);
23
+ }
24
+ /** Open a new session (one per client connection). */
25
+ createSession() {
26
+ return new McpSession();
27
+ }
28
+ async handleMessage(session, message) {
29
+ // Notifications (no id) get no response. `notifications/initialized` and any other are no-ops.
30
+ if (!isRequest(message))
31
+ return null;
32
+ const { id, method } = message;
33
+ if (method === 'initialize') {
34
+ const params = (message.params ?? {});
35
+ const adapter = negotiate(this.#registry, params.protocolVersion);
36
+ session.adapter = adapter;
37
+ return ok(id, adapter.initializeResult(this.#artifact, params));
38
+ }
39
+ if (method === 'ping')
40
+ return ok(id, {});
41
+ if (method === 'tools/list' || method === 'tools/call') {
42
+ if (!session.adapter) {
43
+ return err(id, JSON_RPC.INVALID_REQUEST, `received "${method}" before initialization`);
44
+ }
45
+ if (method === 'tools/list') {
46
+ return ok(id, session.adapter.listTools(this.#artifact));
47
+ }
48
+ const paramsRecord = message.params;
49
+ if (!isRecord(paramsRecord)) {
50
+ return err(id, JSON_RPC.INVALID_PARAMS, '"tools/call" params must be an object');
51
+ }
52
+ if (typeof paramsRecord.name !== 'string') {
53
+ return err(id, JSON_RPC.INVALID_PARAMS, '"tools/call" requires a string "name"');
54
+ }
55
+ if (paramsRecord.arguments !== undefined && !isRecord(paramsRecord.arguments)) {
56
+ return err(id, JSON_RPC.INVALID_PARAMS, '"tools/call" arguments must be an object');
57
+ }
58
+ const params = paramsRecord.arguments === undefined
59
+ ? { name: paramsRecord.name }
60
+ : { name: paramsRecord.name, arguments: paramsRecord.arguments };
61
+ const outcome = await session.adapter.callTool(this.#artifact, params, this.#deps);
62
+ return 'result' in outcome
63
+ ? ok(id, outcome.result)
64
+ : { jsonrpc: '2.0', id, error: outcome.error };
65
+ }
66
+ return err(id, JSON_RPC.METHOD_NOT_FOUND, `unknown method "${method}"`);
67
+ }
68
+ /**
69
+ * Handle a single message without a caller-held session — for stateless transports (e.g. remote
70
+ * HTTP). `initialize` negotiates from the message body; every other request negotiates from
71
+ * `requestedVersion` (the transport's `MCP-Protocol-Version` header), defaulting to the stable
72
+ * latest when absent. No session state is retained between calls.
73
+ */
74
+ async handleStateless(message, requestedVersion) {
75
+ const session = new McpSession();
76
+ if (isRequest(message) && message.method !== 'initialize') {
77
+ session.adapter = negotiate(this.#registry, requestedVersion);
78
+ }
79
+ return this.handleMessage(session, message);
80
+ }
81
+ /** Whether the server supports a given protocol version (an exact registered adapter). */
82
+ supports(version) {
83
+ return this.#registry.get(version) !== undefined;
84
+ }
85
+ }
86
+ function isRecord(value) {
87
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
88
+ }
89
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { type ServedArtifact } from './sdk-server.js';
3
+ /**
4
+ * Serve a single already-parsed JSON-RPC request for one {@link ServedArtifact} over the MCP
5
+ * **Streamable HTTP** transport, statelessly. A fresh SDK server + transport are built per request
6
+ * (`sessionIdGenerator: undefined`), so no session state is retained between calls; `enableJsonResponse`
7
+ * returns one `application/json` JSON-RPC response rather than an SSE stream. The transport owns version
8
+ * negotiation and framing; the caller's HTTP front-door owns origin/method/size guards.
9
+ *
10
+ * `parsedBody` is the JSON already read by the front-door (so its body-size guard still applies). The
11
+ * transport writes the full HTTP response (status + headers + body), including `202` for a notification.
12
+ */
13
+ export declare function handleStatelessHttp(target: ServedArtifact, req: IncomingMessage, res: ServerResponse, parsedBody: unknown): Promise<void>;
14
+ //# sourceMappingURL=stateless.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateless.d.ts","sourceRoot":"","sources":["../src/stateless.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,28 @@
1
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
2
+ import { buildMcpServer } from './sdk-server.js';
3
+ /**
4
+ * Serve a single already-parsed JSON-RPC request for one {@link ServedArtifact} over the MCP
5
+ * **Streamable HTTP** transport, statelessly. A fresh SDK server + transport are built per request
6
+ * (`sessionIdGenerator: undefined`), so no session state is retained between calls; `enableJsonResponse`
7
+ * returns one `application/json` JSON-RPC response rather than an SSE stream. The transport owns version
8
+ * negotiation and framing; the caller's HTTP front-door owns origin/method/size guards.
9
+ *
10
+ * `parsedBody` is the JSON already read by the front-door (so its body-size guard still applies). The
11
+ * transport writes the full HTTP response (status + headers + body), including `202` for a notification.
12
+ */
13
+ export async function handleStatelessHttp(target, req, res, parsedBody) {
14
+ const server = buildMcpServer(target);
15
+ // Omitting `sessionIdGenerator` selects stateless mode; `enableJsonResponse` returns one JSON-RPC
16
+ // object rather than an SSE stream. (We can't pass `sessionIdGenerator: undefined` explicitly under
17
+ // `exactOptionalPropertyTypes`.)
18
+ const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
19
+ res.on('close', () => {
20
+ void transport.close();
21
+ void server.close();
22
+ });
23
+ // The SDK transport's optional `onclose`/`onerror`/`onmessage` are `T | undefined`, which trips
24
+ // `exactOptionalPropertyTypes` against the `Transport` interface; it is a valid Transport at runtime.
25
+ await server.connect(transport);
26
+ await transport.handleRequest(req, res, parsedBody);
27
+ }
28
+ //# sourceMappingURL=stateless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateless.js","sourceRoot":"","sources":["../src/stateless.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAsB,EACtB,GAAoB,EACpB,GAAmB,EACnB,UAAmB;IAEnB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,kGAAkG;IAClG,oGAAoG;IACpG,iCAAiC;IACjC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,gGAAgG;IAChG,sGAAsG;IACtG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAsB,CAAC,CAAC;IAC7C,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The widget runtime bootstrap — the single source of truth for the script that runs INSIDE a widget's
3
+ * sandboxed iframe, after the vendored `@modelcontextprotocol/ext-apps` bundle. It is exported as a string
4
+ * (`WIDGET_BOOTSTRAP_SOURCE`) so that:
5
+ * 1. `./inject.ts` concatenates it after the bundle into one inline `<script type="module">` at serve time
6
+ * (shared runtime infrastructure — never stored per artifact, never counted against the author cap), and
7
+ * 2. `../../test/widget-runtime.test.ts` `eval`s the EXACT shipped source against a happy-dom document + a
8
+ * mock host, so the runtime is regression-tested with zero drift and without a build step.
9
+ *
10
+ * It opens the host bridge (so the host reveals + sizes the frame), applies the host theme, surfaces the
11
+ * tool-call result AND input into the author's declarative `[data-bind*]` elements, and dispatches CSP-safe
12
+ * `[data-action]` buttons to the host bridge. The shapes here are pinned to ext-apps v1.7.4 / SEP-1865:
13
+ * `ontoolinput.params.arguments`, `ontoolresult.params` = `CallToolResult`, `callServerTool({name,arguments})`
14
+ * → `CallToolResult`, `openLink({url})`, `requestDisplayMode({mode})`,
15
+ * `downloadFile({contents:[EmbeddedResource]})`. See docs/spec/apps-and-authoring.md and
16
+ * docs/decisions/0022-adopt-mcp-ui-for-apps-widgets.md (W2.5).
17
+ *
18
+ * CONSTRAINTS (enforced by review + tests): contains NO `</script>` (it is concatenated raw, not escaped) and
19
+ * NO `${...}` (it lives inside a TypeScript template literal — `${` would be interpolated). Author-facing
20
+ * placeholders use `{{dotted.path}}`, resolved client-side against the bound tool result, so the server-side
21
+ * widget body stays a constant literal and our `${...}` expression language never touches widget HTML.
22
+ */
23
+ export declare const WIDGET_BOOTSTRAP_SOURCE: string;
24
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/widget/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,uBAAuB,EAAE,MA6IrC,CAAC"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * The widget runtime bootstrap — the single source of truth for the script that runs INSIDE a widget's
3
+ * sandboxed iframe, after the vendored `@modelcontextprotocol/ext-apps` bundle. It is exported as a string
4
+ * (`WIDGET_BOOTSTRAP_SOURCE`) so that:
5
+ * 1. `./inject.ts` concatenates it after the bundle into one inline `<script type="module">` at serve time
6
+ * (shared runtime infrastructure — never stored per artifact, never counted against the author cap), and
7
+ * 2. `../../test/widget-runtime.test.ts` `eval`s the EXACT shipped source against a happy-dom document + a
8
+ * mock host, so the runtime is regression-tested with zero drift and without a build step.
9
+ *
10
+ * It opens the host bridge (so the host reveals + sizes the frame), applies the host theme, surfaces the
11
+ * tool-call result AND input into the author's declarative `[data-bind*]` elements, and dispatches CSP-safe
12
+ * `[data-action]` buttons to the host bridge. The shapes here are pinned to ext-apps v1.7.4 / SEP-1865:
13
+ * `ontoolinput.params.arguments`, `ontoolresult.params` = `CallToolResult`, `callServerTool({name,arguments})`
14
+ * → `CallToolResult`, `openLink({url})`, `requestDisplayMode({mode})`,
15
+ * `downloadFile({contents:[EmbeddedResource]})`. See docs/spec/apps-and-authoring.md and
16
+ * docs/decisions/0022-adopt-mcp-ui-for-apps-widgets.md (W2.5).
17
+ *
18
+ * CONSTRAINTS (enforced by review + tests): contains NO `</script>` (it is concatenated raw, not escaped) and
19
+ * NO `${...}` (it lives inside a TypeScript template literal — `${` would be interpolated). Author-facing
20
+ * placeholders use `{{dotted.path}}`, resolved client-side against the bound tool result, so the server-side
21
+ * widget body stays a constant literal and our `${...}` expression language never touches widget HTML.
22
+ */
23
+ export const WIDGET_BOOTSTRAP_SOURCE = `
24
+ (async () => {
25
+ const E = globalThis.ExtApps;
26
+ if (!E || !E.App) return;
27
+ const app = new E.App({ name: 'noodle-widget', version: '1' }, {}, { autoResize: true });
28
+
29
+ const get = (o, p) => String(p).split('.').reduce((x, k) => (x == null ? undefined : x[k]), o);
30
+
31
+ // Resolve {{dotted.path}} placeholders in a string against the current bound data (no regex: avoids
32
+ // template-literal escaping, and is robust to stray braces).
33
+ function tmpl(s, data) {
34
+ s = String(s);
35
+ let out = '';
36
+ let i = 0;
37
+ while (i < s.length) {
38
+ const open = s.indexOf('{{', i);
39
+ if (open === -1) { out += s.slice(i); break; }
40
+ out += s.slice(i, open);
41
+ const close = s.indexOf('}}', open + 2);
42
+ if (close === -1) { out += s.slice(open); break; }
43
+ const v = get(data, s.slice(open + 2, close).trim());
44
+ out += (v == null ? '' : String(v));
45
+ i = close + 2;
46
+ }
47
+ return out;
48
+ }
49
+ // Resolve {{...}} throughout a parsed-JSON args value (string leaves only).
50
+ function resolveArgs(v, data) {
51
+ if (typeof v === 'string') return tmpl(v, data);
52
+ if (Array.isArray(v)) return v.map((x) => resolveArgs(x, data));
53
+ if (v && typeof v === 'object') {
54
+ const out = {};
55
+ for (const k of Object.keys(v)) out[k] = resolveArgs(v[k], data);
56
+ return out;
57
+ }
58
+ return v;
59
+ }
60
+
61
+ // Tool RESULT (structuredContent, else the first text block as JSON) → [data-bind] / [data-bind-if].
62
+ function bind(data) {
63
+ if (data == null) return;
64
+ globalThis.__noodleData = data;
65
+ for (const el of document.querySelectorAll('[data-bind]')) {
66
+ const v = get(data, el.getAttribute('data-bind'));
67
+ if (v !== undefined && v !== null) el.textContent = String(v);
68
+ }
69
+ for (const el of document.querySelectorAll('[data-bind-if]')) {
70
+ const v = get(data, el.getAttribute('data-bind-if'));
71
+ el.hidden = !(v !== undefined && v !== null && v !== false && v !== '');
72
+ }
73
+ try { globalThis.dispatchEvent(new CustomEvent('noodle:data', { detail: data })); } catch (e) {}
74
+ }
75
+ // Tool-call ARGUMENTS (what the model passed) → [data-bind-input] (mirrors bind()).
76
+ function bindInput(args) {
77
+ if (args == null) return;
78
+ globalThis.__noodleInput = args;
79
+ for (const el of document.querySelectorAll('[data-bind-input]')) {
80
+ const v = get(args, el.getAttribute('data-bind-input'));
81
+ if (v !== undefined && v !== null) el.textContent = String(v);
82
+ }
83
+ }
84
+ function fromResult(r) {
85
+ if (!r) return null;
86
+ if (r.structuredContent != null) return r.structuredContent;
87
+ const t = r.content && r.content[0] && r.content[0].text;
88
+ if (typeof t === 'string') { try { return JSON.parse(t); } catch (e) { return null; } }
89
+ return null;
90
+ }
91
+ function theme(ctx) {
92
+ try {
93
+ // host-context-changed may be a PARTIAL update (theme/styles independently optional) — only touch the
94
+ // theme class when 'theme' is actually present, so a styles-only update never flips a dark widget back
95
+ // to light.
96
+ if (ctx && ctx.theme !== undefined) {
97
+ document.documentElement.classList.toggle('dark', ctx.theme === 'dark');
98
+ }
99
+ const styles = ctx && ctx.styles;
100
+ if (styles && styles.variables && E.applyHostStyleVariables) E.applyHostStyleVariables(styles.variables);
101
+ if (styles && styles.css && styles.css.fonts && E.applyHostFonts) E.applyHostFonts(styles.css.fonts);
102
+ } catch (e) {}
103
+ }
104
+ function clearBusy() {
105
+ for (const el of document.querySelectorAll('[aria-busy="true"]')) {
106
+ el.disabled = false; el.removeAttribute('aria-busy');
107
+ }
108
+ }
109
+
110
+ // CSP-safe declarative actions (no inline handlers). A [data-action] element drives the host bridge:
111
+ // send|context → conversation; call → server tools/call (re-binds the result in place);
112
+ // open → external link; display → display mode; download → host-mediated file export.
113
+ function actOnce(el) {
114
+ const action = el.getAttribute('data-action');
115
+ const text = el.getAttribute('data-action-text') || el.textContent || '';
116
+ const data = globalThis.__noodleData;
117
+ try {
118
+ if (action === 'send') {
119
+ app.sendMessage({ role: 'user', content: [{ type: 'text', text }] });
120
+ } else if (action === 'context') {
121
+ app.updateModelContext({ content: [{ type: 'text', text }] });
122
+ } else if (action === 'call') {
123
+ const name = el.getAttribute('data-action-tool');
124
+ if (!name) return;
125
+ let args = {};
126
+ const raw = el.getAttribute('data-action-args');
127
+ if (raw) { try { args = resolveArgs(JSON.parse(raw), data); } catch (e) { args = {}; } }
128
+ el.disabled = true; el.setAttribute('aria-busy', 'true');
129
+ Promise.resolve(app.callServerTool({ name, arguments: args }))
130
+ .then((r) => bind(fromResult(r)))
131
+ .catch(() => {})
132
+ .then(() => { el.disabled = false; el.removeAttribute('aria-busy'); });
133
+ } else if (action === 'open') {
134
+ const url = el.getAttribute('data-action-href');
135
+ if (url) app.openLink({ url });
136
+ } else if (action === 'display') {
137
+ app.requestDisplayMode({ mode: el.getAttribute('data-action-mode') || 'fullscreen' });
138
+ } else if (action === 'download') {
139
+ const file = el.getAttribute('data-action-file') || 'download.txt';
140
+ const mimeType = el.getAttribute('data-action-mime') || 'text/plain';
141
+ const content = tmpl(el.getAttribute('data-action-content') || '', data);
142
+ app.downloadFile({
143
+ contents: [{ type: 'resource', resource: { uri: 'ui://download/' + file, mimeType, text: content } }],
144
+ });
145
+ }
146
+ } catch (e) {}
147
+ }
148
+ function wireActions() {
149
+ for (const el of document.querySelectorAll('[data-action]')) {
150
+ el.addEventListener('click', () => actOnce(el));
151
+ }
152
+ }
153
+
154
+ // Register handlers BEFORE connect() so no one-shot host notification is missed.
155
+ app.ontoolresult = (p) => bind(fromResult(p));
156
+ app.ontoolinput = (p) => bindInput(p && p.arguments);
157
+ app.ontoolcancelled = () => clearBusy();
158
+ app.onhostcontextchanged = theme;
159
+ app.onteardown = () => { try { clearBusy(); } catch (e) {} return {}; };
160
+ wireActions();
161
+ try { await app.connect(); } catch (e) {}
162
+ try { theme(app.getHostContext && app.getHostContext()); } catch (e) {}
163
+ })();
164
+ `;
165
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/widget/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6I9C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const EXT_APPS_VERSION = "1.7.4";
2
+ /** The minified ext-apps browser bundle, rewritten to assign `globalThis.ExtApps`. */
3
+ export declare const EXT_APPS_BUNDLE: string;
4
+ //# sourceMappingURL=ext-apps-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ext-apps-bundle.d.ts","sourceRoot":"","sources":["../../src/widget/ext-apps-bundle.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,sFAAsF;AACtF,eAAO,MAAM,eAAe,EAAE,MAAmtkU,CAAC"}