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,149 @@
1
+ import { suggestionFields } from '../suggest.js';
2
+ import { NAME_PATTERN } from './naming.js';
3
+ /**
4
+ * Resolve `$use` references in an authored JSON Schema (docs/SPEC.md "Schemas").
5
+ *
6
+ * Every `{ $use: "<name>" }` node is rewritten to a local `{ $ref: "#/$defs/<name>" }`, and the
7
+ * referenced definitions from `schemasMap` are bundled into the schema's `$defs` so each tool's
8
+ * schema document stays self-contained. Resolution is transitive (a referenced schema may itself
9
+ * use `$use`) and cycle-safe (definitions are bundled by `$ref`, never inlined). `$defs` keys are
10
+ * sorted for deterministic output, and `$defs` is only attached when at least one `$use` was
11
+ * resolved — so schemas without `$use` pass through byte-for-byte.
12
+ *
13
+ * `$use` must be the sole key of its object. External `$ref` rejection is handled downstream by the
14
+ * caller on the resolved schema (so it also scans bundled definitions).
15
+ */
16
+ export function resolveSchemaUses(schema, schemasMap, path) {
17
+ const errors = [];
18
+ const usedAtRoot = new Set();
19
+ const rewrittenRoot = rewriteNode(schema, path, schemasMap, usedAtRoot, errors);
20
+ // Transitively resolve every referenced definition, guarding against cycles with `visited`.
21
+ const bundled = {};
22
+ const visited = new Set();
23
+ const queue = [...usedAtRoot];
24
+ while (queue.length > 0) {
25
+ const name = queue.shift();
26
+ if (visited.has(name))
27
+ continue;
28
+ visited.add(name);
29
+ const definition = schemasMap[name];
30
+ // `name` is only enqueued after rewriteNode confirmed it exists in schemasMap.
31
+ if (definition === undefined)
32
+ continue;
33
+ const usedHere = new Set();
34
+ bundled[name] = rewriteNode(definition, `schemas.${name}`, schemasMap, usedHere, errors);
35
+ for (const next of usedHere)
36
+ if (!visited.has(next))
37
+ queue.push(next);
38
+ }
39
+ if (errors.length > 0)
40
+ return { schema: rewrittenRoot, errors };
41
+ // No `$use` anywhere: pass the (structurally identical) schema through untouched.
42
+ if (visited.size === 0)
43
+ return { schema: rewrittenRoot, errors };
44
+ const mergedDefs = mergeDefs(rewrittenRoot, bundled, path, errors);
45
+ if (errors.length > 0)
46
+ return { schema: rewrittenRoot, errors };
47
+ return { schema: withDefs(rewrittenRoot, mergedDefs), errors };
48
+ }
49
+ /**
50
+ * Recursively rewrite `$use` nodes to local `$ref`s. Records each referenced name in `used` and
51
+ * pushes a CompileError for malformed references. Returns a new value; never mutates the input.
52
+ */
53
+ function rewriteNode(value, path, schemasMap, used, errors) {
54
+ if (Array.isArray(value)) {
55
+ return value.map((item, i) => rewriteNode(item, `${path}.${i}`, schemasMap, used, errors));
56
+ }
57
+ if (value === null || typeof value !== 'object')
58
+ return value;
59
+ const obj = value;
60
+ if ('$use' in obj) {
61
+ const refPath = `${path}.$use`;
62
+ const target = obj.$use;
63
+ if (Object.keys(obj).length !== 1) {
64
+ errors.push({
65
+ code: 'invalid_schema_ref',
66
+ path: refPath,
67
+ message: '$use must be the only key in its object',
68
+ });
69
+ return value;
70
+ }
71
+ if (typeof target !== 'string') {
72
+ errors.push({
73
+ code: 'invalid_schema_ref',
74
+ path: refPath,
75
+ message: '$use must reference a schema name as a string',
76
+ });
77
+ return value;
78
+ }
79
+ if (!NAME_PATTERN.test(target)) {
80
+ errors.push({
81
+ code: 'invalid_name',
82
+ path: refPath,
83
+ message: `$use target "${target}" must use lowercase letters, numbers, and underscores`,
84
+ });
85
+ return value;
86
+ }
87
+ if (!(target in schemasMap)) {
88
+ errors.push({
89
+ code: 'unknown_schema_ref',
90
+ path: refPath,
91
+ message: `$use references schema "${target}", which is not declared in "schemas"`,
92
+ got: target,
93
+ ...suggestionFields('unknown_schema_ref', target, Object.keys(schemasMap)),
94
+ });
95
+ return value;
96
+ }
97
+ used.add(target);
98
+ return { $ref: `#/$defs/${target}` };
99
+ }
100
+ const out = {};
101
+ for (const [key, val] of Object.entries(obj)) {
102
+ out[key] = rewriteNode(val, `${path}.${key}`, schemasMap, used, errors);
103
+ }
104
+ return out;
105
+ }
106
+ /**
107
+ * Merge bundled definitions into any tenant-authored `$defs`, sort the keys for determinism, and
108
+ * reject a collision where an authored `$defs.<name>` differs from a bundled definition of the same
109
+ * name.
110
+ */
111
+ function mergeDefs(root, bundled, path, errors) {
112
+ const authored = root.$defs !== null && typeof root.$defs === 'object' && !Array.isArray(root.$defs)
113
+ ? root.$defs
114
+ : {};
115
+ const merged = { ...authored };
116
+ for (const [name, definition] of Object.entries(bundled)) {
117
+ if (name in authored && JSON.stringify(authored[name]) !== JSON.stringify(definition)) {
118
+ errors.push({
119
+ code: 'schema_ref_conflict',
120
+ path: `${path}.$defs.${name}`,
121
+ message: `$use target "${name}" conflicts with an existing $defs entry of the same name`,
122
+ });
123
+ continue;
124
+ }
125
+ merged[name] = definition;
126
+ }
127
+ const sorted = {};
128
+ for (const key of Object.keys(merged).sort())
129
+ sorted[key] = merged[key];
130
+ return sorted;
131
+ }
132
+ /** Return a copy of `root` with `$defs` set, replacing it in place or appending it at the end. */
133
+ function withDefs(root, defs) {
134
+ const out = {};
135
+ let placed = false;
136
+ for (const [key, val] of Object.entries(root)) {
137
+ if (key === '$defs') {
138
+ out[key] = defs;
139
+ placed = true;
140
+ }
141
+ else {
142
+ out[key] = val;
143
+ }
144
+ }
145
+ if (!placed)
146
+ out.$defs = defs;
147
+ return out;
148
+ }
149
+ //# sourceMappingURL=schema-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-refs.js","sourceRoot":"","sources":["../../src/manifest/schema-refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ export declare const manifestSchema: z.ZodObject<{
3
+ manifestVersion: z.ZodLiteral<"0.2">;
4
+ server: z.ZodObject<{
5
+ name: z.ZodString;
6
+ version: z.ZodString;
7
+ title: z.ZodString;
8
+ }, z.core.$strip>;
9
+ connectors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
10
+ id: z.ZodString;
11
+ version: z.ZodString;
12
+ }, z.core.$strip>>>;
13
+ schemas: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
14
+ tools: z.ZodArray<z.ZodObject<{
15
+ name: z.ZodString;
16
+ description: z.ZodString;
17
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
18
+ outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
19
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
+ visibility: z.ZodOptional<z.ZodArray<z.ZodEnum<{
21
+ model: "model";
22
+ app: "app";
23
+ }>>>;
24
+ fulfilment: z.ZodObject<{
25
+ use: z.ZodOptional<z.ZodString>;
26
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
27
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
28
+ id: z.ZodString;
29
+ if: z.ZodOptional<z.ZodString>;
30
+ use: z.ZodOptional<z.ZodString>;
31
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
32
+ map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
33
+ elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
34
+ }, z.core.$strip>>>;
35
+ output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
36
+ }, z.core.$strip>;
37
+ }, z.core.$strip>>;
38
+ resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
39
+ name: z.ZodString;
40
+ uri: z.ZodString;
41
+ title: z.ZodOptional<z.ZodString>;
42
+ description: z.ZodOptional<z.ZodString>;
43
+ mimeType: z.ZodOptional<z.ZodString>;
44
+ fulfilment: z.ZodObject<{
45
+ use: z.ZodOptional<z.ZodString>;
46
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
48
+ id: z.ZodString;
49
+ if: z.ZodOptional<z.ZodString>;
50
+ use: z.ZodOptional<z.ZodString>;
51
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
52
+ map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
+ elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
54
+ }, z.core.$strip>>>;
55
+ output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ }, z.core.$strip>;
57
+ }, z.core.$strip>>>;
58
+ prompts: z.ZodOptional<z.ZodArray<z.ZodObject<{
59
+ name: z.ZodString;
60
+ title: z.ZodOptional<z.ZodString>;
61
+ description: z.ZodOptional<z.ZodString>;
62
+ arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
63
+ name: z.ZodString;
64
+ description: z.ZodOptional<z.ZodString>;
65
+ required: z.ZodOptional<z.ZodBoolean>;
66
+ }, z.core.$strip>>>;
67
+ fulfilment: z.ZodObject<{
68
+ use: z.ZodOptional<z.ZodString>;
69
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
70
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
71
+ id: z.ZodString;
72
+ if: z.ZodOptional<z.ZodString>;
73
+ use: z.ZodOptional<z.ZodString>;
74
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
75
+ map: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
76
+ elicit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
77
+ }, z.core.$strip>>>;
78
+ output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
79
+ }, z.core.$strip>;
80
+ }, z.core.$strip>>>;
81
+ widgets: z.ZodOptional<z.ZodArray<z.ZodObject<{
82
+ name: z.ZodString;
83
+ tool: z.ZodString;
84
+ html: z.ZodString;
85
+ title: z.ZodOptional<z.ZodString>;
86
+ description: z.ZodOptional<z.ZodString>;
87
+ csp: z.ZodOptional<z.ZodObject<{
88
+ connectDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
89
+ resourceDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
90
+ frameDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
91
+ baseUriDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
+ }, z.core.$strip>>;
93
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
94
+ }, z.core.$strip>>>;
95
+ }, z.core.$strip>;
96
+ export type Manifest = z.infer<typeof manifestSchema>;
97
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqKxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { z } from 'zod';
2
+ import { NAME_PATTERN } from './naming.js';
3
+ /**
4
+ * Zod schema for the minimal `manifestVersion: "0.2"` subset implemented so far.
5
+ *
6
+ * This validates the manifest's *static shape*. It covers server identity, tools/resources/prompts with
7
+ * single-operation or flow fulfilment, the `connectors` block of named connector references that the
8
+ * resolution pass checks against the catalog, and the `widgets` block (MCP Apps UI resources; ADR 0022).
9
+ * Other optional top-level blocks (`connections`) are out of scope; unknown keys are stripped, not
10
+ * rejected, so the schema stays forward-compatible. See docs/SPEC.md "Manifest Reference".
11
+ */
12
+ const nameSchema = z
13
+ .string()
14
+ .regex(NAME_PATTERN, 'must use lowercase letters, numbers, and underscores');
15
+ /** A tenant-authored JSON Schema document. Validated as an object here; deep checks run in compile(). */
16
+ const jsonSchemaSchema = z.record(z.string(), z.unknown());
17
+ /** An expression map (`args`/`map`/`output`): field name to a raw value parsed in the compile pass. */
18
+ const exprMapSchema = z.record(z.string(), z.unknown());
19
+ /**
20
+ * A flow step. Zod validates only the static shape; the compile pass enforces "exactly one verb"
21
+ * (`use`/`map`/`elicit`), operation-ref well-formedness, and expression/step-reference validity so
22
+ * those errors carry precise dotted paths and the step union stays open to a future `compute` verb.
23
+ */
24
+ const stepSchema = z.object({
25
+ id: nameSchema,
26
+ if: z.string().optional(),
27
+ use: z.string().optional(),
28
+ args: exprMapSchema.optional(),
29
+ map: exprMapSchema.optional(),
30
+ elicit: jsonSchemaSchema.optional(),
31
+ });
32
+ /**
33
+ * Fulfilment is single-operation (`use` + `args`) sugar OR a flow (`steps` + `output`). Kept
34
+ * deliberately loose here (all fields optional); the compile pass discriminates on `use` vs `steps`,
35
+ * rejecting "neither/both" as `invalid_fulfilment`, and parses every expression value.
36
+ */
37
+ const fulfilmentSchema = z.object({
38
+ use: z.string().optional(),
39
+ args: exprMapSchema.optional(),
40
+ steps: z.array(stepSchema).optional(),
41
+ output: exprMapSchema.optional(),
42
+ });
43
+ const toolSchema = z.object({
44
+ name: nameSchema,
45
+ description: z.string().min(1),
46
+ inputSchema: jsonSchemaSchema,
47
+ outputSchema: jsonSchemaSchema.optional(),
48
+ annotations: z.record(z.string(), z.unknown()).optional(),
49
+ /**
50
+ * Tool-surface visibility (SEP-1865 `_meta.ui.visibility`). Default (omitted) = `['model', 'app']`:
51
+ * the model sees and can call it. `['app']` makes it a **UI-only helper** — hidden from `tools/list`
52
+ * (the model never sees it) but still callable from a widget via `callServerTool`. This is a
53
+ * model-surface concern, **not** an authorization boundary (the policy layer remains the gate).
54
+ */
55
+ visibility: z
56
+ .array(z.enum(['model', 'app']))
57
+ .min(1)
58
+ .optional(),
59
+ fulfilment: fulfilmentSchema,
60
+ });
61
+ /**
62
+ * An MCP resource. Like a tool, it carries a `fulfilment` (it can return a constant or call connectors);
63
+ * its `uri` is a fixed URI or a simple `{var}` URI template (validated in compile()). The compile pass
64
+ * classifies fixed vs template and emits the matcher. Resources have no input/output schema — a templated
65
+ * resource's extracted URI variables are the fulfilment's `input` scope.
66
+ */
67
+ const resourceSchema = z.object({
68
+ name: nameSchema,
69
+ uri: z.string().min(1),
70
+ title: z.string().min(1).optional(),
71
+ description: z.string().min(1).optional(),
72
+ mimeType: z.string().min(1).optional(),
73
+ fulfilment: fulfilmentSchema,
74
+ });
75
+ /** A prompt argument descriptor (the `prompts/list` shape). Values arrive as strings at `prompts/get`. */
76
+ const promptArgumentSchema = z.object({
77
+ name: nameSchema,
78
+ description: z.string().min(1).optional(),
79
+ required: z.boolean().optional(),
80
+ });
81
+ /**
82
+ * An MCP prompt. Carries a `fulfilment` whose `input` scope is the supplied `arguments` map; its output
83
+ * maps to prompt messages (see the protocol layer). `arguments` is the descriptor list for `prompts/list`.
84
+ */
85
+ const promptSchema = z.object({
86
+ name: nameSchema,
87
+ title: z.string().min(1).optional(),
88
+ description: z.string().min(1).optional(),
89
+ arguments: z.array(promptArgumentSchema).optional(),
90
+ fulfilment: fulfilmentSchema,
91
+ });
92
+ const serverSchema = z.object({
93
+ name: nameSchema,
94
+ version: z.string().min(1),
95
+ title: z.string().min(1),
96
+ });
97
+ /**
98
+ * A CSP source token: an origin or host — optional `https?://` scheme, optional `*.` wildcard label, a
99
+ * host, optional `:port`. Rejects whitespace, `${…}`, and dangerous schemes (`javascript:`/`data:`) at
100
+ * author time. These are *host*-enforced (the iframe sandbox), but the compiler must not emit a
101
+ * syntactically invalid CSP source to the wire (defense-in-depth + author feedback).
102
+ */
103
+ const cspDomainSchema = z
104
+ .string()
105
+ .regex(/^(https?:\/\/)?(\*\.)?[A-Za-z0-9.-]+(:\d+)?$/, 'must be an origin or host (e.g. "https://api.example.com" or "*.example.com")');
106
+ /**
107
+ * CSP capability metadata for a widget's `ui://` resource. These are the standardized MCP Apps fields
108
+ * (SEP-1865 `_meta.ui.csp`), enforced by the host iframe sandbox — not by our runtime. Deny-by-default:
109
+ * a widget reaches only the origins it lists. See docs/spec/apps-and-authoring.md.
110
+ */
111
+ const widgetCspSchema = z.object({
112
+ connectDomains: z.array(cspDomainSchema).optional(),
113
+ resourceDomains: z.array(cspDomainSchema).optional(),
114
+ frameDomains: z.array(cspDomainSchema).optional(),
115
+ baseUriDomains: z.array(cspDomainSchema).optional(),
116
+ });
117
+ /**
118
+ * Upper bound on a widget's inline `html` body. Rich markup + inline CSS/JS is a few KB (the shipped
119
+ * examples are < 3 KB); the cap bounds artifact size so a single widget cannot bloat the stored/served
120
+ * artifact. Counted in UTF-16 code units (~bytes for ASCII).
121
+ */
122
+ const MAX_WIDGET_HTML = 256 * 1024;
123
+ /**
124
+ * An MCP Apps widget (Phase 2; [ADR 0022](../decisions/0022-adopt-mcp-ui-for-apps-widgets.md)). The
125
+ * compiler desugars each widget into a fixed `ui://<server>/<name>` resource (mimeType
126
+ * `text/html;profile=mcp-app`) and stamps the linking `tool`'s `_meta.ui.resourceUri`. `html` is the
127
+ * self-contained widget body (the raw-`text/html` escape hatch; a declarative `screen` DSL is a later
128
+ * slice). `csp`/`permissions` ride on the resource's `_meta.ui` as host-enforced capability metadata.
129
+ */
130
+ const widgetSchema = z.object({
131
+ name: nameSchema,
132
+ tool: nameSchema,
133
+ html: z.string().min(1).max(MAX_WIDGET_HTML),
134
+ title: z.string().min(1).optional(),
135
+ description: z.string().min(1).optional(),
136
+ csp: widgetCspSchema.optional(),
137
+ permissions: z.record(z.string(), z.boolean()).optional(),
138
+ });
139
+ /**
140
+ * A named connector reference: the manifest alias (the record key) points to a catalog connector
141
+ * `id` pinned to a `version`. Operation references (`<connector>.<operation>`) use the alias.
142
+ */
143
+ const connectorRefSchema = z.object({
144
+ id: nameSchema,
145
+ version: z.string().min(1),
146
+ });
147
+ export const manifestSchema = z.object({
148
+ manifestVersion: z.literal('0.2'),
149
+ server: serverSchema,
150
+ connectors: z.record(nameSchema, connectorRefSchema).optional(),
151
+ schemas: z.record(nameSchema, jsonSchemaSchema).optional(),
152
+ tools: z.array(toolSchema).min(1),
153
+ resources: z.array(resourceSchema).optional(),
154
+ prompts: z.array(promptSchema).optional(),
155
+ widgets: z.array(widgetSchema).optional(),
156
+ });
157
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Emit the manifest's own contract as a JSON Schema 2020-12 document, generated natively by Zod 4.
3
+ * This both publishes the manifest contract and proves the Zod -> 2020-12 path end to end.
4
+ */
5
+ export declare function manifestJsonSchema(): Record<string, unknown>;
6
+ //# sourceMappingURL=schema-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-export.d.ts","sourceRoot":"","sources":["../src/schema-export.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D"}
@@ -0,0 +1,28 @@
1
+ import { realpathSync, writeFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { z } from 'zod';
4
+ import { manifestSchema } from './manifest/schema.js';
5
+ /**
6
+ * Emit the manifest's own contract as a JSON Schema 2020-12 document, generated natively by Zod 4.
7
+ * This both publishes the manifest contract and proves the Zod -> 2020-12 path end to end.
8
+ */
9
+ export function manifestJsonSchema() {
10
+ return z.toJSONSchema(manifestSchema, { target: 'draft-2020-12' });
11
+ }
12
+ function isInvokedDirectly() {
13
+ const entry = process.argv[1];
14
+ if (!entry)
15
+ return false;
16
+ try {
17
+ return realpathSync(entry) === fileURLToPath(import.meta.url);
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ if (isInvokedDirectly()) {
24
+ const out = process.argv[2] ?? 'manifest.schema.json';
25
+ writeFileSync(out, `${JSON.stringify(manifestJsonSchema(), null, 2)}\n`);
26
+ process.stdout.write(`Wrote ${out}\n`);
27
+ }
28
+ //# sourceMappingURL=schema-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-export.js","sourceRoot":"","sources":["../src/schema-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAA4B,CAAC;AAChG,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,iBAAiB,EAAE,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;IACtD,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Generation-friendly nearest-match suggestions for compile-time reference errors.
3
+ *
4
+ * Pure and dependency-free (node builtins only). The compiler attaches `didYouMean` / `suggestions`
5
+ * (and a stable `docAnchor`) to resolution {@link CompileError}s so a *machine* manifest generator can
6
+ * self-correct typos in connector aliases, operation names, and schema references without a human in
7
+ * the loop. See GT-1 in docs/STATUS.md.
8
+ */
9
+ /**
10
+ * Levenshtein edit distance between `a` and `b`, capped at `cap`: the true distance when it is
11
+ * `<= cap`, otherwise `cap + 1`. Single rolling DP row with a per-row early exit, so probing many
12
+ * far-apart candidates stays cheap. Indices stay within `[0, bl]` by construction; the `?? 0`
13
+ * fallbacks below only satisfy `noUncheckedIndexedAccess` and are never reached.
14
+ */
15
+ export declare function boundedDistance(a: string, b: string, cap: number): number;
16
+ /**
17
+ * The closest candidate to `probe` within the typo threshold, or `undefined` if none is close enough.
18
+ * Comparison is case-insensitive; ties break to the lexicographically smaller candidate (deterministic).
19
+ */
20
+ export declare function nearestMatch(probe: string, candidates: readonly string[]): string | undefined;
21
+ /**
22
+ * Up to `limit` candidates ranked by closeness to `probe` (closest first; ties lexicographic). Unlike
23
+ * {@link nearestMatch} this is not gated by the typo threshold — it always offers the nearest few as a
24
+ * candidate set a generator can choose from, even when nothing is a likely single correction.
25
+ */
26
+ export declare function rankSuggestions(probe: string, candidates: readonly string[], limit?: number): string[];
27
+ /** Optional, generation-friendly fields the compiler attaches to a resolution error. */
28
+ export interface SuggestionFields {
29
+ readonly didYouMean?: string;
30
+ readonly suggestions?: readonly string[];
31
+ readonly docAnchor: string;
32
+ }
33
+ /** A stable, machine-readable docs anchor for an error code (e.g. `compile-errors#unknown-operation`). */
34
+ export declare function docAnchorFor(code: string): string;
35
+ /**
36
+ * Build the `didYouMean` / `suggestions` / `docAnchor` fields for a reference error against the set of
37
+ * known identifiers in scope. Omits `didYouMean`/`suggestions` when there is nothing to offer (e.g. no
38
+ * candidates declared), but always carries a stable `docAnchor`.
39
+ */
40
+ export declare function suggestionFields(code: string, probe: string, candidates: readonly string[]): SuggestionFields;
41
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAc7F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAcjG;AAED,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,gBAAgB,CAQlB"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Generation-friendly nearest-match suggestions for compile-time reference errors.
3
+ *
4
+ * Pure and dependency-free (node builtins only). The compiler attaches `didYouMean` / `suggestions`
5
+ * (and a stable `docAnchor`) to resolution {@link CompileError}s so a *machine* manifest generator can
6
+ * self-correct typos in connector aliases, operation names, and schema references without a human in
7
+ * the loop. See GT-1 in docs/STATUS.md.
8
+ */
9
+ /** Typo tolerance for a probe of the given length: 1 for short names, up to 3 for long ones. */
10
+ function typoThreshold(length) {
11
+ return Math.min(3, Math.max(1, Math.floor(length / 3)));
12
+ }
13
+ /**
14
+ * Levenshtein edit distance between `a` and `b`, capped at `cap`: the true distance when it is
15
+ * `<= cap`, otherwise `cap + 1`. Single rolling DP row with a per-row early exit, so probing many
16
+ * far-apart candidates stays cheap. Indices stay within `[0, bl]` by construction; the `?? 0`
17
+ * fallbacks below only satisfy `noUncheckedIndexedAccess` and are never reached.
18
+ */
19
+ export function boundedDistance(a, b, cap) {
20
+ if (a === b)
21
+ return 0;
22
+ const al = a.length;
23
+ const bl = b.length;
24
+ if (Math.abs(al - bl) > cap)
25
+ return cap + 1;
26
+ const row = [];
27
+ for (let j = 0; j <= bl; j++)
28
+ row.push(j);
29
+ for (let i = 1; i <= al; i++) {
30
+ let diag = i - 1; // row[0] before this row overwrites it = dp[i-1][0]
31
+ row[0] = i;
32
+ let rowMin = i;
33
+ const ai = a.charCodeAt(i - 1);
34
+ for (let j = 1; j <= bl; j++) {
35
+ const up = row[j] ?? 0; // dp[i-1][j], before overwrite
36
+ const left = row[j - 1] ?? 0; // dp[i][j-1], already updated this row
37
+ const cost = ai === b.charCodeAt(j - 1) ? 0 : 1;
38
+ const v = Math.min(diag + cost, up + 1, left + 1);
39
+ diag = up;
40
+ row[j] = v;
41
+ if (v < rowMin)
42
+ rowMin = v;
43
+ }
44
+ if (rowMin > cap)
45
+ return cap + 1;
46
+ }
47
+ const d = row[bl] ?? cap + 1;
48
+ return d <= cap ? d : cap + 1;
49
+ }
50
+ /**
51
+ * The closest candidate to `probe` within the typo threshold, or `undefined` if none is close enough.
52
+ * Comparison is case-insensitive; ties break to the lexicographically smaller candidate (deterministic).
53
+ */
54
+ export function nearestMatch(probe, candidates) {
55
+ const p = probe.toLowerCase();
56
+ const threshold = typoThreshold(probe.length);
57
+ let best;
58
+ let bestDistance = threshold + 1;
59
+ for (const candidate of candidates) {
60
+ const d = boundedDistance(p, candidate.toLowerCase(), threshold);
61
+ if (d > threshold)
62
+ continue;
63
+ if (d < bestDistance || (d === bestDistance && (best === undefined || candidate < best))) {
64
+ best = candidate;
65
+ bestDistance = d;
66
+ }
67
+ }
68
+ return best;
69
+ }
70
+ /**
71
+ * Up to `limit` candidates ranked by closeness to `probe` (closest first; ties lexicographic). Unlike
72
+ * {@link nearestMatch} this is not gated by the typo threshold — it always offers the nearest few as a
73
+ * candidate set a generator can choose from, even when nothing is a likely single correction.
74
+ */
75
+ export function rankSuggestions(probe, candidates, limit = 3) {
76
+ const p = probe.toLowerCase();
77
+ return candidates
78
+ .map((candidate) => ({
79
+ candidate,
80
+ distance: boundedDistance(p, candidate.toLowerCase(), Math.max(p.length, candidate.length)),
81
+ }))
82
+ .sort((x, y) => x.distance - y.distance ||
83
+ (x.candidate < y.candidate ? -1 : x.candidate > y.candidate ? 1 : 0))
84
+ .slice(0, limit)
85
+ .map((scored) => scored.candidate);
86
+ }
87
+ /** A stable, machine-readable docs anchor for an error code (e.g. `compile-errors#unknown-operation`). */
88
+ export function docAnchorFor(code) {
89
+ return `compile-errors#${code.replace(/_/g, '-')}`;
90
+ }
91
+ /**
92
+ * Build the `didYouMean` / `suggestions` / `docAnchor` fields for a reference error against the set of
93
+ * known identifiers in scope. Omits `didYouMean`/`suggestions` when there is nothing to offer (e.g. no
94
+ * candidates declared), but always carries a stable `docAnchor`.
95
+ */
96
+ export function suggestionFields(code, probe, candidates) {
97
+ const didYouMean = nearestMatch(probe, candidates);
98
+ const suggestions = rankSuggestions(probe, candidates);
99
+ return {
100
+ ...(didYouMean !== undefined ? { didYouMean } : {}),
101
+ ...(suggestions.length > 0 ? { suggestions } : {}),
102
+ docAnchor: docAnchorFor(code),
103
+ };
104
+ }
105
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../src/suggest.ts"],"names":[],"mappings":"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"}