@bud.sh/app 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist/client/assets/{index-sj6mWw9-.js → index-GPPa1XPO.js} +2 -2
  2. package/dist/client/assets/workspace-CznMN7F6.js +2 -0
  3. package/dist/client/index.html +1 -1
  4. package/dist/hosted/hosted.js +233 -38
  5. package/dist/node/index.js +95 -0
  6. package/dist/node-host/assets/abap-LtYK6g-v.js +3 -0
  7. package/dist/node-host/assets/actionscript-3-CfsDl31I.js +3 -0
  8. package/dist/node-host/assets/ada-CvTdxb4T.js +3 -0
  9. package/dist/node-host/assets/ahk-HN_I_y_3.js +3 -0
  10. package/dist/node-host/assets/ahk2-bJ5Wm9-K.js +3 -0
  11. package/dist/node-host/assets/andromeeda-BASpqCeJ.js +4 -0
  12. package/dist/node-host/assets/angular-html-C4SmZqv0.js +33 -0
  13. package/dist/node-host/assets/angular-ts-X1i_WOxI.js +27 -0
  14. package/dist/node-host/assets/apache-BIl2qPOf.js +3 -0
  15. package/dist/node-host/assets/apex-CybrBQ0z.js +3 -0
  16. package/dist/node-host/assets/api_vite-DSBC5Nzy.js +5 -0
  17. package/dist/node-host/assets/apl-CDTyNgE2.js +17 -0
  18. package/dist/node-host/assets/applescript-CJ80B5XJ.js +3 -0
  19. package/dist/node-host/assets/ara-IxnQjO6j.js +3 -0
  20. package/dist/node-host/assets/asciidoc-xKuVlNk6.js +3 -0
  21. package/dist/node-host/assets/asm-wBDSgBbA.js +3 -0
  22. package/dist/node-host/assets/astro-BiZFCPSt.js +19 -0
  23. package/dist/node-host/assets/aurora-x-DugsLcii.js +4 -0
  24. package/dist/node-host/assets/awk-D6dA05Ye.js +3 -0
  25. package/dist/node-host/assets/ayu-dark-BT3qdi3o.js +4 -0
  26. package/dist/node-host/assets/ayu-light-BVZyHoh9.js +4 -0
  27. package/dist/node-host/assets/ayu-mirage-XFwUVZQZ.js +4 -0
  28. package/dist/node-host/assets/ballerina-DIdXD2KH.js +3 -0
  29. package/dist/node-host/assets/bat-Dx8nnxXE.js +3 -0
  30. package/dist/node-host/assets/beancount-BG2UQN2D.js +3 -0
  31. package/dist/node-host/assets/berry-CgA2ea0_.js +3 -0
  32. package/dist/node-host/assets/bibtex-BzgdqG3s.js +3 -0
  33. package/dist/node-host/assets/bicep-CZ338dSk.js +3 -0
  34. package/dist/node-host/assets/bird2-BMprQDNV.js +3 -0
  35. package/dist/node-host/assets/blade-cZjv4Qad.js +21 -0
  36. package/dist/node-host/assets/bsl-Bh8bzcoy.js +6 -0
  37. package/dist/node-host/assets/build-Dn-L17Oj.js +5372 -0
  38. package/dist/node-host/assets/c-BXsbGxlp.js +6 -0
  39. package/dist/node-host/assets/c3-u0qNrniV.js +3 -0
  40. package/dist/node-host/assets/cadence-B1ELWULD.js +3 -0
  41. package/dist/node-host/assets/cairo-BsQhEq3R.js +6 -0
  42. package/dist/node-host/assets/canvas-BZhzizzt.js +1066 -0
  43. package/dist/node-host/assets/catppuccin-frappe-D20KODDN.js +4 -0
  44. package/dist/node-host/assets/catppuccin-latte-eGLVHIUJ.js +4 -0
  45. package/dist/node-host/assets/catppuccin-macchiato-bQGch4PY.js +4 -0
  46. package/dist/node-host/assets/catppuccin-mocha-Bes8-0Mr.js +4 -0
  47. package/dist/node-host/assets/chapel-cEZNBFmv.js +6 -0
  48. package/dist/node-host/assets/clarity-BkOxTQMf.js +3 -0
  49. package/dist/node-host/assets/clojure-DDsQ0FaV.js +3 -0
  50. package/dist/node-host/assets/cloneFileDiffMetadata-C1BcNpxN.js +3075 -0
  51. package/dist/node-host/assets/cmake-DPsCB_V6.js +3 -0
  52. package/dist/node-host/assets/cobol-BpMD18Rr.js +11 -0
  53. package/dist/node-host/assets/codeowners-CxEKPWu0.js +3 -0
  54. package/dist/node-host/assets/codeql-BwdvwJnv.js +3 -0
  55. package/dist/node-host/assets/coffee-BX_u-2R1.js +6 -0
  56. package/dist/node-host/assets/comment-data-nUlI0szN.js +92501 -0
  57. package/dist/node-host/assets/common-lisp-DJtwvW4V.js +3 -0
  58. package/dist/node-host/assets/coq-Byd42hNw.js +3 -0
  59. package/dist/node-host/assets/cpp-DjJRL98I.js +22 -0
  60. package/dist/node-host/assets/crystal-Cz-dKioR.js +19 -0
  61. package/dist/node-host/assets/csharp-Cx443ZdC.js +3 -0
  62. package/dist/node-host/assets/css-CWNyyZRg.js +6 -0
  63. package/dist/node-host/assets/csv-DqIVFkK7.js +3 -0
  64. package/dist/node-host/assets/cue-B5KneM5p.js +3 -0
  65. package/dist/node-host/assets/cypher-D8Bb8Cq2.js +3 -0
  66. package/dist/node-host/assets/d-BQY8TDgQ.js +3 -0
  67. package/dist/node-host/assets/dark-plus-BGuiqa1B.js +4 -0
  68. package/dist/node-host/assets/dart-BZ3YsgDB.js +3 -0
  69. package/dist/node-host/assets/dax-S-Noo-ku.js +3 -0
  70. package/dist/node-host/assets/desktop-BgOb7Aj4.js +3 -0
  71. package/dist/node-host/assets/diff-Blb4MjsC.js +3 -0
  72. package/dist/node-host/assets/dist-CVXhIZqO.js +6659 -0
  73. package/dist/node-host/assets/docker-PC1tuYpa.js +3 -0
  74. package/dist/node-host/assets/dotenv-BNWDqzYB.js +3 -0
  75. package/dist/node-host/assets/dracula-0CVA2XY5.js +4 -0
  76. package/dist/node-host/assets/dracula-soft-Dk9bpbVU.js +4 -0
  77. package/dist/node-host/assets/dream-maker-CngiPd8U.js +3 -0
  78. package/dist/node-host/assets/edge-D1_nghia.js +13 -0
  79. package/dist/node-host/assets/edit-DjpTbnEc.js +9788 -0
  80. package/dist/node-host/assets/elixir-x6BMZ6zW.js +6 -0
  81. package/dist/node-host/assets/elm-CiAjb3qf.js +6 -0
  82. package/dist/node-host/assets/emacs-lisp-DPCJASlD.js +3 -0
  83. package/dist/node-host/assets/erb-DzXTnEFa.js +11 -0
  84. package/dist/node-host/assets/erlang-DALBVNgL.js +6 -0
  85. package/dist/node-host/assets/everforest-dark-CRjTbhh5.js +4 -0
  86. package/dist/node-host/assets/everforest-light-CEeYFLn8.js +4 -0
  87. package/dist/node-host/assets/fennel-B3wtZRne.js +3 -0
  88. package/dist/node-host/assets/files-CTzcWGjb.js +3771 -0
  89. package/dist/node-host/assets/fish-D7qAeWQz.js +3 -0
  90. package/dist/node-host/assets/fluent-BjfpB34g.js +3 -0
  91. package/dist/node-host/assets/fortran-fixed-form-BbzsUHx4.js +6 -0
  92. package/dist/node-host/assets/fortran-free-form-yxJ7igsv.js +3 -0
  93. package/dist/node-host/assets/fsharp-D2o1Vyx0.js +6 -0
  94. package/dist/node-host/assets/gdresource-aTcOcjSd.js +11 -0
  95. package/dist/node-host/assets/gdscript-CSSSWtkL.js +3 -0
  96. package/dist/node-host/assets/gdshader-D7JfdFV3.js +3 -0
  97. package/dist/node-host/assets/genie-DnK2KWIP.js +3 -0
  98. package/dist/node-host/assets/gherkin-D6Lr12YQ.js +3 -0
  99. package/dist/node-host/assets/git-commit-BU1ZeqU-.js +6 -0
  100. package/dist/node-host/assets/git-rebase-BBwLmuqc.js +6 -0
  101. package/dist/node-host/assets/github-dark-BXgKmOw_.js +4 -0
  102. package/dist/node-host/assets/github-dark-default-DzJQXksd.js +4 -0
  103. package/dist/node-host/assets/github-dark-dimmed-B1pEmGtS.js +4 -0
  104. package/dist/node-host/assets/github-dark-high-contrast-BkHIa6jc.js +4 -0
  105. package/dist/node-host/assets/github-light-BKRlUbaB.js +4 -0
  106. package/dist/node-host/assets/github-light-default-BU3eYkzs.js +4 -0
  107. package/dist/node-host/assets/github-light-high-contrast-B3MumDcI.js +4 -0
  108. package/dist/node-host/assets/gleam-CTllUdfC.js +3 -0
  109. package/dist/node-host/assets/glimmer-js-Cr4KUylv.js +15 -0
  110. package/dist/node-host/assets/glimmer-ts-W_3bhuUU.js +15 -0
  111. package/dist/node-host/assets/glsl-CV8OarLe.js +8 -0
  112. package/dist/node-host/assets/gn-CpIn4Dcw.js +3 -0
  113. package/dist/node-host/assets/gnuplot-DgWvVXI8.js +3 -0
  114. package/dist/node-host/assets/go-aXtTCanQ.js +3 -0
  115. package/dist/node-host/assets/graphql-BzQEBhBd.js +17 -0
  116. package/dist/node-host/assets/groovy-Bw2Ku4bU.js +3 -0
  117. package/dist/node-host/assets/gruvbox-dark-hard-B0ecF443.js +4 -0
  118. package/dist/node-host/assets/gruvbox-dark-medium-BQnpC39k.js +4 -0
  119. package/dist/node-host/assets/gruvbox-dark-soft-DFZUgESr.js +4 -0
  120. package/dist/node-host/assets/gruvbox-light-hard-CuB_LOJr.js +4 -0
  121. package/dist/node-host/assets/gruvbox-light-medium-idDHgxjs.js +4 -0
  122. package/dist/node-host/assets/gruvbox-light-soft-CfWH49MY.js +4 -0
  123. package/dist/node-host/assets/hack-DhYZEMlu.js +11 -0
  124. package/dist/node-host/assets/haml-CRid5kR3.js +13 -0
  125. package/dist/node-host/assets/handlebars-Sm6kCGmL.js +15 -0
  126. package/dist/node-host/assets/haskell-CfGsE1Cf.js +3 -0
  127. package/dist/node-host/assets/haxe-QaqXWmIB.js +3 -0
  128. package/dist/node-host/assets/hcl-DHg_Osgo.js +3 -0
  129. package/dist/node-host/assets/hjson-Cuaphql8.js +3 -0
  130. package/dist/node-host/assets/hlsl-BJLUNfne.js +3 -0
  131. package/dist/node-host/assets/horizon-bright-Ba6M8QSV.js +4 -0
  132. package/dist/node-host/assets/horizon-h92C5OlZ.js +4 -0
  133. package/dist/node-host/assets/houston-EQnPegWq.js +4 -0
  134. package/dist/node-host/assets/html-derivative-Cm8plTfc.js +6 -0
  135. package/dist/node-host/assets/html-j1vihRKA.js +13 -0
  136. package/dist/node-host/assets/http-BZNc4yhO.js +15 -0
  137. package/dist/node-host/assets/hurl-O8ckTHPH.js +13 -0
  138. package/dist/node-host/assets/hxml-9hvSHCPQ.js +6 -0
  139. package/dist/node-host/assets/hy-CJKxDzbh.js +3 -0
  140. package/dist/node-host/assets/imba-96qKoJCa.js +3 -0
  141. package/dist/node-host/assets/ini-C24lZfdM.js +3 -0
  142. package/dist/node-host/assets/java-CFxSaKyu.js +6 -0
  143. package/dist/node-host/assets/javascript-D44WgUBn.js +6 -0
  144. package/dist/node-host/assets/jinja-BkVH86If.js +10 -0
  145. package/dist/node-host/assets/jison-DOInKsmT.js +6 -0
  146. package/dist/node-host/assets/jiti-CjBwKumX.js +5461 -0
  147. package/dist/node-host/assets/json-CnGl9idC.js +6 -0
  148. package/dist/node-host/assets/json5-xULSgPQI.js +3 -0
  149. package/dist/node-host/assets/jsonc-Cu6rqcrJ.js +3 -0
  150. package/dist/node-host/assets/jsonl-Bp0qqr10.js +3 -0
  151. package/dist/node-host/assets/jsonnet-BafgE6cE.js +3 -0
  152. package/dist/node-host/assets/jssm-Dx5A5sBR.js +3 -0
  153. package/dist/node-host/assets/jsx-Dv6553c2.js +6 -0
  154. package/dist/node-host/assets/julia-CnoY-eZu.js +17 -0
  155. package/dist/node-host/assets/just-rCgUmVkD.js +19 -0
  156. package/dist/node-host/assets/kanagawa-dragon-DgDvwi3B.js +4 -0
  157. package/dist/node-host/assets/kanagawa-lotus-BgoQro20.js +4 -0
  158. package/dist/node-host/assets/kanagawa-wave-DgXEowHs.js +4 -0
  159. package/dist/node-host/assets/kdl-DkTyxPcj.js +3 -0
  160. package/dist/node-host/assets/kotlin-BHE8CoV9.js +3 -0
  161. package/dist/node-host/assets/kusto-6FdaWTzR.js +3 -0
  162. package/dist/node-host/assets/laserwave-IxBH_3yW.js +4 -0
  163. package/dist/node-host/assets/latex-DTvJHHg_.js +6 -0
  164. package/dist/node-host/assets/lean-BwOKScIt.js +3 -0
  165. package/dist/node-host/assets/less-BzbdhFUi.js +3 -0
  166. package/dist/node-host/assets/lib-BzDu3tbz.js +17484 -0
  167. package/dist/node-host/assets/light-plus-S8JBx6is.js +4 -0
  168. package/dist/node-host/assets/liquid-praBF2DO.js +15 -0
  169. package/dist/node-host/assets/llvm-ZNG_yAr9.js +3 -0
  170. package/dist/node-host/assets/log-Dad54gsi.js +3 -0
  171. package/dist/node-host/assets/logo-DTXV8SKw.js +3 -0
  172. package/dist/node-host/assets/lru-C0_oUet4.js +134 -0
  173. package/dist/node-host/assets/lua-CiYoSQn2.js +8 -0
  174. package/dist/node-host/assets/luau-DlImmvOM.js +3 -0
  175. package/dist/node-host/assets/main-D0ab5M4V.js +2353 -0
  176. package/dist/node-host/assets/make-B2ukzWs3.js +3 -0
  177. package/dist/node-host/assets/markdown-CkmxmzqY.js +3 -0
  178. package/dist/node-host/assets/marko-Din1W3ot.js +15 -0
  179. package/dist/node-host/assets/material-theme-D1f3HBq-.js +4 -0
  180. package/dist/node-host/assets/material-theme-darker-ExzYhT0j.js +4 -0
  181. package/dist/node-host/assets/material-theme-lighter-D6gH9nnA.js +4 -0
  182. package/dist/node-host/assets/material-theme-ocean-D1w5BPAa.js +4 -0
  183. package/dist/node-host/assets/material-theme-palenight-CkqWmVpF.js +4 -0
  184. package/dist/node-host/assets/matlab-CfRK6IMC.js +3 -0
  185. package/dist/node-host/assets/mdc-DrUS0kOP.js +13 -0
  186. package/dist/node-host/assets/mdx-BK9ZufRc.js +3 -0
  187. package/dist/node-host/assets/mermaid-ItFqCK9s.js +3 -0
  188. package/dist/node-host/assets/min-dark-npsJH98j.js +4 -0
  189. package/dist/node-host/assets/min-light-DUk1XsVt.js +4 -0
  190. package/dist/node-host/assets/mipsasm-EL46Y4Xg.js +3 -0
  191. package/dist/node-host/assets/mojo-CsUSYzsu.js +3 -0
  192. package/dist/node-host/assets/monokai-CfFRWUNl.js +4 -0
  193. package/dist/node-host/assets/moonbit-BuY4M1CG.js +3 -0
  194. package/dist/node-host/assets/move-B-o8dn0N.js +3 -0
  195. package/dist/node-host/assets/narrat-D9rrR0H5.js +3 -0
  196. package/dist/node-host/assets/nextflow-ByPelpfh.js +6 -0
  197. package/dist/node-host/assets/nextflow-groovy-kiH-pxwE.js +3 -0
  198. package/dist/node-host/assets/nginx-CqxQjy7t.js +6 -0
  199. package/dist/node-host/assets/night-owl-BS7V-av_.js +4 -0
  200. package/dist/node-host/assets/night-owl-light-CZtRawYE.js +4 -0
  201. package/dist/node-host/assets/nim-BJfyW_Eo.js +21 -0
  202. package/dist/node-host/assets/nix-NHxlegoK.js +7 -0
  203. package/dist/node-host/assets/node-CaLaDAar.js +783 -0
  204. package/dist/node-host/assets/nord-BFh54Nqz.js +4 -0
  205. package/dist/node-host/assets/nsis-C3tUpeAt.js +3 -0
  206. package/dist/node-host/assets/nushell-Dx3871HW.js +3 -0
  207. package/dist/node-host/assets/objective-c-6dJF64Dt.js +3 -0
  208. package/dist/node-host/assets/objective-cpp-_ooRQ-PY.js +3 -0
  209. package/dist/node-host/assets/ocaml-vm1Y8An6.js +3 -0
  210. package/dist/node-host/assets/odin-vjOJSyfV.js +3 -0
  211. package/dist/node-host/assets/one-dark-pro-zDovGosB.js +4 -0
  212. package/dist/node-host/assets/one-light-gmHK3iK6.js +4 -0
  213. package/dist/node-host/assets/openscad-jn-f1Ocl.js +3 -0
  214. package/dist/node-host/assets/org-kbyZnkNe.js +101 -0
  215. package/dist/node-host/assets/pages-0aWH7z1j.js +578 -0
  216. package/dist/node-host/assets/pascal-D8-gNZ2I.js +3 -0
  217. package/dist/node-host/assets/perl-Ck21ZEIA.js +17 -0
  218. package/dist/node-host/assets/php-BI2xxNig.js +19 -0
  219. package/dist/node-host/assets/pierre-dark-DDWDl8g6.js +4 -0
  220. package/dist/node-host/assets/pierre-dark-protanopia-deuteranopia-C35UMuvO.js +4 -0
  221. package/dist/node-host/assets/pierre-dark-soft-Bb-4-biO.js +4 -0
  222. package/dist/node-host/assets/pierre-dark-tritanopia-CIJISGWF.js +4 -0
  223. package/dist/node-host/assets/pierre-dark-vibrant-8oZzB3gw.js +4 -0
  224. package/dist/node-host/assets/pierre-light-CWhW4NrH.js +4 -0
  225. package/dist/node-host/assets/pierre-light-protanopia-deuteranopia-u0U7N4Hn.js +4 -0
  226. package/dist/node-host/assets/pierre-light-soft-BCU6fuhO.js +4 -0
  227. package/dist/node-host/assets/pierre-light-tritanopia-3c8Yx3co.js +4 -0
  228. package/dist/node-host/assets/pierre-light-vibrant-Cwh332o_.js +4 -0
  229. package/dist/node-host/assets/pkl-C7lWzykI.js +3 -0
  230. package/dist/node-host/assets/plastic-DtdaCjub.js +4 -0
  231. package/dist/node-host/assets/plsql-DCNXypXO.js +3 -0
  232. package/dist/node-host/assets/po-IjpR1yHO.js +3 -0
  233. package/dist/node-host/assets/poimandres-Hdda6aHK.js +4 -0
  234. package/dist/node-host/assets/polar-4pN1JrJ8.js +3 -0
  235. package/dist/node-host/assets/postcss-0FnF2XR3.js +5833 -0
  236. package/dist/node-host/assets/postcss-D1gKt4z_.js +3 -0
  237. package/dist/node-host/assets/postcss-import-D5DErX4i.js +445 -0
  238. package/dist/node-host/assets/powerquery-SrvS_NBM.js +3 -0
  239. package/dist/node-host/assets/powershell-DvPkO2jl.js +3 -0
  240. package/dist/node-host/assets/prisma-4G_BaF_i.js +3 -0
  241. package/dist/node-host/assets/project-branches-1zs_0J_y.js +600 -0
  242. package/dist/node-host/assets/project-thread-links-LpUAGcDr.js +241 -0
  243. package/dist/node-host/assets/prolog-Bacii3Ue.js +3 -0
  244. package/dist/node-host/assets/prompt-CH6TK0bC-ZEO69UbU.js +885 -0
  245. package/dist/node-host/assets/proto-ClkOcAW0.js +3 -0
  246. package/dist/node-host/assets/pug-Du-dOfS3.js +13 -0
  247. package/dist/node-host/assets/puppet-CQlPp728.js +3 -0
  248. package/dist/node-host/assets/purescript-CLpaGMbw.js +3 -0
  249. package/dist/node-host/assets/python-BjnOIxPe.js +3 -0
  250. package/dist/node-host/assets/qml-BcFatdsQ.js +6 -0
  251. package/dist/node-host/assets/qmldir-Dz8ttxjf.js +3 -0
  252. package/dist/node-host/assets/qss-Iltvkn1C.js +3 -0
  253. package/dist/node-host/assets/r-DvDYa_8Q.js +6 -0
  254. package/dist/node-host/assets/racket-DRv7j6nv.js +3 -0
  255. package/dist/node-host/assets/raku-DI9yGpeW.js +3 -0
  256. package/dist/node-host/assets/razor-vGjCiVYw.js +11 -0
  257. package/dist/node-host/assets/rbs-D_4FkXDS.js +3 -0
  258. package/dist/node-host/assets/red-VqZFRByZ.js +4 -0
  259. package/dist/node-host/assets/reg-DpJf71oO.js +3 -0
  260. package/dist/node-host/assets/regexp-CE_3vZDh.js +6 -0
  261. package/dist/node-host/assets/rel-BT0iIKKw.js +3 -0
  262. package/dist/node-host/assets/riscv-CvzikGLb.js +3 -0
  263. package/dist/node-host/assets/rolldown-runtime-DktXgydw.js +35 -0
  264. package/dist/node-host/assets/ron-DzAo6FTJ.js +3 -0
  265. package/dist/node-host/assets/rose-pine-DiTkEueR.js +4 -0
  266. package/dist/node-host/assets/rose-pine-dawn-tfo5y2X0.js +4 -0
  267. package/dist/node-host/assets/rose-pine-moon-C0gON9XN.js +4 -0
  268. package/dist/node-host/assets/rosmsg-CyYq6XdT.js +3 -0
  269. package/dist/node-host/assets/rst-BqrTc4by.js +23 -0
  270. package/dist/node-host/assets/ruby-DLXfYriJ.js +31 -0
  271. package/dist/node-host/assets/rust-CaJo2YYS.js +3 -0
  272. package/dist/node-host/assets/sas-DJAJgMrq.js +6 -0
  273. package/dist/node-host/assets/sass-DI2zJwx7.js +3 -0
  274. package/dist/node-host/assets/scala-pMGZAs9j.js +3 -0
  275. package/dist/node-host/assets/scheme-D3A2QBtM.js +3 -0
  276. package/dist/node-host/assets/screen-DQoTOWYR.js +494 -0
  277. package/dist/node-host/assets/scss-n4nz8dJI.js +8 -0
  278. package/dist/node-host/assets/sdbl-CdQg5gu1.js +3 -0
  279. package/dist/node-host/assets/shaderlab-5KHT7nQ3.js +6 -0
  280. package/dist/node-host/assets/shellscript-BfuVOb-a.js +6 -0
  281. package/dist/node-host/assets/shellsession-hT9eQUDu.js +6 -0
  282. package/dist/node-host/assets/slack-dark-v8P_eXr6.js +4 -0
  283. package/dist/node-host/assets/slack-ochin-D8SyEdKz.js +4 -0
  284. package/dist/node-host/assets/smalltalk-D4IpSogw.js +3 -0
  285. package/dist/node-host/assets/smithy-BRyN83Yn.js +3 -0
  286. package/dist/node-host/assets/snazzy-light-BtkQkvXb.js +4 -0
  287. package/dist/node-host/assets/solarized-dark-B8nAdMfM.js +4 -0
  288. package/dist/node-host/assets/solarized-light-B-3F1INj.js +4 -0
  289. package/dist/node-host/assets/solidity-DPVu0wkJ.js +3 -0
  290. package/dist/node-host/assets/soy-Cbnz3v4z.js +6 -0
  291. package/dist/node-host/assets/sparql-cTZV4yOr.js +6 -0
  292. package/dist/node-host/assets/splunk-xP_ZjUH2.js +3 -0
  293. package/dist/node-host/assets/sql-DEvbt_rU.js +6 -0
  294. package/dist/node-host/assets/ssh-config-DXFPABYp.js +3 -0
  295. package/dist/node-host/assets/stata-0wnAnxv2.js +6 -0
  296. package/dist/node-host/assets/stylus-ZZDn1yUO.js +3 -0
  297. package/dist/node-host/assets/surrealql-70--UPGf.js +6 -0
  298. package/dist/node-host/assets/svelte-COI8WXVC.js +15 -0
  299. package/dist/node-host/assets/swift-DWmMn3lF.js +3 -0
  300. package/dist/node-host/assets/synthwave-84-DcsXCF_c.js +4 -0
  301. package/dist/node-host/assets/system-verilog-DW0KSMVO.js +3 -0
  302. package/dist/node-host/assets/systemd-DFbUltlW.js +3 -0
  303. package/dist/node-host/assets/talonscript-CLxaFu-b.js +3 -0
  304. package/dist/node-host/assets/tasks-C0WqnM7Q.js +644 -0
  305. package/dist/node-host/assets/tasks-request-Bwky5ORf.js +114 -0
  306. package/dist/node-host/assets/tasl-_AAbKiWM.js +3 -0
  307. package/dist/node-host/assets/tcl-DLe0Tsfm.js +3 -0
  308. package/dist/node-host/assets/templ-Bd0jzThC.js +13 -0
  309. package/dist/node-host/assets/terraform-v0KN9QQh.js +3 -0
  310. package/dist/node-host/assets/tex-C1Wtngrr.js +8 -0
  311. package/dist/node-host/assets/tokyo-night-Bvpqduda.js +4 -0
  312. package/dist/node-host/assets/toml-B7BHZIqX.js +3 -0
  313. package/dist/node-host/assets/ts-tags-BSGaPI18.js +59 -0
  314. package/dist/node-host/assets/tsv-BorGVq2Z.js +3 -0
  315. package/dist/node-host/assets/tsx-BxnCmyTp.js +6 -0
  316. package/dist/node-host/assets/turtle-BEG5g_eT.js +3 -0
  317. package/dist/node-host/assets/twig-BJG2k0MA.js +19 -0
  318. package/dist/node-host/assets/typescript-Cr5OHcug.js +6 -0
  319. package/dist/node-host/assets/typespec--jp0a8Qj.js +3 -0
  320. package/dist/node-host/assets/typst-BAvHLpwp.js +121 -0
  321. package/dist/node-host/assets/v-DBTjbKF9.js +3 -0
  322. package/dist/node-host/assets/vala-BnnASFsX.js +3 -0
  323. package/dist/node-host/assets/vb-eGVhCUXq.js +3 -0
  324. package/dist/node-host/assets/verilog-Ma7yBE30.js +3 -0
  325. package/dist/node-host/assets/vesper-CfxmMOy3.js +4 -0
  326. package/dist/node-host/assets/vhdl-Co2XFKY7.js +3 -0
  327. package/dist/node-host/assets/viml-BReTXeDA.js +3 -0
  328. package/dist/node-host/assets/vitesse-black-D9-_1mjV.js +4 -0
  329. package/dist/node-host/assets/vitesse-dark-DlSMLlr9.js +4 -0
  330. package/dist/node-host/assets/vitesse-light-KRWWWztf.js +4 -0
  331. package/dist/node-host/assets/vue-C3fWU2fi.js +31 -0
  332. package/dist/node-host/assets/vue-html-DxOM9wex.js +6 -0
  333. package/dist/node-host/assets/vue-vine-OKzSGBlX.js +19 -0
  334. package/dist/node-host/assets/vyper-C6KGx0YU.js +3 -0
  335. package/dist/node-host/assets/wasm-CvHAs-FG.js +7 -0
  336. package/dist/node-host/assets/wasm-gNIKwGlD.js +3 -0
  337. package/dist/node-host/assets/wenyan-BeysbCrW.js +3 -0
  338. package/dist/node-host/assets/wgsl-1s5rV5xS.js +3 -0
  339. package/dist/node-host/assets/wikitext-wjhjmmzD.js +3 -0
  340. package/dist/node-host/assets/wit-CeQiCbz_.js +3 -0
  341. package/dist/node-host/assets/wolfram-CcZPfnLd.js +3 -0
  342. package/dist/node-host/assets/worker-factory-C80HGMWf.js +14 -0
  343. package/dist/node-host/assets/xml-BsBjJrlv.js +8 -0
  344. package/dist/node-host/assets/xsl-BYwWzvT_.js +6 -0
  345. package/dist/node-host/assets/yaml-BRgACZP0.js +6 -0
  346. package/dist/node-host/assets/zenscript-BoijL7rl.js +3 -0
  347. package/dist/node-host/assets/zig-lTQvxhLD.js +3 -0
  348. package/dist/node-host/node-host.js +41511 -0
  349. package/dist/server/assets/{branch-previews-C_TVt_HQ.js → branch-previews-BryeA_kA.js} +112 -3
  350. package/dist/server/assets/{listener-BVbFsnmX.js → listener-oKd5ETMj.js} +3 -3
  351. package/dist/server/assets/{server-DUBjmaBw.js → server-DN5uwE4k.js} +1 -1
  352. package/dist/server/assets/{services-Og5rcF50.js → services-Ber8opFE.js} +2 -2
  353. package/dist/server/capture.js +1 -1
  354. package/dist/server/migration.js +3 -3
  355. package/dist/server/runtime.js +4 -4
  356. package/dist/server/server.js +3 -3
  357. package/dist/types/assets/{config-BzzRLcL-.d.ts → config-Cuauq8xY.d.ts} +24 -1
  358. package/dist/types/assets/contract-BsCQbbxD.d.ts +111 -0
  359. package/dist/types/companion.d.ts +1 -1
  360. package/dist/types/hosted.d.ts +3 -99
  361. package/dist/types/index.d.ts +1 -1
  362. package/dist/types/node-host.d.ts +46 -0
  363. package/dist/types/screen.d.ts +1 -1
  364. package/package.json +6 -2
  365. package/dist/client/assets/workspace-9KxFcfyV.js +0 -2
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bud.sh/app",
3
3
  "description": "The app, its config, screen and design APIs",
4
- "version": "0.1.0",
4
+ "version": "0.3.0",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
7
7
  "publishConfig": {
@@ -41,6 +41,10 @@
41
41
  "./hosted": {
42
42
  "types": "./dist/types/hosted.d.ts",
43
43
  "import": "./dist/hosted/hosted.js"
44
+ },
45
+ "./node-host": {
46
+ "types": "./dist/types/node-host.d.ts",
47
+ "import": "./dist/node-host/node-host.js"
44
48
  }
45
49
  },
46
50
  "files": [
@@ -88,7 +92,7 @@
88
92
  },
89
93
  "scripts": {
90
94
  "dev": "vite",
91
- "build": "vite build && vite build --ssr && vite build --config vite.node.config.ts && vite build --config vite.hosted.config.ts && vite build --config vite.types.config.ts",
95
+ "build": "vite build && vite build --ssr && vite build --config vite.node.config.ts && vite build --config vite.hosted.config.ts && vite build --config vite.node-host.config.ts && vite build --config vite.types.config.ts",
92
96
  "start": "NODE_ENV=production node --env-file-if-exists=.env dist/server/server.js",
93
97
  "typecheck": "node ../../scripts/typecheck.ts --project tsconfig.json",
94
98
  "test": "pnpm -w exec remix test \"packages/app/**/*.test.{ts,tsx}\"",
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pages-BVrTX_Eq.js","assets/jsx-B4XNFIzB.js","assets/component-DWct-Tq6.js","assets/on-mixin-iWnqUzq5.js","assets/children-N0l0v7XI.js","assets/attrs-mixin-CmlG_FtV.js","assets/create-element--E6NJ0nh.js","assets/loader-Q6-HPKft.js","assets/screen-Dfvzj6n2.js","assets/task-design-bktfn_Ok.js","assets/lru-BkhKJhvt.js","assets/method-DybmO5PB.js","assets/project-threads-DezXiVK6.js","assets/frame-D6XmK4Df.js","assets/preload-helper-BLdHbfdN.js","assets/cloneFileDiffMetadata-CWfw01dG.js","assets/project-comments-D897aU5O.js","assets/workspace-tab-Bg2MFdMB.js","assets/project-branches-DpxQx-T4.js","assets/canvas-DxaIItAs.js","assets/project-thread-links-Bp_TseD0.js","assets/tasks-request-mWMk9pBo.js","assets/tasks-Cqfj4fQN.js","assets/project-work-CB1JHqGW.js","assets/files-C-7xoSt4.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./jsx-B4XNFIzB.js";import{n as t}from"./on-mixin-iWnqUzq5.js";import{n}from"./run-B2H4brp5.js";import{n as r}from"./attrs-mixin-CmlG_FtV.js";import{t as i}from"./preload-helper-BLdHbfdN.js";import{c as a,i as o,l as s,o as c,r as l,t as ee}from"./loader-Q6-HPKft.js";import{Et as u,Fn as d,Gn as f,Hn as p,In as m,Kn as h,Ln as g,Mn as _,Nn as v,Ot as y,Pn as b,Q as x,Un as S,Vn as C,jn as w,yt as T}from"./task-design-bktfn_Ok.js";import{$ as te,At as ne,Dt as re,J as E,Ot as D,Q as O,X as ie,Y as ae,Z as k,b as A,dt as j,et as M,jt as N,kt as oe,nt as se,ot as P,rt as ce,t as F,tt as le,v as ue,y as de}from"./project-threads-DezXiVK6.js";import{d as fe}from"./method-DybmO5PB.js";import{t as pe}from"./project-work-CB1JHqGW.js";import{n as me}from"./workspace-tab-Bg2MFdMB.js";function he(t){let n=`connecting`,i=r((e,r)=>{let{project:i}=t.props;pe(i),F(i);let a=de(i.token);n=a.status;let o=a.watchStatus(e=>{n=e,t.update()});r.addEventListener(`abort`,o,{once:!0}),t.update()});return()=>e(`span`,{class:`contents`,mix:i,children:e(D,{status:n})})}var ge=new WeakMap;function I(e,t){let n=f(e,t,{abortEarly:!0});if(n.success)return n.value;let r=n.issues[0];throw ge.get(r)??Error(r.message)}function L(e,t){return b((n,r)=>{let i=e[`~run`](n,r);return i.issues?g(t,r.path):i})}function R(e,t){return b((n,r)=>{let i=e[`~run`](n,r);if(i.issues)return i;let a=t(i.value);return a===void 0?i:g(a,r.path)})}function z(e,t){return b((n,r)=>{let i=e[`~run`](n,r);if(i.issues)return i;try{return{value:t(i.value)}}catch(e){if(!(e instanceof Error))throw e;let t=g(e.message,r.path);return ge.set(t.issues[0],e),t}})}function B(e){return b((t,n)=>e(t)[`~run`](t,n))}function V(e,t){return b((n,r)=>n==null?{value:t()}:e[`~run`](n,r))}function H(e,t){let n=p(t);return b((r,i)=>{if(!r||typeof r!=`object`||Array.isArray(r))return g(`${e} must be an object.`,i.path);for(let n of Object.keys(r))if(!Object.hasOwn(t,n))return g(`${e}.${n} is not a supported setting.`,[...i.path,n]);return n[`~run`](r,i)})}function _e(e,t,n=0){let r=_(e);return b((e,i)=>!Array.isArray(e)||e.length<n?g(t,i.path):r[`~run`](e,i))}var ve=d(H(`files`,{edit:V(L(v(),`files.edit must be true or false.`),()=>!0)}),()=>({edit:!0})),U=`flows must be [{ id, title, start, script, steps: [{ id, title }], block? }] with short ids, local paths and unique steps.`,W=e=>typeof e==`string`&&/^[a-z0-9][a-z0-9-]{0,62}$/.test(e),G=e=>typeof e==`string`&&e.trim()!==``&&e.length<=200;function ye(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let{id:t,title:n,start:r,script:i,steps:a,block:o=[]}=e;if(!W(t)||!G(n)||!G(i)||i.includes(`\0`)||typeof r!=`string`||!r.startsWith(`/`)||r.startsWith(`//`)||new URL(r,`http://bud.invalid`).origin!==`http://bud.invalid`||!Array.isArray(a)||!a.length||a.length>50)return null;let s=a.map(e=>{let{id:t,title:n}=e??{};return W(t)&&G(n)?{id:t,title:n.trim()}:null});if(s.some(e=>!e))return null;let c=s.map(e=>e.id);return new Set(c).size!==c.length||!Array.isArray(o)||o.some(e=>!G(e))?null:{id:t,title:n.trim(),start:r,script:i.trim(),steps:s,block:o}}var be=b((e,t)=>{if(e===void 0)return{value:[]};if(!Array.isArray(e))return g(U,t.path);let n=e.map(ye);if(n.some(e=>!e))return g(U,t.path);let r=n.map(e=>e.id);return new Set(r).size===r.length?{value:n}:g(U,t.path)});function xe(e,t){return{id:`${e.id}/${t.id}`,path:`${e.start.replace(/#.*$/,``)}#${e.id}-${t.id}`,title:t.title,group:e.title,flow:{id:e.id,step:t.id}}}var Se=Object.freeze({".svg":`image/svg+xml`,".png":`image/png`,".webp":`image/webp`,".jpg":`image/jpeg`,".jpeg":`image/jpeg`,".gif":`image/gif`,".ico":`image/x-icon`}),Ce=`logo must be an image path inside the project (.svg, .png, .webp, .jpg, .gif or .ico), or { light, dark }.`;function we(e){if(typeof e!=`string`||e.length>1024||e.includes(`\0`))return null;let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.startsWith(`/`)||/^[a-z]:/i.test(t)||t.split(`/`).includes(`..`))return null;let n=t.slice(t.lastIndexOf(`.`)).toLowerCase();return Object.hasOwn(Se,n)?t:null}var Te=b((e,t)=>{if(e===void 0)return{value:null};let n=we(typeof e==`object`&&e?e.light:e),r=typeof e==`object`&&e?e.dark:void 0,i=r===void 0?null:we(r),a=typeof e==`object`&&e?Object.keys(e):[];return n&&(r===void 0||i)&&a.every(e=>e===`light`||e===`dark`)?{value:{light:n,dark:i}}:g(Ce,t.path)}),K=`branches must be { main?, build?: { install?, build?, serve? } } with a branch name and nonempty shell commands.`;function Ee(e){return typeof e==`string`&&e.length<=255&&/^[A-Za-z0-9._/-]+$/.test(e)&&!e.startsWith(`-`)&&!e.startsWith(`/`)&&!e.endsWith(`/`)&&!e.endsWith(`.lock`)&&!e.includes(`..`)&&!e.includes(`//`)?e:null}function q(e){return typeof e==`string`&&e.trim()&&e.length<=4096&&!e.includes(`\0`)?e.trim():null}var De=b((e,t)=>{let n={main:null,install:null,build:null,serve:null};if(e===void 0)return{value:n};if(!e||typeof e!=`object`||Array.isArray(e))return g(K,t.path);let r=e,i=r.build??{};if(!i||typeof i!=`object`||Array.isArray(i)||Object.keys(r).some(e=>e!==`main`&&e!==`build`))return g(K,t.path);let a=i;if(Object.keys(a).some(e=>![`install`,`build`,`serve`].includes(e)))return g(K,t.path);let o={main:r.main===void 0?null:Ee(r.main),install:a.install===void 0?null:q(a.install),build:a.build===void 0?null:q(a.build),serve:a.serve===void 0?null:q(a.serve)};return r.main!==void 0&&!o.main||[`install`,`build`,`serve`].some(e=>a[e]!==void 0&&!o[e])?g(K,t.path):{value:o}});function J(e,t,n){let r=t?/\.server\.ts$/:/\.(?:ts|tsx|js|jsx)$/;return L(h().refine(e=>e.length<=1024&&e.startsWith(`./`)&&!/[\u0000-\u001f\u007f\\?#%]/.test(e)&&r.test(e)&&(t||!/\.server\.[cm]?[jt]sx?$/.test(e))&&!e.slice(2).split(`/`).some(e=>!e||e===`.`||e===`..`||e===`node_modules`)),n??(t?`${e} must be a built-in adapter or a ./ module ending in .server.ts inside the project.`:`${e} must be bud:beads or a ./ browser module ending in .ts, .tsx, .js or .jsx inside the project.`))}var Oe=m([!1,`bud:beads`,`bud:memory`,`bud:git-comments`]);function ke(e){let t=J(`storage.${e}`,!0);return d(R(B(e=>e===!1||e===`bud:beads`||e===`bud:memory`||e===`bud:git-comments`?Oe:t),t=>e===`work`&&t===`bud:git-comments`?`storage.work cannot use bud:git-comments; it only stores threads.`:void 0),`bud:beads`)}var Ae=d(H(`storage`,{work:ke(`work`),threads:ke(`threads`)}),()=>({work:`bud:beads`,threads:`bud:beads`})),je=d(H(`designs`,{tasks:d(B(e=>e===`bud:beads`?m([`bud:beads`]):J(`designs.tasks`,!1)),`bud:beads`),pages:d(m([`path`,`title`]),`path`)}),()=>({tasks:`bud:beads`,pages:`path`})),Me=new Set([`bud:dom`,`bud:react`,`bud:react-grab`]),Ne=J(`picker`,!1,`picker must be bud:dom, bud:react, bud:react-grab or a ./ browser module ending in .ts, .tsx, .js or .jsx inside the project.`),Pe=b((e,t)=>{if(e===void 0)return{value:{name:`bud:dom`,module:null}};if(typeof e==`string`&&Me.has(e))return{value:{name:e,module:null}};let n=Ne[`~run`](e,t);return n.issues?n:{value:{name:n.value,module:n.value}}}),Fe=`ready must be a CSS selector, { selector } or { expression }.`,Y=b((e,t)=>{let n=typeof e==`string`?{selector:e}:e;if(n&&typeof n==`object`&&!Array.isArray(n)){let e=Object.entries(n),[t,r]=e[0]??[];if(e.length===1&&(t===`selector`||t===`expression`)&&typeof r==`string`&&r.trim()&&r.length<=4096)return{value:t===`selector`?{selector:r.trim()}:{expression:r.trim()}}}return g(Fe,t.path)}),Ie=()=>[`light`,`dark`],Le=()=>[{id:`desktop`,name:`Desktop`,width:1440,height:900,mobile:!1}],X=`previews.viewports must list up to 4 { name, width, height?, mobile? } with distinct names, widths from 240 to 3840 and heights from 240 to 4000.`;function Re(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,32)}var ze=b((e,t)=>{if(!Array.isArray(e)||e.length===0||e.length>4)return g(X,t.path);let n=[];for(let r of e){if(!r||typeof r!=`object`||Array.isArray(r))return g(X,t.path);let{name:e,width:i,height:a,mobile:o,...s}=r,c=(e,t,n)=>typeof e==`number`&&Number.isInteger(e)&&e>=t&&e<=n;if(Object.keys(s).length||typeof e!=`string`||!e.trim()||e.length>40||!Re(e)||!c(i,240,3840)||a!==void 0&&!c(a,240,4e3)||o!==void 0&&typeof o!=`boolean`)return g(X,t.path);let l=o??i<800;n.push({id:Re(e),name:e.trim(),width:i,height:a??(l?Math.round(i*844/390):900),mobile:l})}return new Set(n.map(e=>e.id)).size===n.length?{value:n}:g(X,t.path)}),Be=d(H(`previews`,{scale:V(L(C().refine(e=>Number.isInteger(e)&&e>=1&&e<=3),`previews.scale must be 1, 2 or 3.`),()=>2),themes:V(L(_(m([`light`,`dark`])).refine(e=>e.length>0&&new Set(e).size===e.length),`previews.themes must list light, dark or both, once each.`),Ie),viewports:V(ze,Le),ready:V(Y,()=>null),readyTimeout:V(L(C().refine(e=>Number.isInteger(e)&&e>=1e3&&e<=6e5),`previews.readyTimeout must be whole milliseconds from 1000 to 600000.`),()=>6e4),css:V(L(h().refine(e=>e.length<=2e4&&!e.includes(`<`)),`previews.css must be CSS text without <, up to 20000 characters.`),()=>``)}),()=>({scale:2,themes:Ie(),viewports:Le(),ready:null,readyTimeout:6e4,css:``}));function Ve(e,t){let n=[],r=new Set;function i(e,a){if(!e||typeof e!=`object`||Array.isArray(e)||r.has(e))throw Error(`Screen routes must be a Remix route map.`);r.add(e);for(let[r,o]of Object.entries(e)){let e=a?`${a}.${r}`:r;if(!o||typeof o!=`object`)throw Error(`Screen route ${e} must be a Remix route.`);if(!(`pattern`in o)){i(o,e);continue}if(![`GET`,`ANY`].includes(o.method)||typeof o.href!=`function`||typeof o.pattern?.source!=`string`)throw Error(`Screen route ${e} must be a GET route.`);let s=fe.parse(o.pattern.source),c=s.toJSON(),l=`/${c.pathname}`;if(c.protocol||c.hostname||c.port||c.pathname.split(`/`).some(e=>/^\.{1,2}$/.test(decodeURIComponent(e)))||l!==t&&!l.startsWith(`${t}/`)&&!l.startsWith(`${t}(/`))throw Error(`Screen route ${e} must stay under ${t}.`);n.push({name:e,pattern:s.source})}r.delete(e)}if(i(e,``),!n.length)throw Error(`Screen routes must contain at least one route.`);return n}function He(){return{id:`pages`,label:`Pages`,icon:`browser`,path:`/pages`,module:`bud:pages`}}function Ue(){return{id:`canvas`,label:`Canvas`,icon:`grid`,path:`/canvas`,module:`bud:canvas`}}function We(){return{id:`tasks`,label:`Tasks`,icon:`tasks`,path:`/tasks`,module:`bud:tasks`}}function Ge(){return{id:`files`,label:`Files`,icon:`files`,path:`/files`,module:`bud:files`}}var Z=[He(),Ue(),We(),Ge()],Ke=new Map(Z.map(e=>[e.module,e])),qe=[`/comments`,...Z.map(e=>e.path),`/api`,`/health`,`/__bud`,`/assets`,`/app`,`/src`,`/node_modules`,`/agents`,`/brand`,`/fonts`,`/frameworks`,`/licenses`],Je=R(L(w().refine(e=>!!e&&typeof e==`object`),`Each screen must be an object.`),({id:e,label:t,icon:n=`layers`,module:r,path:i})=>{if(typeof e!=`string`||!/^[a-z][a-z0-9-]{0,31}$/.test(e))return`Screen ids are 1-32 lowercase letters, digits and hyphens.`;if(typeof t!=`string`||!t.trim())return`Screen ${e} needs a label.`;if(typeof n!=`string`||!n)return`Screen ${e} needs an icon name.`;if(typeof r!=`string`)return`Screen ${e} needs a module.`;let a=Ke.get(r);if(i??=a?.path??`/${e}`,a)return e!==a.id||i!==a.path?`${r} keeps id "${a.id}" and path "${a.path}".`:void 0;if(!/^\.\/[^\0\\]+\.(?:ts|tsx|js|jsx)$/.test(r))return`Screen ${e} must be a ./ module ending in .ts, .tsx, .js or .jsx.`;if(typeof i!=`string`||!/^\/[a-z0-9][a-z0-9-]*$/.test(i))return`Screen ${e} needs one static path segment, such as /${e}.`;if(Z.some(t=>t.id===e))return`Screen id "${e}" is reserved for a built-in screen.`;if(qe.includes(i))return`Bud reserves the path ${i}.`}),Ye=d(z(L(_(w()).refine(e=>e.length>0),`screens must list at least one screen.`),e=>{let t=new Set,n=new Set;return e.map(e=>{let r=I(Je,e),{id:i,label:a,icon:o=`layers`,module:s}=r,c=r.path??Ke.get(s)?.path??`/${i}`;if(t.has(i)||n.has(c))throw Error(`Screen ids and paths must be unique.`);return t.add(i),n.add(c),r.routes!==void 0&&Ve(r.routes,c),{id:i,label:a,icon:o,path:c,module:s,...r.routes===void 0?{}:{routes:r.routes}}})}),()=>Z.map(e=>({...e}))),Xe=e=>!!e&&typeof e==`object`;function Q(e,t){let n=p(t);return b((t,r)=>Xe(t)?n[`~run`](Array.isArray(t)?{...t}:t,r):g(e,r.path))}var Ze=R(Q(`Bud config must export an object.`,{routes:L(_(w()).refine(e=>e.length>0),`bud.config must define at least one route.`),name:S(L(h().refine(e=>!!e.trim()),`name must be a nonempty string.`)),target:S(Q(`target must be an object.`,{origin:w(),port:w()})),comments:S(Q(`comments must be an object.`,{remote:w()})),port:w(),screens:w(),storage:w(),designs:w(),previews:w(),files:w(),logo:w(),picker:w(),branches:w(),flows:w()}),({target:e})=>{if(e?.port===0)return`target.port must be a listening port, not zero.`;if(e?.origin!==void 0&&(typeof e.origin!=`string`||!e.origin.trim()))return`target.origin must be an HTTP(S) origin.`}),Qe=R(w().transform(e=>typeof e==`string`?{path:e,title:e===`/`?`Home`:e}:e),e=>{if(!e||typeof e.path!=`string`||!e.path.startsWith(`/`)||e.path.startsWith(`//`))return`Canvas routes must be local paths beginning with a single /.`;if(new URL(e.path,`http://bud.invalid`).origin!==`http://bud.invalid`||e.path.includes(`\\`))return`Canvas routes must stay on the target origin.`;let t=e.id??$e(e.path);if(typeof t!=`string`||!t.trim())return`Canvas route IDs and paths must be unique.`;if(typeof e.title!=`string`||!e.title.trim())return`Each route needs a title.`;if(e.pattern!==void 0&&(typeof e.pattern!=`string`||!e.pattern.startsWith(`/`)))return`A route pattern must be a path beginning with /.`;if(e.group!==void 0&&(typeof e.group!=`string`||!e.group.trim()||e.group.length>120))return`A route group must be a short name.`;if(e.ready!==void 0&&e.ready!==!1&&!f(Y,e.ready).success)return`A route ready must be false, a CSS selector, { selector } or { expression }.`}).transform(e=>{let t=$e(e.path);return{id:e.id??t,path:t,title:e.title,...e.pattern===void 0?{}:{pattern:e.pattern},...e.group===void 0?{}:{group:e.group.trim()},...e.ready===void 0?{}:{ready:e.ready===!1?null:I(Y,e.ready)}}});function $e(e){let t=new URL(e,`http://bud.invalid`),n=t.searchParams.toString();return`${t.pathname}${n?`?${n}`:``}${t.hash}`}var et=R(_e(Qe,`bud.config must define at least one route.`,1),e=>new Set(e.map(e=>e.id)).size!==e.length||new Set(e.map(e=>e.path)).size!==e.length?`Canvas route IDs and paths must be unique.`:void 0),tt=e=>e===void 0||Number.isInteger(e)&&e>=0&&e<=65535,nt=e=>typeof e==`string`&&/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(e);z(R(z(R(z(R(z(Ze,e=>({...e,routes:I(et,e.routes)})),({port:e,target:t})=>tt(e??0)&&tt(t?.port)?void 0:`Ports must be integers between 0 and 65535.`),({target:e,...t})=>{let n=e?.origin??(e?.port?`http://127.0.0.1:${e.port}`:void 0);return{...t,targetOrigin:n&&rt(n,`target.origin must be an HTTP(S) origin without a path or credentials.`)}}),({comments:e})=>nt(e?.remote??`origin`)?void 0:`comments.remote must be a Git remote name.`),e=>{let t=I(be,e.flows),n=t.flatMap(e=>e.steps.map(t=>xe(e,t))),r=e.routes.findIndex(e=>e.path===`/`)+1;return{...e,flows:t,routes:[...e.routes.slice(0,r),...n,...e.routes.slice(r)]}}),({routes:e})=>new Set(e.map(e=>e.id)).size!==e.length||new Set(e.map(e=>e.path)).size!==e.length?`A flow step must not reuse a route’s id or path.`:void 0),e=>({name:e.name??`Your project`,routes:e.routes,flows:e.flows,port:e.port??0,targetOrigin:e.targetOrigin,remote:e.comments?.remote??`origin`,screens:I(Ye,e.screens),storage:I(Ae,e.storage),designs:I(je,e.designs),previews:I(Be,e.previews),files:I(ve,e.files),logo:I(Te,e.logo),picker:I(Pe,e.picker),branches:I(De,e.branches)}));function rt(e,t){let n=new URL(e);if(![`http:`,`https:`].includes(n.protocol)||n.username||n.password||n.pathname!==`/`||n.search||n.hash)throw Error(t);return n.origin}function $(e,t){let n=T();for(let t of e)n.add(t.pattern,t.name);let r=n.match(t,{baseURL:`http://bud.invalid`});return r?{route:r.data,params:r.params}:null}function it(e,t){let n=e?$(Ve(e,t.path),t.url):{route:null,params:{}};if(!n)throw Error(`No screen route matches ${t.url.pathname}.`);return{...t,...n}}var at={"bud:pages":()=>i(()=>import(`./pages-BVrTX_Eq.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),"bud:canvas":()=>i(()=>import(`./canvas-DxaIItAs.js`),__vite__mapDeps([19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21])),"bud:tasks":()=>i(()=>import(`./tasks-Cqfj4fQN.js`),__vite__mapDeps([22,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,21,23,20])),"bud:files":()=>i(()=>import(`./files-C-7xoSt4.js`),__vite__mapDeps([24,10,1,5,3,2,4,6,14,7,8,9,11,15,12,13,16,20,21]))};function ot(e){return Object.hasOwn(at,e)?at[e]():i(()=>import(e),[])}async function st(e,t,n=ot){let r=(await n(e)).default;if(typeof r?.render!=`function`)throw Error(`A screen module must export defineScreen({ render }) as its default.`);let i=await r.load?.(it(r.routes,t));return t.signal.throwIfAborted(),{screen:r,data:i}}async function ct(e,t,n=e=>i(()=>import(e),[])){if(t.throwIfAborted(),!e)return;if(`error`in e)throw Error(e.error);let r=await n(e.url);return t.throwIfAborted(),x(r.default)}function lt(n){let i,u=``;async function d(){let{module:e,project:t,label:r}=n.props;i=void 0,u=``,n.update();let{location:a}=n.props,o={project:t,signal:n.signal,path:a.path,url:new URL(a.href,window.location.origin),active:n.props.active,conversation:a.conversation,route:null,params:{}};try{if(`error`in e)throw Error(e.error);o.taskDesign=await ct(n.props.taskDesign,n.signal),i={...await st(e.url,o),context:o}}catch(e){if(n.signal.aborted)return;console.error(e),u=e instanceof Error&&e.message?e.message:`Could not open ${r}.`}n.update()}let f=r(()=>{d()});return()=>{let{label:r,module:p,location:m}=n.props,h=i?.context,g=``;if(i&&h)try{if(m.routes&&!$(m.routes,m.href))throw Error(`No screen route matches ${m.href}.`);h=it(i.screen.routes,{...h,active:n.props.active,conversation:m.conversation,url:new URL(m.href,h.url.origin)})}catch(e){g=e instanceof Error?e.message:`This screen route is invalid.`}return e(`div`,{class:`h-full min-h-0`,mix:f,children:g?e(`div`,{class:`p-3 md:p-4`,children:e(s,{role:`alert`,children:g})}):i&&h?i.screen.render(i.data,h):u?e(`div`,{class:`h-full overflow-y-auto p-3 md:p-4`,children:e(l,{class:`max-w-2xl`,role:`alert`,children:[e(c,{title:`${r} didn't open`,subtitle:u}),e(o,{class:`flex-col items-start gap-3`,children:[e(s,{as:`p`,variant:`ui`,tone:`muted`,children:`Fix the screen and retry. Details are in the browser console.`}),e(a,{mix:t(`click`,()=>{`error`in p||n.props.taskDesign&&`error`in n.props.taskDesign?window.location.reload():d()}),children:`Retry`})]})]})}):e(ee,{label:`Loading ${r}…`})})}}async function ut(e,t,n,r,i=fetch){e=y(e);let a=await ue(A.comments.get.href({id:e}),n,r,u,i);if(r.throwIfAborted(),a.id!==e)throw Error(`The comments service returned another discussion.`);let o=P(a),s=t.find(e=>e.module===o.module);if(!s)throw Error(`Enable the screen that owns this discussion to open it.`);if(s.routes&&!$(s.routes,o.href))throw Error(`The discussion location is not available in this screen.`);return{active:s.id,module:{url:s.module},location:{path:s.path,href:o.href,...s.routes?{routes:s.routes}:{},conversation:{id:e,original:o.original}}}}function dt(i){let u=new Map,d=i.props,f=``,p=i.props.conversation,m,h=!!p,g=``,_=!1;function v(){i.signal.aborted||i.update()}async function y(e){if(p!==e)return;m?.abort();let t=new AbortController;m=t;let n=AbortSignal.any([i.signal,t.signal]);h=!0,g=``,v();try{let t=i.props.project;if(!t)throw Error(`Connect a project to open this discussion.`);let r=await ut(e,i.props.conversationTargets??[],t.token,n);!n.aborted&&p===e&&(d=r,b.set(r.active,window.location.pathname))}catch(e){n.aborted||(g=e instanceof Error?e.message:`Could not open this discussion.`)}finally{m===t&&!n.aborted&&(h=!1,v())}}let b=new Map,x,S,C=()=>`bud:tabs:${i.props.project?.id}:v1`,w=()=>`${window.location.pathname}${window.location.search}${window.location.hash}`;function T(e){x=e,N(C(),e);let t=i.props.project;t&&(document.cookie=`${le(t.id)}=${se(e)}; Path=/; Max-Age=31536000; SameSite=Strict`),v()}function D(){if(!x)return;let e=w();S===e?S=void 0:M(E(x))!==e&&T(ce(x,e))}function P(e){let t=M(E(e));T(e),t!==w()&&(S=t,n(t,{history:`replace`,resetScroll:!1}))}function F(e){let{pathname:t}=new URL(e,`http://bud.local`);if(j(e))return{href:e,title:`Discussion`,icon:`message`};let n=i.props.screens.map(e=>({item:e,root:new URL(e.href,`http://bud.local`).pathname})).filter(({root:e})=>e===`/`||t===e||t.startsWith(`${e}/`)).sort((e,t)=>t.root.length-e.root.length)[0],r=n?.item??i.props.screens[0];if(r.id===`pages`&&n&&t.startsWith(`${n.root}/`)){let a=t.slice(n.root.length);return{href:e,title:i.props.project?.routes.find(e=>e.path===a)?.title??a,icon:r.icon}}let a=(n&&n.root!==`/`?t.slice(n.root.length):t).split(`/`).filter(Boolean).at(-1);return{href:e,title:(a&&n?.root!==`/`?decodeURIComponent(a):void 0)??r.label,icon:r.icon}}let ue=r((e,t)=>{_=!0,p&&y(p);function r(){let{pathname:e,search:t,hash:n}=window.location,r=`${e}${t}${n}`,i=j(r);if(i)return i!==p&&(p=i,y(i)),d.location.conversation?.id===i&&b.set(d.active,r),!0;let a=u.get(d.active);if(!a)return!1;let o=a.location.path;return e!==o&&(o===`/`||!e.startsWith(`${o}/`))?!1:(m?.abort(),p=void 0,h=!1,g=``,b.set(d.active,r),a.location={...a.location,href:r,conversation:void 0},d={...d,location:a.location},!0)}r(),i.props.project&&T(O(ne(C()),w(),crypto.randomUUID())),i.update(),window.addEventListener(`click`,e=>{if(!x||!(e.metaKey||e.ctrlKey)||e.shiftKey||e.button!==0)return;let t=e.target?.closest?.(`a[href]`);if(!(t instanceof HTMLAnchorElement)||t.target||t.hasAttribute(`download`))return;let n=new URL(t.href);n.origin!==window.location.origin||n.pathname.startsWith(`/api/`)||(e.preventDefault(),e.stopPropagation(),T(k(x,`${n.pathname}${n.search}${n.hash}`,crypto.randomUUID(),!1)))},{capture:!0,signal:t}),window.addEventListener(`popstate`,()=>{!r()&&!window.navigation?.currentEntry?.getState()&&n(window.location.href,{history:`replace`,resetScroll:!1}),window.navigation||D(),i.update()},{signal:t}),window.navigation?.addEventListener(`navigate`,r,{signal:t}),window.navigation?.addEventListener(`currententrychange`,()=>{r(),D(),i.update()},{signal:t}),window.navigation?.addEventListener(`navigatesuccess`,()=>{r(),i.update()},{signal:t})});return()=>{let{screens:r,project:v,taskDesign:C}=i.props,w=JSON.stringify([i.props.active,i.props.location.href,i.props.conversation]);if(f!==w){if(f=w,p=i.props.conversation,m?.abort(),g=``,h=!!p,p){let e=p;_&&i.queueTask(()=>{y(e)})}else d=i.props}let{active:T,module:ne,location:D}=d,O=r.find(e=>e.id===T)??r[0];v&&!h&&!g&&u.set(O.id,{module:ne,location:D,taskDesign:O.id===`tasks`?C:void 0});let j=x??i.props.initialTabs??(v?ie(D.href,`current`):void 0);j&&i.queueTask(()=>me(j.active));let N=r.map(e=>e.id===O.id?e:{...e,href:b.get(e.id)??e.href});return e(oe,{items:N,activeId:O.id,title:O.label,canvas:!!v,logo:v?.logo?{light:A.logo.href({theme:`light`}),dark:v.logo.dark?A.logo.href({theme:`dark`}):void 0,label:v.name}:void 0,status:v?e(he,{project:v}):void 0,tabs:v&&j?e(re,{tabs:j.tabs.map(e=>({id:e.id,...F(M(e))})),active:j.active,recent:E(j).recent.filter(e=>e!==M(E(j))).map(F),canBack:E(j).index>0,canForward:E(j).index<E(j).entries.length-1,onSelect:e=>P({...j,active:e}),onClose:e=>P(ae(j,e)),onBack:()=>P(te(j,-1)),onForward:()=>P(te(j,1)),onNew:()=>P(k(j,r[0]?.href??`/`,crypto.randomUUID(),!0)),onOpen:e=>{S=void 0,n(e)}}):void 0,children:v?e(`div`,{class:`h-full min-h-0`,mix:ue,children:[h?e(ee,{label:`Opening discussion…`}):g?e(`div`,{class:`p-3 md:p-4`,children:e(l,{class:`max-w-2xl`,role:`alert`,children:[e(c,{title:`Discussion didn't open`,subtitle:g}),e(o,{children:e(a,{mix:t(`click`,()=>{p&&y(p)}),children:`Retry`})})]})}):null,[...u].map(([t,{module:n,taskDesign:i,location:a}])=>e(`div`,{class:`h-full min-h-0`,hidden:h||!!g||t!==O.id,children:e(lt,{label:r.find(e=>e.id===t)?.label??t,module:n,taskDesign:i,project:v,location:a,active:!h&&!g&&t===O.id})},`${t}:${v.token}`))]}):e(l,{class:`max-w-2xl`,children:[e(c,{title:`Your project, side by side.`,subtitle:`Open Bud beside a local project to review its pages, files and tasks.`}),e(o,{children:e(s,{as:`p`,variant:`ui`,children:`Start your project with the Bud Vite plugin, or run Bud from its directory. Its screens appear here when the companion connects.`})})]})})}}export{dt as Workspace};