allyhub 0.2.0-next.1 → 0.2.0-next.3

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 (568) hide show
  1. package/client.d.ts +17 -0
  2. package/dist/charge.js +2 -0
  3. package/dist/commands/add.js +5 -5
  4. package/dist/commands/check.js +1 -1
  5. package/dist/commands/cloud-tools.js +10 -10
  6. package/dist/commands/mcp.js +1 -1
  7. package/dist/commands/voice.js +2 -2
  8. package/dist/lent/model-three.d.ts +2 -0
  9. package/dist/lent/model.d.ts +2 -0
  10. package/dist/lent/scenery-host-layer.d.ts +2 -0
  11. package/dist/main.js +4 -4
  12. package/editor-app/view.html +4 -4
  13. package/editor-web/assets/chevron-left-BzSzrFR5.js +1 -0
  14. package/editor-web/assets/{chevron-up-lWCKw7jZ.js → chevron-up-C-TmFeHp.js} +1 -1
  15. package/editor-web/assets/dist-49NTUm82.js +8 -0
  16. package/editor-web/assets/{dist-BcITcjpx.js → dist-Cdp4CLOB.js} +4 -4
  17. package/editor-web/assets/{dist-CmlFikE4.js → dist-Cun2C_27.js} +1 -1
  18. package/editor-web/assets/{dist-Cf-s-WVX.js → dist-DJIfS4Mh.js} +4 -4
  19. package/editor-web/assets/{floating-ui.react-dom-CItxQagi.js → floating-ui.react-dom-iFhm-7Xc.js} +1 -1
  20. package/editor-web/assets/index-9-pcRXol.js +56 -0
  21. package/editor-web/assets/index-DRbemuuR.css +2 -0
  22. package/editor-web/assets/react-DAVp_9d7.js +61 -0
  23. package/editor-web/assets/{undo-2-C7Qog5D_.js → undo-2-57uMP9M_.js} +1 -1
  24. package/editor-web/index.html +4 -4
  25. package/node_modules/@allyhub-next/audio/dist/at-cut.d.ts +52 -0
  26. package/node_modules/@allyhub-next/audio/dist/decode.d.ts +33 -0
  27. package/node_modules/@allyhub-next/audio/dist/envelope.d.ts +37 -0
  28. package/node_modules/@allyhub-next/audio/dist/index.d.ts +17 -0
  29. package/node_modules/@allyhub-next/audio/dist/levels.d.ts +97 -0
  30. package/node_modules/@allyhub-next/audio/dist/master.d.ts +29 -0
  31. package/node_modules/@allyhub-next/audio/dist/music.d.ts +11 -0
  32. package/node_modules/@allyhub-next/audio/dist/node/decode.d.ts +39 -0
  33. package/node_modules/@allyhub-next/audio/dist/node/ebur128.d.ts +25 -0
  34. package/node_modules/@allyhub-next/audio/dist/node/ffmpeg.d.ts +31 -0
  35. package/node_modules/@allyhub-next/audio/dist/node/index.d.ts +8 -0
  36. package/node_modules/@allyhub-next/audio/dist/node/loudness.d.ts +18 -0
  37. package/node_modules/@allyhub-next/audio/dist/node/master.d.ts +42 -0
  38. package/node_modules/@allyhub-next/audio/dist/node/measure.d.ts +60 -0
  39. package/node_modules/@allyhub-next/audio/dist/node/mix.d.ts +31 -0
  40. package/node_modules/@allyhub-next/audio/dist/plan.d.ts +143 -0
  41. package/node_modules/@allyhub-next/audio/dist/recorded.d.ts +26 -0
  42. package/node_modules/@allyhub-next/audio/dist/recording/bandwidth.d.ts +47 -0
  43. package/node_modules/@allyhub-next/audio/dist/recording/chain.d.ts +89 -0
  44. package/node_modules/@allyhub-next/audio/dist/recording/dynamics.d.ts +64 -0
  45. package/node_modules/@allyhub-next/audio/dist/recording/fft.d.ts +26 -0
  46. package/node_modules/@allyhub-next/audio/dist/recording/filters.d.ts +42 -0
  47. package/node_modules/@allyhub-next/audio/dist/recording/fit.d.ts +56 -0
  48. package/node_modules/@allyhub-next/audio/dist/recording/index.d.ts +10 -0
  49. package/node_modules/@allyhub-next/audio/dist/recording/loudness.d.ts +12 -0
  50. package/node_modules/@allyhub-next/audio/dist/recording/measure.d.ts +67 -0
  51. package/node_modules/@allyhub-next/audio/dist/recording/mic.d.ts +32 -0
  52. package/node_modules/@allyhub-next/audio/dist/recording/noise.d.ts +27 -0
  53. package/node_modules/@allyhub-next/audio/dist/recording/presets.d.ts +64 -0
  54. package/node_modules/@allyhub-next/audio/dist/recording/room.d.ts +78 -0
  55. package/node_modules/@allyhub-next/audio/dist/recording/setup.d.ts +111 -0
  56. package/node_modules/@allyhub-next/audio/dist/recording/vec.d.ts +3 -0
  57. package/node_modules/@allyhub-next/audio/dist/render.d.ts +26 -0
  58. package/node_modules/@allyhub-next/audio/dist/sfx.d.ts +10 -0
  59. package/node_modules/@allyhub-next/audio/dist/shape.d.ts +118 -0
  60. package/node_modules/@allyhub-next/audio/dist/voice.d.ts +45 -0
  61. package/node_modules/@allyhub-next/audio/package.json +1 -1
  62. package/node_modules/@allyhub-next/browser/dist/browser.d.ts +24 -0
  63. package/node_modules/@allyhub-next/browser/dist/capture.d.ts +61 -0
  64. package/node_modules/@allyhub-next/browser/dist/cdp.d.ts +51 -0
  65. package/node_modules/@allyhub-next/browser/dist/flags.d.ts +13 -0
  66. package/node_modules/@allyhub-next/browser/dist/frames.d.ts +35 -0
  67. package/node_modules/@allyhub-next/browser/dist/html.d.ts +19 -0
  68. package/node_modules/@allyhub-next/browser/dist/index.d.ts +10 -0
  69. package/node_modules/@allyhub-next/browser/dist/launch.d.ts +35 -0
  70. package/node_modules/@allyhub-next/browser/dist/page.d.ts +67 -0
  71. package/node_modules/@allyhub-next/browser/dist/server.d.ts +26 -0
  72. package/node_modules/@allyhub-next/browser/package.json +1 -1
  73. package/node_modules/@allyhub-next/build/dist/code.d.ts +26 -0
  74. package/node_modules/@allyhub-next/build/dist/content.d.ts +35 -0
  75. package/node_modules/@allyhub-next/build/dist/data.d.ts +11 -0
  76. package/node_modules/@allyhub-next/build/dist/files.d.ts +2 -0
  77. package/node_modules/@allyhub-next/build/dist/fonts.d.ts +26 -0
  78. package/node_modules/@allyhub-next/build/dist/index.d.ts +20 -0
  79. package/node_modules/@allyhub-next/build/dist/matrix.d.ts +18 -0
  80. package/node_modules/@allyhub-next/build/dist/media.d.ts +10 -0
  81. package/node_modules/@allyhub-next/build/dist/messages.d.ts +48 -0
  82. package/node_modules/@allyhub-next/build/dist/meta-worker.d.ts +33 -0
  83. package/node_modules/@allyhub-next/build/dist/meta.d.ts +24 -0
  84. package/node_modules/@allyhub-next/build/dist/model-info.d.ts +6 -0
  85. package/node_modules/@allyhub-next/build/dist/move-refs.d.ts +16 -0
  86. package/node_modules/@allyhub-next/build/dist/places.d.ts +23 -0
  87. package/node_modules/@allyhub-next/build/dist/plugin.d.ts +31 -0
  88. package/node_modules/@allyhub-next/build/dist/prepare.d.ts +81 -0
  89. package/node_modules/@allyhub-next/build/dist/prepare.js +2 -2
  90. package/node_modules/@allyhub-next/build/dist/scan.d.ts +48 -0
  91. package/node_modules/@allyhub-next/build/dist/scan.js +1 -1
  92. package/node_modules/@allyhub-next/build/dist/takes.d.ts +33 -0
  93. package/node_modules/@allyhub-next/build/dist/types.d.ts +11 -0
  94. package/node_modules/@allyhub-next/build/dist/vite.d.ts +105 -0
  95. package/node_modules/@allyhub-next/build/package.json +1 -1
  96. package/node_modules/@allyhub-next/check/dist/cache.d.ts +46 -0
  97. package/node_modules/@allyhub-next/check/dist/check.d.ts +142 -0
  98. package/node_modules/@allyhub-next/check/dist/generated.d.ts +22 -0
  99. package/node_modules/@allyhub-next/check/dist/index.d.ts +7 -0
  100. package/node_modules/@allyhub-next/check/dist/plans.d.ts +111 -0
  101. package/node_modules/@allyhub-next/check/dist/result.d.ts +12 -0
  102. package/node_modules/@allyhub-next/check/dist/scenery.d.ts +23 -0
  103. package/node_modules/@allyhub-next/check/package.json +1 -1
  104. package/node_modules/@allyhub-next/cloud/dist/call.js +2 -2
  105. package/node_modules/@allyhub-next/cloud/dist/index.js +1 -1
  106. package/node_modules/@allyhub-next/cloud/dist/voice.js +1 -1
  107. package/node_modules/@allyhub-next/cloud/package.json +1 -1
  108. package/node_modules/@allyhub-next/components/package.json +1 -1
  109. package/node_modules/@allyhub-next/dev-server/dist/background.d.ts +50 -0
  110. package/node_modules/@allyhub-next/dev-server/dist/card.d.ts +26 -0
  111. package/node_modules/@allyhub-next/dev-server/dist/exports.d.ts +18 -0
  112. package/node_modules/@allyhub-next/dev-server/dist/index.d.ts +11 -0
  113. package/node_modules/@allyhub-next/dev-server/dist/live.d.ts +68 -0
  114. package/node_modules/@allyhub-next/dev-server/dist/mime.d.ts +2 -0
  115. package/node_modules/@allyhub-next/dev-server/dist/paths.d.ts +27 -0
  116. package/node_modules/@allyhub-next/dev-server/dist/project.d.ts +150 -0
  117. package/node_modules/@allyhub-next/dev-server/dist/server.d.ts +47 -0
  118. package/node_modules/@allyhub-next/dev-server/dist/server.js +2 -2
  119. package/node_modules/@allyhub-next/dev-server/dist/sound.d.ts +21 -0
  120. package/node_modules/@allyhub-next/dev-server/dist/stage.d.ts +80 -0
  121. package/node_modules/@allyhub-next/dev-server/dist/tools.d.ts +22 -0
  122. package/node_modules/@allyhub-next/dev-server/dist/tools.js +1 -1
  123. package/node_modules/@allyhub-next/dev-server/dist/validate.d.ts +6 -0
  124. package/node_modules/@allyhub-next/dev-server/dist/watcher.d.ts +47 -0
  125. package/node_modules/@allyhub-next/dev-server/dist/writer.d.ts +51 -0
  126. package/node_modules/@allyhub-next/dev-server/package.json +1 -1
  127. package/node_modules/@allyhub-next/doc/dist/html.d.ts +20 -0
  128. package/node_modules/@allyhub-next/doc/dist/index.d.ts +8 -0
  129. package/node_modules/@allyhub-next/doc/dist/markdown.d.ts +6 -0
  130. package/node_modules/@allyhub-next/doc/dist/model.d.ts +145 -0
  131. package/node_modules/@allyhub-next/doc/dist/parse.d.ts +10 -0
  132. package/node_modules/@allyhub-next/doc/dist/patch.d.ts +8 -0
  133. package/node_modules/@allyhub-next/doc/dist/title.d.ts +23 -0
  134. package/node_modules/@allyhub-next/doc/dist/write.d.ts +10 -0
  135. package/node_modules/@allyhub-next/doc/package.json +1 -1
  136. package/node_modules/@allyhub-next/export/dist/batch.d.ts +70 -0
  137. package/node_modules/@allyhub-next/export/dist/export.d.ts +107 -0
  138. package/node_modules/@allyhub-next/export/dist/index.d.ts +4 -0
  139. package/node_modules/@allyhub-next/export/dist/names.d.ts +31 -0
  140. package/node_modules/@allyhub-next/export/package.json +1 -1
  141. package/node_modules/@allyhub-next/formats/dist/data/comments.d.ts +94 -0
  142. package/node_modules/@allyhub-next/formats/dist/data/config.d.ts +10 -0
  143. package/node_modules/@allyhub-next/formats/dist/data/edits.d.ts +28 -0
  144. package/node_modules/@allyhub-next/formats/dist/data/elements.d.ts +6 -0
  145. package/node_modules/@allyhub-next/formats/dist/data/faces.d.ts +38 -0
  146. package/node_modules/@allyhub-next/formats/dist/data/file.d.ts +11 -0
  147. package/node_modules/@allyhub-next/formats/dist/data/gen.d.ts +31 -0
  148. package/node_modules/@allyhub-next/formats/dist/data/messages.d.ts +34 -0
  149. package/node_modules/@allyhub-next/formats/dist/data/reference.d.ts +676 -0
  150. package/node_modules/@allyhub-next/formats/dist/data/script.d.ts +37 -0
  151. package/node_modules/@allyhub-next/formats/dist/data/sheet.d.ts +214 -0
  152. package/node_modules/@allyhub-next/formats/dist/data/words.d.ts +25 -0
  153. package/node_modules/@allyhub-next/formats/dist/index.d.ts +16 -0
  154. package/node_modules/@allyhub-next/formats/dist/items.d.ts +94 -0
  155. package/node_modules/@allyhub-next/formats/dist/layout.d.ts +54 -0
  156. package/node_modules/@allyhub-next/formats/dist/layout.js +1 -1
  157. package/node_modules/@allyhub-next/formats/dist/schemas.d.ts +301 -0
  158. package/node_modules/@allyhub-next/formats/package.json +1 -1
  159. package/node_modules/@allyhub-next/measure/dist/compare.d.ts +195 -0
  160. package/node_modules/@allyhub-next/measure/dist/contrast.d.ts +14 -0
  161. package/node_modules/@allyhub-next/measure/dist/cut-sheet.d.ts +90 -0
  162. package/node_modules/@allyhub-next/measure/dist/cuts.d.ts +108 -0
  163. package/node_modules/@allyhub-next/measure/dist/facts.d.ts +60 -0
  164. package/node_modules/@allyhub-next/measure/dist/fidelity.d.ts +40 -0
  165. package/node_modules/@allyhub-next/measure/dist/flat.d.ts +42 -0
  166. package/node_modules/@allyhub-next/measure/dist/index.d.ts +25 -0
  167. package/node_modules/@allyhub-next/measure/dist/loop.d.ts +22 -0
  168. package/node_modules/@allyhub-next/measure/dist/overlay.d.ts +44 -0
  169. package/node_modules/@allyhub-next/measure/dist/recording-report.d.ts +66 -0
  170. package/node_modules/@allyhub-next/measure/dist/reference/compare.d.ts +118 -0
  171. package/node_modules/@allyhub-next/measure/dist/reference/folder.d.ts +77 -0
  172. package/node_modules/@allyhub-next/measure/dist/reference/interpret.d.ts +39 -0
  173. package/node_modules/@allyhub-next/measure/dist/reference/piece.d.ts +53 -0
  174. package/node_modules/@allyhub-next/measure/dist/reference/sections.d.ts +53 -0
  175. package/node_modules/@allyhub-next/measure/dist/reference/served.d.ts +8 -0
  176. package/node_modules/@allyhub-next/measure/dist/reference/sets.d.ts +84 -0
  177. package/node_modules/@allyhub-next/measure/dist/reference/text.d.ts +27 -0
  178. package/node_modules/@allyhub-next/measure/dist/reference/video.d.ts +53 -0
  179. package/node_modules/@allyhub-next/measure/dist/seams.d.ts +46 -0
  180. package/node_modules/@allyhub-next/measure/dist/sound-measures.d.ts +74 -0
  181. package/node_modules/@allyhub-next/measure/dist/sound-report.d.ts +156 -0
  182. package/node_modules/@allyhub-next/measure/dist/still.d.ts +58 -0
  183. package/node_modules/@allyhub-next/measure/dist/version-voice.d.ts +12 -0
  184. package/node_modules/@allyhub-next/measure/package.json +1 -1
  185. package/node_modules/@allyhub-next/media/dist/asr/hear.d.ts +41 -0
  186. package/node_modules/@allyhub-next/media/dist/asr/languages.d.ts +9 -0
  187. package/node_modules/@allyhub-next/media/dist/asr/parakeet.d.ts +57 -0
  188. package/node_modules/@allyhub-next/media/dist/asr/protocol.d.ts +20 -0
  189. package/node_modules/@allyhub-next/media/dist/asr/transcribe.d.ts +36 -0
  190. package/node_modules/@allyhub-next/media/dist/asr/windows.d.ts +34 -0
  191. package/node_modules/@allyhub-next/media/dist/asr/words.d.ts +7 -0
  192. package/node_modules/@allyhub-next/media/dist/asr/worker.d.ts +2 -0
  193. package/node_modules/@allyhub-next/media/dist/audio.d.ts +14 -0
  194. package/node_modules/@allyhub-next/media/dist/beats.d.ts +100 -0
  195. package/node_modules/@allyhub-next/media/dist/cache.d.ts +26 -0
  196. package/node_modules/@allyhub-next/media/dist/errors.d.ts +34 -0
  197. package/node_modules/@allyhub-next/media/dist/fetch.d.ts +11 -0
  198. package/node_modules/@allyhub-next/media/dist/grid.d.ts +101 -0
  199. package/node_modules/@allyhub-next/media/dist/index.d.ts +37 -0
  200. package/node_modules/@allyhub-next/media/dist/local.d.ts +36 -0
  201. package/node_modules/@allyhub-next/media/dist/ocr/lines.d.ts +36 -0
  202. package/node_modules/@allyhub-next/media/dist/ocr/tesseract.d.ts +56 -0
  203. package/node_modules/@allyhub-next/media/dist/ocr/text.d.ts +36 -0
  204. package/node_modules/@allyhub-next/media/dist/ocr/worker.d.ts +2 -0
  205. package/node_modules/@allyhub-next/media/dist/picture.d.ts +130 -0
  206. package/node_modules/@allyhub-next/media/dist/probe.d.ts +52 -0
  207. package/node_modules/@allyhub-next/media/dist/progress.d.ts +16 -0
  208. package/node_modules/@allyhub-next/media/dist/run.d.ts +20 -0
  209. package/node_modules/@allyhub-next/media/dist/sheet.d.ts +65 -0
  210. package/node_modules/@allyhub-next/media/dist/shots.d.ts +110 -0
  211. package/node_modules/@allyhub-next/media/dist/sync.d.ts +156 -0
  212. package/node_modules/@allyhub-next/media/dist/tools.d.ts +25 -0
  213. package/node_modules/@allyhub-next/media/dist/video.d.ts +35 -0
  214. package/node_modules/@allyhub-next/media/dist/vision/cache.d.ts +42 -0
  215. package/node_modules/@allyhub-next/media/dist/vision/common.d.ts +32 -0
  216. package/node_modules/@allyhub-next/media/dist/vision/faces.d.ts +18 -0
  217. package/node_modules/@allyhub-next/media/dist/vision/index-media.d.ts +48 -0
  218. package/node_modules/@allyhub-next/media/dist/vision/matte.d.ts +16 -0
  219. package/node_modules/@allyhub-next/media/dist/vision/mattes.d.ts +109 -0
  220. package/node_modules/@allyhub-next/media/dist/vision/models.d.ts +16 -0
  221. package/node_modules/@allyhub-next/media/dist/vision/probe.d.ts +39 -0
  222. package/node_modules/@allyhub-next/media/dist/vision/protocol.d.ts +51 -0
  223. package/node_modules/@allyhub-next/media/dist/vision/run.d.ts +12 -0
  224. package/node_modules/@allyhub-next/media/dist/vision/runtime.d.ts +16 -0
  225. package/node_modules/@allyhub-next/media/dist/vision/status.d.ts +24 -0
  226. package/node_modules/@allyhub-next/media/dist/vision/track.d.ts +54 -0
  227. package/node_modules/@allyhub-next/media/dist/vision/types.d.ts +2 -0
  228. package/node_modules/@allyhub-next/media/dist/vision/worker.d.ts +2 -0
  229. package/node_modules/@allyhub-next/media/dist/vision/yunet.d.ts +35 -0
  230. package/node_modules/@allyhub-next/media/dist/voice-shape.d.ts +51 -0
  231. package/node_modules/@allyhub-next/media/dist/worker-process.d.ts +8 -0
  232. package/node_modules/@allyhub-next/media/package.json +1 -1
  233. package/node_modules/@allyhub-next/model/dist/apply.d.ts +15 -0
  234. package/node_modules/@allyhub-next/model/dist/authoring.d.ts +48 -0
  235. package/node_modules/@allyhub-next/model/dist/bevel-attributes.d.ts +19 -0
  236. package/node_modules/@allyhub-next/model/dist/bevel-collapse.d.ts +12 -0
  237. package/node_modules/@allyhub-next/model/dist/bevel-corner-plan.d.ts +24 -0
  238. package/node_modules/@allyhub-next/model/dist/bevel-deform.d.ts +5 -0
  239. package/node_modules/@allyhub-next/model/dist/bevel-fans.d.ts +12 -0
  240. package/node_modules/@allyhub-next/model/dist/bevel-junction.d.ts +16 -0
  241. package/node_modules/@allyhub-next/model/dist/bevel-marks.d.ts +14 -0
  242. package/node_modules/@allyhub-next/model/dist/bevel-metric.d.ts +4 -0
  243. package/node_modules/@allyhub-next/model/dist/bevel-mixed.d.ts +12 -0
  244. package/node_modules/@allyhub-next/model/dist/bevel-offsets.d.ts +22 -0
  245. package/node_modules/@allyhub-next/model/dist/bevel-patch.d.ts +45 -0
  246. package/node_modules/@allyhub-next/model/dist/bevel-profile.d.ts +13 -0
  247. package/node_modules/@allyhub-next/model/dist/bevel-projection.d.ts +10 -0
  248. package/node_modules/@allyhub-next/model/dist/bevel-reflex.d.ts +10 -0
  249. package/node_modules/@allyhub-next/model/dist/bevel-square-out.d.ts +18 -0
  250. package/node_modules/@allyhub-next/model/dist/bevel-strips.d.ts +8 -0
  251. package/node_modules/@allyhub-next/model/dist/bevel-topology.d.ts +79 -0
  252. package/node_modules/@allyhub-next/model/dist/bevel.d.ts +23 -0
  253. package/node_modules/@allyhub-next/model/dist/bmesh-bevel.d.ts +40 -0
  254. package/node_modules/@allyhub-next/model/dist/bmesh-bridge.d.ts +21 -0
  255. package/node_modules/@allyhub-next/model/dist/bmesh-cycles.d.ts +52 -0
  256. package/node_modules/@allyhub-next/model/dist/bmesh-data.d.ts +227 -0
  257. package/node_modules/@allyhub-next/model/dist/bmesh-dissolve.d.ts +30 -0
  258. package/node_modules/@allyhub-next/model/dist/bmesh-edit.d.ts +54 -0
  259. package/node_modules/@allyhub-next/model/dist/bmesh-inset.d.ts +39 -0
  260. package/node_modules/@allyhub-next/model/dist/bmesh-primitives.d.ts +41 -0
  261. package/node_modules/@allyhub-next/model/dist/bmesh-smooth.d.ts +22 -0
  262. package/node_modules/@allyhub-next/model/dist/bmesh-spin.d.ts +25 -0
  263. package/node_modules/@allyhub-next/model/dist/bmesh-subdivide.d.ts +89 -0
  264. package/node_modules/@allyhub-next/model/dist/bmesh.d.ts +72 -0
  265. package/node_modules/@allyhub-next/model/dist/boolean.d.ts +20 -0
  266. package/node_modules/@allyhub-next/model/dist/build-cache.d.ts +42 -0
  267. package/node_modules/@allyhub-next/model/dist/build-job.d.ts +30 -0
  268. package/node_modules/@allyhub-next/model/dist/build-worker.d.ts +2 -0
  269. package/node_modules/@allyhub-next/model/dist/build.d.ts +57 -0
  270. package/node_modules/@allyhub-next/model/dist/cancel.d.ts +8 -0
  271. package/node_modules/@allyhub-next/model/dist/capabilities.d.ts +22 -0
  272. package/node_modules/@allyhub-next/model/dist/curve-eval.d.ts +66 -0
  273. package/node_modules/@allyhub-next/model/dist/curve-math.d.ts +21 -0
  274. package/node_modules/@allyhub-next/model/dist/curve-mesh.d.ts +30 -0
  275. package/node_modules/@allyhub-next/model/dist/curve.d.ts +149 -0
  276. package/node_modules/@allyhub-next/model/dist/data.d.ts +549 -0
  277. package/node_modules/@allyhub-next/model/dist/evaluate.d.ts +141 -0
  278. package/node_modules/@allyhub-next/model/dist/evaluation-cache.d.ts +55 -0
  279. package/node_modules/@allyhub-next/model/dist/evaluation-guard.d.ts +11 -0
  280. package/node_modules/@allyhub-next/model/dist/evaluation-plan.d.ts +38 -0
  281. package/node_modules/@allyhub-next/model/dist/export.d.ts +12 -0
  282. package/node_modules/@allyhub-next/model/dist/field.d.ts +59 -0
  283. package/node_modules/@allyhub-next/model/dist/generated/opensubdiv.d.mts +25 -0
  284. package/node_modules/@allyhub-next/model/dist/geometry.d.ts +75 -0
  285. package/node_modules/@allyhub-next/model/dist/image.d.ts +77 -0
  286. package/node_modules/@allyhub-next/model/dist/index.d.ts +19 -0
  287. package/node_modules/@allyhub-next/model/dist/instances.d.ts +18 -0
  288. package/node_modules/@allyhub-next/model/dist/material-eval.d.ts +12 -0
  289. package/node_modules/@allyhub-next/model/dist/material-nodes.d.ts +279 -0
  290. package/node_modules/@allyhub-next/model/dist/mesh-attributes.d.ts +27 -0
  291. package/node_modules/@allyhub-next/model/dist/mesh-queries.d.ts +34 -0
  292. package/node_modules/@allyhub-next/model/dist/names.d.ts +9 -0
  293. package/node_modules/@allyhub-next/model/dist/patterns.d.ts +21 -0
  294. package/node_modules/@allyhub-next/model/dist/png.d.ts +12 -0
  295. package/node_modules/@allyhub-next/model/dist/polygon-triangulation.d.ts +4 -0
  296. package/node_modules/@allyhub-next/model/dist/program-location.d.ts +7 -0
  297. package/node_modules/@allyhub-next/model/dist/report.d.ts +70 -0
  298. package/node_modules/@allyhub-next/model/dist/screw.d.ts +38 -0
  299. package/node_modules/@allyhub-next/model/dist/solidify.d.ts +11 -0
  300. package/node_modules/@allyhub-next/model/dist/subdivision.d.ts +21 -0
  301. package/node_modules/@allyhub-next/model/dist/three.d.ts +43 -0
  302. package/node_modules/@allyhub-next/model/dist/uv-project.d.ts +62 -0
  303. package/node_modules/@allyhub-next/model/dist/uv-unwrap.d.ts +40 -0
  304. package/node_modules/@allyhub-next/model/dist/uv.d.ts +16 -0
  305. package/node_modules/@allyhub-next/model/dist/vertex-groups.d.ts +27 -0
  306. package/node_modules/@allyhub-next/model/dist/weighted-normal.d.ts +28 -0
  307. package/node_modules/@allyhub-next/model/package.json +1 -1
  308. package/node_modules/@allyhub-next/project/dist/console.d.ts +34 -0
  309. package/node_modules/@allyhub-next/project/dist/digest.d.ts +11 -0
  310. package/node_modules/@allyhub-next/project/dist/index.d.ts +11 -0
  311. package/node_modules/@allyhub-next/project/dist/ledger.d.ts +17 -0
  312. package/node_modules/@allyhub-next/project/dist/media-index.d.ts +27 -0
  313. package/node_modules/@allyhub-next/project/dist/page.d.ts +124 -0
  314. package/node_modules/@allyhub-next/project/dist/says.d.ts +15 -0
  315. package/node_modules/@allyhub-next/project/dist/scenery.d.ts +35 -0
  316. package/node_modules/@allyhub-next/project/dist/session.d.ts +37 -0
  317. package/node_modules/@allyhub-next/project/dist/stretch.d.ts +38 -0
  318. package/node_modules/@allyhub-next/project/dist/version.d.ts +114 -0
  319. package/node_modules/@allyhub-next/project/package.json +1 -1
  320. package/node_modules/@allyhub-next/protocol/dist/app.d.ts +98 -0
  321. package/node_modules/@allyhub-next/protocol/dist/auth.d.ts +116 -0
  322. package/node_modules/@allyhub-next/protocol/dist/cli.d.ts +59 -0
  323. package/node_modules/@allyhub-next/protocol/dist/cloud.d.ts +316 -0
  324. package/node_modules/@allyhub-next/protocol/dist/cloud.js +1 -1
  325. package/node_modules/@allyhub-next/protocol/dist/editor.d.ts +405 -0
  326. package/node_modules/@allyhub-next/protocol/dist/files.d.ts +101 -0
  327. package/node_modules/@allyhub-next/protocol/dist/index.d.ts +12 -0
  328. package/node_modules/@allyhub-next/protocol/dist/jsonrpc.d.ts +83 -0
  329. package/node_modules/@allyhub-next/protocol/dist/registry.d.ts +167 -0
  330. package/node_modules/@allyhub-next/protocol/dist/registry.js +1 -1
  331. package/node_modules/@allyhub-next/protocol/dist/runtimes.d.ts +93 -0
  332. package/node_modules/@allyhub-next/protocol/dist/teams.d.ts +67 -0
  333. package/node_modules/@allyhub-next/protocol/dist/tools.d.ts +345 -0
  334. package/node_modules/@allyhub-next/protocol/package.json +1 -1
  335. package/node_modules/@allyhub-next/registry/dist/index.js +1 -1
  336. package/node_modules/@allyhub-next/registry/dist/registry.js +1 -1
  337. package/node_modules/@allyhub-next/registry/package.json +1 -1
  338. package/node_modules/@allyhub-next/render/dist/cap.d.ts +41 -0
  339. package/node_modules/@allyhub-next/render/dist/capture.d.ts +78 -0
  340. package/node_modules/@allyhub-next/render/dist/clip.d.ts +27 -0
  341. package/node_modules/@allyhub-next/render/dist/composite.d.ts +106 -0
  342. package/node_modules/@allyhub-next/render/dist/delivery.d.ts +18 -0
  343. package/node_modules/@allyhub-next/render/dist/doc/fonts.d.ts +3 -0
  344. package/node_modules/@allyhub-next/render/dist/doc/index.d.ts +3 -0
  345. package/node_modules/@allyhub-next/render/dist/doc/print.d.ts +25 -0
  346. package/node_modules/@allyhub-next/render/dist/encode.d.ts +111 -0
  347. package/node_modules/@allyhub-next/render/dist/errors.d.ts +15 -0
  348. package/node_modules/@allyhub-next/render/dist/exports.d.ts +51 -0
  349. package/node_modules/@allyhub-next/render/dist/ffmpeg.d.ts +75 -0
  350. package/node_modules/@allyhub-next/render/dist/footage.d.ts +169 -0
  351. package/node_modules/@allyhub-next/render/dist/image.d.ts +16 -0
  352. package/node_modules/@allyhub-next/render/dist/index.d.ts +27 -0
  353. package/node_modules/@allyhub-next/render/dist/junction.d.ts +70 -0
  354. package/node_modules/@allyhub-next/render/dist/look.d.ts +21 -0
  355. package/node_modules/@allyhub-next/render/dist/page.d.ts +176 -0
  356. package/node_modules/@allyhub-next/render/dist/parts.d.ts +140 -0
  357. package/node_modules/@allyhub-next/render/dist/png.d.ts +37 -0
  358. package/node_modules/@allyhub-next/render/dist/pool.d.ts +54 -0
  359. package/node_modules/@allyhub-next/render/dist/post-probe.d.ts +27 -0
  360. package/node_modules/@allyhub-next/render/dist/post.d.ts +27 -0
  361. package/node_modules/@allyhub-next/render/dist/render.d.ts +149 -0
  362. package/node_modules/@allyhub-next/render/dist/segments.d.ts +40 -0
  363. package/node_modules/@allyhub-next/render/dist/served.d.ts +27 -0
  364. package/node_modules/@allyhub-next/render/dist/sound.d.ts +24 -0
  365. package/node_modules/@allyhub-next/render/dist/stills.d.ts +41 -0
  366. package/node_modules/@allyhub-next/render/dist/tools.d.ts +25 -0
  367. package/node_modules/@allyhub-next/render/dist/webp.d.ts +17 -0
  368. package/node_modules/@allyhub-next/render/package.json +1 -1
  369. package/node_modules/@allyhub-next/runtime/dist/bridge.d.ts +201 -0
  370. package/node_modules/@allyhub-next/runtime/dist/captions.d.ts +24 -0
  371. package/node_modules/@allyhub-next/runtime/dist/clock.d.ts +32 -0
  372. package/node_modules/@allyhub-next/runtime/dist/compose.d.ts +149 -0
  373. package/node_modules/@allyhub-next/runtime/dist/console.d.ts +21 -0
  374. package/node_modules/@allyhub-next/runtime/dist/contrast.d.ts +13 -0
  375. package/node_modules/@allyhub-next/runtime/dist/embed.d.ts +50 -0
  376. package/node_modules/@allyhub-next/runtime/dist/env.d.ts +101 -0
  377. package/node_modules/@allyhub-next/runtime/dist/errors.d.ts +21 -0
  378. package/node_modules/@allyhub-next/runtime/dist/facade.d.ts +42 -0
  379. package/node_modules/@allyhub-next/runtime/dist/fonts.d.ts +110 -0
  380. package/node_modules/@allyhub-next/runtime/dist/footage.d.ts +54 -0
  381. package/node_modules/@allyhub-next/runtime/dist/frame.d.ts +61 -0
  382. package/node_modules/@allyhub-next/runtime/dist/guards.d.ts +32 -0
  383. package/node_modules/@allyhub-next/runtime/dist/host.d.ts +22 -0
  384. package/node_modules/@allyhub-next/runtime/dist/index.d.ts +12 -0
  385. package/node_modules/@allyhub-next/runtime/dist/inspect.d.ts +112 -0
  386. package/node_modules/@allyhub-next/runtime/dist/measure.d.ts +40 -0
  387. package/node_modules/@allyhub-next/runtime/dist/mix-plan.d.ts +42 -0
  388. package/node_modules/@allyhub-next/runtime/dist/music.d.ts +29 -0
  389. package/node_modules/@allyhub-next/runtime/dist/output.d.ts +5 -0
  390. package/node_modules/@allyhub-next/runtime/dist/paged.d.ts +16 -0
  391. package/node_modules/@allyhub-next/runtime/dist/pictures.d.ts +39 -0
  392. package/node_modules/@allyhub-next/runtime/dist/piece.d.ts +38 -0
  393. package/node_modules/@allyhub-next/runtime/dist/player/clips.d.ts +41 -0
  394. package/node_modules/@allyhub-next/runtime/dist/player/cutout.d.ts +57 -0
  395. package/node_modules/@allyhub-next/runtime/dist/player/player.d.ts +78 -0
  396. package/node_modules/@allyhub-next/runtime/dist/reads.d.ts +130 -0
  397. package/node_modules/@allyhub-next/runtime/dist/sound.d.ts +22 -0
  398. package/node_modules/@allyhub-next/runtime/dist/speech.d.ts +107 -0
  399. package/node_modules/@allyhub-next/runtime/dist/stage.d.ts +34 -0
  400. package/node_modules/@allyhub-next/runtime/dist/styles.d.ts +35 -0
  401. package/node_modules/@allyhub-next/runtime/dist/takes.d.ts +72 -0
  402. package/node_modules/@allyhub-next/runtime/dist/titles.d.ts +10 -0
  403. package/node_modules/@allyhub-next/runtime/dist/transitions.d.ts +26 -0
  404. package/node_modules/@allyhub-next/runtime/package.json +1 -1
  405. package/node_modules/@allyhub-next/runtimes/dist/bundled.d.ts +10 -0
  406. package/node_modules/@allyhub-next/runtimes/dist/download.d.ts +15 -0
  407. package/node_modules/@allyhub-next/runtimes/dist/errors.d.ts +16 -0
  408. package/node_modules/@allyhub-next/runtimes/dist/home.d.ts +2 -0
  409. package/node_modules/@allyhub-next/runtimes/dist/index.d.ts +9 -0
  410. package/node_modules/@allyhub-next/runtimes/dist/lock.d.ts +6 -0
  411. package/node_modules/@allyhub-next/runtimes/dist/manifest.d.ts +3 -0
  412. package/node_modules/@allyhub-next/runtimes/dist/runtimes.d.ts +63 -0
  413. package/node_modules/@allyhub-next/runtimes/dist/unpack.d.ts +7 -0
  414. package/node_modules/@allyhub-next/runtimes/manifest.json +88 -14
  415. package/node_modules/@allyhub-next/runtimes/package.json +1 -1
  416. package/node_modules/@allyhub-next/scenery/dist/aim.d.ts +55 -0
  417. package/node_modules/@allyhub-next/scenery/dist/bake.d.ts +203 -0
  418. package/node_modules/@allyhub-next/scenery/dist/camera.d.ts +150 -0
  419. package/node_modules/@allyhub-next/scenery/dist/curve.d.ts +40 -0
  420. package/node_modules/@allyhub-next/scenery/dist/define.d.ts +164 -0
  421. package/node_modules/@allyhub-next/scenery/dist/fit.d.ts +64 -0
  422. package/node_modules/@allyhub-next/scenery/dist/glass.d.ts +34 -0
  423. package/node_modules/@allyhub-next/scenery/dist/handheld.d.ts +184 -0
  424. package/node_modules/@allyhub-next/scenery/dist/hull.d.ts +23 -0
  425. package/node_modules/@allyhub-next/scenery/dist/index.d.ts +22 -0
  426. package/node_modules/@allyhub-next/scenery/dist/lens.d.ts +48 -0
  427. package/node_modules/@allyhub-next/scenery/dist/moire.d.ts +136 -0
  428. package/node_modules/@allyhub-next/scenery/dist/motion.d.ts +48 -0
  429. package/node_modules/@allyhub-next/scenery/dist/move.d.ts +260 -0
  430. package/node_modules/@allyhub-next/scenery/dist/noise.d.ts +41 -0
  431. package/node_modules/@allyhub-next/scenery/dist/phone.d.ts +34 -0
  432. package/node_modules/@allyhub-next/scenery/dist/report.d.ts +677 -0
  433. package/node_modules/@allyhub-next/scenery/dist/screen-focus.d.ts +55 -0
  434. package/node_modules/@allyhub-next/scenery/dist/screen.d.ts +71 -0
  435. package/node_modules/@allyhub-next/scenery/dist/solve.d.ts +82 -0
  436. package/node_modules/@allyhub-next/scenery/dist/timing.d.ts +26 -0
  437. package/node_modules/@allyhub-next/scenery/dist/vec.d.ts +19 -0
  438. package/node_modules/@allyhub-next/scenery/package.json +1 -1
  439. package/node_modules/@allyhub-next/scenery-host/dist/adapter.d.ts +46 -0
  440. package/node_modules/@allyhub-next/scenery-host/dist/allyhub.d.ts +21 -0
  441. package/node_modules/@allyhub-next/scenery-host/dist/allyhub.js +1 -1
  442. package/node_modules/@allyhub-next/scenery-host/dist/bake/apply.d.ts +59 -0
  443. package/node_modules/@allyhub-next/scenery-host/dist/bake/digest.d.ts +14 -0
  444. package/node_modules/@allyhub-next/scenery-host/dist/bake/envmap.d.ts +21 -0
  445. package/node_modules/@allyhub-next/scenery-host/dist/bake/format.d.ts +63 -0
  446. package/node_modules/@allyhub-next/scenery-host/dist/bake/run.d.ts +63 -0
  447. package/node_modules/@allyhub-next/scenery-host/dist/bake/run.js +15 -13
  448. package/node_modules/@allyhub-next/scenery-host/dist/budget.d.ts +40 -0
  449. package/node_modules/@allyhub-next/scenery-host/dist/bundle.d.ts +68 -0
  450. package/node_modules/@allyhub-next/scenery-host/dist/clock.d.ts +31 -0
  451. package/node_modules/@allyhub-next/scenery-host/dist/commands.d.ts +54 -0
  452. package/node_modules/@allyhub-next/scenery-host/dist/draw2d.d.ts +47 -0
  453. package/node_modules/@allyhub-next/scenery-host/dist/errors.d.ts +33 -0
  454. package/node_modules/@allyhub-next/scenery-host/dist/fidelity.d.ts +72 -0
  455. package/node_modules/@allyhub-next/scenery-host/dist/focus-pass.d.ts +51 -0
  456. package/node_modules/@allyhub-next/scenery-host/dist/glass.d.ts +39 -0
  457. package/node_modules/@allyhub-next/scenery-host/dist/idbuffer.d.ts +35 -0
  458. package/node_modules/@allyhub-next/scenery-host/dist/index.d.ts +24 -0
  459. package/node_modules/@allyhub-next/scenery-host/dist/inventory.d.ts +18 -0
  460. package/node_modules/@allyhub-next/scenery-host/dist/layer/fidelity.d.ts +70 -0
  461. package/node_modules/@allyhub-next/scenery-host/dist/layer/index.d.ts +51 -0
  462. package/node_modules/@allyhub-next/scenery-host/dist/layer/moire.d.ts +6 -0
  463. package/node_modules/@allyhub-next/scenery-host/dist/layer/queries.d.ts +106 -0
  464. package/node_modules/@allyhub-next/scenery-host/dist/layer/screens.d.ts +58 -0
  465. package/node_modules/@allyhub-next/scenery-host/dist/layer/state.d.ts +110 -0
  466. package/node_modules/@allyhub-next/scenery-host/dist/layer/types.d.ts +239 -0
  467. package/node_modules/@allyhub-next/scenery-host/dist/measure/contacts.d.ts +45 -0
  468. package/node_modules/@allyhub-next/scenery-host/dist/measure/facts.d.ts +86 -0
  469. package/node_modules/@allyhub-next/scenery-host/dist/measure/health.d.ts +10 -0
  470. package/node_modules/@allyhub-next/scenery-host/dist/measure/index.d.ts +110 -0
  471. package/node_modules/@allyhub-next/scenery-host/dist/measure/relations.d.ts +17 -0
  472. package/node_modules/@allyhub-next/scenery-host/dist/measure/screen-readback.d.ts +27 -0
  473. package/node_modules/@allyhub-next/scenery-host/dist/measure/solid.d.ts +32 -0
  474. package/node_modules/@allyhub-next/scenery-host/dist/measure/support.d.ts +11 -0
  475. package/node_modules/@allyhub-next/scenery-host/dist/module.d.ts +5 -0
  476. package/node_modules/@allyhub-next/scenery-host/dist/page/bake.d.ts +53 -0
  477. package/node_modules/@allyhub-next/scenery-host/dist/page/draw.d.ts +42 -0
  478. package/node_modules/@allyhub-next/scenery-host/dist/page/files.d.ts +45 -0
  479. package/node_modules/@allyhub-next/scenery-host/dist/page/page.d.ts +127 -0
  480. package/node_modules/@allyhub-next/scenery-host/dist/page/props.d.ts +23 -0
  481. package/node_modules/@allyhub-next/scenery-host/dist/page/screens.d.ts +147 -0
  482. package/node_modules/@allyhub-next/scenery-host/dist/page/shaders.d.ts +41 -0
  483. package/node_modules/@allyhub-next/scenery-host/dist/queries/inventory.d.ts +5 -0
  484. package/node_modules/@allyhub-next/scenery-host/dist/queries/map.d.ts +5 -0
  485. package/node_modules/@allyhub-next/scenery-host/dist/queries/view.d.ts +10 -0
  486. package/node_modules/@allyhub-next/scenery-host/dist/scene.d.ts +35 -0
  487. package/node_modules/@allyhub-next/scenery-host/dist/screen-dom.d.ts +24 -0
  488. package/node_modules/@allyhub-next/scenery-host/dist/screen-light.d.ts +58 -0
  489. package/node_modules/@allyhub-next/scenery-host/dist/screen-picture.d.ts +123 -0
  490. package/node_modules/@allyhub-next/scenery-host/dist/signature.d.ts +4 -0
  491. package/node_modules/@allyhub-next/scenery-host/dist/steady.d.ts +4 -0
  492. package/node_modules/@allyhub-next/scenery-host/dist/vec.d.ts +19 -0
  493. package/node_modules/@allyhub-next/scenery-host/dist/viewer.d.ts +103 -0
  494. package/node_modules/@allyhub-next/scenery-host/package.json +1 -1
  495. package/node_modules/@allyhub-next/sheet/dist/check.d.ts +26 -0
  496. package/node_modules/@allyhub-next/sheet/dist/csv.d.ts +62 -0
  497. package/node_modules/@allyhub-next/sheet/dist/export.d.ts +15 -0
  498. package/node_modules/@allyhub-next/sheet/dist/import.d.ts +22 -0
  499. package/node_modules/@allyhub-next/sheet/dist/index.d.ts +13 -0
  500. package/node_modules/@allyhub-next/sheet/dist/model.d.ts +133 -0
  501. package/node_modules/@allyhub-next/sheet/dist/patch.d.ts +12 -0
  502. package/node_modules/@allyhub-next/sheet/dist/profile.d.ts +32 -0
  503. package/node_modules/@allyhub-next/sheet/dist/sheet.d.ts +17 -0
  504. package/node_modules/@allyhub-next/sheet/dist/spec-write.d.ts +27 -0
  505. package/node_modules/@allyhub-next/sheet/dist/spec.d.ts +29 -0
  506. package/node_modules/@allyhub-next/sheet/dist/values.d.ts +55 -0
  507. package/node_modules/@allyhub-next/sheet/dist/view.d.ts +26 -0
  508. package/node_modules/@allyhub-next/sheet/dist/xlsx.d.ts +26 -0
  509. package/node_modules/@allyhub-next/sheet/package.json +1 -1
  510. package/node_modules/@allyhub-next/site/package.json +1 -1
  511. package/node_modules/@allyhub-next/stage/dist/bakes.d.ts +42 -0
  512. package/node_modules/@allyhub-next/stage/dist/graphics.d.ts +7 -0
  513. package/node_modules/@allyhub-next/stage/dist/identity.d.ts +2 -0
  514. package/node_modules/@allyhub-next/stage/dist/index.d.ts +9 -0
  515. package/node_modules/@allyhub-next/stage/dist/page.d.ts +78 -0
  516. package/node_modules/@allyhub-next/stage/dist/scenery-page.d.ts +69 -0
  517. package/node_modules/@allyhub-next/stage/dist/scenery-page.js +4 -4
  518. package/node_modules/@allyhub-next/stage/dist/scenery-solve.d.ts +49 -0
  519. package/node_modules/@allyhub-next/stage/dist/scenery.d.ts +8 -0
  520. package/node_modules/@allyhub-next/stage/dist/server.d.ts +21 -0
  521. package/node_modules/@allyhub-next/stage/package.json +1 -1
  522. package/node_modules/@allyhub-next/video-core/dist/anchors.d.ts +164 -0
  523. package/node_modules/@allyhub-next/video-core/dist/audio-types.d.ts +148 -0
  524. package/node_modules/@allyhub-next/video-core/dist/backdrop.d.ts +87 -0
  525. package/node_modules/@allyhub-next/video-core/dist/captions.d.ts +122 -0
  526. package/node_modules/@allyhub-next/video-core/dist/console.d.ts +91 -0
  527. package/node_modules/@allyhub-next/video-core/dist/contrast.d.ts +98 -0
  528. package/node_modules/@allyhub-next/video-core/dist/cut-report.d.ts +77 -0
  529. package/node_modules/@allyhub-next/video-core/dist/edit.d.ts +77 -0
  530. package/node_modules/@allyhub-next/video-core/dist/edits.d.ts +163 -0
  531. package/node_modules/@allyhub-next/video-core/dist/export.d.ts +96 -0
  532. package/node_modules/@allyhub-next/video-core/dist/fact.d.ts +965 -0
  533. package/node_modules/@allyhub-next/video-core/dist/footage-motion.d.ts +168 -0
  534. package/node_modules/@allyhub-next/video-core/dist/formats.d.ts +240 -0
  535. package/node_modules/@allyhub-next/video-core/dist/gen.d.ts +37 -0
  536. package/node_modules/@allyhub-next/video-core/dist/index.d.ts +40 -0
  537. package/node_modules/@allyhub-next/video-core/dist/look.d.ts +66 -0
  538. package/node_modules/@allyhub-next/video-core/dist/marks.d.ts +34 -0
  539. package/node_modules/@allyhub-next/video-core/dist/matrix.d.ts +289 -0
  540. package/node_modules/@allyhub-next/video-core/dist/measure.d.ts +465 -0
  541. package/node_modules/@allyhub-next/video-core/dist/media.d.ts +226 -0
  542. package/node_modules/@allyhub-next/video-core/dist/messages.d.ts +88 -0
  543. package/node_modules/@allyhub-next/video-core/dist/motion.d.ts +56 -0
  544. package/node_modules/@allyhub-next/video-core/dist/music.d.ts +110 -0
  545. package/node_modules/@allyhub-next/video-core/dist/piece.d.ts +1146 -0
  546. package/node_modules/@allyhub-next/video-core/dist/placement.d.ts +37 -0
  547. package/node_modules/@allyhub-next/video-core/dist/problem.d.ts +262 -0
  548. package/node_modules/@allyhub-next/video-core/dist/render-types.d.ts +49 -0
  549. package/node_modules/@allyhub-next/video-core/dist/schema.d.ts +352 -0
  550. package/node_modules/@allyhub-next/video-core/dist/script-edit.d.ts +176 -0
  551. package/node_modules/@allyhub-next/video-core/dist/script.d.ts +67 -0
  552. package/node_modules/@allyhub-next/video-core/dist/seams.d.ts +214 -0
  553. package/node_modules/@allyhub-next/video-core/dist/slides.d.ts +37 -0
  554. package/node_modules/@allyhub-next/video-core/dist/sound-under.d.ts +72 -0
  555. package/node_modules/@allyhub-next/video-core/dist/speech.d.ts +83 -0
  556. package/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +616 -0
  557. package/node_modules/@allyhub-next/video-core/dist/timing.d.ts +88 -0
  558. package/node_modules/@allyhub-next/video-core/dist/transcript.d.ts +288 -0
  559. package/node_modules/@allyhub-next/video-core/dist/transition.d.ts +289 -0
  560. package/node_modules/@allyhub-next/video-core/dist/voice.d.ts +175 -0
  561. package/node_modules/@allyhub-next/video-core/dist/words.d.ts +128 -0
  562. package/node_modules/@allyhub-next/video-core/package.json +1 -1
  563. package/package.json +40 -27
  564. package/editor-web/assets/chevron-left-BmxSmft8.js +0 -1
  565. package/editor-web/assets/dist-CjQKFMhS.js +0 -8
  566. package/editor-web/assets/index-BAvCs2l0.css +0 -2
  567. package/editor-web/assets/index-g9RQlyDb.js +0 -56
  568. package/editor-web/assets/react-ZggY1Y07.js +0 -61
package/client.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ // Types of the packages AllyHub's build lends a project by name
2
+ // (packages/video/sdk/docs/scenery.md, modeling.md), from this install. Add
3
+ // "allyhub/client" to `types` in tsconfig.json, beside "@allyhub/sdk/client".
4
+ // Each points at `allyhub/lent/*`, the bundled package's own declarations,
5
+ // written into the npm package when it is packed
6
+ // (apps/create-allyhub/scripts/npm-packages.ts, which refuses to pack a
7
+ // lent entry this file does not declare).
8
+
9
+ declare module "@allyhub-next/scenery-host/layer" {
10
+ export * from "allyhub/lent/scenery-host/layer";
11
+ }
12
+ declare module "@allyhub-next/model" {
13
+ export * from "allyhub/lent/model";
14
+ }
15
+ declare module "@allyhub-next/model/three" {
16
+ export * from "allyhub/lent/model/three";
17
+ }
package/dist/charge.js ADDED
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ import{request as f}from"node:http";import{CHARGE_META as w,STUDIO_ASK_ENV as l}from"@allyhub-next/protocol";import{CommandError as u}from"./command.js";export const ASK_ABOVE=10;export function chargeOf(t,o,e){return{tool:t,title:o,credits:e.credits,estimated:e.estimated,unknown:e.lines.some(n=>n.unknown&&n.rate>0)}}export const beyond=(t,o)=>t.unknown||t.credits>o,askingAbove=(t,o)=>e=>beyond(e,t)?o(e):Promise.resolve(!0);const m=t=>new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(t);export function priceWords(t){return t.unknown?t.credits>0?`at least ${m(t.credits)} credits`:"credits by what it makes, known once it is made":`${t.estimated?"about ":""}${m(t.credits)} credits`}export const chargeMessage=t=>`${t.title} (${t.tool}) costs ${priceWords(t)} of AllyHub's. Allow it?`,chargeQuestion=t=>({mode:"form",message:chargeMessage(t),requestedSchema:{type:"object",properties:{}},_meta:{[w]:t}});export function studioApprove(t,o,e){const n=t[l];if(n===void 0||n==="")return;const s=t.ALLYHUB_ASK_ABOVE?.trim(),i=s===void 0||s===""?Number.NaN:Number(s),r=Number.isFinite(i)&&i>=0?i:ASK_ABOVE;return askingAbove(r,async a=>{const{status:c,text:p}=await g(n,JSON.stringify({cwd:o,params:chargeQuestion(a)}),e),d=JSON.parse(p);if(c!==200)throw new u("not-asked",`Studio could not ask the person: ${d.error?.message??`it answered ${String(c)}`}. Nothing was called or charged.`);return d.action==="accept"})}function g(t,o,e){return new Promise((n,s)=>{const i=f(t,{method:"POST",headers:{"content-type":"application/json"},signal:e},r=>{const a=[];r.on("data",c=>a.push(c)),r.on("end",()=>{n({status:r.statusCode??0,text:Buffer.concat(a).toString("utf8")})}),r.on("error",s)});i.on("error",r=>{s(new u("not-asked",`Studio could not be reached to ask the person: ${r.message}. Nothing was called or charged.`))}),i.end(o)})}
@@ -1,6 +1,6 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{readFile as j}from"node:fs/promises";import{join as w,posix as L,relative as O}from"node:path";import{fileURLToPath as T}from"node:url";import{z as l}from"zod";import{modelInfo as k}from"@allyhub-next/build";import{COMPONENTS_DIR as S}from"@allyhub-next/formats";import{EXIT as u}from"@allyhub-next/protocol";import{ASSET_DEFAULTS as C,ASSET_TYPES as _,PolyHaven as N,PolyHavenError as z,RegistryError as F,applyAdd as D,folderRegistry as x,planAdd as U,searchIndex as M}from"@allyhub-next/registry";import{cacheHome as Y}from"@allyhub-next/runtimes";import{CommandError as A,defineCommand as H}from"../command.js";import{projectRoot as V}from"../project.js";import{dir as B}from"../fields.js";const W=JSON.parse(await j(new URL("../../package.json",import.meta.url),"utf8")).version,P=T(new URL(".",import.meta.resolve("@allyhub-next/components/registry.json"))),b=Object.keys(_),E=20,q=e=>e.replace(/\.(?:ts|js)$/u,"").replaceAll(/[A-Z]/gu,t=>`-${t.toLowerCase()}`).replace(/^-/u,"");function I(e){return e instanceof F?new A(e.code,e.message,{exit:e.code==="conflict"?u.conflict:e.code==="no-item"?u.notFound:u.failed,...e.hint===void 0?{}:{hint:e.hint}}):e instanceof z?new A(e.code,e.message,{exit:e.code==="network"?u.platform:e.code==="not-found"?u.notFound:e.code==="bad-choice"?u.usage:u.failed,...e.hint===void 0?{}:{hint:e.hint}}):e}const R=e=>new N({userAgent:`AllyHub/${W} (+https://allyhub.com)`,cacheDir:w(Y(e.env),"polyhaven"),...e.env.ALLYHUB_POLYHAVEN_API?{api:e.env.ALLYHUB_POLYHAVEN_API}:{}}),g=e=>`${e.toFixed(3)} m`;function J(e){const t=[e.type,e.category,e.size?`${g(e.size.width)} wide, ${g(e.size.depth)} deep, ${g(e.size.height)} tall`:void 0,e.covers?`one tile covers ${e.covers.map(g).join(" × ")}`:void 0,e.polycount!==void 0?`${e.polycount.toLocaleString("en")} polygons`:void 0,e.maxResolution?`up to ${String(e.maxResolution[0])} px`:void 0,e.authors.length>0?`by ${e.authors.join(", ")}`:void 0].filter(n=>n!==void 0);return` ${e.id}: ${e.name} (${t.join("; ")})
3
- found in ${e.matchedIn.join(", ")||"everything"}; tags ${e.tags.join(", ")}`}async function K(e,t){const n=[`${t.name} from Poly Haven (CC0, by ${t.source.authors.join(", ")||"its authors"}): ${String(t.files.length)} files in ${t.dir}/, ${t.fetched>0?`${String(t.fetched)} fetched`:"all already there"}. Records: ${t.records.join(", ")}.`];if(t.type==="model"){const a=t.main[0]??"",d=await k(e,a,await j(w(e,a))),i=d.bounds;return n.push(i?`Measured: ${i.size.map(c=>c.toFixed(3)).join(" × ")} m along x, y (up), z; from ${i.min.map(c=>c.toFixed(3)).join(", ")} to ${i.max.map(c=>c.toFixed(3)).join(", ")}.`:`Not measured: ${d.contentsMissing??"no contents"}.`,...d.missing.length>0?[`Missing: ${d.missing.join(", ")}.`]:[],`In a scenery: const m = await w.load("${a}");`),{lines:n,model:d}}if(t.type==="hdri")return n.push(`In a scenery: await w.environment("${t.main[0]??""}", { background: true });`),{lines:n};const o=t.covers;return n.push(o&&o.length>=2?`One tile covers ${g(o[0]??0)} × ${g(o[1]??0)} (Poly Haven's dimensions): a surface's repeat is its size over that.`:"Poly Haven gives no size for one tile.",...t.main.map((a,d)=>{const i=t.maps?.[d]??"";return` ${i}: await w.texture("${a}"${i==="diffuse"?"":', { colorSpace: "linear" }'})`})),{lines:n}}export const add=H({name:"add",summary:"Adds what the registry has to the project: a starter component, or a CC0 model, HDRI or texture from Poly Haven; alone it lists the components",input:l.strictObject({name:l.array(l.string()).optional().describe("What to add: a starter component (caption-line, or captionLine), or a Poly Haven asset's id (as allyhub add search prints it)"),to:l.string().optional().describe(`The folder the files go in, from the project (default ${S} for a component; for an asset, its kind's folder under assets/media/ and its id)`),force:l.boolean().default(!1).describe("Replace a component's copy the project changed (its changes are lost)"),res:l.string().optional().describe(`An asset's resolution, of its textures or of the HDRI (default ${C.resolution})`),dir:B}),positional:["name"],output:l.looseObject({}),examples:["allyhub add","allyhub add caption-line","allyhub add metal_office_desk --res 2k"]},async(e,t)=>{const n=x(P);try{const o=await n.index();if(!e.name||e.name.length===0){const h=Math.max(...o.items.map(s=>s.name.length));return{value:{components:o.items},text:["Starter components (allyhub add <name> copies one into components/; allyhub add search <words> finds Poly Haven's models, HDRIs and textures too):",...o.items.map(s=>` ${s.name.padEnd(h)} ${s.description}`)].join(`
4
- `)}}const a=await V(t.cwd,e.dir),d=new Set(o.items.map(h=>h.name)),i=e.name.map(q),c=i.filter(h=>d.has(h)),p=e.name.filter((h,s)=>!d.has(i[s]??"")),m=[],$={};if(c.length>0){const h=e.to??S,s=await U(n,c,{root:a,dir:h,force:e.force});await D(a,s);const v=r=>r==="up to date"?"Up to date":r==="added"?"Added":"Replaced";m.push(...s.files.map(r=>`${v(r.status)} ${r.path}`));const f=s.items.find(r=>r.name===c[0]),y=f?.files[0]?.target.replaceAll("{dir}",h);if(f&&y){const r=O(w(a,"name"),w(a,y)).split("\\").join("/").replace(/\.ts$/u,".js");m.push(`Import it from an item's entry file (<name>/video.ts): import { ${f.title} } from "${r.startsWith(".")?r:`./${r}`}"; one "../" more for each folder the item is deeper.`,"The file is the project's: change it as you like. allyhub add <name> --force puts the registry's back.")}s.missing.length>0&&m.push(`It needs packages the project does not declare: ${s.missing.join(", ")}.`),$.components=s.files.map(r=>({item:r.item,path:r.path,status:r.status})),$.missing=s.missing}if(p.length>0){const h=R(t),s=[];for(const v of p){const f=await h.add(v,{root:a,...e.to===void 0||c.length>0?{}:{to:L.normalize(e.to)},...e.res===void 0?{}:{resolution:e.res}}),y=await K(a,f);m.length>0&&m.push(""),m.push(...y.lines),s.push({...f,...y.model===void 0?{}:{model:y.model}})}$.assets=s}return{value:$,text:m.join(`
5
- `)}}catch(o){throw I(o)}}),addSearch=H({name:"add search",summary:"Finds the starter components and Poly Haven's CC0 models, HDRIs and textures whose names, tags, categories or descriptions hold every word, each with where its words were found",input:l.strictObject({words:l.array(l.string()).min(1).describe("The words to find (a word may start one of theirs)"),type:l.array(l.enum(["component",...b])).optional().describe("Only these kinds (default all)"),all:l.boolean().default(!1).describe(`Every match, not only the first ${String(E)} Poly Haven assets`)}),positional:["words"],output:l.looseObject({}),examples:['allyhub add search "office desk" --type model',"allyhub add search caption"]},async(e,t)=>{const n=e.words.join(" ").trim();try{const o=e.type??["component",...b],a=o.includes("component")?M(await x(P).index(),n):[],d=b.filter(m=>o.includes(m)),{found:i,total:c}=d.length>0?await R(t).search(n,d):{found:[],total:0},p=e.all?i:i.slice(0,E);return{value:{query:n,components:a,assets:{total:c,matches:i.length,found:p}},text:[...o.includes("component")?[`Starter components: ${String(a.length)} hold "${n}".`,...a.map(m=>` ${m.name} (${m.title}): ${m.description}`)]:[],...d.length>0?[`From Poly Haven (CC0): ${String(i.length)} of ${String(c)} assets hold "${n}"${p.length<i.length?`; the first ${String(p.length)} (--all for every one)`:""}.`,...p.map(J)]:[],"","Add one: allyhub add <name or id>"].join(`
6
- `)}}catch(o){throw I(o)}});
2
+ import{createHash as z}from"node:crypto";import{mkdir as M,readFile as x,writeFile as Y}from"node:fs/promises";import{join as S,posix as B,relative as J}from"node:path";import{fileURLToPath as V}from"node:url";import{z as u}from"zod";import{modelInfo as W}from"@allyhub-next/build";import{COMPONENTS_DIR as E}from"@allyhub-next/formats";import{EXIT as b,RegistryIndexSchema as X}from"@allyhub-next/protocol";import{ASSET_DEFAULTS as q,ASSET_TYPES as G,PolyHaven as K,PolyHavenError as Z,RegistryError as Q,applyAdd as R,fetchBakes as ee,folderRegistry as I,planAdd as P,registryAt as te,searchIndex as L}from"@allyhub-next/registry";import{cacheHome as O}from"@allyhub-next/runtimes";import{CommandError as T,defineCommand as _}from"../command.js";import{projectRoot as se}from"../project.js";import{dir as ne}from"../fields.js";const oe=JSON.parse(await x(new URL("../../package.json",import.meta.url),"utf8")).version,C=V(new URL(".",import.meta.resolve("@allyhub-next/components/registry.json"))),j=Object.keys(G),ae="https://allyhub.com/r",ie=3600*1e3;async function H(e){const t=e.env.ALLYHUB_REGISTRY??ae,s=te(t),i=S(O(e.env),"registry",`${z("sha256").update(t).digest("hex").slice(0,16)}.json`),n=await x(i,"utf8").then(o=>{const d=JSON.parse(o),l=X.parse(d.index);return{read:d.read,index:l}}).catch(()=>{});if(n&&Date.now()-n.read<ie)return{source:s,index:n.index,from:"kept"};try{const o=await s.index();return await M(S(i,".."),{recursive:!0}),await Y(i,JSON.stringify({read:Date.now(),index:o})),{source:s,index:o,from:"read"}}catch{return n?{source:s,index:n.index,from:"stale"}:{source:s,from:"none"}}}async function re(e){const{source:t,index:s}=await H(e);return{source:t,names:new Set(s?.items.map(i=>i.name))}}const de={"allyhub:scenery":"Sceneries and settings","allyhub:model":"Models","allyhub:component":"Components","allyhub:template":"Templates","allyhub:skill":"Skills"};function N(e,t){if(e.from==="none")return["AllyHub's resources (models, sceneries) could not be read: check the connection."];const s=t??e.index?.items??[],i=Math.max(0,...s.map(o=>o.name.length)),n=[`AllyHub's resources (allyhub add <name> copies one with what it needs, its Poly Haven assets and its baked light)${e.from==="stale"?", as last read (the registry cannot be read now)":""}:`];for(const[o,d]of Object.entries(de)){const l=s.filter(h=>h.type===o);l.length!==0&&n.push(` ${d}:`,...l.map(h=>` ${h.name.padEnd(i)} ${h.description}`))}return n}const D=20,le=e=>e.replace(/\.(?:ts|js)$/u,"").replaceAll(/[A-Z]/gu,t=>`-${t.toLowerCase()}`).replace(/^-/u,"");function F(e){return e instanceof Q?new T(e.code,e.message,{exit:e.code==="conflict"?b.conflict:e.code==="no-item"?b.notFound:b.failed,...e.hint===void 0?{}:{hint:e.hint}}):e instanceof Z?new T(e.code,e.message,{exit:e.code==="network"?b.platform:e.code==="not-found"?b.notFound:e.code==="bad-choice"?b.usage:b.failed,...e.hint===void 0?{}:{hint:e.hint}}):e}const A=e=>new K({userAgent:`AllyHub/${oe} (+https://allyhub.com)`,cacheDir:S(O(e.env),"polyhaven"),...e.env.ALLYHUB_POLYHAVEN_API?{api:e.env.ALLYHUB_POLYHAVEN_API}:{}}),v=e=>`${e.toFixed(3)} m`;function ce(e){const t=[e.type,e.category,e.size?`${v(e.size.width)} wide, ${v(e.size.depth)} deep, ${v(e.size.height)} tall`:void 0,e.covers?`one tile covers ${e.covers.map(v).join(" × ")}`:void 0,e.polycount!==void 0?`${e.polycount.toLocaleString("en")} polygons`:void 0,e.maxResolution?`up to ${String(e.maxResolution[0])} px`:void 0,e.authors.length>0?`by ${e.authors.join(", ")}`:void 0].filter(s=>s!==void 0);return` ${e.id}: ${e.name} (${t.join("; ")})
3
+ found in ${e.matchedIn.join(", ")||"everything"}; tags ${e.tags.join(", ")}`}async function U(e,t){const s=[`${t.name} from Poly Haven (CC0, by ${t.source.authors.join(", ")||"its authors"}): ${String(t.files.length)} files in ${t.dir}/, ${t.fetched>0?`${String(t.fetched)} fetched`:"all already there"}. Records: ${t.records.join(", ")}.`];if(t.type==="model"){const n=t.main[0]??"",o=await W(e,n,await x(S(e,n))),d=o.bounds;return s.push(d?`Measured: ${d.size.map(l=>l.toFixed(3)).join(" × ")} m along x, y (up), z; from ${d.min.map(l=>l.toFixed(3)).join(", ")} to ${d.max.map(l=>l.toFixed(3)).join(", ")}.`:`Not measured: ${o.contentsMissing??"no contents"}.`,...o.missing.length>0?[`Missing: ${o.missing.join(", ")}.`]:[],`In a scenery: const m = await w.load("${n}");`),{lines:s,model:o}}if(t.type==="hdri")return s.push(`In a scenery: await w.environment("${t.main[0]??""}", { background: true });`),{lines:s};const i=t.covers;return s.push(i&&i.length>=2?`One tile covers ${v(i[0]??0)} × ${v(i[1]??0)} (Poly Haven's dimensions): a surface's repeat is its size over that.`:"Poly Haven gives no size for one tile.",...t.main.map((n,o)=>{const d=t.maps?.[o]??"";return` ${d}: await w.texture("${n}"${d==="diffuse"?"":', { colorSpace: "linear" }'})`})),{lines:s}}export const add=_({name:"add",summary:"Adds what the registry has to the project: a starter component, a resource from AllyHub's registry (a model, a scenery, a skill), or a CC0 model, HDRI or texture from Poly Haven; alone it lists the components",input:u.strictObject({name:u.array(u.string()).optional().describe("What to add: a starter component (caption-line, or captionLine), a resource from AllyHub's registry (a model, a scenery or a skill: home-desk-demo-day, product-demos; a skill goes in .agents/skills, linked from .claude/skills), or a Poly Haven asset's id (as allyhub add search prints it)"),to:u.string().optional().describe(`The folder the files go in, from the project (default ${E} for a component; for an asset, its kind's folder under assets/media/ and its id)`),force:u.boolean().default(!1).describe("Replace a component's copy the project changed (its changes are lost)"),res:u.string().optional().describe(`An asset's resolution, of its textures or of the HDRI (default ${q.resolution})`),dir:ne}),positional:["name"],output:u.looseObject({}),examples:["allyhub add","allyhub add caption-line","allyhub add metal_office_desk --res 2k"]},async(e,t)=>{const s=I(C);try{const i=await s.index();if(!e.name||e.name.length===0){const r=Math.max(...i.items.map(y=>y.name.length)),c=await H(t);return{value:{components:i.items,resources:c.index?.items??[]},text:["Starter components (allyhub add <name> copies one into components/; allyhub add search <words> finds resources and Poly Haven's models, HDRIs and textures too):",...i.items.map(y=>` ${y.name.padEnd(r)} ${y.description}`),"",...N(c,void 0)].join(`
4
+ `)}}const n=await se(t.cwd,e.dir),o=new Set(i.items.map(r=>r.name)),d=e.name.map(le),l=d.filter(r=>o.has(r)),h=d.filter(r=>!o.has(r)),$=h.length>0?await re(t):void 0,w=h.filter(r=>$?.names.has(r)),p=e.name.filter((r,c)=>!o.has(d[c]??"")&&!($?.names.has(d[c]??"")??!1)),f=[],k={};if(l.length>0){const r=e.to??E,c=await P(s,l,{root:n,dir:r,force:e.force});await R(n,c);const y=m=>m==="up to date"?"Up to date":m==="added"?"Added":"Replaced";f.push(...c.files.map(m=>`${y(m.status)} ${m.path}`));const a=c.items.find(m=>m.name===l[0]),g=a?.files[0]?.target.replaceAll("{dir}",r);if(a&&g){const m=J(S(n,"name"),S(n,g)).split("\\").join("/").replace(/\.ts$/u,".js");f.push(`Import it from an item's entry file (<name>/video.ts): import { ${a.title} } from "${m.startsWith(".")?m:`./${m}`}"; one "../" more for each folder the item is deeper.`,"The file is the project's: change it as you like. allyhub add <name> --force puts the registry's back.")}c.missing.length>0&&f.push(`It needs packages the project does not declare: ${c.missing.join(", ")}.`),k.components=c.files.map(m=>({item:m.item,path:m.path,status:m.status})),k.missing=c.missing}if($&&w.length>0){const r=await P($.source,w,{root:n,dir:".",force:e.force});await R(n,r),f.length>0&&f.push(""),f.push(...r.files.map(a=>`${a.status==="up to date"?"Up to date":a.status==="added"?"Added":"Replaced"} ${a.path}`));const c=A(t);for(const a of r.assets){const g=await c.add(a.id,{root:n,...a.resolution===void 0?{}:{resolution:a.resolution},...a.maps===void 0?{}:{maps:a.maps}});f.push(...(await U(n,g)).lines)}const y=await ee(n,r.bakes);f.push(...y.map(a=>`${a.status==="added"?"Downloaded":"Up to date"} the baked light for ${a.bake.scenery}: ${a.path}`),"The files are the project's: change them as you like (a changed scenery is drawn unbaked until allyhub scenery bake bakes it again). allyhub add <name> --force puts the registry's back."),k.resources={files:r.files.map(a=>({item:a.item,path:a.path,status:a.status})),assets:r.assets,bakes:y.map(a=>({path:a.path,status:a.status}))}}if(p.length>0){const r=A(t),c=[];for(const y of p){const a=await r.add(y,{root:n,...e.to===void 0||l.length>0?{}:{to:B.normalize(e.to)},...e.res===void 0?{}:{resolution:e.res}}),g=await U(n,a);f.length>0&&f.push(""),f.push(...g.lines),c.push({...a,...g.model===void 0?{}:{model:g.model}})}k.assets=c}return{value:k,text:f.join(`
5
+ `)}}catch(i){throw F(i)}}),addSearch=_({name:"add search",summary:"Finds the starter components, AllyHub's resources (models, sceneries) and Poly Haven's CC0 models, HDRIs and textures whose names, tags, categories or descriptions hold every word, each with where its words were found",input:u.strictObject({words:u.array(u.string()).min(1).describe("The words to find (a word may start one of theirs)"),type:u.array(u.enum(["component","resource",...j])).optional().describe("Only these kinds (default all): component, resource (AllyHub's models and sceneries), or a Poly Haven kind"),all:u.boolean().default(!1).describe(`Every match, not only the first ${String(D)} Poly Haven assets`)}),positional:["words"],output:u.looseObject({}),examples:['allyhub add search "office desk" --type model',"allyhub add search caption"]},async(e,t)=>{const s=e.words.join(" ").trim();try{const i=e.type??["component","resource",...j],n=i.includes("component")?L(await I(C).index(),s):[],o=i.includes("resource")?await H(t):void 0,d=o?.index?L(o.index,s):[],l=j.filter(p=>i.includes(p)),{found:h,total:$}=l.length>0?await A(t).search(s,l):{found:[],total:0},w=e.all?h:h.slice(0,D);return{value:{query:s,components:n,resources:d,assets:{total:$,matches:h.length,found:w}},text:[...i.includes("component")?[`Starter components: ${String(n.length)} hold "${s}".`,...n.map(p=>` ${p.name} (${p.title}): ${p.description}`)]:[],...o?o.from==="none"?N(o,[]):[`AllyHub's resources: ${String(d.length)} hold "${s}"${o.from==="stale"?" (as last read)":""}.`,...d.map(p=>` ${p.name} (${p.title}): ${p.description}`)]:[],...l.length>0?[`From Poly Haven (CC0): ${String(h.length)} of ${String($)} assets hold "${s}"${w.length<h.length?`; the first ${String(w.length)} (--all for every one)`:""}.`,...w.map(ce)]:[],"","Add one: allyhub add <name or id>"].join(`
6
+ `)}}catch(i){throw F(i)}});
@@ -1,2 +1,2 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{z as t}from"zod";import{EXIT as i}from"@allyhub-next/protocol";import{formatCheck as c}from"../text/index.js";import{defineCommand as m}from"../command.js";import{projectRoot as a}from"../project.js";import{dir as l}from"../fields.js";import{checkIndexed as n}from"../version.js";export const check=m({name:"check",summary:"Problems: objective errors in the project's items, by rule; exits 1 when one must be fixed",input:t.strictObject({item:t.string().optional().describe("Only this item: its id, a path into it, or a folder of items"),dir:l,fresh:t.boolean().default(!1).describe("Load every version again, not the last check's results")}),positional:["item"],output:t.looseObject({}),examples:["allyhub check","allyhub check launch/film","allyhub check --json"]},async(o,r)=>{const s=await a(r.cwd,o.dir),e=await n({dir:s,...o.item===void 0?{}:{piece:o.item}},r);return{value:{check:e.check,problems:e.problems,stats:e.stats,facts:e.facts.length,console:e.console},text:c(e),exit:e.check.errors>0?i.failed:i.ok}});
2
+ import{z as o}from"zod";import{EXIT as s}from"@allyhub-next/protocol";import{formatCheck as c}from"../text/index.js";import{defineCommand as m}from"../command.js";import{projectRoot as a}from"../project.js";import{dir as l}from"../fields.js";import{checkIndexed as n}from"../version.js";export const check=m({name:"check",summary:"Problems: objective errors in the project's items, by rule; exits 1 when one must be fixed",input:o.strictObject({item:o.string().optional().describe("Only this item: its id, a path into it, or a folder of items"),dir:l,fresh:o.boolean().default(!1).describe("Load every version again, not the last check's results")}),positional:["item"],output:o.looseObject({}),examples:["allyhub check","allyhub check launch/film","allyhub check --json"]},async(t,r)=>{const i=await a(r.cwd,t.dir),e=await n({dir:i,fresh:t.fresh,...t.item===void 0?{}:{piece:t.item}},r);return{value:{check:e.check,problems:e.problems,stats:e.stats,facts:e.facts.length,console:e.console},text:c(e),exit:e.check.errors>0?s.failed:s.ok}});
@@ -1,12 +1,12 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{readFile as W}from"node:fs/promises";import{join as D,resolve as q}from"node:path";import{z as n}from"zod";import{callTool as J,findTool as T,loadCatalog as h,priceCalls as E,priceText as j,resumeJob as L,uploadFiles as M}from"@allyhub-next/cloud";import{WORK_DIR as H}from"@allyhub-next/formats";import{EXIT as g}from"@allyhub-next/protocol";import{CommandError as $,defineCommand as w}from"../command.js";import{optionName as U}from"../args.js";import{commandHelp as B}from"../help.js";import{requiredMissing as K,toolInput as _,toolOptions as G}from"../tool-options.js";import{cloudOf as p,cloudWork as f,placeFrom as z,plural as b}from"./cloud.js";const P=8e3,d={input:n.string().optional().describe("The input as JSON, or a file of it: the whole of it, or the fields no option gives; an option given beside it wins"),quote:n.boolean().default(!1).describe("Say what a call with this input would cost, calling nothing and charging nothing"),file:n.string().optional().describe("The path of the file it makes (without an extension it takes the result's); the same call with the same input then keeps it, calling nothing; default a folder under .allyhub/work/"),force:n.boolean().default(!1).describe("With --file: call even when the file was made from this input, and replace a file that has no record"),wait:n.boolean().default(!0).describe("Wait for a long tool (an audit, a video model); --no-wait returns its call at once"),resume:n.string().optional().describe("Wait for a call of this tool this computer made (from --no-wait, or a call that stopped waiting), and download its file")},y=(t,a)=>new $("usage",t,{exit:g.usage,...a===void 0?{}:{hint:a}}),C=t=>{const a=t.reduce((e,r)=>r.map((s,i)=>Math.max(e[i]??0,s.length)),[]);return t.map(e=>` ${e.map((r,s)=>s===e.length-1?r:r.padEnd(a[s]??0)).join(" ")}`.trimEnd())};function F(t){return w({name:t.id,summary:`${t.title}: ${t.description} Lists the tools, each a command`,input:n.strictObject({fresh:n.boolean().default(!1).describe("Read the catalog from AllyHub again, not the copy kept an hour")}),output:n.looseObject({work:n.string(),tools:n.array(n.looseObject({name:n.string()}))}),examples:[`allyhub ${t.id}`,`allyhub ${t.id} --json`]},(a,e)=>f(async()=>{const s=(await h(p(e),{refresh:a.fresh})).tools.filter(i=>i.work===t.id).sort((i,o)=>i.name.localeCompare(o.name));return{value:{work:t.id,title:t.title,tools:s.map(i=>({name:i.name,title:i.title,description:i.description,price:j(i.price),long:i.long}))},text:[`${t.title} (${b(s.length,"tool")}):`,...C(s.map(i=>[i.name,i.title,j(i.price)])),"",`Each costs credits when it worked; a failed call is free. allyhub help ${t.id} <tool> shows a tool's options; --quote prices a call first.`].join(`
3
- `)}}))}const k=t=>new Intl.NumberFormat("en-US",{maximumFractionDigits:4}).format(t),X=t=>`${t.estimated?`about ${new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(t.credits)}`:k(t.credits)} credits`;function Q(t){return t.lines.map(a=>{if(a.unknown)return` ${a.what.replace(/^0 /u,"")}: ${k(a.rate)} each, counted by the call (not in the total)`;const e=a.what==="per call"?"":` (${k(a.rate)} each)`;return` ${a.what}: ${k(a.credits)}${e}${a.estimated?", estimated":""}`})}function V(t,a=5,e=160){const r=i=>{const o=i===void 0?"undefined":JSON.stringify(i);return o.length>e?`${o.slice(0,e-1)}…`:o},s=(i,o)=>[`${i?`${i}: `:""}${b(o.length,"item")}${o.length>a?`, the first ${String(a)}:`:":"}`,...o.slice(0,a).map((l,c)=>` [${String(c)}] ${r(l)}`)];return Array.isArray(t)?s("",t):typeof t!="object"||t===null?[r(t)]:Object.entries(t).flatMap(([i,o])=>Array.isArray(o)?s(i,o):[`${i}: ${r(o)}`])}function R(t,a){if("jobId"in t)return[`${t.tool} is still working (call ${t.jobId}).`,`Wait for it: allyhub ${a} --resume ${t.jobId}`].join(`
4
- `);if(t.kept)return[`Kept ${t.file??""}: ${t.tool} made it from this same input on ${t.kept.at} (${t.gen??""}).`,"Nothing was called or charged. --force makes it again."].join(`
5
- `);const e=JSON.stringify(t.output,null,2);return[e.length<=P?e:[`Output: ${String(Math.round(Buffer.byteLength(e)/1024))} KB of JSON, in short (--json prints it whole):`,...V(t.output)].join(`
6
- `),...t.file?[`File: ${t.file}${t.replaced?" (replaced: it was made from another input)":""}`]:[],...t.words?[`Words: ${t.words} (when each word is said: a part can say a stretch of the file)`]:[],...t.gen?[`Record: ${t.gen} (move it with the file)`]:[],`Credits used: ${t.credits===void 0?"not reported":String(t.credits)}`].join(`
7
- `)}const Y=t=>{const a=Math.max(0,Math.round(t));return`${String(Math.floor(a/60))}:${String(a%60).padStart(2,"0")}`},Z=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);async function tt(t,a){const e=t.trim().startsWith("{"),r=e?t:await W(q(a.cwd,t),"utf8").catch(i=>{throw new $("not-found",`--input: cannot read ${t}: ${i.message}`,{exit:g.notFound,hint:"Give a JSON object, or a file of one."})});let s;try{s=JSON.parse(r)}catch{s=void 0}if(!Z(s))throw y(`--input: ${e?"the text":t} is not a JSON object.`,`Give '{"field": …}', or a file of it.`);return s}export function toolCommand(t){const a=`${t.work} ${t.name}`,e=G(t.input,Object.keys(d)),r=n.strictObject({...e.shape,...d,input:d.input.describe(e.inputOnly.length?`${d.input.description??""}. Fields only it gives: ${e.inputOnly.join(", ")}`:d.input.description??"")}),s=j(t.price),i=[...e.fields].filter(([,o])=>e.required.includes(o)).map(([o,l])=>`--${U(o)} <${l}>`);return{spec:{name:a,summary:t.description,input:r,output:n.looseObject({tool:n.string(),output:n.record(n.string(),n.unknown()).optional(),credits:n.number().optional(),file:n.string().optional(),gen:n.string().optional(),words:n.string().optional(),jobId:n.string().optional(),quote:n.looseObject({credits:n.number()}).nullable().optional()}),examples:[`allyhub ${[a,...i,"--quote"].join(" ")}`,`allyhub ${[a,...i].join(" ")}`]},about:{lines:[t.title,"",`Costs credits: ${s}. A call is charged once, when it worked; a failed call is free. --quote prices an input first, charging nothing.`,...t.long?["A long tool: the command waits for it (--no-wait returns its call, --resume waits again)."]:[]],value:{work:t.work,title:t.title,price:s,priceRule:t.price,long:t.long,inputSchema:t.input,outputSchema:t.output}},run:(o,l)=>f(async()=>{const c=o,I=o,O=p(l),S=await z(l),m=_(e,I,c.input===void 0?{}:await tt(c.input,l));let v=0;const A={base:S,signal:l.signal,onRunning:u=>{Date.now()-v<3e4||(v=Date.now(),l.progress(`${t.name}: working · ${Y((Date.now()-Date.parse(u.createdAt))/1e3)} (call ${u.id})`))}};if(c.resume!==void 0){if(Object.keys(m).length>0||c.quote||c.file!==void 0)throw y("--resume waits for a call as it was made: give it no input, --quote or --file.");const u=await L(O,c.resume,{...A,tool:t.name});return{value:{...u},text:R(u,a)}}if(c.quote){const u=E(t.price,t.input,[m]).calls[0];if(!u)throw new Error("No quote.");return{value:{tool:t.name,quote:u},text:[`A call${Object.keys(m).length===0?" with the defaults":""}: ${X(u)}`,...Q(u),...u.estimated?["Estimated parts are charged by what the call returns."]:[],"A call is charged once, when it worked; a failed call is free."].join(`
8
- `)}}const x=K(e,m);if(x.length>0)throw y(`${t.name} needs ${x.join(", ")}.`,`allyhub help ${a} shows its options.`);const N=await J(O,t.name,m,{...A,outDir:D(S,H,t.work,t.name),...c.file===void 0?{}:{file:q(l.cwd,c.file)},force:c.force,wait:c.wait});return{value:{...N},text:R(N,a)}})}}const et=t=>h(p(t)).catch(()=>{});export const CLOUD_SOURCE={entries:[{name:"<work>",summary:"List a work's cloud tools (AllyHub's catalog), a line each with its price; allyhub help lists the works"},{name:"<work> <tool>",summary:"Run a cloud tool with the account's credits, its input as options (allyhub help <work> <tool>); --quote prices it first"}],async nouns(t){return(await h(p(t))).works.map(e=>({name:e.id,summary:`${e.title}: ${e.description}`}))},resolve:(t,a)=>f(async()=>{const[e,r]=t;if(e===void 0||e.startsWith("-"))return;let s=await et(a),i=s?.works.find(l=>l.id===e);if(i||(s=await h(p(a),{refresh:!0}).catch(()=>s),i=s?.works.find(l=>l.id===e)),!s||!i)return;if(r===void 0||r.startsWith("-"))return{command:F(i),rest:t.slice(1),list:!0};const o=s.tools.find(l=>l.name===r);if(o?.work!==i.id)throw new $("unknown-tool",o?`${r} is not a ${i.id} tool: it is in allyhub ${o.work}.`:`No ${i.id} tool ${r}.`,{exit:g.notFound,hint:o?`allyhub ${o.work} ${r}`:`allyhub ${i.id} lists its tools.`});return{command:toolCommand(o),rest:t.slice(2),list:!1}})},upload=w({name:"upload",summary:"Upload files from this computer for a cloud tool whose input takes a URL (a presenter photo, speech audio, a reference clip), and print a signed URL for each, which works for a few hours",input:n.strictObject({files:n.array(n.string()).min(1).describe("The files: images (.jpg, .png, .webp, .gif), sound (.mp3, .wav, .m4a, .aac, .ogg, .flac) or video (.mp4, .mov, .webm), 50 MB at most")}),positional:["files"],output:n.looseObject({files:n.array(n.looseObject({file:n.string(),ok:n.boolean(),url:n.string().optional()}))}),examples:["allyhub upload assets/media/presenter.jpg"]},(t,a)=>f(async()=>{const e=await M(p(a),t.files,{base:a.cwd}),r=e.filter(o=>!o.ok),s=e.map(o=>o.ok?`${o.file}
2
+ import{readFile as J}from"node:fs/promises";import{join as E,resolve as T}from"node:path";import{z as a}from"zod";import{callTool as L,findTool as C,loadCatalog as h,priceCalls as F,priceText as j,resumeJob as M,uploadFiles as H}from"@allyhub-next/cloud";import{WORK_DIR as U}from"@allyhub-next/formats";import{EXIT as g}from"@allyhub-next/protocol";import{CommandError as $,defineCommand as w}from"../command.js";import{optionName as B}from"../args.js";import{chargeOf as K}from"../charge.js";import{commandHelp as _}from"../help.js";import{requiredMissing as G,toolInput as P,toolOptions as z}from"../tool-options.js";import{cloudOf as p,cloudWork as f,placeFrom as X,plural as b}from"./cloud.js";const Q=8e3,d={input:a.string().optional().describe("The input as JSON, or a file of it: the whole of it, or the fields no option gives; an option given beside it wins"),quote:a.boolean().default(!1).describe("Say what a call with this input would cost, calling nothing and charging nothing"),file:a.string().optional().describe("The path of the file it makes (without an extension it takes the result's); the same call with the same input then keeps it, calling nothing; default a folder under .allyhub/work/"),force:a.boolean().default(!1).describe("With --file: call even when the file was made from this input, and replace a file that has no record"),wait:a.boolean().default(!0).describe("Wait for a long tool (an audit, a video model); --no-wait returns its call at once"),resume:a.string().optional().describe("Wait for a call of this tool this computer made (from --no-wait, or a call that stopped waiting), and download its file")},y=(e,n)=>new $("usage",e,{exit:g.usage,...n===void 0?{}:{hint:n}}),R=e=>{const n=e.reduce((t,r)=>r.map((s,i)=>Math.max(t[i]??0,s.length)),[]);return e.map(t=>` ${t.map((r,s)=>s===t.length-1?r:r.padEnd(n[s]??0)).join(" ")}`.trimEnd())};function I(e){return w({name:e.id,summary:`${e.title}: ${e.description} Lists the tools, each a command`,input:a.strictObject({fresh:a.boolean().default(!1).describe("Read the catalog from AllyHub again, not the copy kept an hour")}),output:a.looseObject({work:a.string(),tools:a.array(a.looseObject({name:a.string()}))}),examples:[`allyhub ${e.id}`,`allyhub ${e.id} --json`]},(n,t)=>f(async()=>{const s=(await h(p(t),{refresh:n.fresh})).tools.filter(i=>i.work===e.id).sort((i,o)=>i.name.localeCompare(o.name));return{value:{work:e.id,title:e.title,tools:s.map(i=>({name:i.name,title:i.title,description:i.description,price:j(i.price),long:i.long}))},text:[`${e.title} (${b(s.length,"tool")}):`,...R(s.map(i=>[i.name,i.title,j(i.price)])),"",`Each costs credits when it worked; a failed call is free. allyhub help ${e.id} <tool> shows a tool's options; --quote prices a call first.`].join(`
3
+ `)}}))}const k=e=>new Intl.NumberFormat("en-US",{maximumFractionDigits:4}).format(e),V=e=>`${e.estimated?`about ${new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e.credits)}`:k(e.credits)} credits`;function Y(e){return e.lines.map(n=>{if(n.unknown)return` ${n.what.replace(/^0 /u,"")}: ${k(n.rate)} each, counted by the call (not in the total)`;const t=n.what==="per call"?"":` (${k(n.rate)} each)`;return` ${n.what}: ${k(n.credits)}${t}${n.estimated?", estimated":""}`})}function Z(e,n=5,t=160){const r=i=>{const o=i===void 0?"undefined":JSON.stringify(i);return o.length>t?`${o.slice(0,t-1)}…`:o},s=(i,o)=>[`${i?`${i}: `:""}${b(o.length,"item")}${o.length>n?`, the first ${String(n)}:`:":"}`,...o.slice(0,n).map((l,u)=>` [${String(u)}] ${r(l)}`)];return Array.isArray(e)?s("",e):typeof e!="object"||e===null?[r(e)]:Object.entries(e).flatMap(([i,o])=>Array.isArray(o)?s(i,o):[`${i}: ${r(o)}`])}function W(e,n){if("jobId"in e)return[`${e.tool} is still working (call ${e.jobId}).`,`Wait for it: allyhub ${n} --resume ${e.jobId}`].join(`
4
+ `);if(e.kept)return[`Kept ${e.file??""}: ${e.tool} made it from this same input on ${e.kept.at} (${e.gen??""}).`,"Nothing was called or charged. --force makes it again."].join(`
5
+ `);const t=JSON.stringify(e.output,null,2);return[t.length<=Q?t:[`Output: ${String(Math.round(Buffer.byteLength(t)/1024))} KB of JSON, in short (--json prints it whole):`,...Z(e.output)].join(`
6
+ `),...e.file?[`File: ${e.file}${e.replaced?" (replaced: it was made from another input)":""}`]:[],...e.words?[`Words: ${e.words} (when each word is said: a part can say a stretch of the file)`]:[],...e.gen?[`Record: ${e.gen} (move it with the file)`]:[],`Credits used: ${e.credits===void 0?"not reported":String(e.credits)}`].join(`
7
+ `)}const ee=e=>{const n=Math.max(0,Math.round(e));return`${String(Math.floor(n/60))}:${String(n%60).padStart(2,"0")}`},te=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);async function ie(e,n){const t=e.trim().startsWith("{"),r=t?e:await J(T(n.cwd,e),"utf8").catch(i=>{throw new $("not-found",`--input: cannot read ${e}: ${i.message}`,{exit:g.notFound,hint:"Give a JSON object, or a file of one."})});let s;try{s=JSON.parse(r)}catch{s=void 0}if(!te(s))throw y(`--input: ${t?"the text":e} is not a JSON object.`,`Give '{"field": …}', or a file of it.`);return s}export function toolCommand(e){const n=`${e.work} ${e.name}`,t=z(e.input,Object.keys(d)),r=a.strictObject({...t.shape,...d,input:d.input.describe(t.inputOnly.length?`${d.input.description??""}. Fields only it gives: ${t.inputOnly.join(", ")}`:d.input.description??"")}),s=j(e.price),i=[...t.fields].filter(([,o])=>t.required.includes(o)).map(([o,l])=>`--${B(o)} <${l}>`);return{spec:{name:n,summary:e.description,input:r,output:a.looseObject({tool:a.string(),output:a.record(a.string(),a.unknown()).optional(),credits:a.number().optional(),file:a.string().optional(),gen:a.string().optional(),words:a.string().optional(),jobId:a.string().optional(),quote:a.looseObject({credits:a.number()}).nullable().optional()}),examples:[`allyhub ${[n,...i,"--quote"].join(" ")}`,`allyhub ${[n,...i].join(" ")}`]},about:{lines:[e.title,"",`Costs credits: ${s}. A call is charged once, when it worked; a failed call is free. --quote prices an input first, charging nothing.`,...e.long?["A long tool: the command waits for it (--no-wait returns its call, --resume waits again)."]:[]],value:{work:e.work,title:e.title,price:s,priceRule:e.price,long:e.long,inputSchema:e.input,outputSchema:e.output}},run:(o,l)=>f(async()=>{const u=o,D=o,O=p(l),v=await X(l),m=P(t,D,u.input===void 0?{}:await ie(u.input,l));let S=0;const A={base:v,signal:l.signal,onRunning:c=>{Date.now()-S<3e4||(S=Date.now(),l.progress(`${e.name}: working · ${ee((Date.now()-Date.parse(c.createdAt))/1e3)} (call ${c.id})`))}};if(u.resume!==void 0){if(Object.keys(m).length>0||u.quote||u.file!==void 0)throw y("--resume waits for a call as it was made: give it no input, --quote or --file.");const c=await M(O,u.resume,{...A,tool:e.name});return{value:{...c},text:W(c,n)}}if(u.quote){const c=F(e.price,e.input,[m]).calls[0];if(!c)throw new Error("No quote.");return{value:{tool:e.name,quote:c},text:[`A call${Object.keys(m).length===0?" with the defaults":""}: ${V(c)}`,...Y(c),...c.estimated?["Estimated parts are charged by what the call returns."]:[],"A call is charged once, when it worked; a failed call is free."].join(`
8
+ `)}}const q=G(t,m);if(q.length>0)throw y(`${e.name} needs ${q.join(", ")}.`,`allyhub help ${n} shows its options.`);const x=l.approve,N=await L(O,e.name,m,{...A,...x===void 0?{}:{approve:()=>{const c=F(e.price,e.input,[m]).calls[0];return c===void 0?Promise.resolve(!0):x(K(n,e.title,c))}},outDir:E(v,U,e.work,e.name),...u.file===void 0?{}:{file:T(l.cwd,u.file)},force:u.force,wait:u.wait});return{value:{...N},text:W(N,n)}})}}const oe=e=>h(p(e)).catch(()=>{});export const CLOUD_SOURCE={entries:[{name:"<work>",summary:"List a work's cloud tools (AllyHub's catalog), a line each with its price; allyhub help lists the works"},{name:"<work> <tool>",summary:"Run a cloud tool with the account's credits, its input as options (allyhub help <work> <tool>); --quote prices it first"}],async nouns(e){return(await h(p(e))).works.map(t=>({name:t.id,summary:`${t.title}: ${t.description}`}))},resolve:(e,n)=>f(async()=>{const[t,r]=e;if(t===void 0||t.startsWith("-"))return;let s=await oe(n),i=s?.works.find(l=>l.id===t);if(i||(s=await h(p(n),{refresh:!0}).catch(()=>s),i=s?.works.find(l=>l.id===t)),!s||!i)return;if(r===void 0||r.startsWith("-"))return{command:I(i),rest:e.slice(1),list:!0};const o=s.tools.find(l=>l.name===r);if(o?.work!==i.id)throw new $("unknown-tool",o?`${r} is not a ${i.id} tool: it is in allyhub ${o.work}.`:`No ${i.id} tool ${r}.`,{exit:g.notFound,hint:o?`allyhub ${o.work} ${r}`:`allyhub ${i.id} lists its tools.`});return{command:toolCommand(o),rest:e.slice(2),list:!1}})},upload=w({name:"upload",summary:"Upload files from this computer for a cloud tool whose input takes a URL (a presenter photo, speech audio, a reference clip), and print a signed URL for each, which works for a few hours",input:a.strictObject({files:a.array(a.string()).min(1).describe("The files: images (.jpg, .png, .webp, .gif), sound (.mp3, .wav, .m4a, .aac, .ogg, .flac) or video (.mp4, .mov, .webm), 50 MB at most")}),positional:["files"],output:a.looseObject({files:a.array(a.looseObject({file:a.string(),ok:a.boolean(),url:a.string().optional()}))}),examples:["allyhub upload assets/media/presenter.jpg"]},(e,n)=>f(async()=>{const t=await H(p(n),e.files,{base:n.cwd}),r=t.filter(o=>!o.ok),s=t.map(o=>o.ok?`${o.file}
9
9
  ${o.url}${o.expiresAt===void 0?"":` (works until ${o.expiresAt})`}`:`${o.file}
10
- failed: ${o.error.message}${o.error.hint?` ${o.error.hint}`:""}`);e.length>1&&s.push(r.length===0?`${b(e.length,"file")} uploaded.`:`${String(e.length-r.length)} of ${b(e.length,"file")} uploaded; ${String(r.length)} failed.`);const i=r[0];return{value:{files:e.map(o=>o.ok?{...o}:{file:o.file,ok:!1,error:{code:o.error.code,message:o.error.message,...o.error.hint?{hint:o.error.hint}:{}}})},text:s.join(`
11
- `),...i?{exit:i.error.exit}:{}}})),cloudList=w({name:"cloud list",summary:"List AllyHub's cloud works, or one work's tools, a line each with its price",input:n.strictObject({work:n.string().optional().describe("The work whose tools to list; none lists the works")}),output:n.looseObject({})},(t,a)=>f(async()=>{const e=await h(p(a));if(t.work===void 0)return{value:{works:e.works},text:["AllyHub's cloud works:",...C(e.works.map(i=>[i.id,i.description]))].join(`
12
- `)};const r=e.works.find(i=>i.id===t.work);if(!r)throw new $("unknown-work",`No work ${t.work}.`,{exit:g.notFound,hint:`The works are ${e.works.map(i=>i.id).join(", ")}.`});const s=await F(r).run({fresh:!1},a);return{value:s.value,text:s.text}})),cloudTool=w({name:"cloud tool",summary:"Show a cloud tool: what it does, its input (as cloud call's input takes it) and its price",input:n.strictObject({tool:n.string().describe("The tool's name, as cloud list lists it")}),output:n.looseObject({name:n.string()})},(t,a)=>f(async()=>{const e=toolCommand(await T(p(a),t.tool));return{value:{name:t.tool,summary:e.spec.summary,about:e.about?.lines??[],...e.about?.value},text:B(e.spec,e.about?.lines)}})),cloudCall=w({name:"cloud call",summary:"Run a cloud tool with the account's credits: its output, the credits used, and the file it makes with its record; waits for a long one",input:n.strictObject({tool:n.string().describe("The tool's name, as cloud list lists it"),input:n.record(n.string(),n.unknown()).default({}).describe("Its input, by its input schema (cloud tool)"),quote:d.quote,file:d.file,force:d.force,wait:d.wait,resume:d.resume}),output:n.looseObject({tool:n.string()})},(t,a)=>f(async()=>{const{tool:e,input:r,...s}=t,i=toolCommand(await T(p(a),e)),o=i.spec.input.safeParse({...s,...Object.keys(r).length?{input:JSON.stringify(r)}:{}});if(!o.success)throw y(o.error.message);const l=await i.run(o.data,a);return{...l,value:{tool:e,...l.value}}}));
10
+ failed: ${o.error.message}${o.error.hint?` ${o.error.hint}`:""}`);t.length>1&&s.push(r.length===0?`${b(t.length,"file")} uploaded.`:`${String(t.length-r.length)} of ${b(t.length,"file")} uploaded; ${String(r.length)} failed.`);const i=r[0];return{value:{files:t.map(o=>o.ok?{...o}:{file:o.file,ok:!1,error:{code:o.error.code,message:o.error.message,...o.error.hint?{hint:o.error.hint}:{}}})},text:s.join(`
11
+ `),...i?{exit:i.error.exit}:{}}})),cloudList=w({name:"cloud list",summary:"List AllyHub's cloud works, or one work's tools, a line each with its price",input:a.strictObject({work:a.string().optional().describe("The work whose tools to list; none lists the works")}),output:a.looseObject({})},(e,n)=>f(async()=>{const t=await h(p(n));if(e.work===void 0)return{value:{works:t.works},text:["AllyHub's cloud works:",...R(t.works.map(i=>[i.id,i.description]))].join(`
12
+ `)};const r=t.works.find(i=>i.id===e.work);if(!r)throw new $("unknown-work",`No work ${e.work}.`,{exit:g.notFound,hint:`The works are ${t.works.map(i=>i.id).join(", ")}.`});const s=await I(r).run({fresh:!1},n);return{value:s.value,text:s.text}})),cloudTool=w({name:"cloud tool",summary:"Show a cloud tool: what it does, its input (as cloud call's input takes it) and its price",input:a.strictObject({tool:a.string().describe("The tool's name, as cloud list lists it")}),output:a.looseObject({name:a.string()})},(e,n)=>f(async()=>{const t=toolCommand(await C(p(n),e.tool));return{value:{name:e.tool,summary:t.spec.summary,about:t.about?.lines??[],...t.about?.value},text:_(t.spec,t.about?.lines)}})),cloudCall=w({name:"cloud call",summary:"Run a cloud tool with the account's credits: its output, the credits used, and the file it makes with its record; waits for a long one",input:a.strictObject({tool:a.string().describe("The tool's name, as cloud list lists it"),input:a.record(a.string(),a.unknown()).default({}).describe("Its input, by its input schema (cloud tool)"),quote:d.quote,file:d.file,force:d.force,wait:d.wait,resume:d.resume}),output:a.looseObject({tool:a.string()})},(e,n)=>f(async()=>{const{tool:t,input:r,...s}=e,i=toolCommand(await C(p(n),t)),o=i.spec.input.safeParse({...s,...Object.keys(r).length?{input:JSON.stringify(r)}:{}});if(!o.success)throw y(o.error.message);const l=await i.run(o.data,n);return{...l,value:{tool:t,...l.value}}}));
@@ -1,2 +1,2 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{McpServer as w}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as g}from"@modelcontextprotocol/sdk/server/stdio.js";import{CallToolRequestSchema as y,ListResourcesRequestSchema as S,ListToolsRequestSchema as b,ReadResourceRequestSchema as R}from"@modelcontextprotocol/sdk/types.js";import{z as d}from"zod";import{describeCommand as v,toolName as C}from"@allyhub-next/protocol";import{CommandError as l,defineCommand as M}from"../command.js";import{CardApp as O}from"./mcp-app.js";import{docResources as j,readDoc as N}from"./mcp-docs.js";const $="0.0.0";async function q(i,t,u){const c=(e,o=!1)=>({content:[{type:"text",text:JSON.stringify(e,null,2)}],...o?{isError:o}:{}}),a=i.spec.input.safeParse(t??{});if(!a.success){const e=a.error.issues[0];return c({error:{code:"usage",message:`${e?.path.join(".")??i.spec.name}: ${e?.message??"not valid"}.`}},!0)}try{const e=await i.run(a.data,u);return c(e.value)}catch(e){const o=e instanceof l?e:new l("failed",e instanceof Error?e.message:String(e));return c({error:{code:o.code,message:o.message,...o.hint===void 0?{}:{hint:o.hint}}},!0)}}export const mcp=M({name:"mcp",summary:"The commands as MCP tools, over stdio",input:d.strictObject({}),output:d.looseObject({}),examples:["claude mcp add allyhub -- allyhub mcp"],mcp:!1},async(i,t)=>{const{COMMANDS:u,MCP_COMMANDS:c}=await import("./index.js"),a=new Map([...u,...c].filter(s=>s.spec.mcp!==!1).map(s=>[C(s.spec.name),s]));console.log=console.error,console.info=console.error;const e=new w({name:"allyhub",version:$},{capabilities:{tools:{},resources:{}}}),o=new O(t),m=e.server;m.setRequestHandler(b,()=>({tools:[...o.tools(),...[...a].map(([s,r])=>{const n=Object.fromEntries(Object.entries(v(r.spec).input).filter(([h])=>h!=="$schema"));return{name:s,description:r.spec.summary,inputSchema:{type:"object",...n}}})]})),m.setRequestHandler(S,async()=>({resources:[...o.resources(),...await j(t.cwd)]})),m.setRequestHandler(R,async s=>{const{uri:r}=s.params;if(r===o.resources()[0]?.uri)return{contents:[await o.resource()]};const n=await N(t.cwd,r);if(n===void 0)throw new l("not-found",`allyhub has no resource ${r}.`);return{contents:[n]}}),m.setRequestHandler(y,(s,r)=>{if(o.has(s.params.name))return o.call(s.params.arguments);const n=a.get(s.params.name);if(!n)throw new l("unknown-tool",`allyhub has no tool ${s.params.name}.`);return q(n,s.params.arguments,{...t,signal:AbortSignal.any([t.signal,r.signal])})});const p=new g,f=new Promise(s=>{p.onclose=s});return await e.connect(p),process.stdin.once("end",()=>{e.close()}),t.signal.addEventListener("abort",()=>{e.close()}),await f,await o.close(),{value:{},text:""}});
2
+ import{McpServer as g}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as y}from"@modelcontextprotocol/sdk/server/stdio.js";import{CallToolRequestSchema as v,ListResourcesRequestSchema as k,ListToolsRequestSchema as S,ReadResourceRequestSchema as R}from"@modelcontextprotocol/sdk/types.js";import{z as u}from"zod";import{describeCommand as C,toolName as A}from"@allyhub-next/protocol";import{ASK_ABOVE as M,askingAbove as O,chargeQuestion as E}from"../charge.js";import{CommandError as p,defineCommand as T}from"../command.js";import{CardApp as j}from"./mcp-app.js";import{docResources as q,readDoc as N}from"./mcp-docs.js";const _="0.0.0",I=2147483647;async function P(n,a,d){const l=(e,t=!1)=>({content:[{type:"text",text:JSON.stringify(e,null,2)}],...t?{isError:t}:{}}),c=n.spec.input.safeParse(a??{});if(!c.success){const e=c.error.issues[0];return l({error:{code:"usage",message:`${e?.path.join(".")??n.spec.name}: ${e?.message??"not valid"}.`}},!0)}try{const e=await n.run(c.data,d);return l(e.value)}catch(e){const t=e instanceof p?e:new p("failed",e instanceof Error?e.message:String(e));return l({error:{code:t.code,message:t.message,...t.hint===void 0?{}:{hint:t.hint}}},!0)}}export const mcp=T({name:"mcp",summary:"The commands as MCP tools, over stdio",input:u.strictObject({ask:u.boolean().default(!0).describe("Ask the person before a cloud call that costs more than --ask-above credits, or one priced only by what it makes, where the client can ask (MCP's elicitation); --no-ask never asks"),askAbove:u.number().nonnegative().default(M).describe("The credits a call may cost without asking the person; 0 asks before every call that costs credits")}),output:u.looseObject({}),examples:["claude mcp add allyhub -- allyhub mcp","allyhub mcp --ask-above 50"],mcp:!1},async(n,a)=>{const{COMMANDS:d,MCP_COMMANDS:l}=await import("./index.js"),c=new Map([...d,...l].filter(s=>s.spec.mcp!==!1).map(s=>[A(s.spec.name),s]));console.log=console.error,console.info=console.error;const e=new g({name:"allyhub",version:_},{capabilities:{tools:{},resources:{}}}),t=new j(a),i=e.server;i.setRequestHandler(S,()=>({tools:[...t.tools(),...[...c].map(([s,o])=>{const r=Object.fromEntries(Object.entries(C(o.spec).input).filter(([m])=>m!=="$schema"));return{name:s,description:o.spec.summary,inputSchema:{type:"object",...r}}})]})),i.setRequestHandler(k,async()=>({resources:[...t.resources(),...await q(a.cwd)]})),i.setRequestHandler(R,async s=>{const{uri:o}=s.params;if(o===t.resources()[0]?.uri)return{contents:[await t.resource()]};const r=await N(a.cwd,o);if(r===void 0)throw new p("not-found",`allyhub has no resource ${o}.`);return{contents:[r]}}),i.setRequestHandler(v,(s,o)=>{if(t.has(s.params.name))return t.call(s.params.arguments);const r=c.get(s.params.name);if(!r)throw new p("unknown-tool",`allyhub has no tool ${s.params.name}.`);const m=AbortSignal.any([a.signal,o.signal]),b=n.ask&&i.getClientCapabilities()?.elicitation?.form;return P(r,s.params.arguments,{...a,signal:m,...b?{approve:O(n.askAbove,async w=>(await i.elicitInput(E(w),{signal:m,timeout:I,relatedRequestId:o.requestId})).action==="accept")}:{}})});const h=new y,f=new Promise(s=>{h.onclose=s});return await e.connect(h),process.stdin.once("end",()=>{e.close()}),a.signal.addEventListener("abort",()=>{e.close()}),await f,await t.close(),{value:{},text:""}});
@@ -1,4 +1,4 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{z as i}from"zod";import{projectSays as f}from"@allyhub-next/project";import{makeSay as y,quoteSays as $}from"@allyhub-next/cloud";import{EXIT as b}from"@allyhub-next/protocol";import{CommandError as v,defineCommand as w}from"../command.js";import{projectRoot as j}from"../project.js";import{cloudOf as k,cloudWork as S,plural as m}from"./cloud.js";import{dir as q}from"../fields.js";const h=o=>Math.round(o*1e6)/1e6;export const voice=w({name:"voice",summary:"Make the voice files a project's say(text) parts need, with their cloud voice tool, one per say that has none (assets/media/gen/say/<hash>, its words and its record); --quote prices them first",input:i.strictObject({item:i.string().optional().describe("Only this item's says: its id, a path into it, or a folder of items"),dir:q,quote:i.boolean().default(!1).describe("Say what making the missing files would cost, making nothing and charging nothing")}),positional:["item"],output:i.looseObject({says:i.number(),missing:i.array(i.looseObject({part:i.string(),stem:i.string()})).optional(),made:i.array(i.looseObject({part:i.string(),file:i.string()})).optional(),credits:i.number()}),examples:["allyhub voice --quote","allyhub voice launch/film"]},async(o,d)=>{const p=await j(d.cwd,o.dir),n=await f(p,o.item===void 0?{}:{piece:o.item});if(o.item!==void 0&&n.pieces.length===0)throw new v("no-item",`No video ${o.item} in the project.`,{exit:b.notFound});const s=n.says.filter(l=>l.file===void 0),g=`Every say has its file (${m(n.says.length,"say")}). Nothing to make.`;return await S(async()=>{const l=k(d);if(o.quote){const e=await $(l,s),a=t=>{const r=e.says[t]?.credits;return r===void 0?{}:{credits:r}};return{value:{says:n.says.length,missing:s.map((t,r)=>({piece:t.piece,part:t.part,tool:t.tool,...t.voice===void 0?{}:{voice:t.voice},...t.params===void 0?{}:{params:t.params},characters:t.text.length,stem:t.stem,...a(r)})),credits:e.credits,estimated:e.estimated},text:s.length===0?g:[`${m(s.length,"say")} without a file:`,...s.map((t,r)=>` ${t.piece} · ${t.part}: ${m(t.text.length,"character")}${a(r).credits===void 0?"":`, ${String(h(a(r).credits??0))} credits`}`),`${e.estimated?"About ":""}${String(e.credits)} credits in all. Nothing was charged; allyhub voice makes them.`].join(`
3
- `)}}const c=[];for(const e of s){d.progress(`${e.piece} · ${e.part}: ${e.tool}…`);const a=await y(l,p,e,{base:p,signal:d.signal});c.push({piece:e.piece,part:e.part,...a})}const u=h(c.reduce((e,a)=>e+a.credits,0));return{value:{says:n.says.length,made:c,kept:n.says.length-s.length,credits:u},text:c.length===0?g:[`Made ${m(c.length,"file")}:`,...c.map(e=>` ${e.file} (${e.piece} · ${e.part}, ${String(h(e.seconds))} s)`),`Credits used: ${String(u)}.`].join(`
2
+ import{z as i}from"zod";import{projectSays as y}from"@allyhub-next/project";import{declined as w,makeSay as $,quoteSays as g}from"@allyhub-next/cloud";import{EXIT as v}from"@allyhub-next/protocol";import{CommandError as b,defineCommand as j}from"../command.js";import{projectRoot as k}from"../project.js";import{cloudOf as S,cloudWork as q,plural as m}from"./cloud.js";import{dir as O}from"../fields.js";const h=a=>Math.round(a*1e6)/1e6;export const voice=j({name:"voice",summary:"Make the voice files a project's say(text) parts need, with their cloud voice tool, one per say that has none (assets/media/gen/say/<hash>, its words and its record); --quote prices them first",input:i.strictObject({item:i.string().optional().describe("Only this item's says: its id, a path into it, or a folder of items"),dir:O,quote:i.boolean().default(!1).describe("Say what making the missing files would cost, making nothing and charging nothing")}),positional:["item"],output:i.looseObject({says:i.number(),missing:i.array(i.looseObject({part:i.string(),stem:i.string()})).optional(),made:i.array(i.looseObject({part:i.string(),file:i.string()})).optional(),credits:i.number()}),examples:["allyhub voice --quote","allyhub voice launch/film"]},async(a,n)=>{const p=await k(n.cwd,a.dir),c=await y(p,a.item===void 0?{}:{piece:a.item});if(a.item!==void 0&&c.pieces.length===0)throw new b("no-item",`No video ${a.item} in the project.`,{exit:v.notFound});const o=c.says.filter(l=>l.file===void 0),u=`Every say has its file (${m(c.says.length,"say")}). Nothing to make.`;return await q(async()=>{const l=S(n);if(a.quote){const e=await g(l,o),s=t=>{const r=e.says[t]?.credits;return r===void 0?{}:{credits:r}};return{value:{says:c.says.length,missing:o.map((t,r)=>({piece:t.piece,part:t.part,tool:t.tool,...t.voice===void 0?{}:{voice:t.voice},...t.params===void 0?{}:{params:t.params},characters:t.text.length,stem:t.stem,...s(r)})),credits:e.credits,estimated:e.estimated},text:o.length===0?u:[`${m(o.length,"say")} without a file:`,...o.map((t,r)=>` ${t.piece} · ${t.part}: ${m(t.text.length,"character")}${s(r).credits===void 0?"":`, ${String(h(s(r).credits??0))} credits`}`),`${e.estimated?"About ":""}${String(e.credits)} credits in all. Nothing was charged; allyhub voice makes them.`].join(`
3
+ `)}}const d=[];if(n.approve!==void 0&&o.length>0){const e=await g(l,o);if(!await n.approve({tool:"voice",title:`${m(o.length,"voice file")} with ${e.titles.join(", ")}`,credits:e.credits,estimated:e.estimated,unknown:e.unknown}))throw w("voice")}for(const e of o){n.progress(`${e.piece} · ${e.part}: ${e.tool}…`);const s=await $(l,p,e,{base:p,signal:n.signal});d.push({piece:e.piece,part:e.part,...s})}const f=h(d.reduce((e,s)=>e+s.credits,0));return{value:{says:c.says.length,made:d,kept:c.says.length-o.length,credits:f},text:d.length===0?u:[`Made ${m(d.length,"file")}:`,...d.map(e=>` ${e.file} (${e.piece} · ${e.part}, ${String(h(e.seconds))} s)`),`Credits used: ${String(f)}.`].join(`
4
4
  `)}})});
@@ -0,0 +1,2 @@
1
+ // The types of @allyhub-next/model/three, which allyhub's build lends a project by that name.
2
+ export * from "../../node_modules/@allyhub-next/model/dist/three.js";
@@ -0,0 +1,2 @@
1
+ // The types of @allyhub-next/model, which allyhub's build lends a project by that name.
2
+ export * from "../../node_modules/@allyhub-next/model/dist/index.js";
@@ -0,0 +1,2 @@
1
+ // The types of @allyhub-next/scenery-host/layer, which allyhub's build lends a project by that name.
2
+ export * from "../../node_modules/@allyhub-next/scenery-host/dist/layer/index.js";
package/dist/main.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
- import{readFileSync as D}from"node:fs";import{EXIT as m,describeCommand as I}from"@allyhub-next/protocol";import{readArgs as R}from"./args.js";import{CommandError as h}from"./command.js";import{COMMAND_SOURCES as M,COMMANDS as x}from"./commands/index.js";import{commandHelp as j,listHelp as T,workHelp as H}from"./help.js";import{sdkDocs as J}from"./sdk-docs.js";import{WORKS as G,cloudNouns as U,workNamed as W,workTitle as E}from"./works.js";const N=JSON.parse(D(new URL("../package.json",import.meta.url),"utf8")).version,F={stdout:t=>process.stdout.write(t),stderr:t=>process.stderr.write(t),cwd:process.cwd(),env:process.env};export function findCommand(t,s=x){let i;for(const c of s){const l=c.spec.name.split(" ");l.every((o,a)=>t[a]===o)&&l.length>(i?.length??0)&&(i={command:c,length:l.length})}return i?{command:i.command,rest:t.slice(i.length)}:{rest:[...t]}}export async function resolveCommand(t,s,i=x,c=M){const l=findCommand(t,i);if(l.command)return l;for(const o of c){const a=await o.resolve(t,s);if(a)return a}return l}const A=t=>({...I(t.spec),...t.about?.value});export async function main(t,s=F,i=x,c=M){const l=t.includes("--json"),o=t.filter(n=>n!=="--json"),a=(n,e)=>{s.stdout(l?`${JSON.stringify(n,null,2)}
2
+ import{readFileSync as R}from"node:fs";import{EXIT as m,describeCommand as M}from"@allyhub-next/protocol";import{readArgs as T}from"./args.js";import{studioApprove as H}from"./charge.js";import{CommandError as h}from"./command.js";import{COMMAND_SOURCES as j,COMMANDS as x}from"./commands/index.js";import{commandHelp as A,listHelp as J,workHelp as G}from"./help.js";import{sdkDocs as U}from"./sdk-docs.js";import{WORKS as W,cloudNouns as F,workNamed as K,workTitle as E}from"./works.js";const N=JSON.parse(R(new URL("../package.json",import.meta.url),"utf8")).version,L={stdout:t=>process.stdout.write(t),stderr:t=>process.stderr.write(t),cwd:process.cwd(),env:process.env};export function findCommand(t,o=x){let i;for(const c of o){const u=c.spec.name.split(" ");u.every((r,a)=>t[a]===r)&&u.length>(i?.length??0)&&(i={command:c,length:u.length})}return i?{command:i.command,rest:t.slice(i.length)}:{rest:[...t]}}export async function resolveCommand(t,o,i=x,c=j){const u=findCommand(t,i);if(u.command)return u;for(const r of c){const a=await r.resolve(t,o);if(a)return a}return u}const D=t=>({...M(t.spec),...t.about?.value});export async function main(t,o=L,i=x,c=j){const u=t.includes("--json"),r=t.filter(n=>n!=="--json"),a=(n,e)=>{o.stdout(u?`${JSON.stringify(n,null,2)}
3
3
  `:`${e}
4
- `)},S=i.map(n=>n.spec),b=new AbortController,y={cwd:s.cwd,env:s.env,progress:n=>{s.stderr(`${n}
5
- `)},signal:b.signal};if(o[0]==="--version"||o[0]==="-v")return a({version:N},N),m.ok;if(o.length===0||o[0]==="help"||o[0]==="--help"||o[0]==="-h"){const n=o.slice(1),e=await J(s.cwd).catch(()=>{}),k=async()=>{const r=await Promise.all(c.map(u=>u.nouns(y).catch(()=>{})));return r.some(u=>u===void 0)?void 0:r.flatMap(u=>u??[])};if(n.length===0){const r=await k();return a({version:N,docs:e?.dir,works:G.map(u=>({...u,title:E(u,r)})),commands:S.map(I),made:[...c.flatMap(u=>u.entries),...r??[]]},T(S,c,r,e?.dir)),m.ok}const d=n.length===1?W(n[0]??""):void 0;if(d){const r=d.cloud===void 0?[]:await k();return a({...d,title:E(d,r),...d.cloud===void 0?{}:{cloudWorks:r&&U(d,r)},docsDir:e?.dir},H(d,S,c,e?.dir,r)),m.ok}let p;try{p=await resolveCommand(n,y,i,c)}catch(r){return g(r)}const{command:f,rest:O}=p;return f&&p.list===!0?await C(f,O):!f||O.length>0?g(new h("unknown-command",`allyhub has no command "${n.join(" ")}".`,{exit:m.usage,hint:"allyhub help lists them and the works."})):(a(A(f),j(f.spec,f.about?.lines)),m.ok)}let $;try{$=await resolveCommand(o,y,i,c)}catch(n){return g(n)}const{command:w,rest:v}=$;if(!w)return g(new h("unknown-command",`allyhub has no command "${o[0]??""}".`,{exit:m.usage,hint:"allyhub help lists them."}));if(v.includes("--help")||v.includes("-h"))return a(A(w),j(w.spec,w.about?.lines)),m.ok;return await C(w,v);async function C(n,e){const k=()=>{b.abort(new h("interrupted","Stopped.",{exit:m.interrupted}))};process.once("SIGINT",k);try{const d=R(n.spec,e),p=await n.run(d,y);return a(p.value,p.text),p.exit??m.ok}catch(d){return g(d)}finally{process.off("SIGINT",k)}}function g(n){const e=n instanceof h?n:b.signal.aborted?new h("interrupted","Stopped.",{exit:m.interrupted}):new h("failed",n instanceof Error?n.message:String(n));return l?s.stdout(`${JSON.stringify({error:{code:e.code,message:e.message,...e.hint?{hint:e.hint}:{}}},null,2)}
6
- `):s.stderr(`${e.message}${e.hint?`
4
+ `)},S=i.map(n=>n.spec),v=new AbortController,$=H(o.env,o.cwd,v.signal),y={cwd:o.cwd,env:o.env,progress:n=>{o.stderr(`${n}
5
+ `)},signal:v.signal,...$===void 0?{}:{approve:$}};if(r[0]==="--version"||r[0]==="-v")return a({version:N},N),m.ok;if(r.length===0||r[0]==="help"||r[0]==="--help"||r[0]==="-h"){const n=r.slice(1),e=await U(o.cwd).catch(()=>{}),k=async()=>{const s=await Promise.all(c.map(l=>l.nouns(y).catch(()=>{})));return s.some(l=>l===void 0)?void 0:s.flatMap(l=>l??[])};if(n.length===0){const s=await k();return a({version:N,docs:e?.dir,works:W.map(l=>({...l,title:E(l,s)})),commands:S.map(M),made:[...c.flatMap(l=>l.entries),...s??[]]},J(S,c,s,e?.dir)),m.ok}const d=n.length===1?K(n[0]??""):void 0;if(d){const s=d.cloud===void 0?[]:await k();return a({...d,title:E(d,s),...d.cloud===void 0?{}:{cloudWorks:s&&F(d,s)},docsDir:e?.dir},G(d,S,c,e?.dir,s)),m.ok}let p;try{p=await resolveCommand(n,y,i,c)}catch(s){return g(s)}const{command:f,rest:I}=p;return f&&p.list===!0?await O(f,I):!f||I.length>0?g(new h("unknown-command",`allyhub has no command "${n.join(" ")}".`,{exit:m.usage,hint:"allyhub help lists them and the works."})):(a(D(f),A(f.spec,f.about?.lines)),m.ok)}let C;try{C=await resolveCommand(r,y,i,c)}catch(n){return g(n)}const{command:w,rest:b}=C;if(!w)return g(new h("unknown-command",`allyhub has no command "${r[0]??""}".`,{exit:m.usage,hint:"allyhub help lists them."}));if(b.includes("--help")||b.includes("-h"))return a(D(w),A(w.spec,w.about?.lines)),m.ok;return await O(w,b);async function O(n,e){const k=()=>{v.abort(new h("interrupted","Stopped.",{exit:m.interrupted}))};process.once("SIGINT",k);try{const d=T(n.spec,e),p=await n.run(d,y);return a(p.value,p.text),p.exit??m.ok}catch(d){return g(d)}finally{process.off("SIGINT",k)}}function g(n){const e=n instanceof h?n:v.signal.aborted?new h("interrupted","Stopped.",{exit:m.interrupted}):new h("failed",n instanceof Error?n.message:String(n));return u?o.stdout(`${JSON.stringify({error:{code:e.code,message:e.message,...e.hint?{hint:e.hint}:{}}},null,2)}
6
+ `):o.stderr(`${e.message}${e.hint?`
7
7
  ${e.hint}`:""}
8
8
  `),e.exit}}