bb-app 0.0.4 → 0.0.5

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 (345) hide show
  1. package/README.md +3 -3
  2. package/app/dist/assets/{AppSettingsView-SFYjccBR.js → AppSettingsView-Dmjbm_4y.js} +1 -1
  3. package/app/dist/assets/InternalReplayListView-BMzOdu0K.js +1 -0
  4. package/app/dist/assets/ProjectArchivedThreadsView-DzbW3kSk.js +1 -0
  5. package/app/dist/assets/ProjectSettingsView-BCVVMJFB.js +1 -0
  6. package/app/dist/assets/ThreadDetailRoute-BI3VVE99.js +2535 -0
  7. package/app/dist/assets/ThreadUnarchiveButton-BJStGY8f.js +1 -0
  8. package/app/dist/assets/{angular-html-C2Dl0O00.js → angular-html-CM7ZtmlE.js} +1 -1
  9. package/app/dist/assets/{angular-ts-CVYqc36v.js → angular-ts-B4aAwutb.js} +1 -1
  10. package/app/dist/assets/{apl-BGPamPSJ.js → apl-Db6aaGYX.js} +1 -1
  11. package/app/dist/assets/{astro-Ba-Dojj4.js → astro-CXkhV095.js} +1 -1
  12. package/app/dist/assets/{blade-Lwg2Qi0v.js → blade-CfLZY3kt.js} +1 -1
  13. package/app/dist/assets/{bsl-JaCMWPaY.js → bsl-CG-fq4sc.js} +1 -1
  14. package/app/dist/assets/{c-B_58eHuy.js → c-CwV4mx9Z.js} +1 -1
  15. package/app/dist/assets/{cairo-D7Xpkdmw.js → cairo-Ds0kTeYT.js} +1 -1
  16. package/app/dist/assets/chunk-JZWAC4HX-CrzST-zS.js +3 -0
  17. package/app/dist/assets/{cobol-CM0x5uzi.js → cobol-Bx9V6w-A.js} +1 -1
  18. package/app/dist/assets/{coffee-WumiHYOD.js → coffee-4vexivp2.js} +1 -1
  19. package/app/dist/assets/{cpp-D0sZgzGq.js → cpp-B9JgHtmn.js} +1 -1
  20. package/app/dist/assets/{crystal-C2tAIJ-r.js → crystal-CV6ainQY.js} +1 -1
  21. package/app/dist/assets/{css-QhLRjU31.js → css-BahFL25I.js} +1 -1
  22. package/app/dist/assets/{dialog-CaQY-B8P.js → dialog-sqh89xvD.js} +1 -1
  23. package/app/dist/assets/{edge-BmtKCk7-.js → edge-Dbi7IqBU.js} +1 -1
  24. package/app/dist/assets/{effective-hosts-ps3WYS_d.js → effective-hosts-Dc1pzW51.js} +4 -4
  25. package/app/dist/assets/{elixir-DiumzaXM.js → elixir-Bcybagr3.js} +1 -1
  26. package/app/dist/assets/{elm-DV3i51_v.js → elm-Cg7kNsW7.js} +1 -1
  27. package/app/dist/assets/{erb-3qqPnLJh.js → erb-CUdWoCwh.js} +1 -1
  28. package/app/dist/assets/{erlang-DJdyEhn7.js → erlang-C-m_88FN.js} +1 -1
  29. package/app/dist/assets/{fortran-fixed-form-Dyncprn4.js → fortran-fixed-form-Cx1lv7HN.js} +1 -1
  30. package/app/dist/assets/{fsharp-D6WYKxtq.js → fsharp-DC5k9sy2.js} +1 -1
  31. package/app/dist/assets/{gdresource-Bac2fAQZ.js → gdresource-D0EsKdgH.js} +1 -1
  32. package/app/dist/assets/{git-commit-CDZnUqIF.js → git-commit-BcFsuO5E.js} +1 -1
  33. package/app/dist/assets/{git-rebase-DIMwlcT0.js → git-rebase-CebuXWOz.js} +1 -1
  34. package/app/dist/assets/{glimmer-js-BKsURin4.js → glimmer-js-DHD_iF4f.js} +1 -1
  35. package/app/dist/assets/{glimmer-ts-Chhe0oIX.js → glimmer-ts-x8YwQhtI.js} +1 -1
  36. package/app/dist/assets/{glsl-Dy3tp3E1.js → glsl-DTvpjV5x.js} +1 -1
  37. package/app/dist/assets/{graphql-CseHr1LK.js → graphql-BABFRhpo.js} +1 -1
  38. package/app/dist/assets/{hack-boTiAbss.js → hack-BTa_6UF4.js} +1 -1
  39. package/app/dist/assets/{haml-CjrsmcwN.js → haml-DwZg9pb5.js} +1 -1
  40. package/app/dist/assets/{handlebars-B_oDWsbs.js → handlebars-Bkp0I46S.js} +1 -1
  41. package/app/dist/assets/{html-C4e0uDKx.js → html-BrFG164I.js} +1 -1
  42. package/app/dist/assets/{html-derivative-DtQj__OI.js → html-derivative-Dm50cCgO.js} +1 -1
  43. package/app/dist/assets/{http-W8z61A1Z.js → http-DHs85vmZ.js} +1 -1
  44. package/app/dist/assets/{hurl-CBaPhsIJ.js → hurl-Dh07B-Ro.js} +1 -1
  45. package/app/dist/assets/{hxml-BNblpm3P.js → hxml-iQTOTWpM.js} +1 -1
  46. package/app/dist/assets/index-8oyVoqEg.js +1360 -0
  47. package/app/dist/assets/index-Cdqw3W2G.css +2 -0
  48. package/app/dist/assets/{java-C9TLG_lA.js → java-CyElhBLV.js} +1 -1
  49. package/app/dist/assets/{javascript-B6-baDIX.js → javascript-Iw1B_HiK.js} +1 -1
  50. package/app/dist/assets/{jinja-D6Ec9tX7.js → jinja-CwNzTCBn.js} +1 -1
  51. package/app/dist/assets/{jison-abiW-9pn.js → jison-DmnCmBdi.js} +1 -1
  52. package/app/dist/assets/{json-DtR-rTq5.js → json-2cvnIy7t.js} +1 -1
  53. package/app/dist/assets/{jsx-TQyKdSmQ.js → jsx-CUP6THJt.js} +1 -1
  54. package/app/dist/assets/{julia-BKK2QHze.js → julia-C5QkPIf6.js} +1 -1
  55. package/app/dist/assets/{just-BY5hWNgR.js → just-DKTy3QCk.js} +1 -1
  56. package/app/dist/assets/{latex-CuW1q2vJ.js → latex-D6EezuXB.js} +1 -1
  57. package/app/dist/assets/{liquid-BsqUQnO5.js → liquid-CIoyldIJ.js} +1 -1
  58. package/app/dist/assets/localhost-badge-DMyU8aEl.js +22 -0
  59. package/app/dist/assets/{lua-D4PO1r07.js → lua-DdZ7KAyq.js} +1 -1
  60. package/app/dist/assets/{marko-1bNyFeKY.js → marko-DzUNPeS3.js} +1 -1
  61. package/app/dist/assets/{mdc-BoU9IUKL.js → mdc-D5459Kci.js} +1 -1
  62. package/app/dist/assets/mutation-cache-effects-DiCFYnTh.js +1 -0
  63. package/app/dist/assets/{nextflow-dLJhzX3Z.js → nextflow-D-Ec_bsY.js} +1 -1
  64. package/app/dist/assets/{nginx-BXWzwlUI.js → nginx-0z5C7Rx2.js} +1 -1
  65. package/app/dist/assets/{nim-BgalU8R5.js → nim-DqH405Ip.js} +1 -1
  66. package/app/dist/assets/page-shell-DBPkwDcw.js +39 -0
  67. package/app/dist/assets/{perl-OrqzwF6j.js → perl-DFMDl6Q7.js} +1 -1
  68. package/app/dist/assets/{php-DsC0K8EH.js → php-CnLHesuB.js} +1 -1
  69. package/app/dist/assets/pill-BNIxU09I.js +1 -0
  70. package/app/dist/assets/{pug-D-Q9Kgtz.js → pug-Bd_9REL_.js} +1 -1
  71. package/app/dist/assets/{qml-Dyn06a9u.js → qml-Lr6hdC-5.js} +1 -1
  72. package/app/dist/assets/{r-C3AjV-3E.js → r-Ce3-ySeQ.js} +1 -1
  73. package/app/dist/assets/{razor-DHd1twLi.js → razor-FG0QpIgS.js} +1 -1
  74. package/app/dist/assets/{regexp-Dl_oPCDN.js → regexp-CIUvMYKc.js} +1 -1
  75. package/app/dist/assets/{rst-BIq6VDAT.js → rst-Dz7v6x4B.js} +1 -1
  76. package/app/dist/assets/{ruby-BJwcPMyx.js → ruby-C-FBX9Yb.js} +1 -1
  77. package/app/dist/assets/{sas-TXWq-8Bu.js → sas-C9h-w7MI.js} +1 -1
  78. package/app/dist/assets/{scss-Cz2NsCSh.js → scss-D6OzIOrm.js} +1 -1
  79. package/app/dist/assets/{settings-section-CZi6DvBs.js → settings-section-BKzVpY8V.js} +1 -1
  80. package/app/dist/assets/{shaderlab-CSb6CBXg.js → shaderlab-DGohHMiF.js} +1 -1
  81. package/app/dist/assets/{shellscript-CJedfzfs.js → shellscript-D87RcbyJ.js} +1 -1
  82. package/app/dist/assets/{shellsession-Tkblvq8e.js → shellsession-TIQjKTe8.js} +1 -1
  83. package/app/dist/assets/{soy-g_UxtUjg.js → soy-B-dmhoWy.js} +1 -1
  84. package/app/dist/assets/{sparql-J1VOnnwM.js → sparql-BgU2QITA.js} +1 -1
  85. package/app/dist/assets/split-button-DqIwadhH.js +1 -0
  86. package/app/dist/assets/{sql-DQAX0EN7.js → sql-CbBIAEKN.js} +1 -1
  87. package/app/dist/assets/{stata-BXjroK6c.js → stata-BQ_FGGIg.js} +1 -1
  88. package/app/dist/assets/{surrealql-DyDhPjEW.js → surrealql-B5__VBgQ.js} +1 -1
  89. package/app/dist/assets/{svelte-CEjCx-8g.js → svelte-CgBSZjLG.js} +1 -1
  90. package/app/dist/assets/{templ-BViMCY-s.js → templ-_lWYjbQF.js} +1 -1
  91. package/app/dist/assets/{tex-BOG7uw6j.js → tex-BYUs5HV3.js} +1 -1
  92. package/app/dist/assets/thread-queries-BX-3vM7I.js +1 -0
  93. package/app/dist/assets/{ts-tags-1PkZB39L.js → ts-tags-hjuJ4isf.js} +1 -1
  94. package/app/dist/assets/{tsx-B1khekg1.js → tsx-DlvScFgB.js} +1 -1
  95. package/app/dist/assets/{twig-C30VOGkj.js → twig-DgkARV1o.js} +1 -1
  96. package/app/dist/assets/{typescript-BVriUqhl.js → typescript-BE5MgbU9.js} +1 -1
  97. package/app/dist/assets/{vue-Dy6YaQjk.js → vue-C6mGC-Xh.js} +1 -1
  98. package/app/dist/assets/{vue-html-yfcmxRL7.js → vue-html-BcBAJPrV.js} +1 -1
  99. package/app/dist/assets/{vue-vine-BnfxXDO0.js → vue-vine-DsdYqYVB.js} +1 -1
  100. package/app/dist/assets/{xml-BJ3Y9ehh.js → xml-CMIrlqCw.js} +1 -1
  101. package/app/dist/assets/{xsl-CFOlFF3h.js → xsl-BL_g6M4v.js} +1 -1
  102. package/app/dist/assets/{yaml-BJda_PXC.js → yaml-D4rIwiAS.js} +1 -1
  103. package/app/dist/index.html +9 -9
  104. package/host-daemon/dist/bb +194 -49
  105. package/host-daemon/dist/bb-claude-code-bridge.mjs +34 -34
  106. package/host-daemon/dist/daemon-bundle.mjs +224 -224
  107. package/package.json +1 -1
  108. package/server/dist/index.js +176 -11
  109. package/app/dist/assets/InternalReplayListView-D-5BEgLK.js +0 -1
  110. package/app/dist/assets/ProjectArchivedThreadsView-DAF8LFet.js +0 -1
  111. package/app/dist/assets/ProjectSettingsView-C_WCJcrH.js +0 -1
  112. package/app/dist/assets/ThreadDetailRoute-D8k29X_E.js +0 -2390
  113. package/app/dist/assets/ThreadUnarchiveButton-EqnpnszW.js +0 -1
  114. package/app/dist/assets/index-B8UIxEOk.js +0 -1359
  115. package/app/dist/assets/index-Ct4fTclZ.css +0 -2
  116. package/app/dist/assets/localhost-badge-C9iEqET9.js +0 -22
  117. package/app/dist/assets/mutation-cache-effects-BQHFwGL7.js +0 -1
  118. package/app/dist/assets/page-shell-Dglk9LmR.js +0 -39
  119. package/app/dist/assets/pill-DYYeHA29.js +0 -3
  120. package/app/dist/assets/split-button-2v1ePK2A.js +0 -1
  121. package/app/dist/assets/thread-queries-BOTfj5Vv.js +0 -1
  122. package/server/dist/default-template/PREFERENCES.md +0 -35
  123. /package/app/dist/assets/{abap-DKGmjV0m.js → abap-B1dkBSPn.js} +0 -0
  124. /package/app/dist/assets/{actionscript-3-PQHI9sRP.js → actionscript-3-BT4ibYlP.js} +0 -0
  125. /package/app/dist/assets/{ada-7dCRqcEc.js → ada-CD92zeps.js} +0 -0
  126. /package/app/dist/assets/{addon-fit-CIMl-Yt0.js → addon-fit-Cm0rqjtv.js} +0 -0
  127. /package/app/dist/assets/{addon-web-links-Sy65bwVY.js → addon-web-links-B8_D6zvC.js} +0 -0
  128. /package/app/dist/assets/{andromeeda-CvHLbWZU.js → andromeeda-DqSmgxi0.js} +0 -0
  129. /package/app/dist/assets/{apache-DuwFT_ko.js → apache-D5suuoa_.js} +0 -0
  130. /package/app/dist/assets/{apex-ZrILV9y9.js → apex-BL-m4VHy.js} +0 -0
  131. /package/app/dist/assets/{applescript-QewDI2Hm.js → applescript-CLiBqvKT.js} +0 -0
  132. /package/app/dist/assets/{ara-CAKYVeDX.js → ara-LdDF8cmv.js} +0 -0
  133. /package/app/dist/assets/{asciidoc-xYtH5EEV.js → asciidoc-2DZ9hC2N.js} +0 -0
  134. /package/app/dist/assets/{asm-DuNyKkDV.js → asm-0ZPGRSUy.js} +0 -0
  135. /package/app/dist/assets/{aurora-x-mlfFqJAh.js → aurora-x-Da7Zfvbg.js} +0 -0
  136. /package/app/dist/assets/{awk-BDSWDVpS.js → awk-Bn0gn_B_.js} +0 -0
  137. /package/app/dist/assets/{ayu-dark-BTeHke7b.js → ayu-dark-bqYKoqpM.js} +0 -0
  138. /package/app/dist/assets/{ayu-light-CoZXvb4i.js → ayu-light-C45jTIzZ.js} +0 -0
  139. /package/app/dist/assets/{ayu-mirage-DlGy8b5I.js → ayu-mirage-BV_FCTQi.js} +0 -0
  140. /package/app/dist/assets/{ballerina-eIQtFtZN.js → ballerina-D2nw_w8Q.js} +0 -0
  141. /package/app/dist/assets/{bat-DVPhDFws.js → bat-ByUBN5gS.js} +0 -0
  142. /package/app/dist/assets/{beancount-DRh4LoEp.js → beancount-BTb2W6Mp.js} +0 -0
  143. /package/app/dist/assets/{berry-BJPWN0aG.js → berry-5SO2uITG.js} +0 -0
  144. /package/app/dist/assets/{bibtex-BXZl-zGT.js → bibtex-CDBTNfUI.js} +0 -0
  145. /package/app/dist/assets/{bicep-DUhze7H3.js → bicep-fgxG_4rP.js} +0 -0
  146. /package/app/dist/assets/{bird2-D_94N4Us.js → bird2-BCwzDhwX.js} +0 -0
  147. /package/app/dist/assets/{c3-CUFd2ak_.js → c3-Dlaci63_.js} +0 -0
  148. /package/app/dist/assets/{cadence-zuA3Lqsu.js → cadence-DHbRuEmm.js} +0 -0
  149. /package/app/dist/assets/{catppuccin-frappe-C4xh_RpD.js → catppuccin-frappe-DrL1fUuH.js} +0 -0
  150. /package/app/dist/assets/{catppuccin-latte-ZIzlVBYe.js → catppuccin-latte-C0REgVjl.js} +0 -0
  151. /package/app/dist/assets/{catppuccin-macchiato-DOZXEuSH.js → catppuccin-macchiato-ChQpylWO.js} +0 -0
  152. /package/app/dist/assets/{catppuccin-mocha-rnm_6i_u.js → catppuccin-mocha-Dd0JU1T0.js} +0 -0
  153. /package/app/dist/assets/{clarity-Dp-fzxYs.js → clarity-DMoTOm4G.js} +0 -0
  154. /package/app/dist/assets/{clojure-85kagXuc.js → clojure-DBhE3PpS.js} +0 -0
  155. /package/app/dist/assets/{cmake-5KZO_J3V.js → cmake-DwMc40Or.js} +0 -0
  156. /package/app/dist/assets/{codeowners-CwITHnrC.js → codeowners-1lVr8wqV.js} +0 -0
  157. /package/app/dist/assets/{codeql-DsuZZPKs.js → codeql-DWflolvo.js} +0 -0
  158. /package/app/dist/assets/{common-lisp-DQj0fa1s.js → common-lisp-CrVQ5xT-.js} +0 -0
  159. /package/app/dist/assets/{coq-BGPtnnb4.js → coq-CjfoyYSh.js} +0 -0
  160. /package/app/dist/assets/{csharp-Bz4y1fn8.js → csharp-C7bIWP5y.js} +0 -0
  161. /package/app/dist/assets/{csv-92JdhrVb.js → csv-DsAkDVtA.js} +0 -0
  162. /package/app/dist/assets/{cue-DO5iBckt.js → cue-BWmQgbOB.js} +0 -0
  163. /package/app/dist/assets/{cypher-Dt0SBufN.js → cypher-D-jVC50Q.js} +0 -0
  164. /package/app/dist/assets/{d-POAmrdpL.js → d-CaviyOrm.js} +0 -0
  165. /package/app/dist/assets/{dark-plus-Ci223Kw7.js → dark-plus-DIrnwZt9.js} +0 -0
  166. /package/app/dist/assets/{dart-Cv4z4sEx.js → dart-CZEi7JgC.js} +0 -0
  167. /package/app/dist/assets/{dax-Cw_LNvcO.js → dax-BK-8zffy.js} +0 -0
  168. /package/app/dist/assets/{desktop-B_uWbpWi.js → desktop-D3cjbL4D.js} +0 -0
  169. /package/app/dist/assets/{diff-pSjjL-ZH.js → diff-sHAzLvlp.js} +0 -0
  170. /package/app/dist/assets/{docker-r0L9bSzI.js → docker--xs2Ng3w.js} +0 -0
  171. /package/app/dist/assets/{dotenv-DU-Uz6AA.js → dotenv-Cm4nwcJ7.js} +0 -0
  172. /package/app/dist/assets/{dracula-C5lq8I7X.js → dracula-CAUSusef.js} +0 -0
  173. /package/app/dist/assets/{dracula-soft-QH3ntlSU.js → dracula-soft-cjNkMFza.js} +0 -0
  174. /package/app/dist/assets/{dream-maker-DE3sVgWW.js → dream-maker-fjmWTFCO.js} +0 -0
  175. /package/app/dist/assets/{emacs-lisp-aMjKKeFP.js → emacs-lisp-CJzqStIa.js} +0 -0
  176. /package/app/dist/assets/{everforest-dark-KTiMpaXm.js → everforest-dark-DBpaSMx1.js} +0 -0
  177. /package/app/dist/assets/{everforest-light-yJZ9a76P.js → everforest-light-CiGrXwia.js} +0 -0
  178. /package/app/dist/assets/{fennel-Bruivvq3.js → fennel-DRaXF7k8.js} +0 -0
  179. /package/app/dist/assets/{fish-CaGhpV7s.js → fish-Bn-Yh3Jj.js} +0 -0
  180. /package/app/dist/assets/{fluent-BsmQk-nO.js → fluent-DF5F8Ks_.js} +0 -0
  181. /package/app/dist/assets/{fortran-free-form-B9mY58s0.js → fortran-free-form-hCQHRqew.js} +0 -0
  182. /package/app/dist/assets/{gdscript-B_WUGHIs.js → gdscript-_C9_Hi_w.js} +0 -0
  183. /package/app/dist/assets/{gdshader-BR6nyn6z.js → gdshader-BW7b1X1Y.js} +0 -0
  184. /package/app/dist/assets/{genie-CW-a1unw.js → genie-Ch_6TCHd.js} +0 -0
  185. /package/app/dist/assets/{gherkin-D8z0Dn14.js → gherkin-CaNUsmTq.js} +0 -0
  186. /package/app/dist/assets/{github-dark-C2YvJIRl.js → github-dark-B9ygjgg6.js} +0 -0
  187. /package/app/dist/assets/{github-dark-default-DPZ1YWUU.js → github-dark-default-Br2bgYSx.js} +0 -0
  188. /package/app/dist/assets/{github-dark-dimmed-BlMwpJVf.js → github-dark-dimmed-CmtqpPJ-.js} +0 -0
  189. /package/app/dist/assets/{github-dark-high-contrast-KRBg57oP.js → github-dark-high-contrast-fSfmrZcC.js} +0 -0
  190. /package/app/dist/assets/{github-light-BLj5WXD_.js → github-light-BZjUqfZl.js} +0 -0
  191. /package/app/dist/assets/{github-light-default-BLgrdOV4.js → github-light-default-lIytXXhR.js} +0 -0
  192. /package/app/dist/assets/{github-light-high-contrast-Bmexxccr.js → github-light-high-contrast-BRrjFb7n.js} +0 -0
  193. /package/app/dist/assets/{gleam-BtOZgVle.js → gleam-DALMDpNs.js} +0 -0
  194. /package/app/dist/assets/{gn-JO9YMz2t.js → gn-DGjqrYN9.js} +0 -0
  195. /package/app/dist/assets/{gnuplot-DjZHg3_f.js → gnuplot-BYckvgQI.js} +0 -0
  196. /package/app/dist/assets/{go-D2GlBE5F.js → go-JycvP538.js} +0 -0
  197. /package/app/dist/assets/{groovy-1vEGAvvX.js → groovy-D5qMRONT.js} +0 -0
  198. /package/app/dist/assets/{gruvbox-dark-hard-pdBjrsK5.js → gruvbox-dark-hard-M1dj1e6V.js} +0 -0
  199. /package/app/dist/assets/{gruvbox-dark-medium-Csp4lPEF.js → gruvbox-dark-medium-cqq_ncQu.js} +0 -0
  200. /package/app/dist/assets/{gruvbox-dark-soft-BpNWvgik.js → gruvbox-dark-soft-B4QwL2a9.js} +0 -0
  201. /package/app/dist/assets/{gruvbox-light-hard-CC8CVJp5.js → gruvbox-light-hard-DLayMKOQ.js} +0 -0
  202. /package/app/dist/assets/{gruvbox-light-medium-D2yGUmJd.js → gruvbox-light-medium-D52XgPKf.js} +0 -0
  203. /package/app/dist/assets/{gruvbox-light-soft-C_9RTTTT.js → gruvbox-light-soft-Dola3KdD.js} +0 -0
  204. /package/app/dist/assets/{haskell-BFZjB68l.js → haskell-ys7wPPEd.js} +0 -0
  205. /package/app/dist/assets/{haxe-DDQKctJt.js → haxe-94kiChn7.js} +0 -0
  206. /package/app/dist/assets/{hcl-DUAADz_v.js → hcl-DmHt_-wq.js} +0 -0
  207. /package/app/dist/assets/{hjson-DyGphq4K.js → hjson-xMmoJ0Gx.js} +0 -0
  208. /package/app/dist/assets/{hlsl-BVEJlW36.js → hlsl-b-Pskdze.js} +0 -0
  209. /package/app/dist/assets/{horizon-BZmYXqIF.js → horizon-BKMqttiR.js} +0 -0
  210. /package/app/dist/assets/{horizon-bright-D0uooZm5.js → horizon-bright-HNkBlnm5.js} +0 -0
  211. /package/app/dist/assets/{houston-BUtcOxf9.js → houston-BkBSBSOQ.js} +0 -0
  212. /package/app/dist/assets/{hy-oWi_RwAK.js → hy-DKl1XhBq.js} +0 -0
  213. /package/app/dist/assets/{imba-iwzgkuTD.js → imba-DPxkOTAg.js} +0 -0
  214. /package/app/dist/assets/{ini-BNaakZQr.js → ini-lkLGq_1x.js} +0 -0
  215. /package/app/dist/assets/{json5-Y2CuQCK-.js → json5-Cy6ypJuJ.js} +0 -0
  216. /package/app/dist/assets/{jsonc-B30nqSUF.js → jsonc-Cw2ugYAK.js} +0 -0
  217. /package/app/dist/assets/{jsonl-B7UEa0TN.js → jsonl-Dp5_qBVH.js} +0 -0
  218. /package/app/dist/assets/{jsonnet-ZiCJB3SD.js → jsonnet-BTbmg_-u.js} +0 -0
  219. /package/app/dist/assets/{jssm-BOfC2rh1.js → jssm-CnT7nPea.js} +0 -0
  220. /package/app/dist/assets/{kanagawa-dragon-BVoApXR6.js → kanagawa-dragon-CxsBnuhV.js} +0 -0
  221. /package/app/dist/assets/{kanagawa-lotus-C-uV5im6.js → kanagawa-lotus-vHdxDDOS.js} +0 -0
  222. /package/app/dist/assets/{kanagawa-wave-BizPisns.js → kanagawa-wave-CIkfTKWk.js} +0 -0
  223. /package/app/dist/assets/{kdl-Bg7xxjIF.js → kdl-BwK60g80.js} +0 -0
  224. /package/app/dist/assets/{kotlin-CNprttl8.js → kotlin-Dbd9Vi-v.js} +0 -0
  225. /package/app/dist/assets/{kusto-D3uRUZFA.js → kusto-BuTk9usc.js} +0 -0
  226. /package/app/dist/assets/{laserwave-BypMvj8s.js → laserwave-C0wf_d3o.js} +0 -0
  227. /package/app/dist/assets/{lean-BbKKg8_U.js → lean-CYAW8bRN.js} +0 -0
  228. /package/app/dist/assets/{less-6BW8xQaX.js → less-D4uen21c.js} +0 -0
  229. /package/app/dist/assets/{light-plus-zSYF2DYe.js → light-plus-oqYyWKEE.js} +0 -0
  230. /package/app/dist/assets/{llvm-OMExIg60.js → llvm-Z1xJzteV.js} +0 -0
  231. /package/app/dist/assets/{log-BBfW4u9k.js → log-BGUxlsk3.js} +0 -0
  232. /package/app/dist/assets/{logo-D8GGcRiY.js → logo-wVUhvQ1b.js} +0 -0
  233. /package/app/dist/assets/{luau-CZIl0XK4.js → luau-rPFZzCmq.js} +0 -0
  234. /package/app/dist/assets/{make-mlZyflos.js → make-BmPf6m0P.js} +0 -0
  235. /package/app/dist/assets/{markdown-CppElJDR.js → markdown-AseU6zcW.js} +0 -0
  236. /package/app/dist/assets/{material-theme-OBz0sIMu.js → material-theme-6_W6rQhR.js} +0 -0
  237. /package/app/dist/assets/{material-theme-darker-BNfFk916.js → material-theme-darker-VPEo3Sem.js} +0 -0
  238. /package/app/dist/assets/{material-theme-lighter-D0OJsx_T.js → material-theme-lighter-CUhzCcZ9.js} +0 -0
  239. /package/app/dist/assets/{material-theme-ocean-CKWC7YJB.js → material-theme-ocean-B2JdsaGb.js} +0 -0
  240. /package/app/dist/assets/{material-theme-palenight-DOTFIR3W.js → material-theme-palenight-DhY-sklA.js} +0 -0
  241. /package/app/dist/assets/{matlab-CwLrY_Ss.js → matlab-BOj_BDQv.js} +0 -0
  242. /package/app/dist/assets/{mdx-OZt5aooY.js → mdx-Cm6cDkDI.js} +0 -0
  243. /package/app/dist/assets/{mermaid-mzvznqsh.js → mermaid-DLO-R4hv.js} +0 -0
  244. /package/app/dist/assets/{min-dark-BAbZNtjj.js → min-dark-D34a_pX7.js} +0 -0
  245. /package/app/dist/assets/{min-light-BzEisXBR.js → min-light-Cdd4KORE.js} +0 -0
  246. /package/app/dist/assets/{mipsasm-DONjtc4L.js → mipsasm-DYpHF-GA.js} +0 -0
  247. /package/app/dist/assets/{mojo-CHKQ5hW9.js → mojo-DqYVFv_G.js} +0 -0
  248. /package/app/dist/assets/{monokai-B8rLeJY_.js → monokai-CDR4sQ2n.js} +0 -0
  249. /package/app/dist/assets/{moonbit-CWIHpJf0.js → moonbit-DRKee9wk.js} +0 -0
  250. /package/app/dist/assets/{move-Dy7CmIgW.js → move-DbRk6Vn9.js} +0 -0
  251. /package/app/dist/assets/{narrat-NioX5-_j.js → narrat-IOfmaXfb.js} +0 -0
  252. /package/app/dist/assets/{nextflow-groovy-jKlTICX_.js → nextflow-groovy-EYl0c2BQ.js} +0 -0
  253. /package/app/dist/assets/{night-owl-light-C_DkqGGe.js → night-owl-light-Bedht9b4.js} +0 -0
  254. /package/app/dist/assets/{night-owl-C_xVeV9U.js → night-owl-yQJ3-I0I.js} +0 -0
  255. /package/app/dist/assets/{nix-BZVKmCQS.js → nix-C2IovEl2.js} +0 -0
  256. /package/app/dist/assets/{nord-CrTSutxR.js → nord-BjZ63GNL.js} +0 -0
  257. /package/app/dist/assets/{nushell-C8hgS98n.js → nushell-BflTrRB5.js} +0 -0
  258. /package/app/dist/assets/{objective-c-BUiYTSad.js → objective-c-GRClK1S7.js} +0 -0
  259. /package/app/dist/assets/{objective-cpp-BwY1U2XT.js → objective-cpp-l3qYw-v5.js} +0 -0
  260. /package/app/dist/assets/{ocaml-D51PiCY5.js → ocaml-BBDyhyMH.js} +0 -0
  261. /package/app/dist/assets/{odin-CoC4d8pi.js → odin-jCJ7Js99.js} +0 -0
  262. /package/app/dist/assets/{one-dark-pro-C9bEA2Dz.js → one-dark-pro-PIx2Diul.js} +0 -0
  263. /package/app/dist/assets/{one-light-DZ_5GYrV.js → one-light-BFMEz49S.js} +0 -0
  264. /package/app/dist/assets/{openscad-DCmPLSXt.js → openscad-Drf0LgCX.js} +0 -0
  265. /package/app/dist/assets/{pascal-BMY45JJO.js → pascal-BT2XAUTl.js} +0 -0
  266. /package/app/dist/assets/{pierre-dark-CMWr1OVv.js → pierre-dark-BMm5HxPQ.js} +0 -0
  267. /package/app/dist/assets/{pierre-light-DhtJ5n85.js → pierre-light-DyzEot4Q.js} +0 -0
  268. /package/app/dist/assets/{pkl-BlBky-cR.js → pkl-ML-dWShO.js} +0 -0
  269. /package/app/dist/assets/{plastic-C50vuo0c.js → plastic-BFI-Z5Z2.js} +0 -0
  270. /package/app/dist/assets/{plsql-B6Eq-lAd.js → plsql-0vd5cLro.js} +0 -0
  271. /package/app/dist/assets/{po-ByS5p8Sz.js → po-CbZ_uqQA.js} +0 -0
  272. /package/app/dist/assets/{poimandres-Cs9j_baE.js → poimandres-Cayhd01L.js} +0 -0
  273. /package/app/dist/assets/{polar-COmSbiHW.js → polar-C4hfV8Nc.js} +0 -0
  274. /package/app/dist/assets/{postcss-D_ArMqNC.js → postcss-osFUbTLw.js} +0 -0
  275. /package/app/dist/assets/{powerquery-BzHwsYRb.js → powerquery-CTlGUQPj.js} +0 -0
  276. /package/app/dist/assets/{powershell-C6bIwB0M.js → powershell-DyZsOmuq.js} +0 -0
  277. /package/app/dist/assets/{prisma-D5S9vj6g.js → prisma-SS92PO_I.js} +0 -0
  278. /package/app/dist/assets/{prolog-CHVuxG8M.js → prolog-B1O1NNVC.js} +0 -0
  279. /package/app/dist/assets/{proto-BhkmoXVj.js → proto-BWu3eZTs.js} +0 -0
  280. /package/app/dist/assets/{puppet-Brdz8eoo.js → puppet-tvtRVdr6.js} +0 -0
  281. /package/app/dist/assets/{purescript-DX3wKXeK.js → purescript-Dtbpb7D-.js} +0 -0
  282. /package/app/dist/assets/{python-CUtprRpG.js → python-Dlk0Acio.js} +0 -0
  283. /package/app/dist/assets/{qmldir-ftS4SxdQ.js → qmldir-B-iEOngH.js} +0 -0
  284. /package/app/dist/assets/{qss-Mo-j41VR.js → qss-Ba0p-aHw.js} +0 -0
  285. /package/app/dist/assets/{racket-CrTD1_3_.js → racket-BXDsxf2U.js} +0 -0
  286. /package/app/dist/assets/{raku-Bhig3MAC.js → raku-Dw1WWFXK.js} +0 -0
  287. /package/app/dist/assets/{red-CWX-2pbk.js → red-BC3Ds49b.js} +0 -0
  288. /package/app/dist/assets/{reg-C0s7-4s0.js → reg-DXFHGaM4.js} +0 -0
  289. /package/app/dist/assets/{rel-D1_XRRAX.js → rel-Dc5_Ytx2.js} +0 -0
  290. /package/app/dist/assets/{riscv-QV-e36TY.js → riscv-ZgswiWij.js} +0 -0
  291. /package/app/dist/assets/{ron-B-EB7ZBI.js → ron-YghabWAH.js} +0 -0
  292. /package/app/dist/assets/{rose-pine-Dxqc8n_1.js → rose-pine-ByWLnVr3.js} +0 -0
  293. /package/app/dist/assets/{rose-pine-dawn-pz_3O4ep.js → rose-pine-dawn-DBmeySrz.js} +0 -0
  294. /package/app/dist/assets/{rose-pine-moon-B27idgkd.js → rose-pine-moon-B9J-N3nK.js} +0 -0
  295. /package/app/dist/assets/{rosmsg-CcBwQf5j.js → rosmsg-DTKmAsVH.js} +0 -0
  296. /package/app/dist/assets/{rust-ppknoGus.js → rust-nfXwuE6F.js} +0 -0
  297. /package/app/dist/assets/{sass-Baw41att.js → sass-CbRjkld3.js} +0 -0
  298. /package/app/dist/assets/{scala-DtlnBhKt.js → scala-BzD3eypx.js} +0 -0
  299. /package/app/dist/assets/{scheme-DYQMayIi.js → scheme-D4d1PV1y.js} +0 -0
  300. /package/app/dist/assets/{sdbl-D0gXyfL6.js → sdbl-Cf-Ydnvx.js} +0 -0
  301. /package/app/dist/assets/{slack-dark-D27cdsBY.js → slack-dark-MszIyPZ2.js} +0 -0
  302. /package/app/dist/assets/{slack-ochin-BaRZ7cFo.js → slack-ochin-tQ3Q0gE9.js} +0 -0
  303. /package/app/dist/assets/{smalltalk-DRM3jr39.js → smalltalk-_uWoArwn.js} +0 -0
  304. /package/app/dist/assets/{snazzy-light-BayTLer3.js → snazzy-light-9sniMEk5.js} +0 -0
  305. /package/app/dist/assets/{solarized-dark-Y31Htb59.js → solarized-dark-CdD0Hxzv.js} +0 -0
  306. /package/app/dist/assets/{solarized-light-B-u_T8hk.js → solarized-light-C-nsEdqF.js} +0 -0
  307. /package/app/dist/assets/{solidity-CYAp_sJG.js → solidity-D6uC-xwP.js} +0 -0
  308. /package/app/dist/assets/{splunk-LsCTpuOP.js → splunk-LQYHRu14.js} +0 -0
  309. /package/app/dist/assets/{ssh-config-QxQe7y21.js → ssh-config-B7BUl8Rd.js} +0 -0
  310. /package/app/dist/assets/{stylus-DZvi0832.js → stylus-Byjxdx_q.js} +0 -0
  311. /package/app/dist/assets/{swift-BBBWvOdl.js → swift-BexLlMrU.js} +0 -0
  312. /package/app/dist/assets/{synthwave-84-Dq9WAwjJ.js → synthwave-84-BxMBwQMS.js} +0 -0
  313. /package/app/dist/assets/{system-verilog-Ddagu-BW.js → system-verilog-DVGwm0mw.js} +0 -0
  314. /package/app/dist/assets/{systemd-BxlmhgV_.js → systemd-H2IT3-p5.js} +0 -0
  315. /package/app/dist/assets/{talonscript-p-GlmLEL.js → talonscript-mKZIGM8n.js} +0 -0
  316. /package/app/dist/assets/{tasl-BNm9EzXM.js → tasl-B7he_Ugr.js} +0 -0
  317. /package/app/dist/assets/{tcl-BQwTCs7_.js → tcl-5mT3RxHH.js} +0 -0
  318. /package/app/dist/assets/{terraform-DQhgYyF5.js → terraform-BZP0GLsT.js} +0 -0
  319. /package/app/dist/assets/{tokyo-night-DxL5lL62.js → tokyo-night-CTPVdZt9.js} +0 -0
  320. /package/app/dist/assets/{toml-BncMjmx0.js → toml-CTFA98he.js} +0 -0
  321. /package/app/dist/assets/{tsv--yOlbuAc.js → tsv-BayJtYdY.js} +0 -0
  322. /package/app/dist/assets/{turtle-ZCrKgE8E.js → turtle-TVCBh_kY.js} +0 -0
  323. /package/app/dist/assets/{typespec-9rD7KG94.js → typespec-BUvaJDLF.js} +0 -0
  324. /package/app/dist/assets/{typst-DJ10KoY6.js → typst-8NBaY7Ec.js} +0 -0
  325. /package/app/dist/assets/{v-CutuAYrg.js → v-VihyTigi.js} +0 -0
  326. /package/app/dist/assets/{vala-DJpFErrU.js → vala-DyFAPyX6.js} +0 -0
  327. /package/app/dist/assets/{vb-DQuyY02M.js → vb-Dg1Iqi4J.js} +0 -0
  328. /package/app/dist/assets/{verilog-BuvxZrtu.js → verilog-D2Xc-vhD.js} +0 -0
  329. /package/app/dist/assets/{vesper-bM1AKkiO.js → vesper-DJbtqYNr.js} +0 -0
  330. /package/app/dist/assets/{vhdl-pScFq2IF.js → vhdl-CU3BVeE7.js} +0 -0
  331. /package/app/dist/assets/{viml-LZIbwXqf.js → viml-hG2shuOW.js} +0 -0
  332. /package/app/dist/assets/{vitesse-black-BhKXUSxn.js → vitesse-black-DbG2gsc0.js} +0 -0
  333. /package/app/dist/assets/{vitesse-dark-BzqhRcAC.js → vitesse-dark-B6WV4xXH.js} +0 -0
  334. /package/app/dist/assets/{vitesse-light-C6rj90Ld.js → vitesse-light-DC1pdD02.js} +0 -0
  335. /package/app/dist/assets/{vyper-CAC2wkEx.js → vyper-C1wojIuk.js} +0 -0
  336. /package/app/dist/assets/{wasm-JuQDwMf4.js → wasm-C6Y0s02M.js} +0 -0
  337. /package/app/dist/assets/{wasm-C9fkFrNS.js → wasm-y20ImDym.js} +0 -0
  338. /package/app/dist/assets/{wenyan-BtC3dCkd.js → wenyan-BG5vPQF0.js} +0 -0
  339. /package/app/dist/assets/{wgsl-BfhDoYq0.js → wgsl-DrVb-Cub.js} +0 -0
  340. /package/app/dist/assets/{wikitext-BN0a9cMl.js → wikitext-PRC4s8sH.js} +0 -0
  341. /package/app/dist/assets/{wit-B5eB3VJ4.js → wit-ChW5qvg_.js} +0 -0
  342. /package/app/dist/assets/{wolfram-hGtNh8mf.js → wolfram-B8mKuZSQ.js} +0 -0
  343. /package/app/dist/assets/{xterm-CoRq-s8T.js → xterm-DGJHbKBQ.js} +0 -0
  344. /package/app/dist/assets/{zenscript-Dl5s7Kfy.js → zenscript-C-jEPC9j.js} +0 -0
  345. /package/app/dist/assets/{zig-Dashm4F0.js → zig-EbnRGjcz.js} +0 -0
package/README.md CHANGED
@@ -10,9 +10,9 @@
10
10
 
11
11
  [![npm version](https://img.shields.io/npm/v/bb-app.svg)](https://www.npmjs.com/package/bb-app)
12
12
 
13
- bb is a programmable IDE that lets you run your favorite coding agents
14
- (Codex, Claude Code or Pi). It's built to be used by both you and your
15
- agents so you can seamlessly delegate any task to them.
13
+ bb is an agentic IDE that can control itself. You can seamlessly
14
+ orchestrate all of your favorite coding agents together and have them
15
+ programmatically use bb too.
16
16
 
17
17
  This package provides the `npx bb-app` launcher. Every surface — the web
18
18
  app, CLI, and HTTP API — is a first-class way to drive bb. Work runs in
@@ -1 +1 @@
1
- import{An as e,At as t,Bn as n,Ft as r,Ki as i,Ot as a,Tt as o,Vi as s,Yr as c,_i as l,ii as u,ni as d,ri as f,t as p,vi as m}from"./page-shell-Dglk9LmR.js";import{c as h,d as g,i as _,n as v,o as y,xt as b}from"./effective-hosts-ps3WYS_d.js";import{a as x,g as S,i as C,o as w,r as T,s as E,t as D}from"./dialog-CaQY-B8P.js";import{Bt as O,Rt as k,Vt as A,Xt as j,nn as M,rn as N}from"./index-B8UIxEOk.js";import{i as P,n as F,r as I,t as ee}from"./settings-section-CZi6DvBs.js";var L=i(s(),1),R=`size-2 shrink-0 rounded-full ring-1 ring-inset transition-all bg-success ring-success/25 shadow-[0_0_0_4px_color-mix(in_oklch,var(--color-success)_16%,transparent)]`,z=m();function B({target:e,pending:t,onOpenChange:n,onDelete:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(V,{target:e,pending:t,onDelete:r}):null})})}function V({target:e,pending:t,onDelete:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Remove host?`}),(0,z.jsx)(C,{children:`Remove "${e.name}" and all of its project sources? This cannot be undone.`})]}),(0,z.jsx)(x,{children:(0,z.jsx)(c,{type:`button`,variant:`destructive`,disabled:t,onClick:()=>n(e.id),children:`Remove host`})})]})}function H({target:e,pending:t,onOpenChange:n,onRename:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(U,{target:e,pending:t,onRename:r},e.id):null})})}function U({target:e,pending:t,onRename:n}){let r=(0,L.useId)(),[i,a]=(0,L.useState)(e.currentName),[o,s]=(0,L.useState)(null);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Rename host`}),(0,z.jsx)(C,{children:`Choose a new name for this host.`})]}),(0,z.jsxs)(`form`,{className:`space-y-4`,onSubmit:r=>{if(r.preventDefault(),t)return;let a=i.trim();if(!a){s(`Host name cannot be empty.`);return}n(e.id,a)},children:[(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(S,{id:r,"aria-label":`Host name`,value:i,autoFocus:!0,disabled:t,onChange:e=>{a(e.target.value),o&&s(null)}}),o?(0,z.jsx)(`p`,{className:`text-sm text-destructive`,children:o}):null]}),(0,z.jsx)(x,{children:(0,z.jsx)(c,{type:`submit`,disabled:t,children:`Rename host`})})]})]})}function W({open:e,onOpenChange:t}){return(0,z.jsx)(D,{open:e,onOpenChange:t,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:(0,z.jsx)(G,{})})})}function G(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Unable to add new host`}),(0,z.jsx)(C,{children:`You need to specify the URL that allows the new host to talk to the server.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-2 text-sm text-foreground`,children:[(0,z.jsx)(`p`,{children:`Run this on the server machine, then restart bb:`}),(0,z.jsx)(`pre`,{className:`min-w-0 overflow-x-auto rounded-md border border-border bg-surface-recessed px-3 py-2 font-mono text-xs leading-5`,children:(0,z.jsx)(`code`,{children:`npx bb-app config BB_APP_URL http://<your-machine>.<tailnet>.ts.net:38886`})})]})]})}function K(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function q({host:e,open:t,target:n,onOpenChange:r}){let i=t&&n!==null;return(0,z.jsx)(D,{open:i,onOpenChange:r,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:i&&n?(0,z.jsx)(J,{host:e,target:n}):null})})}function J({host:e,target:t}){let[n,r]=(0,L.useState)(()=>t.expiresAt<=Date.now()),i=e?.status===`connected`,a=!i&&!n,o=i?`Host connected`:n?`Join command expired`:`Waiting for host`;return(0,L.useEffect)(()=>{let e=t.expiresAt-Date.now();if(e<=0){r(!0);return}r(!1);let n=window.setTimeout(()=>r(!0),e);return()=>window.clearTimeout(n)},[t.expiresAt]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`New host`}),(0,z.jsx)(C,{children:`Run this command from the new host.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-3`,children:[(0,z.jsxs)(`div`,{className:`relative min-w-0 rounded-md border border-border bg-surface-recessed`,children:[(0,z.jsx)(`pre`,{className:`max-h-56 min-w-0 overflow-y-auto whitespace-pre-wrap break-all px-3 py-2.5 pr-10 text-xs leading-5`,children:(0,z.jsx)(`code`,{children:t.joinCommand})}),(0,z.jsx)(A,{text:t.joinCommand,label:`Copy host command`,className:`absolute right-2 top-2`})]}),(0,z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-muted-foreground`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[i?(0,z.jsx)(d,{name:`CircleCheck`,className:`size-4 text-success`,"aria-hidden":`true`}):n?(0,z.jsx)(d,{name:`AlertCircle`,className:`size-4 text-destructive`,"aria-hidden":`true`}):null,(0,z.jsx)(`span`,{className:a?`animate-shine font-medium`:`font-medium text-foreground`,children:o}),a?(0,z.jsxs)(`span`,{children:[`· Expires at `,K(t.expiresAt)]}):null]})]})]})}var Y=[{label:`System`,value:`system`},{label:`Light`,value:`light`},{label:`Dark`,value:`dark`}],X={dark:`Dark`,light:`Light`,system:`System`};function Z(){let i=O(),{data:s=[],isLoading:m}=v(),x=l(),[S,C]=(0,L.useState)(null),[w,T]=(0,L.useState)(null),[E,D]=(0,L.useState)(null),[A,V]=(0,L.useState)(!1),[U,G]=(0,L.useState)(!1),K=u({meta:{errorMessage:`Failed to rename host.`},mutationFn:({id:t,name:n})=>e(t,{name:n}),onSuccess:()=>{M({queryClient:x}),C(null)}}),J=u({meta:{errorMessage:`Failed to remove host.`},mutationFn:({id:e})=>r(e),onSuccess:()=>{N({queryClient:x}),T(null)}}),Z=u({meta:{errorMessage:`Failed to create host join command.`,showErrorToast:!1},mutationFn:()=>t(),onSuccess:e=>{M({queryClient:x}),D(e),V(!0)},onError:e=>{if(e instanceof o&&e.code===`app_url_required`){G(!0);return}j({error:e,fallbackMessage:`Failed to create host join command.`})}}),Q=u({meta:{errorMessage:`Failed to cancel host join.`},mutationFn:({id:e})=>a(e),onSuccess:(e,t)=>{M({queryClient:x}),D(e=>e?.hostId===t.id?null:e),V(!1)}}),$=E===null?null:s.find(e=>e.id===E.hostId)??null,te=Z.isPending||Q.isPending;async function ne(){if(E!==null&&E.expiresAt>Date.now()&&$?.status!==`connected`){V(!0);return}if(E!==null&&$?.status!==`connected`)try{await Q.mutateAsync({id:E.hostId})}catch{return}Z.mutate()}(0,L.useEffect)(()=>{if(!A||$?.status!==`connected`)return;let e=window.setTimeout(()=>{D(null),V(!1)},1500);return()=>window.clearTimeout(e)},[A,$?.status]);function re(e){if(e){V(!0);return}E!==null&&$?.status!==`connected`&&Q.mutate({id:E.hostId}),D(null),V(!1)}return(0,z.jsxs)(p,{contentClassName:`pt-4 md:pt-5`,children:[(0,z.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl space-y-6`,children:[(0,z.jsx)(I,{title:`Appearance`,children:(0,z.jsx)(P,{label:`Theme`,children:(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsxs)(c,{variant:`outline`,size:`sm`,className:`w-full justify-between sm:w-48`,"aria-label":`Theme`,children:[X[i],(0,z.jsx)(d,{name:`ChevronDown`,className:`size-3.5 text-muted-foreground`})]})}),(0,z.jsx)(y,{align:`end`,className:`w-48`,children:Y.map(e=>(0,z.jsxs)(h,{onSelect:()=>k(e.value),children:[e.label,(0,z.jsx)(d,{name:`Check`,className:f(`ml-auto`,i!==e.value&&`opacity-0`,b)})]},e.value))})]})})}),(0,z.jsx)(I,{title:`Hosts`,action:(0,z.jsxs)(c,{type:`button`,size:`sm`,variant:`ghost`,disabled:te,onClick:()=>{ne()},children:[(0,z.jsx)(d,{name:`Plus`,className:`size-3.5`}),`New host`]}),children:m?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):s.length===0?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No registered hosts.`}):(0,z.jsx)(F,{children:s.map(e=>{let t=e.status===`connected`;return(0,z.jsxs)(ee,{children:[(0,z.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[e.name,(0,z.jsx)(`span`,{className:`ml-1.5 text-xs text-muted-foreground`,children:e.id})]}),t?(0,z.jsx)(`span`,{className:R,title:`Connected`}):e.lastSeenAt===null?(0,z.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:`Never connected`}):(0,z.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`Offline · `,n(e.lastSeenAt)]}),(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsx)(c,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,"aria-label":`Host actions`,children:(0,z.jsx)(d,{name:`MoreHorizontal`,className:`size-4`})})}),(0,z.jsxs)(y,{align:`end`,className:`w-40`,children:[(0,z.jsx)(h,{onSelect:()=>C({id:e.id,currentName:e.name}),children:`Rename`}),(0,z.jsx)(h,{className:`text-destructive focus:text-destructive`,onSelect:()=>T({id:e.id,name:e.name}),children:`Remove`})]})]})]},e.id)})})})]}),(0,z.jsx)(H,{target:S,pending:K.isPending,onOpenChange:e=>{e||C(null)},onRename:(e,t)=>K.mutate({id:e,name:t})}),(0,z.jsx)(B,{target:w,pending:J.isPending,onOpenChange:e=>{e||T(null)},onDelete:e=>J.mutate({id:e})}),(0,z.jsx)(q,{open:A,target:E,host:$,onOpenChange:re}),(0,z.jsx)(W,{open:U,onOpenChange:G})]})}export{Z as AppSettingsView};
1
+ import{$i as e,At as t,Bt as n,Ci as r,Ft as i,In as a,Kn as o,Nt as s,ci as c,li as l,qi as u,t as d,ti as f,ui as p,wi as m}from"./page-shell-DBPkwDcw.js";import{c as h,d as g,i as _,n as v,o as y,xt as b}from"./effective-hosts-Dc1pzW51.js";import{a as x,g as S,i as C,o as w,r as T,s as E,t as D}from"./dialog-sqh89xvD.js";import{Ht as O,Vt as k,Zt as ee,in as A,rn as j,zt as M}from"./index-8oyVoqEg.js";import{i as N,n as P,r as F,t as I}from"./settings-section-BKzVpY8V.js";var L=e(u(),1),R=`size-2 shrink-0 rounded-full ring-1 ring-inset transition-all bg-success ring-success/25 shadow-[0_0_0_4px_color-mix(in_oklch,var(--color-success)_16%,transparent)]`,z=m();function B({target:e,pending:t,onOpenChange:n,onDelete:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(V,{target:e,pending:t,onDelete:r}):null})})}function V({target:e,pending:t,onDelete:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Remove host?`}),(0,z.jsx)(C,{children:`Remove "${e.name}" and all of its project sources? This cannot be undone.`})]}),(0,z.jsx)(x,{children:(0,z.jsx)(f,{type:`button`,variant:`destructive`,disabled:t,onClick:()=>n(e.id),children:`Remove host`})})]})}function H({target:e,pending:t,onOpenChange:n,onRename:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(U,{target:e,pending:t,onRename:r},e.id):null})})}function U({target:e,pending:t,onRename:n}){let r=(0,L.useId)(),[i,a]=(0,L.useState)(e.currentName),[o,s]=(0,L.useState)(null);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Rename host`}),(0,z.jsx)(C,{children:`Choose a new name for this host.`})]}),(0,z.jsxs)(`form`,{className:`space-y-4`,onSubmit:r=>{if(r.preventDefault(),t)return;let a=i.trim();if(!a){s(`Host name cannot be empty.`);return}n(e.id,a)},children:[(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(S,{id:r,"aria-label":`Host name`,value:i,autoFocus:!0,disabled:t,onChange:e=>{a(e.target.value),o&&s(null)}}),o?(0,z.jsx)(`p`,{className:`text-sm text-destructive`,children:o}):null]}),(0,z.jsx)(x,{children:(0,z.jsx)(f,{type:`submit`,disabled:t,children:`Rename host`})})]})]})}function W({open:e,onOpenChange:t}){return(0,z.jsx)(D,{open:e,onOpenChange:t,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:(0,z.jsx)(G,{})})})}function G(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Unable to add new host`}),(0,z.jsx)(C,{children:`You need to specify the URL that allows the new host to talk to the server.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-2 text-sm text-foreground`,children:[(0,z.jsx)(`p`,{children:`Run this on the server machine, then restart bb:`}),(0,z.jsx)(`pre`,{className:`min-w-0 overflow-x-auto rounded-md border border-border bg-surface-recessed px-3 py-2 font-mono text-xs leading-5`,children:(0,z.jsx)(`code`,{children:`npx bb-app config BB_APP_URL http://<your-machine>.<tailnet>.ts.net:38886`})})]})]})}function K(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function q({host:e,open:t,target:n,onOpenChange:r}){let i=t&&n!==null;return(0,z.jsx)(D,{open:i,onOpenChange:r,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:i&&n?(0,z.jsx)(J,{host:e,target:n}):null})})}function J({host:e,target:t}){let[n,r]=(0,L.useState)(()=>t.expiresAt<=Date.now()),i=e?.status===`connected`,a=!i&&!n,o=i?`Host connected`:n?`Join command expired`:`Waiting for host`;return(0,L.useEffect)(()=>{let e=t.expiresAt-Date.now();if(e<=0){r(!0);return}r(!1);let n=window.setTimeout(()=>r(!0),e);return()=>window.clearTimeout(n)},[t.expiresAt]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`New host`}),(0,z.jsx)(C,{children:`Run this command from the new host.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-3`,children:[(0,z.jsxs)(`div`,{className:`relative min-w-0 rounded-md border border-border bg-surface-recessed`,children:[(0,z.jsx)(`pre`,{className:`max-h-56 min-w-0 overflow-y-auto whitespace-pre-wrap break-all px-3 py-2.5 pr-10 text-xs leading-5`,children:(0,z.jsx)(`code`,{children:t.joinCommand})}),(0,z.jsx)(O,{text:t.joinCommand,label:`Copy host command`,className:`absolute right-2 top-2`})]}),(0,z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-muted-foreground`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[i?(0,z.jsx)(c,{name:`CircleCheck`,className:`size-4 text-success`,"aria-hidden":`true`}):n?(0,z.jsx)(c,{name:`AlertCircle`,className:`size-4 text-destructive`,"aria-hidden":`true`}):null,(0,z.jsx)(`span`,{className:a?`animate-shine font-medium`:`font-medium text-foreground`,children:o}),a?(0,z.jsxs)(`span`,{children:[`· Expires at `,K(t.expiresAt)]}):null]})]})]})}var Y=[{label:`System`,value:`system`},{label:`Light`,value:`light`},{label:`Dark`,value:`dark`}],X={dark:`Dark`,light:`Light`,system:`System`};function Z(){let e=k(),{data:u=[],isLoading:m}=v(),x=r(),[S,C]=(0,L.useState)(null),[w,T]=(0,L.useState)(null),[E,D]=(0,L.useState)(null),[O,V]=(0,L.useState)(!1),[U,G]=(0,L.useState)(!1),K=p({meta:{errorMessage:`Failed to rename host.`},mutationFn:({id:e,name:t})=>a(e,{name:t}),onSuccess:()=>{j({queryClient:x}),C(null)}}),J=p({meta:{errorMessage:`Failed to remove host.`},mutationFn:({id:e})=>n(e),onSuccess:()=>{A({queryClient:x}),T(null)}}),Z=p({meta:{errorMessage:`Failed to create host join command.`,showErrorToast:!1},mutationFn:()=>i(),onSuccess:e=>{j({queryClient:x}),D(e),V(!0)},onError:e=>{if(e instanceof t&&e.code===`app_url_required`){G(!0);return}ee({error:e,fallbackMessage:`Failed to create host join command.`})}}),Q=p({meta:{errorMessage:`Failed to cancel host join.`},mutationFn:({id:e})=>s(e),onSuccess:(e,t)=>{j({queryClient:x}),D(e=>e?.hostId===t.id?null:e),V(!1)}}),$=E===null?null:u.find(e=>e.id===E.hostId)??null,te=Z.isPending||Q.isPending;async function ne(){if(E!==null&&E.expiresAt>Date.now()&&$?.status!==`connected`){V(!0);return}if(E!==null&&$?.status!==`connected`)try{await Q.mutateAsync({id:E.hostId})}catch{return}Z.mutate()}(0,L.useEffect)(()=>{if(!O||$?.status!==`connected`)return;let e=window.setTimeout(()=>{D(null),V(!1)},1500);return()=>window.clearTimeout(e)},[O,$?.status]);function re(e){if(e){V(!0);return}E!==null&&$?.status!==`connected`&&Q.mutate({id:E.hostId}),D(null),V(!1)}return(0,z.jsxs)(d,{contentClassName:`pt-4 md:pt-5`,children:[(0,z.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl space-y-6`,children:[(0,z.jsx)(F,{title:`Appearance`,children:(0,z.jsx)(N,{label:`Theme`,children:(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsxs)(f,{variant:`outline`,size:`sm`,className:`w-full justify-between sm:w-48`,"aria-label":`Theme`,children:[X[e],(0,z.jsx)(c,{name:`ChevronDown`,className:`size-3.5 text-muted-foreground`})]})}),(0,z.jsx)(y,{align:`end`,className:`w-48`,children:Y.map(t=>(0,z.jsxs)(h,{onSelect:()=>M(t.value),children:[t.label,(0,z.jsx)(c,{name:`Check`,className:l(`ml-auto`,e!==t.value&&`opacity-0`,b)})]},t.value))})]})})}),(0,z.jsx)(F,{title:`Hosts`,action:(0,z.jsxs)(f,{type:`button`,size:`sm`,variant:`ghost`,disabled:te,onClick:()=>{ne()},children:[(0,z.jsx)(c,{name:`Plus`,className:`size-3.5`}),`New host`]}),children:m?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):u.length===0?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No registered hosts.`}):(0,z.jsx)(P,{children:u.map(e=>{let t=e.status===`connected`;return(0,z.jsxs)(I,{children:[(0,z.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[e.name,(0,z.jsx)(`span`,{className:`ml-1.5 text-xs text-muted-foreground`,children:e.id})]}),t?(0,z.jsx)(`span`,{className:R,title:`Connected`}):e.lastSeenAt===null?(0,z.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:`Never connected`}):(0,z.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`Offline · `,o(e.lastSeenAt)]}),(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsx)(f,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,"aria-label":`Host actions`,children:(0,z.jsx)(c,{name:`MoreHorizontal`,className:`size-4`})})}),(0,z.jsxs)(y,{align:`end`,className:`w-40`,children:[(0,z.jsx)(h,{onSelect:()=>C({id:e.id,currentName:e.name}),children:`Rename`}),(0,z.jsx)(h,{className:`text-destructive focus:text-destructive`,onSelect:()=>T({id:e.id,name:e.name}),children:`Remove`})]})]})]},e.id)})})})]}),(0,z.jsx)(H,{target:S,pending:K.isPending,onOpenChange:e=>{e||C(null)},onRename:(e,t)=>K.mutate({id:e,name:t})}),(0,z.jsx)(B,{target:w,pending:J.isPending,onOpenChange:e=>{e||T(null)},onDelete:e=>J.mutate({id:e})}),(0,z.jsx)(q,{open:O,target:E,host:$,onOpenChange:re}),(0,z.jsx)(W,{open:U,onOpenChange:G})]})}export{Z as AppSettingsView};
@@ -0,0 +1 @@
1
+ import{$i as e,Ci as t,Ht as n,ci as r,di as i,jn as a,li as o,mn as s,qi as c,rt as l,t as u,ti as d,ui as f,wi as p}from"./page-shell-DBPkwDcw.js";import{n as m}from"./effective-hosts-Dc1pzW51.js";import{n as h}from"./chunk-JZWAC4HX-CrzST-zS.js";import{C as g,M as _,N as v,an as y}from"./index-8oyVoqEg.js";import{t as b}from"./pill-BNIxU09I.js";import{t as x}from"./split-button-DqIwadhH.js";var S=e(c(),1),C=p(),w=1,T=[.5,1,2,5,10],E=`block min-w-0 truncate text-foreground underline underline-offset-2 transition-colors hover:text-foreground/80`;function D(e){return`${e}×`}function O(e){return new Date(e).toLocaleString()}function k(){let e=t(),[c,p]=(0,S.useState)(()=>new Set),k=e=>{p(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},A=i({queryKey:l(),queryFn:()=>s()}),{data:j=[]}=m(),M=(0,S.useMemo)(()=>new Map(j.map(e=>[e.id,e.name])),[j]),N=f({mutationFn:e=>n(e),onSuccess:()=>{y({queryClient:e})}}),P=f({mutationFn:({captureId:e,speed:t})=>a(e,{speed:t}),onSuccess:e=>{window.open(`/projects/${e.projectId}/threads/${e.replayThreadId}`,`_blank`,`noopener`)}}),F=A.data?.captures??[];return(0,C.jsx)(u,{contentClassName:`pt-4 md:pt-5`,children:(0,C.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl space-y-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-border bg-surface-recessed px-3 py-2 text-sm text-muted-foreground`,children:[(0,C.jsx)(r,{name:`Info`,className:`mt-0.5 size-4 shrink-0`}),(0,C.jsxs)(`p`,{className:`m-0`,children:[`Replay previously captured conversations in a fresh thread. To record new captures, create threads with`,` `,(0,C.jsx)(`code`,{className:`font-mono text-xs`,children:`BB_DEV_REPLAY_CAPTURE=true pnpm dev`}),`.`]})]}),A.isLoading?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):A.isError?(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:`Failed to load replay captures.`}):F.length===0?(0,C.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-sm text-muted-foreground`,children:`No replay captures found on any connected host.`}):(0,C.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>{let t=e.userInputPreview||e.captureId,n=e.kind===`thread-start`,i=n?`new`:`follow-up`,a=g(e.providerId),s=a?.icon,l=c.has(e.captureId),u=N.isPending&&N.variables===e.captureId,f=P.isPending&&P.variables?.captureId===e.captureId,p=P.isError&&P.variables?.captureId===e.captureId,m=e.eventCounts.rawProviderEvents===0,y={label:`Start replay at ${D(w)}`,onSelect:()=>P.mutate({captureId:e.captureId,speed:w}),content:(0,C.jsxs)(C.Fragment,{children:[f?(0,C.jsx)(r,{name:`Spinner`,className:`size-3 animate-spin`}):null,`Replay`]})},S=T.map(t=>({label:`Start replay at ${D(t)}`,onSelect:()=>P.mutate({captureId:e.captureId,speed:t}),content:(0,C.jsx)(`span`,{children:D(t)})}));return(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex h-9 items-center gap-3 text-sm`,children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>k(e.captureId),"aria-expanded":l,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,C.jsx)(r,{name:`ChevronRight`,className:o(`size-3 shrink-0 text-muted-foreground transition-transform`,l&&`rotate-90`)}),(0,C.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,C.jsx)(`span`,{className:`min-w-0 max-w-xs truncate`,children:t}),e.title?(0,C.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.title}):null,(0,C.jsx)(b,{variant:n?`secondary`:`outline`,className:`shrink-0`,children:i}),s?(0,C.jsx)(s,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-label":a?.ariaLabel}):(0,C.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:e.providerId})]})]}),(0,C.jsx)(x,{disabled:f||m,primaryAction:y,secondaryActions:S,triggerLabel:`Choose replay speed`,mobileTitle:`Replay speed`}),(0,C.jsx)(d,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Delete replay capture`,title:`Delete replay capture`,disabled:u,onClick:()=>N.mutate(e.captureId),className:`size-6`,children:u?(0,C.jsx)(r,{name:`Spinner`,className:`size-3 animate-spin`}):(0,C.jsx)(r,{name:`Trash2`,className:`size-3`})})]}),l?(0,C.jsxs)(`div`,{className:`space-y-2 pb-3 pt-2`,children:[(0,C.jsxs)(_,{children:[(0,C.jsx)(v,{label:`Capture`,valueClassName:`min-w-0 truncate font-mono`,children:e.captureId}),(0,C.jsx)(v,{label:`Host`,valueClassName:`min-w-0 truncate`,children:M.get(e.hostId)??e.hostId}),(0,C.jsx)(v,{label:`Provider`,valueClassName:`min-w-0 truncate`,children:e.providerId}),(0,C.jsx)(v,{label:`Project`,valueClassName:`min-w-0`,children:(0,C.jsx)(h,{to:`/projects/${e.projectId}`,className:E,children:e.projectName??e.projectId})}),(0,C.jsx)(v,{label:`Thread`,valueClassName:`min-w-0`,children:(0,C.jsx)(h,{to:`/projects/${e.projectId}/threads/${e.threadId}`,className:o(E,!e.title&&`font-mono`),children:e.title??e.threadId})}),(0,C.jsx)(v,{label:`Captured`,valueClassName:`min-w-0 truncate`,children:O(e.capturedAt)}),(0,C.jsx)(v,{label:`Raw events`,valueClassName:`min-w-0 truncate`,children:e.eventCounts.rawProviderEvents})]}),p?(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:`Failed to start replay.`}):null]}):null]},`${e.hostId}:${e.captureId}`)})})]})})}export{k as InternalReplayListView};
@@ -0,0 +1 @@
1
+ import{$i as e,ei as t,qi as n,t as r,ti as i,wi as a}from"./page-shell-DBPkwDcw.js";import{C as o,T as s,n as c}from"./thread-queries-BX-3vM7I.js";import{d as l,n as u}from"./chunk-JZWAC4HX-CrzST-zS.js";import{t as d}from"./pill-BNIxU09I.js";import{t as f}from"./ThreadUnarchiveButton-BJStGY8f.js";var p=e(n(),1),m=a(),h=[{value:`all`,label:`All`},{value:`manager`,label:`Managers`},{value:`managed`,label:`Managed`},{value:`unmanaged`,label:`Unmanaged`}];function g(e){return e.type===`manager`?`manager`:e.parentThreadId===null?null:`managed`}function _(){let{projectId:e}=l(),[n,a]=(0,p.useState)(`all`),_=c({projectId:e,kind:n}),v=o(),y=(0,p.useMemo)(()=>(_.data?.pages??[]).flat().filter(e=>e.archivedAt!=null),[_.data]);if(!e)return(0,m.jsx)(r,{contentClassName:`min-h-full items-center justify-center`,children:(0,m.jsx)(`p`,{className:`py-12 text-center text-sm text-muted-foreground`,children:`Project not found`})});let b=_.isPending,x=!b&&y.length===0;return(0,m.jsx)(r,{contentClassName:`pt-0`,children:(0,m.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl`,children:[(0,m.jsxs)(`div`,{className:`sticky top-0 z-10 -mx-4 bg-background px-4 pt-4 md:-mx-5 md:px-5 md:pt-5`,children:[(0,m.jsx)(t,{placement:`below`,tone:`background`}),(0,m.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border p-0.5`,role:`tablist`,"aria-label":`Filter archived threads`,children:h.map(e=>{let t=n===e.value;return(0,m.jsx)(i,{type:`button`,variant:`ghost`,size:`sm`,role:`tab`,"aria-selected":t,"aria-pressed":t,className:`h-7 rounded-md px-2 text-xs font-medium text-muted-foreground sm:px-3`,onClick:()=>a(e.value),children:e.label},e.value)})})]}),(0,m.jsxs)(`div`,{className:`space-y-3 pt-3`,children:[b?(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading archived threads…`}):x?(0,m.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-sm text-muted-foreground`,children:`No archived threads yet.`}):(0,m.jsx)(`div`,{className:`space-y-1`,children:y.map(t=>{let n=g(t);return(0,m.jsxs)(`div`,{className:`group flex h-9 items-center gap-3 rounded-md px-3 text-sm transition-colors hover:bg-state-hover`,children:[(0,m.jsx)(u,{to:`/projects/${e}/threads/${t.id}`,className:`min-w-0 flex-1`,children:(0,m.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`truncate`,children:s(t)}),n?(0,m.jsx)(d,{variant:`outline`,className:`shrink-0`,children:n}):null]})}),(0,m.jsx)(f,{isPending:v.isPending&&v.variables?.id===t.id,onUnarchive:()=>{v.mutate({id:t.id})},threadType:t.type,className:`hover:bg-accent-foreground/15`})]},t.id)})}),_.hasNextPage?(0,m.jsx)(i,{type:`button`,variant:`ghost`,onClick:()=>{_.fetchNextPage()},disabled:_.isFetchingNextPage,className:`h-9 w-full justify-center rounded-md px-3 text-sm font-normal text-muted-foreground`,children:_.isFetchingNextPage?`Loading…`:`Load more`}):null]})]})})}export{_ as ProjectArchivedThreadsView};
@@ -0,0 +1 @@
1
+ import{$i as e,Ci as t,_r as n,ci as r,gr as i,qi as a,t as o,ti as s,ui as c,wi as l,wn as u}from"./page-shell-DBPkwDcw.js";import{c as d,d as f,i as p,n as m,o as h}from"./effective-hosts-Dc1pzW51.js";import{d as g}from"./chunk-JZWAC4HX-CrzST-zS.js";import{a as _,i as v,o as y,r as b,s as x,t as S}from"./dialog-sqh89xvD.js";import{D as C,E as w,d as T,r as E,s as D,t as O}from"./localhost-badge-DMyU8aEl.js";import{a as k}from"./mutation-cache-effects-DiCFYnTh.js";import{cn as A,ln as j,nn as M,tn as N}from"./index-8oyVoqEg.js";import{n as P,r as F,t as I}from"./settings-section-BKzVpY8V.js";import{t as L}from"./pill-BNIxU09I.js";var R=e(a(),1),z=l();function B({target:e,pending:t,onOpenChange:n,onDelete:r}){return(0,z.jsx)(S,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(b,{children:e?(0,z.jsx)(V,{target:e,pending:t,onDelete:r}):null})})}function V({target:e,pending:t,onDelete:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(y,{children:[(0,z.jsx)(x,{children:`Remove source?`}),(0,z.jsx)(v,{children:`Remove "${e.label}" from this project? This cannot be undone.`})]}),(0,z.jsx)(_,{children:(0,z.jsx)(s,{type:`button`,variant:`destructive`,disabled:t,onClick:()=>n(e.id),children:`Remove source`})})]})}function H({source:e,isLocalhostSource:t,isLocalPathInvalid:n,hostName:i,isEditPending:a,isOnlySource:o,onEditLocalPath:c,onRemove:l}){return(0,z.jsxs)(I,{children:[(0,z.jsx)(r,{name:E,className:`size-4 shrink-0 text-muted-foreground`}),(0,z.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-1.5`,children:[(0,z.jsx)(`span`,{className:`min-w-0 flex-shrink truncate`,children:e.path}),(0,z.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:i}),t?(0,z.jsx)(`span`,{className:`self-center`,children:(0,z.jsx)(O,{})}):null,n?(0,z.jsx)(L,{variant:`destructive`,children:`Invalid local path`}):null]}),(0,z.jsxs)(p,{children:[(0,z.jsx)(f,{asChild:!0,children:(0,z.jsx)(s,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,"aria-label":`Source actions`,children:(0,z.jsx)(r,{name:`MoreHorizontal`,className:`size-4`})})}),(0,z.jsxs)(h,{align:`end`,className:`w-40`,children:[t?(0,z.jsx)(d,{disabled:a,onSelect:t=>{t.preventDefault(),c(e)},children:`Edit local path`}):null,(0,z.jsx)(d,{className:`text-destructive focus:text-destructive`,disabled:o,onSelect:()=>l(e),children:`Remove`})]})]})]})}function U(e,t){return t.get(e.hostId)??e.hostId}function W(){let{projectId:e}=g(),r=C(),a=w({enabled:r.isSuccess||r.isError}),l=a.data,d=r.isFetching||a.isLoading,{data:f=[]}=m(),p=t(),[h,_]=(0,R.useState)(null),v=c({meta:{errorMessage:`Failed to remove source.`},mutationFn:({sourceId:t})=>e?u(e,t):Promise.resolve(),onSuccess:()=>{k({projectId:e,queryClient:p}),_(null)}}),y=D(),b=T(),x=l?.find(t=>t.id===e),S=x?.sources,E=(0,R.useMemo)(()=>S??[],[S]),O=(0,R.useMemo)(()=>new Map(f.map(e=>[e.id,e.name])),[f]),I=x?.name??``,L=y.isPending||b.isPending,V=M({isPending:L,submit:(0,R.useCallback)(({path:t,hostId:r,target:i,closeDialog:a})=>{if(e){if(i.kind===`add-source`)y.mutate({projectId:e,path:t,hostId:r},{onSuccess:a});else if(i.kind===`update`){let i=E.find(e=>n(e)&&e.hostId===r);if(!i)return;b.mutate({projectId:e,sourceId:i.id,path:t},{onSuccess:a})}}},[y,e,E,b])}),W=(0,R.useCallback)(()=>{e&&V.openPicker({kind:`add-source`,projectId:e,projectName:I})},[V,e,I]),G=(0,R.useCallback)(t=>{e&&V.openPicker({kind:`update`,projectId:e,projectName:I,currentPath:t.path})},[V,e,I]),K=V.localHostId,q=j((0,R.useMemo)(()=>K?E.filter(e=>n(e)&&e.hostId===K).map(e=>e.path):[],[K,E])),J=K!=null&&!i(E,K)?(0,z.jsx)(`div`,{className:`mt-2 flex gap-2`,children:(0,z.jsx)(s,{size:`sm`,variant:`outline`,disabled:y.isPending,onClick:W,children:`Add local path`})}):null;return(0,z.jsxs)(o,{contentClassName:`pt-4 md:pt-5`,children:[(0,z.jsx)(`div`,{className:`mx-auto w-full max-w-3xl space-y-6`,children:(0,z.jsx)(F,{title:`Project Sources`,children:d?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):E.length===0?(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No sources configured.`}),J]}):(0,z.jsxs)(`div`,{children:[(0,z.jsx)(P,{children:E.map(e=>{let t=n(e)&&K!=null&&e.hostId===K;return(0,z.jsx)(H,{source:e,isLocalhostSource:t,isLocalPathInvalid:t&&A(q,e.path),hostName:n(e)?O.get(e.hostId)??e.hostId:``,isEditPending:L,isOnlySource:E.length<=1,onEditLocalPath:G,onRemove:e=>_({id:e.id,label:U(e,O)})},e.id)})}),J]})})}),(0,z.jsx)(N,{target:V.projectPathDialog.target,pending:L,platform:V.platform,onOpenChange:V.projectPathDialog.onOpenChange,onSubmit:V.submitProjectPath}),(0,z.jsx)(B,{target:h,pending:v.isPending,onOpenChange:e=>{e||_(null)},onDelete:e=>v.mutate({sourceId:e})})]})}export{W as ProjectSettingsView};