@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
@@ -7510,7 +7510,7 @@ var logWithLevel$1 = (level) => (...message) => {
7510
7510
  return void_$2;
7511
7511
  });
7512
7512
  };
7513
- var colors = {
7513
+ var colors$1 = {
7514
7514
  bold: "1",
7515
7515
  red: "31",
7516
7516
  green: "32",
@@ -7522,7 +7522,7 @@ var colors = {
7522
7522
  black: "30",
7523
7523
  bgBrightRed: "101"
7524
7524
  };
7525
- colors.gray, colors.blue, colors.green, colors.yellow, colors.red, colors.bgBrightRed, colors.black;
7525
+ colors$1.gray, colors$1.blue, colors$1.green, colors$1.yellow, colors$1.red, colors$1.bgBrightRed, colors$1.black;
7526
7526
  var defaultDateFormat = (date) => `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}.${date.getMilliseconds().toString().padStart(3, "0")}`;
7527
7527
  /** @internal */
7528
7528
  var defaultLogger = /*#__PURE__*/ loggerMake(({ cause, date, fiber, logLevel, message }) => {
@@ -28628,6 +28628,113 @@ var BudLogoSchema = createSchema((value, context) => {
28628
28628
  return fail(logoMessage, context.path);
28629
28629
  });
28630
28630
  //#endregion
28631
+ //#region ../project/src/lib/theme.ts
28632
+ /**
28633
+ * Bud's colors and shadows a theme may set, as `--bud-<name>` in its styles. Everything else
28634
+ * Bud derives from them.
28635
+ */
28636
+ var THEME_TOKENS = Object.freeze([
28637
+ "background",
28638
+ "shell",
28639
+ "main",
28640
+ "canvas",
28641
+ "panel",
28642
+ "board",
28643
+ "editor",
28644
+ "editor-tabs",
28645
+ "foreground",
28646
+ "muted",
28647
+ "primary",
28648
+ "primary-hover",
28649
+ "primary-foreground",
28650
+ "border",
28651
+ "tab-divider",
28652
+ "hover",
28653
+ "selected",
28654
+ "control",
28655
+ "control-active",
28656
+ "control-selected",
28657
+ "card",
28658
+ "menu",
28659
+ "menu-hover",
28660
+ "card-frame",
28661
+ "card-surface",
28662
+ "card-border",
28663
+ "card-frame-border",
28664
+ "card-badge",
28665
+ "overlay-shadow",
28666
+ "tooltip",
28667
+ "board-control",
28668
+ "board-control-hover",
28669
+ "board-card",
28670
+ "control-elevation",
28671
+ "board-elevation",
28672
+ "board-card-elevation",
28673
+ "card-elevation",
28674
+ "board-card-lift",
28675
+ "frame-control",
28676
+ "modal-elevation",
28677
+ "segment-elevation",
28678
+ "control-open-elevation",
28679
+ "board-segment",
28680
+ "scrollbar",
28681
+ "focus",
28682
+ "scrollbar-hover",
28683
+ "tooltip-border",
28684
+ "tooltip-shadow"
28685
+ ]);
28686
+ var themeMessage = `theme must be { light, dark }, each mapping Bud's tokens (${THEME_TOKENS.slice(0, 3).join(", ")}, …) to CSS colors or shadows.`;
28687
+ function cssValue(value) {
28688
+ if (typeof value !== "string") return null;
28689
+ let trimmed = value.trim();
28690
+ if (!trimmed || trimmed.length > 300) return null;
28691
+ if (!/^[#a-zA-Z0-9(),.%\s/+-]+$/.test(trimmed) || /url\s*\(/i.test(trimmed)) return null;
28692
+ return trimmed;
28693
+ }
28694
+ function colors(value) {
28695
+ if (value === void 0) return {};
28696
+ if (!value || typeof value !== "object" || Array.isArray(value)) return null;
28697
+ let result = {};
28698
+ for (let [name, raw] of Object.entries(value)) {
28699
+ let checked = cssValue(raw);
28700
+ if (!THEME_TOKENS.includes(name) || checked === null) return null;
28701
+ result[name] = checked;
28702
+ }
28703
+ return Object.freeze(result);
28704
+ }
28705
+ /** A theme in its one resolved form; Bud's own colors when absent. */
28706
+ var BudThemeSchema = createSchema((value, context) => {
28707
+ if (value === void 0) return { value: {
28708
+ light: {},
28709
+ dark: {}
28710
+ } };
28711
+ if (!value || typeof value !== "object" || Array.isArray(value)) return fail(themeMessage, context.path);
28712
+ let { light, dark, ...rest } = value;
28713
+ let resolved = {
28714
+ light: colors(light),
28715
+ dark: colors(dark)
28716
+ };
28717
+ if (Object.keys(rest).length || !resolved.light || !resolved.dark) return fail(themeMessage, context.path);
28718
+ return { value: {
28719
+ light: resolved.light,
28720
+ dark: resolved.dark
28721
+ } };
28722
+ });
28723
+ /**
28724
+ * The theme as styles that follow Bud's own, so its tokens win in each color scheme.
28725
+ * @param theme - The resolved theme.
28726
+ * @returns A `<style>` element, or an empty string for Bud's own colors.
28727
+ */
28728
+ function themeStyle(theme) {
28729
+ let block = (selector, values) => {
28730
+ let entries = Object.entries(values);
28731
+ if (!entries.length) return "";
28732
+ return `${selector}{${entries.map(([name, value]) => `--bud-${name}:${value};`).join("")}}`;
28733
+ };
28734
+ let css = block(":root:not([data-theme='dark'])", theme.light) + block(":root[data-theme='dark']", theme.dark);
28735
+ return css ? `<style data-bud-theme>${css}</style>` : "";
28736
+ }
28737
+ //#endregion
28631
28738
  //#region ../project/src/lib/branches.ts
28632
28739
  var message$1 = "branches must be { main?, build?: { install?, build?, serve? } } with a branch name and nonempty shell commands.";
28633
28740
  function branch(value) {
@@ -28976,6 +29083,7 @@ var ConfigFields = check(section("Bud config must export an object.", {
28976
29083
  previews: any(),
28977
29084
  files: any(),
28978
29085
  logo: any(),
29086
+ theme: any(),
28979
29087
  picker: any(),
28980
29088
  branches: any(),
28981
29089
  flows: any()
@@ -29051,6 +29159,7 @@ var BudConfigSchema = delegate(check(delegate(check(delegate(check(delegate(Conf
29051
29159
  previews: parseConfig(BudPreviewsSchema, config.previews),
29052
29160
  files: parseConfig(BudFilesSchema, config.files),
29053
29161
  logo: parseConfig(BudLogoSchema, config.logo),
29162
+ theme: parseConfig(BudThemeSchema, config.theme),
29054
29163
  picker: parseConfig(BudPickerSchema, config.picker),
29055
29164
  branches: parseConfig(BudBranchesSchema, config.branches)
29056
29165
  }));
@@ -33491,4 +33600,4 @@ function branchPreviewsLayer(project, options) {
33491
33600
  }));
33492
33601
  }
33493
33602
  //#endregion
33494
- export { shutdown$1 as $, makeUnsafe$4 as $n, provideService as $t, debounce as A, uninterruptibleMask as An, clockWith as At, merge as B, empty$2 as Bn, forkIn as Bt, RuntimePolicy as C, tapError as Cn, asSome as Ct, callback as D, try_ as Dn, catchIf as Dt, as as E, tryPromise as En, callback$1 as Et, fromPubSub as F, build as Fn, filterOrFail as Ft, makeUnsafe as G, provide$2 as Gn, mapError$2 as Gt, tap as H, makeMemoMapUnsafe as Hn, gen as Ht, ignore as I, buildWithMemoMap as In, flatMap$1 as It, shutdown as J, succeedContext as Jn, orDie as Jt, offer as K, provideMerge as Kn, match as Kt, make$7 as L, effect as Ln, flatten$1 as Lt, empty as M, withFiber as Mn, die as Mt, filter as N, yieldNow as Nn, ensuring as Nt, changes as O, undefined_$2 as On, catchTag as Ot, fromEffect as P, currentTimeMillis as Pn, fail$4 as Pt, publishAll as Q, forkUnsafe as Qn, provideContext as Qt, mapEffect as R, effectContext as Rn, forEach$1 as Rt, ProcessRunner as S, tap$1 as Sn, as$1 as St, FileSystem as T, timeoutOrElse as Tn, cached as Tt, unwrap as U, merge$2 as Un, ignore$2 as Ut, runForEach as V, isLayer as Vn, forkScoped as Vt, make$8 as W, mergeAll$1 as Wn, map$2 as Wt, take as X, unwrap$4 as Xn, promise as Xt, sliding as Y, sync$1 as Yn, orElseSucceed as Yt, publish as Z, close as Zn, provide as Zt, resolveStorage as _, sleep as _n, acquireRelease as _t, followCapture as a, runForkWith as an, scopeRemoveFinalizerUnsafe as ar, ArraySchema as at, readText as b, suspend$2 as bn, all$1 as bt, previewsLayer as c, runPromiseExitWith as cn, getOption as cr, Struct as ct, gitLayer as d, runSyncExit as dn, getOrUndefined$1 as dr, decodeEffect as dt, result as en, _await as er, sliding$1 as et, Project as f, runSyncExitWith as fn, isNone as fr, isMaxLength as ft, resolveScreenRoutes as g, serviceOption as gn, bytes as gt, defaultScreens as h, scoped as hn, TaggedError as hr, optional$1 as ht, projectFlows as i, runFork as in, void_$1 as ir, runIn as it, drop as j, void_ as jn, context as jt, concat as k, uninterruptible as kn, catch_$1 as kt, PreviewSession as l, runPromiseWith as ln, make$25 as lr, Undefined as lt, projectModuleFile as m, scope as mn, some as mr, isPattern as mt, branchIndexName as n, runCallback as nn, make$23 as nr, await_ as nt, startBranchBuild as o, runPromise as on, Service as or, Record as ot, createProjectContext as p, runSyncWith as pn, none as pr, isNonEmpty as pt, offerUnsafe as q, succeed$3 as qn, option as qt, branchPreviewsLayer as r, runCallbackWith as rn, succeed$4 as rr, interrupt as rt, Previews as s, runPromiseExit as sn, add as sr, String$1 as st, BranchPreviews as t, retry as tn, doneUnsafe as tr, unbounded$1 as tt, Git as u, runSync$1 as un, getOrNull as ur, Union as ut, LOGO_TYPES as v, succeed$2 as vn, acquireUseRelease as vt, Path$1 as w, timeoutOption as wn, asVoid as wt, writeTextAtomic as x, sync as xn, andThen as xt, nodeLayer as y, succeedNone as yn, addFinalizer as yt, mapError as z, effectDiscard as zn, forever as zt };
33603
+ export { publishAll as $, forkUnsafe as $n, provideContext as $t, concat as A, uninterruptible as An, catch_$1 as At, mapError as B, effectDiscard as Bn, forever as Bt, ProcessRunner as C, tap$1 as Cn, as$1 as Ct, as as D, tryPromise as Dn, callback$1 as Dt, FileSystem as E, timeoutOrElse as En, cached as Et, fromEffect as F, currentTimeMillis as Fn, fail$4 as Ft, make$8 as G, mergeAll$1 as Gn, map$2 as Gt, runForEach as H, isLayer as Hn, forkScoped as Ht, fromPubSub as I, build as In, filterOrFail as It, offerUnsafe as J, succeed$3 as Jn, option as Jt, makeUnsafe as K, provide$2 as Kn, mapError$2 as Kt, ignore as L, buildWithMemoMap as Ln, flatMap$1 as Lt, drop as M, void_ as Mn, context as Mt, empty as N, withFiber as Nn, die as Nt, callback as O, try_ as On, catchIf as Ot, filter as P, yieldNow as Pn, ensuring as Pt, publish as Q, close as Qn, provide as Qt, make$7 as R, effect as Rn, flatten$1 as Rt, writeTextAtomic as S, sync as Sn, andThen as St, Path$1 as T, timeoutOption as Tn, asVoid as Tt, tap as U, makeMemoMapUnsafe as Un, gen as Ut, merge as V, empty$2 as Vn, forkIn as Vt, unwrap as W, merge$2 as Wn, ignore$2 as Wt, sliding as X, sync$1 as Xn, orElseSucceed as Xt, shutdown as Y, succeedContext as Yn, orDie as Yt, take as Z, unwrap$4 as Zn, promise as Zt, resolveStorage as _, serviceOption as _n, bytes as _t, followCapture as a, runFork as an, void_$1 as ar, runIn as at, nodeLayer as b, succeedNone as bn, addFinalizer as bt, previewsLayer as c, runPromiseExit as cn, add as cr, String$1 as ct, gitLayer as d, runSync$1 as dn, getOrNull as dr, Union as dt, provideService as en, makeUnsafe$4 as er, shutdown$1 as et, Project as f, runSyncExit as fn, getOrUndefined$1 as fr, decodeEffect as ft, resolveScreenRoutes as g, scoped as gn, TaggedError as gr, optional$1 as gt, defaultScreens as h, scope as hn, some as hr, isPattern as ht, projectFlows as i, runCallbackWith as in, succeed$4 as ir, interrupt as it, debounce as j, uninterruptibleMask as jn, clockWith as jt, changes as k, undefined_$2 as kn, catchTag as kt, PreviewSession as l, runPromiseExitWith as ln, getOption as lr, Struct as lt, projectModuleFile as m, runSyncWith as mn, none as mr, isNonEmpty as mt, branchIndexName as n, retry as nn, doneUnsafe as nr, unbounded$1 as nt, startBranchBuild as o, runForkWith as on, scopeRemoveFinalizerUnsafe as or, ArraySchema as ot, createProjectContext as p, runSyncExitWith as pn, isNone as pr, isMaxLength as pt, offer as q, provideMerge as qn, match as qt, branchPreviewsLayer as r, runCallback as rn, make$23 as rr, await_ as rt, Previews as s, runPromise as sn, Service as sr, Record as st, BranchPreviews as t, result as tn, _await as tr, sliding$1 as tt, Git as u, runPromiseWith as un, make$25 as ur, Undefined as ut, themeStyle as v, sleep as vn, acquireRelease as vt, RuntimePolicy as w, tapError as wn, asSome as wt, readText as x, suspend$2 as xn, all$1 as xt, LOGO_TYPES as y, succeed$2 as yn, acquireUseRelease as yt, mapEffect as z, effectContext as zn, forEach$1 as zt };
@@ -1,5 +1,5 @@
1
- import { Dn as try_, En as tryPromise, Et as callback, Gt as mapError, Ht as gen, It as flatMap, Kt as match, Mt as die, Nt as ensuring, Pt as fail$1, Wt as map, Xt as promise, _t as acquireRelease, g as resolveScreenRoutes, h as defaultScreens, hn as scoped, hr as TaggedError, jn as void_, s as Previews, t as BranchPreviews, u as Git, v as LOGO_TYPES, xn as sync, xt as andThen } from "./branch-previews-C_TVt_HQ.js";
2
- import { C as selected$1, I as WorkError, L as ScreenModules, O as AdapterRegistry, S as ready, T as LiveChannel, V as taskDesignModuleId, a as FileMutations, b as read, c as FileReview, f as Files, g as StoreActivity, h as ReviewActionError, m as FilesInputError, r as FileSaves, t as FileReviewActions, u as FileSearch, w as validate, x as readWorkspace, y as inspect } from "./server-DUBjmaBw.js";
1
+ import { Dn as tryPromise, Dt as callback, Ft as fail$1, Gt as map, Kt as mapError, Lt as flatMap, Mn as void_, Nt as die, On as try_, Pt as ensuring, Sn as sync, St as andThen, Ut as gen, Zt as promise, g as resolveScreenRoutes, gn as scoped, gr as TaggedError, h as defaultScreens, qt as match, s as Previews, t as BranchPreviews, u as Git, v as themeStyle, vt as acquireRelease, y as LOGO_TYPES } from "./branch-previews-BryeA_kA.js";
2
+ import { C as selected$1, I as WorkError, L as ScreenModules, O as AdapterRegistry, S as ready, T as LiveChannel, V as taskDesignModuleId, a as FileMutations, b as read, c as FileReview, f as Files, g as StoreActivity, h as ReviewActionError, m as FilesInputError, r as FileSaves, t as FileReviewActions, u as FileSearch, w as validate, x as readWorkspace, y as inspect } from "./server-DN5uwE4k.js";
3
3
  import { A as parseThreadReplyInput, D as parseThreadId, Dt as parseFileSearchQuery, E as parseThreadFilter, Ht as parseFilePath, N as parseThreadStatusInput, O as parseThreadInput, Rt as parseFileIndexQuery, St as parseReviewSourceQuery, X as parseReviewActionIntent, Xt as parseElementAnchor, Y as parseReviewActionApply, Yt as MAX_CANVAS_Y, _ as taskRoutes, _t as parseReviewHistoryQuery, an as parseWorkDetail, at as parseMutationIntent, cn as parseWorkMutationResult, en as parseSectionData, fn as parseWorkSync, g as pageRoutes, h as fileRoutes, ht as parseReviewDiffQuery, i as routes, in as parseWorkCreate, it as parseMutationApply, j as parseThreadSnapshot, k as parseThreadLinkInput, mn as parseWorkUpdate, pn as parseWorkSyncResult, pt as parseReviewComparison, rt as maxFileSaveBytes, sn as parseWorkItemRef, tn as parseWorkActionInput, tt as parseFileSaveRequest, un as parseWorkQuery, vn as parseMessageAuthor, w as parseThread } from "./events-6z5v7Uca.js";
4
4
  import { $ as openShellTab, B as parseTaskDesign, Bt as Button, Cn as Text, J as FieldCardContent, Q as initialShellTabs, Rt as Loader, Sn as writePreference, X as activeTab, Y as FieldCardHeader, Z as closeShellTab, _ as requestComments, _n as LiveStatus, _t as taskHref, at as tabsCookieValue, et as parseShellTabs, gt as selectedTask, ht as readConversationLocation, it as tabsCookieName, lt as conversationDestination, mn as ShellTabBar, n as unavailableComments, nt as stepShellTab, ot as visitShellTab, pt as legacyConversationHref, q as FieldCard, r as followThreads, rt as tabHref, t as commentsUnavailable, tt as readTabsCookie, v as projectLive, xn as readPreference, xt as legacyFileHref, yn as AppShell } from "./comment-data-BuArfgcc.js";
5
5
  import { d as parsePreviewHash, f as parsePreviewId, l as parsePreviewBranch, m as parsePreviewViewport } from "./parsers-CsiSkwTT.js";
@@ -682,7 +682,7 @@ function createAppController(template, project, runtime) {
682
682
  let title = (conversation ? "Discussion" : screen.label).replace(/[&<>]/g, (character) => `&#${character.charCodeAt(0)};`);
683
683
  let logo = project?.config.logo;
684
684
  let shell = logo ? withLogoIcons(template, logo, (theme) => routes.logo.href({ theme })) : template;
685
- return new Response(shell.replace("<title>bud.sh</title>", () => `<title>${title} · bud.sh</title>`).replace("<!--app-html-->", () => content), { headers: { "Content-Type": "text/html; charset=utf-8" } });
685
+ return new Response(shell.replace("<title>bud.sh</title>", () => `<title>${title} · bud.sh</title>`).replace("</head>", () => project ? `${themeStyle(project.config.theme)}</head>` : "</head>").replace("<!--app-html-->", () => content), { headers: { "Content-Type": "text/html; charset=utf-8" } });
686
686
  }
687
687
  return createController(routes, { actions: {
688
688
  conversation({ params, request }) {
@@ -1,4 +1,4 @@
1
- import { $ as shutdown, $n as makeUnsafe, $t as provideService, A as debounce, An as uninterruptibleMask, At as clockWith, B as merge, Bn as empty, Bt as forkIn, C as RuntimePolicy, Cn as tapError, Ct as asSome, D as callback, Dn as try_, Dt as catchIf, E as as, En as tryPromise, F as fromPubSub, Fn as build, Ft as filterOrFail, Gn as provide$1, Gt as mapError, H as tap$1, Hn as makeMemoMapUnsafe, Ht as gen, I as ignore$1, In as buildWithMemoMap, It as flatMap, J as shutdown$1, Jt as orDie, K as offer, L as make$2, Ln as effect, Lt as flatten, M as empty$1, Mn as withFiber, Mt as die, N as filter, Nn as yieldNow, Nt as ensuring, On as undefined_$1, Ot as catchTag, Pn as currentTimeMillis, Pt as fail$1, Q as publishAll, Qn as forkUnsafe, Qt as provideContext, Rn as effectContext, Rt as forEach, Sn as tap, St as as$1, T as FileSystem, U as unwrap$1, Ut as ignore, V as runForEach, Vn as isLayer, Vt as forkScoped, W as make$3, Wn as mergeAll, Wt as map, X as take, Xn as unwrap, Xt as promise, Y as sliding$1, Yn as sync$1, Yt as orElseSucceed, Z as publish, Zn as close, _n as sleep, _t as acquireRelease, an as runForkWith, ar as scopeRemoveFinalizerUnsafe, bn as suspend, bt as all, cn as runPromiseExitWith, cr as getOption, dn as runSyncExit, dr as getOrUndefined, en as result, er as _await, et as sliding, fn as runSyncExitWith, fr as isNone, gn as serviceOption, gt as bytes$1, hn as scoped, hr as TaggedError, in as runFork, ir as void_, it as runIn, jn as void_$1, kn as uninterruptible, kt as catch_, ln as runPromiseWith, lr as make$1, m as projectModuleFile, mn as scope, mr as some, nn as runCallback, nr as make$4, nt as await_, on as runPromise, or as Service, pn as runSyncWith, pr as none, q as offerUnsafe, qn as succeed$1, qt as option, rn as runCallbackWith, rr as succeed$2, rt as interrupt, sn as runPromiseExit, sr as add, tr as doneUnsafe, tt as unbounded, u as Git, un as runSync, ur as getOrNull, vn as succeed, w as Path, wn as timeoutOption, wt as asVoid, x as writeTextAtomic, xn as sync, xt as andThen, yn as succeedNone, yt as addFinalizer, zn as effectDiscard, zt as forever } from "./branch-previews-C_TVt_HQ.js";
1
+ import { $ as publishAll, $n as forkUnsafe, $t as provideContext, An as uninterruptible, At as catch_, Bn as effectDiscard, Bt as forever, Cn as tap, Ct as as$1, D as as, Dn as tryPromise, E as FileSystem, Fn as currentTimeMillis, Ft as fail$1, G as make$3, Gn as mergeAll, Gt as map, H as runForEach, Hn as isLayer, Ht as forkScoped, I as fromPubSub, In as build, It as filterOrFail, J as offerUnsafe, Jn as succeed$1, Jt as option, Kn as provide$1, Kt as mapError, L as ignore$1, Ln as buildWithMemoMap, Lt as flatMap, Mn as void_$1, N as empty$1, Nn as withFiber, Nt as die, O as callback, On as try_, Ot as catchIf, P as filter, Pn as yieldNow, Pt as ensuring, Q as publish, Qn as close, R as make$2, Rn as effect, Rt as flatten, S as writeTextAtomic, Sn as sync, St as andThen, T as Path, Tn as timeoutOption, Tt as asVoid, U as tap$1, Un as makeMemoMapUnsafe, Ut as gen, V as merge, Vn as empty, Vt as forkIn, W as unwrap$1, Wt as ignore, X as sliding$1, Xn as sync$1, Xt as orElseSucceed, Y as shutdown$1, Yt as orDie, Z as take, Zn as unwrap, Zt as promise, _n as serviceOption, _t as bytes$1, an as runFork, ar as void_, at as runIn, bn as succeedNone, bt as addFinalizer, cn as runPromiseExit, cr as add, dn as runSync, dr as getOrNull, en as provideService, er as makeUnsafe, et as shutdown, fn as runSyncExit, fr as getOrUndefined, gn as scoped, gr as TaggedError, hn as scope, hr as some, in as runCallbackWith, ir as succeed$2, it as interrupt, j as debounce, jn as uninterruptibleMask, jt as clockWith, kn as undefined_$1, kt as catchTag, ln as runPromiseExitWith, lr as getOption, m as projectModuleFile, mn as runSyncWith, mr as none, nr as doneUnsafe, nt as unbounded, on as runForkWith, or as scopeRemoveFinalizerUnsafe, pn as runSyncExitWith, pr as isNone, q as offer, rn as runCallback, rr as make$4, rt as await_, sn as runPromise, sr as Service, tn as result, tr as _await, tt as sliding, u as Git, un as runPromiseWith, ur as make$1, vn as sleep, vt as acquireRelease, w as RuntimePolicy, wn as tapError, wt as asSome, xn as suspend, xt as all, yn as succeed, zn as effectContext, zt as forEach } from "./branch-previews-BryeA_kA.js";
2
2
  import { $ as parseReviewActionRecovery, A as parseThreadReplyInput, An as iconNames, At as filterFileEntries, Bt as isWithinDirectory, Cn as WorkValidationError, Ct as compileSearchPattern, Dn as record$1, Dt as parseFileSearchQuery, E as parseThreadFilter, En as parseWork, Et as searchPathMatches, Gt as list, Ht as parseFilePath, Jt as strict$1, Kt as parseContract, L as applyReviewSelection, N as parseThreadStatusInput, O as parseThreadInput, On as strict, Rt as parseFileIndexQuery, Sn as statusCategory, St as parseReviewSourceQuery, T as parseThreadCapabilities, Tn as nonempty, Ut as pathHierarchy, Vt as parentPath, Wt as integer, X as parseReviewActionIntent, Y as parseReviewActionApply, Zt as parseWorkWorkspace, _n as parseMessage, _t as parseReviewHistoryQuery, an as parseWorkDetail, at as parseMutationIntent, b as MAX_THREADS, bn as fieldByRole, cn as parseWorkMutationResult, dn as parseWorkSnapshot, dt as validateMutationSelection, en as parseSectionData, gn as valueByRole, hn as parseWorkValue, ht as parseReviewDiffQuery, i as routes, in as parseWorkCreate, it as parseMutationApply, j as parseThreadSnapshot, jt as orderFileEntries, k as parseThreadLinkInput, kt as classifyText, lt as parseRecovery, mn as parseWorkUpdate, on as parseWorkItem, pt as parseReviewComparison, qt as revision, r as parseLiveId, rn as parseWorkConnection, sn as parseWorkItemRef, t as RESYNC, tn as parseWorkActionInput, tt as parseFileSaveRequest, un as parseWorkQuery, ut as pathCollisionKey, vn as parseMessageAuthor, w as parseThread, wn as identifier, wt as matchFileText, xn as parseWorkSchema, zt as isProtectedPath } from "./events-6z5v7Uca.js";
3
3
  import { pathToFileURL } from "node:url";
4
4
  import { createHash, randomBytes, randomUUID } from "node:crypto";
@@ -1,5 +1,5 @@
1
- import { A as debounce, C as RuntimePolicy, Dn as try_, Dt as catchIf, E as as$1, Ft as filterOrFail, G as makeUnsafe, Gn as provide, Gt as mapError, Ht as gen, It as flatMap, Jn as succeedContext, Kn as provideMerge, L as make, Ln as effect, M as empty, Mt as die, Nt as ensuring, O as changes, Ot as catchTag, P as fromEffect, Pn as currentTimeMillis, Pt as fail, R as mapEffect, Rn as effectContext, Rt as forEach, S as ProcessRunner, Sn as tap, St as as, T as FileSystem, Tn as timeoutOrElse, Tt as cached, U as unwrap, Un as merge, Ut as ignore, V as runForEach, Vt as forkScoped, Wn as mergeAll, Wt as map, Xn as unwrap$1, Yt as orElseSucceed, at as ArraySchema, bn as suspend, bt as all, c as previewsLayer, ct as Struct, d as gitLayer, dr as getOrUndefined, dt as decodeEffect, en as result, f as Project, ft as isMaxLength, gn as serviceOption, hn as scoped, hr as TaggedError, ht as optional, i as projectFlows, j as drop, jn as void_, jt as context, k as concat, kt as catch_, lr as make$1, lt as Undefined, mt as isPattern, or as Service, ot as Record, pt as isNonEmpty, qn as succeed$1, r as branchPreviewsLayer, s as Previews, sr as add, st as String$1, t as BranchPreviews, tn as retry, u as Git, ut as Union, vn as succeed, vt as acquireUseRelease, w as Path, wt as asVoid, xn as sync, xt as andThen, y as nodeLayer, z as mapError$1, zn as effectDiscard } from "./branch-previews-C_TVt_HQ.js";
2
- import { A as adapterRegistryLayer, D as publishChanges, E as liveChannelLayer, F as WorkAdapter, I as WorkError, M as memoryAdapterLayer, N as parseThreadImport, O as AdapterRegistry, P as ThreadAdapter, R as bundledScreensLayer, T as LiveChannel, _ as storeActivityLayer, c as FileReview, d as fileSearchLayer, f as Files, g as StoreActivity, i as fileSavesLayer, j as defineAdapter, k as adapterModuleLoaderLayer, l as fileReviewLayer, n as fileReviewActionsLayer, o as fileMutationsLayer, p as filesLayer, s as fileWriteLockLayer, v as storeLiveLayer, z as sourceScreensLayer } from "./server-DUBjmaBw.js";
1
+ import { A as concat, At as catch_, B as mapError$1, Bn as effectDiscard, C as ProcessRunner, Cn as tap, Ct as as, D as as$1, E as FileSystem, En as timeoutOrElse, Et as cached, F as fromEffect, Fn as currentTimeMillis, Ft as fail, Gn as mergeAll, Gt as map, H as runForEach, Ht as forkScoped, It as filterOrFail, Jn as succeed$1, K as makeUnsafe, Kn as provide, Kt as mapError, Lt as flatMap, M as drop, Mn as void_, Mt as context, N as empty, Nt as die, On as try_, Ot as catchIf, Pt as ensuring, R as make, Rn as effect, Sn as sync, St as andThen, T as Path, Tt as asVoid, Ut as gen, W as unwrap, Wn as merge, Wt as ignore, Xt as orElseSucceed, Yn as succeedContext, Zn as unwrap$1, _n as serviceOption, b as nodeLayer, c as previewsLayer, cr as add, ct as String$1, d as gitLayer, dt as Union, f as Project, fr as getOrUndefined, ft as decodeEffect, gn as scoped, gr as TaggedError, gt as optional, ht as isPattern, i as projectFlows, j as debounce, k as changes, kt as catchTag, lt as Struct, mt as isNonEmpty, nn as retry, ot as ArraySchema, pt as isMaxLength, qn as provideMerge, r as branchPreviewsLayer, s as Previews, sr as Service, st as Record, t as BranchPreviews, tn as result, u as Git, ur as make$1, ut as Undefined, w as RuntimePolicy, xn as suspend, xt as all, yn as succeed, yt as acquireUseRelease, z as mapEffect, zn as effectContext, zt as forEach } from "./branch-previews-BryeA_kA.js";
2
+ import { A as adapterRegistryLayer, D as publishChanges, E as liveChannelLayer, F as WorkAdapter, I as WorkError, M as memoryAdapterLayer, N as parseThreadImport, O as AdapterRegistry, P as ThreadAdapter, R as bundledScreensLayer, T as LiveChannel, _ as storeActivityLayer, c as FileReview, d as fileSearchLayer, f as Files, g as StoreActivity, i as fileSavesLayer, j as defineAdapter, k as adapterModuleLoaderLayer, l as fileReviewLayer, n as fileReviewActionsLayer, o as fileMutationsLayer, p as filesLayer, s as fileWriteLockLayer, v as storeLiveLayer, z as sourceScreensLayer } from "./server-DN5uwE4k.js";
3
3
  import { A as parseThreadReplyInput, C as parseAnchor, Cn as WorkValidationError, E as parseThreadFilter, M as parseThreadStatus, N as parseThreadStatusInput, O as parseThreadInput, _n as parseMessage, a as CommentMergeError, an as parseWorkDetail, b as MAX_THREADS, c as parseCommentInput, cn as parseWorkMutationResult, d as parseCommentThread, dn as parseWorkSnapshot, en as parseSectionData, f as revision, fn as parseWorkSync, in as parseWorkCreate, j as parseThreadSnapshot, k as parseThreadLinkInput, l as conversationId, mn as parseWorkUpdate, nn as parseWorkActivity, o as mergeThreads, on as parseWorkItem, p as text$2, pn as parseWorkSyncResult, rn as parseWorkConnection, s as stableJson, tn as parseWorkActionInput, u as object$1, un as parseWorkQuery, vn as parseMessageAuthor, w as parseThread, xn as parseWorkSchema } from "./events-6z5v7Uca.js";
4
4
  import { n as PICKER_MODULE_URL, t as pickerPageScript } from "./bridge-B_Blt55E.js";
5
5
  import { createHash, randomUUID } from "node:crypto";
@@ -1,4 +1,4 @@
1
- import { Ht as gen, Kn as provideMerge, Xt as promise, Zt as provide, a as followCapture, d as gitLayer, hn as scoped, i as projectFlows, l as PreviewSession, n as branchIndexName, o as startBranchBuild, on as runPromise, p as createProjectContext, xn as sync, y as nodeLayer, yt as addFinalizer } from "./assets/branch-previews-C_TVt_HQ.js";
1
+ import { Qt as provide, Sn as sync, Ut as gen, Zt as promise, a as followCapture, b as nodeLayer, bt as addFinalizer, d as gitLayer, gn as scoped, i as projectFlows, l as PreviewSession, n as branchIndexName, o as startBranchBuild, p as createProjectContext, qn as provideMerge, sn as runPromise } from "./assets/branch-previews-BryeA_kA.js";
2
2
  import { t as pickerPageScript } from "./assets/bridge-B_Blt55E.js";
3
3
  //#region ../previews/src/server/storage.ts
4
4
  /**
@@ -1,7 +1,7 @@
1
- import { Dn as try_, Gt as mapError, Ht as gen, It as flatMap, _ as resolveStorage, f as Project, on as runPromise, p as createProjectContext, u as Git } from "./assets/branch-previews-C_TVt_HQ.js";
2
- import { H as make, I as WorkError, O as AdapterRegistry } from "./assets/server-DUBjmaBw.js";
1
+ import { Kt as mapError, Lt as flatMap, On as try_, Ut as gen, _ as resolveStorage, f as Project, p as createProjectContext, sn as runPromise, u as Git } from "./assets/branch-previews-BryeA_kA.js";
2
+ import { H as make, I as WorkError, O as AdapterRegistry } from "./assets/server-DN5uwE4k.js";
3
3
  import { j as parseThreadSnapshot, w as parseThread } from "./assets/events-6z5v7Uca.js";
4
- import { n as storageLayer, r as readGitThreadImports } from "./assets/services-Og5rcF50.js";
4
+ import { n as storageLayer, r as readGitThreadImports } from "./assets/services-Ber8opFE.js";
5
5
  //#region app/server/comment-migration.ts
6
6
  function identity(metadata) {
7
7
  if (!metadata || typeof metadata !== "object" || Array.isArray(metadata)) return null;
@@ -1,7 +1,7 @@
1
- import { En as tryPromise, Gt as mapError, Ht as gen, Kn as provideMerge, Ln as effect, Xt as promise, _t as acquireRelease, b as readText, kn as uninterruptible, on as runPromise, or as Service, p as createProjectContext } from "./assets/branch-previews-C_TVt_HQ.js";
2
- import { B as sharedModules, H as make } from "./assets/server-DUBjmaBw.js";
3
- import { n as listen, r as createApp, t as ServerError } from "./assets/listener-BVbFsnmX.js";
4
- import { t as applicationLayer } from "./assets/services-Og5rcF50.js";
1
+ import { An as uninterruptible, Dn as tryPromise, Kt as mapError, Rn as effect, Ut as gen, Zt as promise, p as createProjectContext, qn as provideMerge, sn as runPromise, sr as Service, vt as acquireRelease, x as readText } from "./assets/branch-previews-BryeA_kA.js";
2
+ import { B as sharedModules, H as make } from "./assets/server-DN5uwE4k.js";
3
+ import { n as listen, r as createApp, t as ServerError } from "./assets/listener-oKd5ETMj.js";
4
+ import { t as applicationLayer } from "./assets/services-Ber8opFE.js";
5
5
  import { fileURLToPath } from "node:url";
6
6
  //#region app/server/runtime.ts
7
7
  var BudListener = class extends Service()("bud/Listener") {};
@@ -1,6 +1,6 @@
1
- import { Gn as provide, Ht as gen, Ln as effect, b as readText, or as Service, y as nodeLayer } from "./assets/branch-previews-C_TVt_HQ.js";
2
- import { H as make } from "./assets/server-DUBjmaBw.js";
3
- import { n as listen, r as createApp } from "./assets/listener-BVbFsnmX.js";
1
+ import { Kn as provide, Rn as effect, Ut as gen, b as nodeLayer, sr as Service, x as readText } from "./assets/branch-previews-BryeA_kA.js";
2
+ import { H as make } from "./assets/server-DN5uwE4k.js";
3
+ import { n as listen, r as createApp } from "./assets/listener-oKd5ETMj.js";
4
4
  import { fileURLToPath } from "node:url";
5
5
  //#region server.ts
6
6
  var Listener = class extends Service()("bud/StandaloneListener") {};
@@ -55,6 +55,23 @@ interface ResolvedFiles {
55
55
  edit: boolean;
56
56
  }
57
57
  //#endregion
58
+ //#region ../project/src/lib/theme.d.ts
59
+ /** Token values by name, such as `{ primary: '#f5b700' }`. */
60
+ type BudThemeColors = Readonly<Record<string, string>>;
61
+ /**
62
+ * Bud's colors in your project's or platform's palette: token values for the light theme, the
63
+ * dark one, or both; anything left out keeps Bud's own.
64
+ */
65
+ interface BudTheme {
66
+ light?: BudThemeColors;
67
+ dark?: BudThemeColors;
68
+ }
69
+ /** A theme's token values, checked, for each color scheme. */
70
+ interface ResolvedTheme {
71
+ light: BudThemeColors;
72
+ dark: BudThemeColors;
73
+ }
74
+ //#endregion
58
75
  //#region ../project/src/lib/branches.d.ts
59
76
  /**
60
77
  * Branches the canvas captures beside the working tree: main always, others once activated in its
@@ -325,6 +342,11 @@ interface BudConfig {
325
342
  * relative to the project, or `{ light, dark }`.
326
343
  */
327
344
  logo?: BudLogo;
345
+ /**
346
+ * Bud's colors in your palette: `--bud-*` token values for `light`, `dark` or both, such as
347
+ * `{ light: { primary: '#f5b700' } }`. Anything left out keeps Bud's own.
348
+ */
349
+ theme?: BudTheme;
328
350
  /**
329
351
  * What finds the element under a comment: `bud:dom` (the default), `bud:react-grab` for React
330
352
  * projects with React Grab installed, or a ./ module in your project exporting a picker adapter.
@@ -384,8 +406,9 @@ interface ResolvedBudConfig {
384
406
  previews: ResolvedPreviews;
385
407
  files: ResolvedFiles;
386
408
  logo: ResolvedLogo | null;
409
+ theme: ResolvedTheme;
387
410
  picker: ResolvedPicker;
388
411
  branches: ResolvedBranches;
389
412
  }
390
413
  //#endregion
391
- export { defineConfig as a, files as c, ResolvedBudConfig as i, pages as l, BudRoute as n, BudScreen as o, ProjectInfo as r, canvas as s, BudConfig as t, tasks as u };
414
+ export { defineConfig as a, files as c, BudTheme as d, ResolvedBudConfig as i, pages as l, BudRoute as n, BudScreen as o, ProjectInfo as r, canvas as s, BudConfig as t, tasks as u };
@@ -0,0 +1,111 @@
1
+ import { i as ResolvedBudConfig } from "./config-Cuauq8xY.js";
2
+ //#region app/server/hosted/contract.d.ts
3
+ /** How a hosted Bud's captures stand, as its host reports them. */
4
+ interface RemoteBranchState {
5
+ main: string | null;
6
+ /** The branch the server's checkout shows, or null. */
7
+ working: string | null;
8
+ active: string[];
9
+ /** The commit each branch's pictures show. */
10
+ captured: Record<string, string>;
11
+ /** Captures under way or failed, by branch. */
12
+ jobs: Record<string, {
13
+ commit: string;
14
+ state: "queued" | "building" | "capturing" | "failed";
15
+ error: string | null;
16
+ progress: {
17
+ captured: number;
18
+ total: number;
19
+ } | null;
20
+ }>;
21
+ }
22
+ /**
23
+ * Branches and captures kept by a host instead of local Git and builds: a hosted Bud lists the
24
+ * repository's branches through its source and captures them in builders of its own.
25
+ */
26
+ interface BranchRemote {
27
+ branches(): Promise<{
28
+ name: string;
29
+ commit: string;
30
+ subject: string | null;
31
+ }[]>;
32
+ state(): Promise<RemoteBranchState>;
33
+ activate(name: string): Promise<void>;
34
+ deactivate(name: string): Promise<void>;
35
+ /** Captures the branch's current head now, even when its pictures already show that commit. */
36
+ capture(name: string): Promise<void>;
37
+ }
38
+ /**
39
+ * Where a hosted Bud's pictures, maps and indexes are kept: keys such as `<hash>.jpg`, shared
40
+ * with the host's captures. The same shape as `@bud.sh/previews`' storage.
41
+ */
42
+ interface HostedStorage {
43
+ /** The file's bytes, or undefined when there is none. */
44
+ read(key: string): Promise<Uint8Array<ArrayBuffer> | undefined>;
45
+ write(key: string, bytes: Uint8Array): Promise<void>;
46
+ has(key: string): Promise<boolean>;
47
+ /**
48
+ * The file's bytes as a stream, or null when there is none. Pictures are served from it
49
+ * without holding them in memory.
50
+ */
51
+ stream?(key: string): Promise<ReadableStream<Uint8Array> | null>;
52
+ }
53
+ /**
54
+ * A hosted Bud with only the canvas and tasks: pictures, maps and branch state come from its
55
+ * host's stores, Beads lives in D1, and nothing reads a checkout, runs Git or opens a browser.
56
+ */
57
+ interface HostedAppOptions {
58
+ /** The project's resolved config; its screens are limited to the canvas and tasks. */
59
+ config: ResolvedBudConfig;
60
+ /** Bud's built HTML shell, `dist/client/index.html`. */
61
+ template: string;
62
+ /** The D1 database holding the project's Beads: a binding or any D1-like database. */
63
+ database: HostedDatabase;
64
+ /** The previews store the host's captures write. */
65
+ storage: HostedStorage;
66
+ /** The host's branches and capture state. */
67
+ remote: BranchRemote;
68
+ /**
69
+ * Who comments and task edits are attributed to when a request names no author of its own.
70
+ */
71
+ author: HostedAuthor;
72
+ /**
73
+ * The capability the browser presents, 48 hex characters; random when absent. A host that
74
+ * restarts its server keeps it, so open pages keep working.
75
+ */
76
+ token?: string;
77
+ }
78
+ /** The part of a D1 database the Beads store uses. */
79
+ interface HostedDatabase {
80
+ prepare(query: string): unknown;
81
+ batch(statements: never[]): Promise<unknown[]>;
82
+ }
83
+ /** A person comments and task edits are attributed to. */
84
+ interface HostedAuthor {
85
+ name: string;
86
+ email: string;
87
+ }
88
+ /** What the host knows about one request it authenticated. */
89
+ interface HostedRequestContext {
90
+ /**
91
+ * The signed-in person, who authors the request's comments, replies and task edits; the
92
+ * browser never chooses one.
93
+ */
94
+ author?: HostedAuthor;
95
+ }
96
+ /** A running hosted Bud. */
97
+ interface HostedApp {
98
+ /** Answers one request to Bud, already authenticated by the host. */
99
+ fetch(request: Request, context?: HostedRequestContext): Promise<Response>;
100
+ /** Stops its services. */
101
+ dispose(): Promise<void>;
102
+ }
103
+ /** Creates a hosted Bud from its host's stores. */
104
+ type CreateHostedApp = (options: HostedAppOptions) => HostedApp;
105
+ /**
106
+ * The screens a hosted Bud shows: Pages as captured pictures, and no Files, which need a
107
+ * checkout.
108
+ */
109
+ declare const hostedScreenModules: readonly string[];
110
+ //#endregion
111
+ export { HostedAuthor as a, HostedStorage as c, HostedAppOptions as i, RemoteBranchState as l, CreateHostedApp as n, HostedDatabase as o, HostedApp as r, HostedRequestContext as s, BranchRemote as t, hostedScreenModules as u };
@@ -1,4 +1,4 @@
1
- import { i as ResolvedBudConfig } from "./assets/config-BzzRLcL-.js";
1
+ import { i as ResolvedBudConfig } from "./assets/config-Cuauq8xY.js";
2
2
  //#region src/companion.d.ts
3
3
  /**
4
4
  * The contract between a host, such as `@bud.sh/app-vite-plugin` and its CLI, and the companion
@@ -1,101 +1,5 @@
1
- import { i as ResolvedBudConfig } from "./assets/config-BzzRLcL-.js";
2
- //#region app/server/hosted/contract.d.ts
3
- /** How a hosted Bud's captures stand, as its host reports them. */
4
- interface RemoteBranchState {
5
- main: string | null;
6
- /** The branch the server's checkout shows, or null. */
7
- working: string | null;
8
- active: string[];
9
- /** The commit each branch's pictures show. */
10
- captured: Record<string, string>;
11
- /** Captures under way or failed, by branch. */
12
- jobs: Record<string, {
13
- commit: string;
14
- state: "queued" | "building" | "capturing" | "failed";
15
- error: string | null;
16
- progress: {
17
- captured: number;
18
- total: number;
19
- } | null;
20
- }>;
21
- }
22
- /**
23
- * Branches and captures kept by a host instead of local Git and builds: a hosted Bud lists the
24
- * repository's branches through its source and captures them in builders of its own.
25
- */
26
- interface BranchRemote {
27
- branches(): Promise<{
28
- name: string;
29
- commit: string;
30
- subject: string | null;
31
- }[]>;
32
- state(): Promise<RemoteBranchState>;
33
- activate(name: string): Promise<void>;
34
- deactivate(name: string): Promise<void>;
35
- /** Captures the branch's current head now, even when its pictures already show that commit. */
36
- capture(name: string): Promise<void>;
37
- }
38
- /**
39
- * Where a hosted Bud's pictures, maps and indexes are kept: keys such as `<hash>.jpg`, shared
40
- * with the host's captures. The same shape as `@bud.sh/previews`' storage.
41
- */
42
- interface HostedStorage {
43
- /** The file's bytes, or undefined when there is none. */
44
- read(key: string): Promise<Uint8Array<ArrayBuffer> | undefined>;
45
- write(key: string, bytes: Uint8Array): Promise<void>;
46
- has(key: string): Promise<boolean>;
47
- /**
48
- * The file's bytes as a stream, or null when there is none. Pictures are served from it
49
- * without holding them in memory.
50
- */
51
- stream?(key: string): Promise<ReadableStream<Uint8Array> | null>;
52
- }
53
- /**
54
- * A hosted Bud with only the canvas and tasks: pictures, maps and branch state come from its
55
- * host's stores, Beads lives in D1, and nothing reads a checkout, runs Git or opens a browser.
56
- */
57
- interface HostedAppOptions {
58
- /** The project's resolved config; its screens are limited to the canvas and tasks. */
59
- config: ResolvedBudConfig;
60
- /** Bud's built HTML shell, `dist/client/index.html`. */
61
- template: string;
62
- /** The D1 database holding the project's Beads: a binding or any D1-like database. */
63
- database: HostedDatabase;
64
- /** The previews store the host's captures write. */
65
- storage: HostedStorage;
66
- /** The host's branches and capture state. */
67
- remote: BranchRemote;
68
- /** Who comments and task edits are attributed to. */
69
- author: {
70
- name: string;
71
- email: string;
72
- };
73
- /**
74
- * The capability the browser presents, 48 hex characters; random when absent. A host that
75
- * restarts its server keeps it, so open pages keep working.
76
- */
77
- token?: string;
78
- }
79
- /** The part of a D1 database the Beads store uses. */
80
- interface HostedDatabase {
81
- prepare(query: string): unknown;
82
- batch(statements: never[]): Promise<unknown[]>;
83
- }
84
- /** A running hosted Bud. */
85
- interface HostedApp {
86
- /** Answers one request to Bud, already authenticated by the host. */
87
- fetch(request: Request): Promise<Response>;
88
- /** Stops its services. */
89
- dispose(): Promise<void>;
90
- }
91
- /** Creates a hosted Bud from its host's stores. */
92
- type CreateHostedApp = (options: HostedAppOptions) => HostedApp;
93
- /**
94
- * The screens a hosted Bud shows: Pages as captured pictures, and no Files, which need a
95
- * checkout.
96
- */
97
- export declare const hostedScreenModules: readonly string[];
98
- //#endregion
1
+ import { i as ResolvedBudConfig } from "./assets/config-Cuauq8xY.js";
2
+ import { a as HostedAuthor, c as HostedStorage, i as HostedAppOptions, l as RemoteBranchState, n as CreateHostedApp, o as HostedDatabase, r as HostedApp, s as HostedRequestContext, t as BranchRemote, u as hostedScreenModules } from "./assets/contract-BsCQbbxD.js";
99
3
  //#region src/hosted.server.d.ts
100
4
  /**
101
5
  * Creates a hosted Bud: Bud's own routes for the canvas and tasks on the host's stores.
@@ -104,4 +8,4 @@ export declare const hostedScreenModules: readonly string[];
104
8
  */
105
9
  export declare const createHostedApp: CreateHostedApp;
106
10
  //#endregion
107
- export type { BranchRemote, CreateHostedApp, HostedApp, HostedAppOptions, HostedDatabase, HostedStorage, RemoteBranchState, ResolvedBudConfig };
11
+ export { type BranchRemote, type CreateHostedApp, type HostedApp, type HostedAppOptions, type HostedAuthor, type HostedDatabase, type HostedRequestContext, type HostedStorage, type RemoteBranchState, type ResolvedBudConfig, hostedScreenModules };
@@ -1,5 +1,5 @@
1
1
  import { n as ElementSource } from "./assets/canvas-anchor-CYU3qBPx.js";
2
- import { a as defineConfig, c as files, l as pages, n as BudRoute, o as BudScreen, s as canvas, t as BudConfig, u as tasks } from "./assets/config-BzzRLcL-.js";
2
+ import { a as defineConfig, c as files, l as pages, n as BudRoute, o as BudScreen, s as canvas, t as BudConfig, u as tasks } from "./assets/config-Cuauq8xY.js";
3
3
  //#region ../picker/src/lib/types.d.ts
4
4
  /** What a framework adds about an element, beyond what the page's DOM shows. */
5
5
  interface PickerDescription {
@@ -0,0 +1,46 @@
1
+ import { d as BudTheme } from "./assets/config-Cuauq8xY.js";
2
+ import { a as HostedAuthor, s as HostedRequestContext } from "./assets/contract-BsCQbbxD.js";
3
+ //#region src/node-host.server.d.ts
4
+ /** Where the project's Bud on Cloudflare is, and the secret its remote API takes. */
5
+ export interface NodeHostOptions {
6
+ /** The Worker's origin, such as `https://bud-hosted.example.workers.dev`. */
7
+ url: string;
8
+ /** The Worker's `BUD_REMOTE_TOKEN`. */
9
+ token: string;
10
+ /** Who authors comments and task edits when a request names no one; Bud when absent. */
11
+ author?: HostedAuthor;
12
+ /**
13
+ * The capability open pages present, 48 hex characters; random when absent, so pages opened
14
+ * before a restart reload once.
15
+ */
16
+ capability?: string;
17
+ /**
18
+ * Bud's colors in the platform's palette, replacing the project's: `--bud-*` token values for
19
+ * `light` and `dark`.
20
+ */
21
+ theme?: BudTheme;
22
+ /** Bud's built interface, `dist/client`; this package's own when absent. */
23
+ client?: string;
24
+ fetch?: typeof globalThis.fetch;
25
+ }
26
+ /** A hosted Bud answering a Node server's requests. */
27
+ export interface NodeHost {
28
+ /**
29
+ * Answers one request, already authenticated by the host.
30
+ * @param request - The visitor's request.
31
+ * @param context - The signed-in person, who authors its comments and task edits.
32
+ * @returns Bud's response.
33
+ */
34
+ fetch(request: Request, context?: HostedRequestContext): Promise<Response>;
35
+ /** Stops Bud's services. */
36
+ dispose(): Promise<void>;
37
+ }
38
+ /**
39
+ * Starts a hosted Bud on Node: its interface from this package, and the project's config,
40
+ * pictures, tasks, discussions and branches from the project's Bud on Cloudflare.
41
+ * @param options - The Worker's origin and remote secret.
42
+ * @returns A fetch handler and a way to stop it.
43
+ */
44
+ export declare function createNodeHost(options: NodeHostOptions): Promise<NodeHost>;
45
+ //#endregion
46
+ export type { HostedAuthor, HostedRequestContext };
@@ -1,4 +1,4 @@
1
- import { r as ProjectInfo } from "./assets/config-BzzRLcL-.js";
1
+ import { r as ProjectInfo } from "./assets/config-Cuauq8xY.js";
2
2
  import { i as TaskDesign } from "./assets/task-design-xJOhRNWh.js";
3
3
  import { RequestMethod, Route, RouteMap } from "remix/routes";
4
4
  import { Handle, Props, RemixNode } from "remix/component";