@noodleseed/one 0.117.4 → 0.119.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/commands/catalog-data-bootstrap-authoring.d.ts.map +1 -1
  2. package/dist/commands/catalog-data-bootstrap-authoring.js +62 -1
  3. package/dist/commands/catalog-data-bootstrap-authoring.js.map +1 -1
  4. package/dist/commands/project-setup.d.ts.map +1 -1
  5. package/dist/commands/project-setup.js +21 -2
  6. package/dist/commands/project-setup.js.map +1 -1
  7. package/dist/deploy.d.ts +2 -0
  8. package/dist/deploy.d.ts.map +1 -1
  9. package/dist/deploy.js +6 -1
  10. package/dist/deploy.js.map +1 -1
  11. package/dist/local-compile.d.ts +2 -0
  12. package/dist/local-compile.d.ts.map +1 -1
  13. package/dist/local-compile.js +10 -1
  14. package/dist/local-compile.js.map +1 -1
  15. package/dist/plugin-mode/plugin-operation-contract.d.ts +3 -3
  16. package/node_modules/@noodle-borg/admission-limits/dist/client-address.d.ts +7 -0
  17. package/node_modules/@noodle-borg/admission-limits/dist/client-address.d.ts.map +1 -0
  18. package/node_modules/@noodle-borg/admission-limits/dist/client-address.js +68 -0
  19. package/node_modules/@noodle-borg/admission-limits/dist/client-address.js.map +1 -0
  20. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts +13 -2
  21. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.d.ts.map +1 -1
  22. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js +16 -1
  23. package/node_modules/@noodle-borg/admission-limits/dist/counter-store.js.map +1 -1
  24. package/node_modules/@noodle-borg/admission-limits/dist/envelope.d.ts +11 -0
  25. package/node_modules/@noodle-borg/admission-limits/dist/envelope.d.ts.map +1 -1
  26. package/node_modules/@noodle-borg/admission-limits/dist/envelope.js +7 -0
  27. package/node_modules/@noodle-borg/admission-limits/dist/envelope.js.map +1 -1
  28. package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.d.ts.map +1 -1
  29. package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js +3 -3
  30. package/node_modules/@noodle-borg/admission-limits/dist/in-memory-counter-store.js.map +1 -1
  31. package/node_modules/@noodle-borg/admission-limits/dist/index.d.ts +1 -0
  32. package/node_modules/@noodle-borg/admission-limits/dist/index.d.ts.map +1 -1
  33. package/node_modules/@noodle-borg/admission-limits/dist/index.js +1 -0
  34. package/node_modules/@noodle-borg/admission-limits/dist/index.js.map +1 -1
  35. package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.d.ts.map +1 -1
  36. package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.js +3 -3
  37. package/node_modules/@noodle-borg/admission-limits/dist/postgres-counter-store.js.map +1 -1
  38. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  39. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +1 -1
  40. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  41. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -4
  43. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  44. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +3 -2
  45. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
  46. package/node_modules/@noodle-borg/agent-kit/dist/index.js +2 -2
  47. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  48. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.d.ts +1 -1
  49. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-ownership.d.ts.map +1 -1
  50. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.d.ts +3 -3
  51. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.d.ts.map +1 -1
  52. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.js +3 -3
  53. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-renderer.js.map +1 -1
  54. package/node_modules/@noodle-borg/agent-kit/dist/skill-agent-guide-ref.js +2 -2
  55. package/node_modules/@noodle-borg/agent-kit/dist/skill-agent-guide-ref.js.map +1 -1
  56. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +1 -1
  57. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  58. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  59. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +4 -2
  60. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  61. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  62. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +14 -1
  63. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  64. package/node_modules/@noodle-borg/agent-kit/package.json +5 -1
  65. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts +8 -0
  66. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.d.ts.map +1 -0
  67. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +244 -0
  68. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js.map +1 -0
  69. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.d.ts +4 -0
  70. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.d.ts.map +1 -0
  71. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.js +90 -0
  72. package/node_modules/@noodle-borg/agent-packaging/dist/host-package-zip.js.map +1 -0
  73. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.d.ts +18 -0
  74. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.d.ts.map +1 -0
  75. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.js +18 -0
  76. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-limits.js.map +1 -0
  77. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts +133 -0
  78. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.d.ts.map +1 -0
  79. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.js +2 -0
  80. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-types.js.map +1 -0
  81. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.d.ts +14 -0
  82. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.d.ts.map +1 -0
  83. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js +257 -0
  84. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging-validation.js.map +1 -0
  85. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.d.ts +9 -0
  86. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.d.ts.map +1 -0
  87. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.js +138 -0
  88. package/node_modules/@noodle-borg/agent-packaging/dist/host-packaging.js.map +1 -0
  89. package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts +4 -0
  90. package/node_modules/@noodle-borg/agent-packaging/dist/index.d.ts.map +1 -0
  91. package/node_modules/@noodle-borg/agent-packaging/dist/index.js +4 -0
  92. package/node_modules/@noodle-borg/agent-packaging/dist/index.js.map +1 -0
  93. package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.d.ts +19 -0
  94. package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-types.d.ts.map +1 -0
  95. package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.d.ts +2 -0
  96. package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.d.ts.map +1 -1
  97. package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-validation.js +32 -4
  98. package/node_modules/@noodle-borg/agent-packaging/dist/product-skill-validation.js.map +1 -0
  99. package/node_modules/@noodle-borg/agent-packaging/package.json +28 -0
  100. package/node_modules/@noodle-borg/app-package/dist/schema.d.ts.map +1 -1
  101. package/node_modules/@noodle-borg/app-package/dist/schema.js +4 -2
  102. package/node_modules/@noodle-borg/app-package/dist/schema.js.map +1 -1
  103. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts +32 -0
  104. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.d.ts.map +1 -1
  105. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js +17 -0
  106. package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-store.js.map +1 -1
  107. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts +70 -0
  108. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.d.ts.map +1 -0
  109. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.js +18 -0
  110. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation-store.js.map +1 -0
  111. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts +50 -0
  112. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.d.ts.map +1 -0
  113. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js +43 -0
  114. package/node_modules/@noodle-borg/assistant-gateway/dist/elevation.js.map +1 -0
  115. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts +21 -0
  116. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.d.ts.map +1 -0
  117. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js +41 -0
  118. package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-elevation-store.js.map +1 -0
  119. package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts +4 -0
  120. package/node_modules/@noodle-borg/assistant-gateway/dist/index.d.ts.map +1 -1
  121. package/node_modules/@noodle-borg/assistant-gateway/dist/index.js +4 -0
  122. package/node_modules/@noodle-borg/assistant-gateway/dist/index.js.map +1 -1
  123. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts +11 -0
  124. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.d.ts.map +1 -1
  125. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js +24 -0
  126. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-assistant.js.map +1 -1
  127. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.d.ts +36 -0
  128. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.d.ts.map +1 -0
  129. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.js +102 -0
  130. package/node_modules/@noodle-borg/assistant-gateway/dist/postgres-elevation-store.js.map +1 -0
  131. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.d.ts +6 -0
  132. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.d.ts.map +1 -1
  133. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.js +12 -0
  134. package/node_modules/@noodle-borg/assistant-gateway/dist/public-session.js.map +1 -1
  135. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +7 -1
  136. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
  137. package/node_modules/@noodle-borg/authoring/dist/assistant.js +32 -0
  138. package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
  139. package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts +46 -0
  140. package/node_modules/@noodle-borg/authoring/dist/distribution.d.ts.map +1 -0
  141. package/node_modules/@noodle-borg/authoring/dist/distribution.js +7 -0
  142. package/node_modules/@noodle-borg/authoring/dist/distribution.js.map +1 -0
  143. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -0
  144. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  145. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  146. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +5 -0
  147. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  148. package/node_modules/@noodle-borg/authoring/dist/server.js +4 -0
  149. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  150. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +1 -0
  151. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
  152. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -0
  153. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
  154. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +4 -5
  155. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts.map +1 -1
  156. package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.js.map +1 -1
  157. package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts +3 -0
  158. package/node_modules/@noodle-borg/plugin-distribution/dist/index.d.ts.map +1 -0
  159. package/node_modules/@noodle-borg/plugin-distribution/dist/index.js +3 -0
  160. package/node_modules/@noodle-borg/plugin-distribution/dist/index.js.map +1 -0
  161. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts +30 -0
  162. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.d.ts.map +1 -0
  163. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js +269 -0
  164. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-command.js.map +1 -0
  165. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.d.ts +4 -0
  166. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.d.ts.map +1 -0
  167. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js +239 -0
  168. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-render.js.map +1 -0
  169. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.d.ts +21 -0
  170. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.d.ts.map +1 -0
  171. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.js +2 -0
  172. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-types.js.map +1 -0
  173. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.d.ts +10 -0
  174. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.d.ts.map +1 -0
  175. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js +120 -0
  176. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin-validation.js.map +1 -0
  177. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.d.ts +7 -0
  178. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.d.ts.map +1 -0
  179. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.js +24 -0
  180. package/node_modules/@noodle-borg/plugin-distribution/dist/openai-plugin.js.map +1 -0
  181. package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.d.ts +1 -1
  182. package/node_modules/@noodle-borg/plugin-distribution/dist/product-skill-markdown.d.ts.map +1 -0
  183. package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.js +1 -1
  184. package/node_modules/@noodle-borg/{agent-kit → plugin-distribution}/dist/product-skill-markdown.js.map +1 -1
  185. package/node_modules/@noodle-borg/plugin-distribution/package.json +35 -0
  186. package/node_modules/@noodle-borg/service/dist/options.d.ts +3 -1
  187. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  188. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts +1 -1
  189. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts.map +1 -1
  190. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +19 -0
  191. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts +42 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.d.ts.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +46 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.d.ts.map +1 -1
  197. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +7 -2
  198. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js.map +1 -1
  199. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts +3 -1
  200. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  201. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +77 -19
  202. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  203. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  204. package/node_modules/@noodle-borg/service/dist/service.js +1 -0
  205. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  206. package/node_modules/@noodle-borg/service/package.json +1 -1
  207. package/node_modules/@noodleseed/assistant/dist/{chunk-SUHNNWKP.js → chunk-7L52WJ2E.js} +67 -2
  208. package/node_modules/@noodleseed/assistant/dist/chunk-7L52WJ2E.js.map +1 -0
  209. package/node_modules/@noodleseed/assistant/dist/{chunk-RRJIK473.js → chunk-NPV64PUX.js} +6 -1
  210. package/node_modules/@noodleseed/assistant/dist/{chunk-RRJIK473.js.map → chunk-NPV64PUX.js.map} +1 -1
  211. package/node_modules/@noodleseed/assistant/dist/{client-B_l59rWg.d.cts → client-401BAJqk.d.cts} +13 -1
  212. package/node_modules/@noodleseed/assistant/dist/{client-MnLfiyo2.d.ts → client-Ii_xTV09.d.ts} +13 -1
  213. package/node_modules/@noodleseed/assistant/dist/client.cjs +5 -0
  214. package/node_modules/@noodleseed/assistant/dist/client.cjs.map +1 -1
  215. package/node_modules/@noodleseed/assistant/dist/client.d.cts +1 -1
  216. package/node_modules/@noodleseed/assistant/dist/client.d.ts +1 -1
  217. package/node_modules/@noodleseed/assistant/dist/client.js +1 -1
  218. package/node_modules/@noodleseed/assistant/dist/embed.global.js +32 -32
  219. package/node_modules/@noodleseed/assistant/dist/index.cjs +70 -0
  220. package/node_modules/@noodleseed/assistant/dist/index.cjs.map +1 -1
  221. package/node_modules/@noodleseed/assistant/dist/index.d.cts +2 -2
  222. package/node_modules/@noodleseed/assistant/dist/index.d.ts +2 -2
  223. package/node_modules/@noodleseed/assistant/dist/index.js +2 -2
  224. package/node_modules/@noodleseed/assistant/dist/react/client.cjs +5 -0
  225. package/node_modules/@noodleseed/assistant/dist/react/client.cjs.map +1 -1
  226. package/node_modules/@noodleseed/assistant/dist/react/client.d.cts +1 -1
  227. package/node_modules/@noodleseed/assistant/dist/react/client.d.ts +1 -1
  228. package/node_modules/@noodleseed/assistant/dist/react/client.js +1 -1
  229. package/node_modules/@noodleseed/assistant/dist/react.cjs +70 -0
  230. package/node_modules/@noodleseed/assistant/dist/react.cjs.map +1 -1
  231. package/node_modules/@noodleseed/assistant/dist/react.d.cts +1 -1
  232. package/node_modules/@noodleseed/assistant/dist/react.d.ts +1 -1
  233. package/node_modules/@noodleseed/assistant/dist/react.js +2 -2
  234. package/package.json +5 -2
  235. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-markdown.d.ts.map +0 -1
  236. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-types.d.ts.map +0 -1
  237. package/node_modules/@noodle-borg/agent-kit/dist/product-skill-validation.js.map +0 -1
  238. package/node_modules/@noodleseed/assistant/dist/chunk-SUHNNWKP.js.map +0 -1
  239. /package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.js +0 -0
  240. /package/node_modules/@noodle-borg/{agent-kit → agent-packaging}/dist/product-skill-types.js.map +0 -0
@@ -0,0 +1,244 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { HOST_PACKAGING_LIMITS } from './host-packaging-limits.js';
3
+ const HEX_16 = /^[a-f0-9]{16}$/;
4
+ export function validDistributionImageReference(value) {
5
+ if (!isRecord(value) || !boundedProse(value.alt, HOST_PACKAGING_LIMITS.summaryChars))
6
+ return false;
7
+ if (!hasOnlyKeys(value, ['source', 'alt']))
8
+ return false;
9
+ const source = value.source;
10
+ if (!isRecord(source) || source.kind !== 'asset' || !HEX_16.test(String(source.logicalId)))
11
+ return false;
12
+ if (!hasOnlyKeys(source, ['kind', 'sourcePath', 'logicalId']))
13
+ return false;
14
+ if (typeof source.sourcePath !== 'string')
15
+ return false;
16
+ const normalized = normalizeHostAssetPath(source.sourcePath);
17
+ return normalized !== undefined && hostAssetLogicalId(normalized) === source.logicalId;
18
+ }
19
+ export function resolveHostPackageAssets(distribution, inputs, target) {
20
+ const issues = [];
21
+ if (!Array.isArray(inputs)) {
22
+ return {
23
+ issues: [
24
+ issue(target, 'host_package_asset_missing', 'assets', 'Required distribution assets are missing.'),
25
+ ],
26
+ };
27
+ }
28
+ const references = [
29
+ distribution.assets.icon,
30
+ ...(distribution.assets.logo === undefined ? [] : [distribution.assets.logo]),
31
+ ...(distribution.assets.screenshots ?? []),
32
+ ];
33
+ const referenceKeys = new Set();
34
+ for (const image of references) {
35
+ const normalized = normalizeHostAssetPath(image.source.sourcePath);
36
+ if (normalized === undefined) {
37
+ return {
38
+ issues: [
39
+ issue(target, 'host_package_invalid_metadata', 'distribution.assets', 'A distribution asset reference has an unsafe path.'),
40
+ ],
41
+ };
42
+ }
43
+ referenceKeys.add(assetKey(image.source.logicalId, normalized));
44
+ }
45
+ if (referenceKeys.size !== references.length) {
46
+ issues.push(issue(target, 'host_package_invalid_metadata', 'distribution.assets', 'Distribution asset references must be unique.'));
47
+ }
48
+ const provided = new Map();
49
+ let totalBytes = 0;
50
+ for (const input of inputs) {
51
+ if (!isRecord(input) ||
52
+ typeof input.sourcePath !== 'string' ||
53
+ typeof input.logicalId !== 'string') {
54
+ issues.push(issue(target, 'host_package_asset_unreferenced', 'assets', 'An unreferenced asset was provided.'));
55
+ continue;
56
+ }
57
+ const normalized = normalizeHostAssetPath(input.sourcePath);
58
+ const key = normalized === undefined ? '' : assetKey(input.logicalId, normalized);
59
+ if (normalized === undefined ||
60
+ !HEX_16.test(input.logicalId) ||
61
+ hostAssetLogicalId(normalized) !== input.logicalId ||
62
+ !(input.content instanceof Uint8Array)) {
63
+ issues.push(issue(target, 'host_package_asset_unreferenced', 'assets', 'An unreferenced asset was provided.'));
64
+ continue;
65
+ }
66
+ if (provided.has(key)) {
67
+ issues.push(issue(target, 'host_package_asset_unreferenced', 'assets', 'A duplicate asset was provided.'));
68
+ continue;
69
+ }
70
+ provided.set(key, {
71
+ logicalId: input.logicalId,
72
+ sourcePath: input.sourcePath,
73
+ content: input.content,
74
+ });
75
+ totalBytes += input.content.byteLength;
76
+ }
77
+ for (const key of referenceKeys) {
78
+ if (!provided.has(key)) {
79
+ issues.push(issue(target, 'host_package_asset_missing', 'assets', 'A required distribution asset is missing.'));
80
+ }
81
+ }
82
+ for (const key of provided.keys()) {
83
+ if (!referenceKeys.has(key)) {
84
+ issues.push(issue(target, 'host_package_asset_unreferenced', 'assets', 'An unreferenced asset was provided.'));
85
+ }
86
+ }
87
+ if (totalBytes > HOST_PACKAGING_LIMITS.totalAssetBytes) {
88
+ issues.push(issue(target, 'host_package_asset_invalid', 'assets', 'Distribution assets exceed the total byte limit.'));
89
+ }
90
+ const resolved = new Map();
91
+ for (const image of references) {
92
+ const normalized = normalizeHostAssetPath(image.source.sourcePath);
93
+ if (normalized === undefined) {
94
+ issues.push(issue(target, 'host_package_invalid_metadata', 'distribution.assets', 'A distribution asset reference has an unsafe path.'));
95
+ continue;
96
+ }
97
+ const key = assetKey(image.source.logicalId, normalized);
98
+ const input = provided.get(key);
99
+ if (input === undefined)
100
+ continue;
101
+ const dimensions = inspectImage(input.content);
102
+ if (input.content.byteLength === 0 ||
103
+ input.content.byteLength > HOST_PACKAGING_LIMITS.assetBytes ||
104
+ dimensions === undefined ||
105
+ dimensions.width > HOST_PACKAGING_LIMITS.imageDimension ||
106
+ dimensions.height > HOST_PACKAGING_LIMITS.imageDimension) {
107
+ issues.push(issue(target, 'host_package_asset_invalid', 'assets', 'A distribution asset is not a valid bounded image.'));
108
+ continue;
109
+ }
110
+ const content = new Uint8Array(input.content);
111
+ resolved.set(key, {
112
+ logicalId: input.logicalId,
113
+ sourcePath: normalized,
114
+ content,
115
+ alt: image.alt,
116
+ mimeType: dimensions.mimeType,
117
+ width: dimensions.width,
118
+ height: dimensions.height,
119
+ sha256: sha256(content),
120
+ });
121
+ }
122
+ if (issues.some((candidate) => candidate.severity === 'error'))
123
+ return { issues };
124
+ const resolve = (image) => {
125
+ const normalized = normalizeHostAssetPath(image.source.sourcePath);
126
+ return normalized === undefined
127
+ ? undefined
128
+ : resolved.get(assetKey(image.source.logicalId, normalized));
129
+ };
130
+ const icon = resolve(distribution.assets.icon);
131
+ const logo = distribution.assets.logo === undefined ? undefined : resolve(distribution.assets.logo);
132
+ const screenshots = [];
133
+ for (const image of distribution.assets.screenshots ?? []) {
134
+ const screenshot = resolve(image);
135
+ if (screenshot !== undefined)
136
+ screenshots.push(screenshot);
137
+ }
138
+ if (icon === undefined ||
139
+ (distribution.assets.logo !== undefined && logo === undefined) ||
140
+ screenshots.length !== (distribution.assets.screenshots?.length ?? 0)) {
141
+ return {
142
+ issues: [
143
+ issue(target, 'host_package_asset_missing', 'assets', 'A required distribution asset could not be resolved.'),
144
+ ],
145
+ };
146
+ }
147
+ return {
148
+ assets: {
149
+ icon,
150
+ ...(logo === undefined ? {} : { logo }),
151
+ screenshots,
152
+ },
153
+ issues,
154
+ };
155
+ }
156
+ export function normalizeHostAssetPath(value) {
157
+ const normalized = value.replace(/\\/g, '/').replace(/^\.\/+/, '');
158
+ return safeRelativePath(normalized) ? normalized : undefined;
159
+ }
160
+ function inspectImage(bytes) {
161
+ const buffer = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
162
+ if (buffer.length >= 24 &&
163
+ buffer.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])) &&
164
+ buffer.toString('ascii', 12, 16) === 'IHDR') {
165
+ const width = buffer.readUInt32BE(16);
166
+ const height = buffer.readUInt32BE(20);
167
+ return width > 0 && height > 0 ? { mimeType: 'image/png', width, height } : undefined;
168
+ }
169
+ const jpeg = inspectJpeg(buffer);
170
+ if (jpeg !== undefined)
171
+ return { mimeType: 'image/jpeg', ...jpeg };
172
+ const webp = inspectWebp(buffer);
173
+ if (webp !== undefined)
174
+ return { mimeType: 'image/webp', ...webp };
175
+ return undefined;
176
+ }
177
+ function inspectJpeg(buffer) {
178
+ if (buffer.length < 4 || buffer[0] !== 0xff || buffer[1] !== 0xd8)
179
+ return undefined;
180
+ let offset = 2;
181
+ while (offset + 8 < buffer.length) {
182
+ if (buffer[offset] !== 0xff)
183
+ return undefined;
184
+ const marker = buffer[offset + 1];
185
+ if (marker === undefined)
186
+ return undefined;
187
+ if (marker === 0xd9 || marker === 0xda)
188
+ return undefined;
189
+ const length = buffer.readUInt16BE(offset + 2);
190
+ if (length < 2 || offset + 2 + length > buffer.length)
191
+ return undefined;
192
+ if ((marker >= 0xc0 && marker <= 0xc3) || (marker >= 0xc5 && marker <= 0xc7)) {
193
+ const height = buffer.readUInt16BE(offset + 5);
194
+ const width = buffer.readUInt16BE(offset + 7);
195
+ return width > 0 && height > 0 ? { width, height } : undefined;
196
+ }
197
+ offset += 2 + length;
198
+ }
199
+ return undefined;
200
+ }
201
+ function inspectWebp(buffer) {
202
+ if (buffer.length < 30 ||
203
+ buffer.toString('ascii', 0, 4) !== 'RIFF' ||
204
+ buffer.toString('ascii', 8, 12) !== 'WEBP')
205
+ return undefined;
206
+ const kind = buffer.toString('ascii', 12, 16);
207
+ if (kind === 'VP8X') {
208
+ const width = 1 + buffer.readUIntLE(24, 3);
209
+ const height = 1 + buffer.readUIntLE(27, 3);
210
+ return { width, height };
211
+ }
212
+ return undefined;
213
+ }
214
+ function safeRelativePath(path) {
215
+ return (path.length > 0 &&
216
+ path.length <= HOST_PACKAGING_LIMITS.pathChars &&
217
+ !path.startsWith('/') &&
218
+ !/^[A-Za-z]:/.test(path) &&
219
+ !path.includes('\\') &&
220
+ !path.includes('\0') &&
221
+ path.split('/').every((part) => part !== '' && part !== '.' && part !== '..'));
222
+ }
223
+ function hostAssetLogicalId(sourcePath) {
224
+ return createHash('sha256').update(sourcePath).digest('hex').slice(0, 16);
225
+ }
226
+ function assetKey(logicalIdValue, sourcePath) {
227
+ return `${logicalIdValue}\0${sourcePath}`;
228
+ }
229
+ function boundedProse(value, max) {
230
+ return typeof value === 'string' && value.trim().length > 0 && value.length <= max;
231
+ }
232
+ function sha256(value) {
233
+ return createHash('sha256').update(value).digest('hex');
234
+ }
235
+ function issue(target, code, path, message) {
236
+ return { severity: 'error', code, path, message, origin: 'framework', target };
237
+ }
238
+ function isRecord(value) {
239
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
240
+ }
241
+ function hasOnlyKeys(value, allowed) {
242
+ return Object.keys(value).every((key) => allowed.includes(key));
243
+ }
244
+ //# sourceMappingURL=host-package-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-package-assets.js","sourceRoot":"","sources":["../src/host-package-assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RenderedHostPackageFile } from './host-packaging-types.js';
2
+ /** Write a stable, store-only ZIP without filesystem timestamps or platform-specific metadata. */
3
+ export declare function deterministicZip(files: readonly RenderedHostPackageFile[]): Uint8Array;
4
+ //# sourceMappingURL=host-package-zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-package-zip.d.ts","sourceRoot":"","sources":["../src/host-package-zip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAkBzE,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,UAAU,CAkEtF"}
@@ -0,0 +1,90 @@
1
+ const LOCAL_FILE_HEADER = 0x04034b50;
2
+ const CENTRAL_DIRECTORY_HEADER = 0x02014b50;
3
+ const END_OF_CENTRAL_DIRECTORY = 0x06054b50;
4
+ const UTF8_FLAG = 0x0800;
5
+ const ZIP_VERSION = 20;
6
+ const UNIX_ZIP_VERSION = (3 << 8) | ZIP_VERSION;
7
+ const DOS_DATE_1980_01_01 = 0x0021;
8
+ const REGULAR_FILE_MODE = (0o100644 << 16) >>> 0;
9
+ /** Write a stable, store-only ZIP without filesystem timestamps or platform-specific metadata. */
10
+ export function deterministicZip(files) {
11
+ const localParts = [];
12
+ const centralEntries = [];
13
+ let localOffset = 0;
14
+ for (const file of files) {
15
+ const name = Buffer.from(file.path, 'utf8');
16
+ const checksum = crc32(file.content);
17
+ const header = Buffer.alloc(30);
18
+ header.writeUInt32LE(LOCAL_FILE_HEADER, 0);
19
+ header.writeUInt16LE(ZIP_VERSION, 4);
20
+ header.writeUInt16LE(UTF8_FLAG, 6);
21
+ header.writeUInt16LE(0, 8);
22
+ header.writeUInt16LE(0, 10);
23
+ header.writeUInt16LE(DOS_DATE_1980_01_01, 12);
24
+ header.writeUInt32LE(checksum, 14);
25
+ header.writeUInt32LE(file.byteLength, 18);
26
+ header.writeUInt32LE(file.byteLength, 22);
27
+ header.writeUInt16LE(name.byteLength, 26);
28
+ header.writeUInt16LE(0, 28);
29
+ localParts.push(header, name, file.content);
30
+ centralEntries.push({
31
+ name,
32
+ crc32: checksum,
33
+ byteLength: file.byteLength,
34
+ localOffset,
35
+ });
36
+ localOffset += header.byteLength + name.byteLength + file.byteLength;
37
+ }
38
+ const centralParts = [];
39
+ let centralSize = 0;
40
+ for (const entry of centralEntries) {
41
+ const header = Buffer.alloc(46);
42
+ header.writeUInt32LE(CENTRAL_DIRECTORY_HEADER, 0);
43
+ header.writeUInt16LE(UNIX_ZIP_VERSION, 4);
44
+ header.writeUInt16LE(ZIP_VERSION, 6);
45
+ header.writeUInt16LE(UTF8_FLAG, 8);
46
+ header.writeUInt16LE(0, 10);
47
+ header.writeUInt16LE(0, 12);
48
+ header.writeUInt16LE(DOS_DATE_1980_01_01, 14);
49
+ header.writeUInt32LE(entry.crc32, 16);
50
+ header.writeUInt32LE(entry.byteLength, 20);
51
+ header.writeUInt32LE(entry.byteLength, 24);
52
+ header.writeUInt16LE(entry.name.byteLength, 28);
53
+ header.writeUInt16LE(0, 30);
54
+ header.writeUInt16LE(0, 32);
55
+ header.writeUInt16LE(0, 34);
56
+ header.writeUInt16LE(0, 36);
57
+ header.writeUInt32LE(REGULAR_FILE_MODE, 38);
58
+ header.writeUInt32LE(entry.localOffset, 42);
59
+ centralParts.push(header, entry.name);
60
+ centralSize += header.byteLength + entry.name.byteLength;
61
+ }
62
+ const end = Buffer.alloc(22);
63
+ end.writeUInt32LE(END_OF_CENTRAL_DIRECTORY, 0);
64
+ end.writeUInt16LE(0, 4);
65
+ end.writeUInt16LE(0, 6);
66
+ end.writeUInt16LE(files.length, 8);
67
+ end.writeUInt16LE(files.length, 10);
68
+ end.writeUInt32LE(centralSize, 12);
69
+ end.writeUInt32LE(localOffset, 16);
70
+ end.writeUInt16LE(0, 20);
71
+ return Buffer.concat([...localParts, ...centralParts, end]);
72
+ }
73
+ function crc32(bytes) {
74
+ let checksum = 0xffffffff;
75
+ for (const byte of bytes) {
76
+ const tableEntry = CRC32_TABLE[(checksum ^ byte) & 0xff];
77
+ if (tableEntry === undefined)
78
+ throw new Error('CRC32 table lookup failed.');
79
+ checksum = tableEntry ^ (checksum >>> 8);
80
+ }
81
+ return (checksum ^ 0xffffffff) >>> 0;
82
+ }
83
+ const CRC32_TABLE = new Uint32Array(256);
84
+ for (let index = 0; index < CRC32_TABLE.length; index++) {
85
+ let value = index;
86
+ for (let bit = 0; bit < 8; bit++)
87
+ value = (value & 1) === 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
88
+ CRC32_TABLE[index] = value >>> 0;
89
+ }
90
+ //# sourceMappingURL=host-package-zip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-package-zip.js","sourceRoot":"","sources":["../src/host-package-zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Drift-testable common bounds applied before and after every target adapter. */
2
+ export declare const HOST_PACKAGING_LIMITS: Readonly<{
3
+ summaryChars: 160;
4
+ proseChars: 4000;
5
+ keywordChars: 64;
6
+ keywords: 20;
7
+ scenarios: 32;
8
+ screenshots: 5;
9
+ identifierChars: 100;
10
+ pathChars: 240;
11
+ files: 128;
12
+ fileBytes: number;
13
+ totalFileBytes: number;
14
+ assetBytes: number;
15
+ totalAssetBytes: number;
16
+ imageDimension: 4096;
17
+ }>;
18
+ //# sourceMappingURL=host-packaging-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-packaging-limits.d.ts","sourceRoot":"","sources":["../src/host-packaging-limits.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAehC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /** Drift-testable common bounds applied before and after every target adapter. */
2
+ export const HOST_PACKAGING_LIMITS = Object.freeze({
3
+ summaryChars: 160,
4
+ proseChars: 4_000,
5
+ keywordChars: 64,
6
+ keywords: 20,
7
+ scenarios: 32,
8
+ screenshots: 5,
9
+ identifierChars: 100,
10
+ pathChars: 240,
11
+ files: 128,
12
+ fileBytes: 1024 * 1024,
13
+ totalFileBytes: 10 * 1024 * 1024,
14
+ assetBytes: 5 * 1024 * 1024,
15
+ totalAssetBytes: 20 * 1024 * 1024,
16
+ imageDimension: 4_096,
17
+ });
18
+ //# sourceMappingURL=host-packaging-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-packaging-limits.js","sourceRoot":"","sources":["../src/host-packaging-limits.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,YAAY,EAAE,GAAG;IACjB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,IAAI,GAAG,IAAI;IACtB,cAAc,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAChC,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC3B,eAAe,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACjC,cAAc,EAAE,KAAK;CACtB,CAAC,CAAC"}
@@ -0,0 +1,133 @@
1
+ import type { ProductSkillPackageInput } from './product-skill-types.js';
2
+ export interface HostPackageAssetReference {
3
+ readonly kind: 'asset';
4
+ readonly sourcePath: string;
5
+ readonly logicalId: string;
6
+ }
7
+ export interface HostDistributionImageV1 {
8
+ readonly source: HostPackageAssetReference;
9
+ readonly alt: string;
10
+ }
11
+ export interface HostDistributionReviewScenarioV1 {
12
+ readonly id: string;
13
+ readonly prompt: string;
14
+ readonly expected: string;
15
+ readonly shouldInvoke: boolean;
16
+ }
17
+ /** Host-neutral listing and review facts projected separately from the canonical App Package. */
18
+ export interface HostDistributionMetadataV1 {
19
+ readonly schemaVersion: 1;
20
+ readonly listing: {
21
+ readonly summary: string;
22
+ readonly description: string;
23
+ readonly keywords?: readonly string[];
24
+ };
25
+ readonly publisher: {
26
+ readonly name: string;
27
+ readonly websiteUrl: string;
28
+ };
29
+ readonly support: {
30
+ readonly documentationUrl: string;
31
+ readonly supportUrl: string;
32
+ };
33
+ readonly legal: {
34
+ readonly privacyPolicyUrl: string;
35
+ readonly termsOfServiceUrl?: string;
36
+ };
37
+ readonly assets: {
38
+ readonly icon: HostDistributionImageV1;
39
+ readonly logo?: HostDistributionImageV1;
40
+ readonly screenshots?: readonly HostDistributionImageV1[];
41
+ };
42
+ readonly review: {
43
+ readonly instructions: string;
44
+ readonly scenarios: readonly HostDistributionReviewScenarioV1[];
45
+ };
46
+ }
47
+ export interface HostPackageAssetInput {
48
+ readonly logicalId: string;
49
+ readonly sourcePath: string;
50
+ readonly content: Uint8Array;
51
+ }
52
+ export interface ResolvedHostPackageImage extends HostPackageAssetInput {
53
+ readonly alt: string;
54
+ readonly mimeType: 'image/jpeg' | 'image/png' | 'image/webp';
55
+ readonly width: number;
56
+ readonly height: number;
57
+ readonly sha256: string;
58
+ }
59
+ export interface HostPackageAdapterInput {
60
+ readonly appPackage: ProductSkillPackageInput;
61
+ readonly distribution: HostDistributionMetadataV1;
62
+ readonly mcpServer: {
63
+ readonly url: string;
64
+ readonly transport: 'streamable-http';
65
+ };
66
+ readonly assets: {
67
+ readonly icon: ResolvedHostPackageImage;
68
+ readonly logo?: ResolvedHostPackageImage;
69
+ readonly screenshots: readonly ResolvedHostPackageImage[];
70
+ };
71
+ }
72
+ export interface HostPackageRequest {
73
+ readonly appPackage: ProductSkillPackageInput;
74
+ readonly distribution: HostDistributionMetadataV1;
75
+ readonly mcpServer: {
76
+ readonly url: string;
77
+ readonly transport: 'streamable-http';
78
+ };
79
+ readonly assets: readonly HostPackageAssetInput[];
80
+ }
81
+ export type HostPackageFileRole = 'manifest' | 'mcp' | 'skill' | 'branding' | 'legal' | 'documentation' | 'test';
82
+ export interface HostPackageFile {
83
+ readonly role: HostPackageFileRole;
84
+ readonly path: string;
85
+ readonly content: string | Uint8Array;
86
+ }
87
+ export type HostPackageIssueSeverity = 'error' | 'warning';
88
+ export interface HostPackageTargetIssue {
89
+ readonly severity: HostPackageIssueSeverity;
90
+ readonly code: string;
91
+ readonly path: string;
92
+ readonly message: string;
93
+ }
94
+ export interface HostPackageIssue extends HostPackageTargetIssue {
95
+ readonly origin: 'framework' | 'target';
96
+ readonly target: string;
97
+ }
98
+ export interface HostPackageAdapter {
99
+ readonly target: string;
100
+ readonly version: string;
101
+ validate(input: HostPackageAdapterInput): readonly HostPackageTargetIssue[];
102
+ render(input: HostPackageAdapterInput): readonly HostPackageFile[];
103
+ }
104
+ export interface RenderedHostPackageFile {
105
+ readonly role: HostPackageFileRole;
106
+ readonly path: string;
107
+ readonly content: Uint8Array;
108
+ readonly sha256: string;
109
+ readonly byteLength: number;
110
+ }
111
+ export interface HostPackageArchive {
112
+ readonly format: 'zip';
113
+ readonly bytes: Uint8Array;
114
+ readonly sha256: string;
115
+ readonly byteLength: number;
116
+ }
117
+ interface HostPackageResultBase {
118
+ readonly target: string;
119
+ readonly adapterVersion: string;
120
+ readonly issues: readonly HostPackageIssue[];
121
+ }
122
+ export interface HostPackageSuccess extends HostPackageResultBase {
123
+ readonly ok: true;
124
+ readonly files: readonly RenderedHostPackageFile[];
125
+ readonly treeSha256: string;
126
+ readonly archive: HostPackageArchive;
127
+ }
128
+ export interface HostPackageFailure extends HostPackageResultBase {
129
+ readonly ok: false;
130
+ }
131
+ export type HostPackageResult = HostPackageSuccess | HostPackageFailure;
132
+ export {};
133
+ //# sourceMappingURL=host-packaging-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-packaging-types.d.ts","sourceRoot":"","sources":["../src/host-packaging-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=host-packaging-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-packaging-types.js","sourceRoot":"","sources":["../src/host-packaging-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { HostPackageAdapterInput, HostPackageFile, HostPackageIssue, HostPackageRequest, RenderedHostPackageFile } from './host-packaging-types.js';
2
+ export { HOST_PACKAGING_LIMITS } from './host-packaging-limits.js';
3
+ export interface ValidatedHostPackageInput {
4
+ readonly input?: HostPackageAdapterInput;
5
+ readonly issues: readonly HostPackageIssue[];
6
+ }
7
+ export declare function validateHostPackageRequest(request: HostPackageRequest, target: string): ValidatedHostPackageInput;
8
+ export declare function validateRenderedHostPackageFiles(files: readonly HostPackageFile[], target: string): {
9
+ readonly files?: readonly RenderedHostPackageFile[];
10
+ readonly issues: readonly HostPackageIssue[];
11
+ };
12
+ export declare function validAdapterIdentity(target: unknown, version: unknown): boolean;
13
+ export declare function frameworkIssue(target: string, code: string, path: string, message: string): HostPackageIssue;
14
+ //# sourceMappingURL=host-packaging-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-packaging-validation.d.ts","sourceRoot":"","sources":["../src/host-packaging-validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,uBAAuB,EACvB,eAAe,EAEf,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AAmBnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,MAAM,GACb,yBAAyB,CAoF3B;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,MAAM,EAAE,MAAM,GACb;IACD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C,CA8GA;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAO/E;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,gBAAgB,CAElB"}