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.
- package/README.md +3 -3
- package/app/dist/assets/{AppSettingsView-SFYjccBR.js → AppSettingsView-Dmjbm_4y.js} +1 -1
- package/app/dist/assets/InternalReplayListView-BMzOdu0K.js +1 -0
- package/app/dist/assets/ProjectArchivedThreadsView-DzbW3kSk.js +1 -0
- package/app/dist/assets/ProjectSettingsView-BCVVMJFB.js +1 -0
- package/app/dist/assets/ThreadDetailRoute-BI3VVE99.js +2535 -0
- package/app/dist/assets/ThreadUnarchiveButton-BJStGY8f.js +1 -0
- package/app/dist/assets/{angular-html-C2Dl0O00.js → angular-html-CM7ZtmlE.js} +1 -1
- package/app/dist/assets/{angular-ts-CVYqc36v.js → angular-ts-B4aAwutb.js} +1 -1
- package/app/dist/assets/{apl-BGPamPSJ.js → apl-Db6aaGYX.js} +1 -1
- package/app/dist/assets/{astro-Ba-Dojj4.js → astro-CXkhV095.js} +1 -1
- package/app/dist/assets/{blade-Lwg2Qi0v.js → blade-CfLZY3kt.js} +1 -1
- package/app/dist/assets/{bsl-JaCMWPaY.js → bsl-CG-fq4sc.js} +1 -1
- package/app/dist/assets/{c-B_58eHuy.js → c-CwV4mx9Z.js} +1 -1
- package/app/dist/assets/{cairo-D7Xpkdmw.js → cairo-Ds0kTeYT.js} +1 -1
- package/app/dist/assets/chunk-JZWAC4HX-CrzST-zS.js +3 -0
- package/app/dist/assets/{cobol-CM0x5uzi.js → cobol-Bx9V6w-A.js} +1 -1
- package/app/dist/assets/{coffee-WumiHYOD.js → coffee-4vexivp2.js} +1 -1
- package/app/dist/assets/{cpp-D0sZgzGq.js → cpp-B9JgHtmn.js} +1 -1
- package/app/dist/assets/{crystal-C2tAIJ-r.js → crystal-CV6ainQY.js} +1 -1
- package/app/dist/assets/{css-QhLRjU31.js → css-BahFL25I.js} +1 -1
- package/app/dist/assets/{dialog-CaQY-B8P.js → dialog-sqh89xvD.js} +1 -1
- package/app/dist/assets/{edge-BmtKCk7-.js → edge-Dbi7IqBU.js} +1 -1
- package/app/dist/assets/{effective-hosts-ps3WYS_d.js → effective-hosts-Dc1pzW51.js} +4 -4
- package/app/dist/assets/{elixir-DiumzaXM.js → elixir-Bcybagr3.js} +1 -1
- package/app/dist/assets/{elm-DV3i51_v.js → elm-Cg7kNsW7.js} +1 -1
- package/app/dist/assets/{erb-3qqPnLJh.js → erb-CUdWoCwh.js} +1 -1
- package/app/dist/assets/{erlang-DJdyEhn7.js → erlang-C-m_88FN.js} +1 -1
- package/app/dist/assets/{fortran-fixed-form-Dyncprn4.js → fortran-fixed-form-Cx1lv7HN.js} +1 -1
- package/app/dist/assets/{fsharp-D6WYKxtq.js → fsharp-DC5k9sy2.js} +1 -1
- package/app/dist/assets/{gdresource-Bac2fAQZ.js → gdresource-D0EsKdgH.js} +1 -1
- package/app/dist/assets/{git-commit-CDZnUqIF.js → git-commit-BcFsuO5E.js} +1 -1
- package/app/dist/assets/{git-rebase-DIMwlcT0.js → git-rebase-CebuXWOz.js} +1 -1
- package/app/dist/assets/{glimmer-js-BKsURin4.js → glimmer-js-DHD_iF4f.js} +1 -1
- package/app/dist/assets/{glimmer-ts-Chhe0oIX.js → glimmer-ts-x8YwQhtI.js} +1 -1
- package/app/dist/assets/{glsl-Dy3tp3E1.js → glsl-DTvpjV5x.js} +1 -1
- package/app/dist/assets/{graphql-CseHr1LK.js → graphql-BABFRhpo.js} +1 -1
- package/app/dist/assets/{hack-boTiAbss.js → hack-BTa_6UF4.js} +1 -1
- package/app/dist/assets/{haml-CjrsmcwN.js → haml-DwZg9pb5.js} +1 -1
- package/app/dist/assets/{handlebars-B_oDWsbs.js → handlebars-Bkp0I46S.js} +1 -1
- package/app/dist/assets/{html-C4e0uDKx.js → html-BrFG164I.js} +1 -1
- package/app/dist/assets/{html-derivative-DtQj__OI.js → html-derivative-Dm50cCgO.js} +1 -1
- package/app/dist/assets/{http-W8z61A1Z.js → http-DHs85vmZ.js} +1 -1
- package/app/dist/assets/{hurl-CBaPhsIJ.js → hurl-Dh07B-Ro.js} +1 -1
- package/app/dist/assets/{hxml-BNblpm3P.js → hxml-iQTOTWpM.js} +1 -1
- package/app/dist/assets/index-8oyVoqEg.js +1360 -0
- package/app/dist/assets/index-Cdqw3W2G.css +2 -0
- package/app/dist/assets/{java-C9TLG_lA.js → java-CyElhBLV.js} +1 -1
- package/app/dist/assets/{javascript-B6-baDIX.js → javascript-Iw1B_HiK.js} +1 -1
- package/app/dist/assets/{jinja-D6Ec9tX7.js → jinja-CwNzTCBn.js} +1 -1
- package/app/dist/assets/{jison-abiW-9pn.js → jison-DmnCmBdi.js} +1 -1
- package/app/dist/assets/{json-DtR-rTq5.js → json-2cvnIy7t.js} +1 -1
- package/app/dist/assets/{jsx-TQyKdSmQ.js → jsx-CUP6THJt.js} +1 -1
- package/app/dist/assets/{julia-BKK2QHze.js → julia-C5QkPIf6.js} +1 -1
- package/app/dist/assets/{just-BY5hWNgR.js → just-DKTy3QCk.js} +1 -1
- package/app/dist/assets/{latex-CuW1q2vJ.js → latex-D6EezuXB.js} +1 -1
- package/app/dist/assets/{liquid-BsqUQnO5.js → liquid-CIoyldIJ.js} +1 -1
- package/app/dist/assets/localhost-badge-DMyU8aEl.js +22 -0
- package/app/dist/assets/{lua-D4PO1r07.js → lua-DdZ7KAyq.js} +1 -1
- package/app/dist/assets/{marko-1bNyFeKY.js → marko-DzUNPeS3.js} +1 -1
- package/app/dist/assets/{mdc-BoU9IUKL.js → mdc-D5459Kci.js} +1 -1
- package/app/dist/assets/mutation-cache-effects-DiCFYnTh.js +1 -0
- package/app/dist/assets/{nextflow-dLJhzX3Z.js → nextflow-D-Ec_bsY.js} +1 -1
- package/app/dist/assets/{nginx-BXWzwlUI.js → nginx-0z5C7Rx2.js} +1 -1
- package/app/dist/assets/{nim-BgalU8R5.js → nim-DqH405Ip.js} +1 -1
- package/app/dist/assets/page-shell-DBPkwDcw.js +39 -0
- package/app/dist/assets/{perl-OrqzwF6j.js → perl-DFMDl6Q7.js} +1 -1
- package/app/dist/assets/{php-DsC0K8EH.js → php-CnLHesuB.js} +1 -1
- package/app/dist/assets/pill-BNIxU09I.js +1 -0
- package/app/dist/assets/{pug-D-Q9Kgtz.js → pug-Bd_9REL_.js} +1 -1
- package/app/dist/assets/{qml-Dyn06a9u.js → qml-Lr6hdC-5.js} +1 -1
- package/app/dist/assets/{r-C3AjV-3E.js → r-Ce3-ySeQ.js} +1 -1
- package/app/dist/assets/{razor-DHd1twLi.js → razor-FG0QpIgS.js} +1 -1
- package/app/dist/assets/{regexp-Dl_oPCDN.js → regexp-CIUvMYKc.js} +1 -1
- package/app/dist/assets/{rst-BIq6VDAT.js → rst-Dz7v6x4B.js} +1 -1
- package/app/dist/assets/{ruby-BJwcPMyx.js → ruby-C-FBX9Yb.js} +1 -1
- package/app/dist/assets/{sas-TXWq-8Bu.js → sas-C9h-w7MI.js} +1 -1
- package/app/dist/assets/{scss-Cz2NsCSh.js → scss-D6OzIOrm.js} +1 -1
- package/app/dist/assets/{settings-section-CZi6DvBs.js → settings-section-BKzVpY8V.js} +1 -1
- package/app/dist/assets/{shaderlab-CSb6CBXg.js → shaderlab-DGohHMiF.js} +1 -1
- package/app/dist/assets/{shellscript-CJedfzfs.js → shellscript-D87RcbyJ.js} +1 -1
- package/app/dist/assets/{shellsession-Tkblvq8e.js → shellsession-TIQjKTe8.js} +1 -1
- package/app/dist/assets/{soy-g_UxtUjg.js → soy-B-dmhoWy.js} +1 -1
- package/app/dist/assets/{sparql-J1VOnnwM.js → sparql-BgU2QITA.js} +1 -1
- package/app/dist/assets/split-button-DqIwadhH.js +1 -0
- package/app/dist/assets/{sql-DQAX0EN7.js → sql-CbBIAEKN.js} +1 -1
- package/app/dist/assets/{stata-BXjroK6c.js → stata-BQ_FGGIg.js} +1 -1
- package/app/dist/assets/{surrealql-DyDhPjEW.js → surrealql-B5__VBgQ.js} +1 -1
- package/app/dist/assets/{svelte-CEjCx-8g.js → svelte-CgBSZjLG.js} +1 -1
- package/app/dist/assets/{templ-BViMCY-s.js → templ-_lWYjbQF.js} +1 -1
- package/app/dist/assets/{tex-BOG7uw6j.js → tex-BYUs5HV3.js} +1 -1
- package/app/dist/assets/thread-queries-BX-3vM7I.js +1 -0
- package/app/dist/assets/{ts-tags-1PkZB39L.js → ts-tags-hjuJ4isf.js} +1 -1
- package/app/dist/assets/{tsx-B1khekg1.js → tsx-DlvScFgB.js} +1 -1
- package/app/dist/assets/{twig-C30VOGkj.js → twig-DgkARV1o.js} +1 -1
- package/app/dist/assets/{typescript-BVriUqhl.js → typescript-BE5MgbU9.js} +1 -1
- package/app/dist/assets/{vue-Dy6YaQjk.js → vue-C6mGC-Xh.js} +1 -1
- package/app/dist/assets/{vue-html-yfcmxRL7.js → vue-html-BcBAJPrV.js} +1 -1
- package/app/dist/assets/{vue-vine-BnfxXDO0.js → vue-vine-DsdYqYVB.js} +1 -1
- package/app/dist/assets/{xml-BJ3Y9ehh.js → xml-CMIrlqCw.js} +1 -1
- package/app/dist/assets/{xsl-CFOlFF3h.js → xsl-BL_g6M4v.js} +1 -1
- package/app/dist/assets/{yaml-BJda_PXC.js → yaml-D4rIwiAS.js} +1 -1
- package/app/dist/index.html +9 -9
- package/host-daemon/dist/bb +194 -49
- package/host-daemon/dist/bb-claude-code-bridge.mjs +34 -34
- package/host-daemon/dist/daemon-bundle.mjs +224 -224
- package/package.json +1 -1
- package/server/dist/index.js +176 -11
- package/app/dist/assets/InternalReplayListView-D-5BEgLK.js +0 -1
- package/app/dist/assets/ProjectArchivedThreadsView-DAF8LFet.js +0 -1
- package/app/dist/assets/ProjectSettingsView-C_WCJcrH.js +0 -1
- package/app/dist/assets/ThreadDetailRoute-D8k29X_E.js +0 -2390
- package/app/dist/assets/ThreadUnarchiveButton-EqnpnszW.js +0 -1
- package/app/dist/assets/index-B8UIxEOk.js +0 -1359
- package/app/dist/assets/index-Ct4fTclZ.css +0 -2
- package/app/dist/assets/localhost-badge-C9iEqET9.js +0 -22
- package/app/dist/assets/mutation-cache-effects-BQHFwGL7.js +0 -1
- package/app/dist/assets/page-shell-Dglk9LmR.js +0 -39
- package/app/dist/assets/pill-DYYeHA29.js +0 -3
- package/app/dist/assets/split-button-2v1ePK2A.js +0 -1
- package/app/dist/assets/thread-queries-BOTfj5Vv.js +0 -1
- package/server/dist/default-template/PREFERENCES.md +0 -35
- /package/app/dist/assets/{abap-DKGmjV0m.js → abap-B1dkBSPn.js} +0 -0
- /package/app/dist/assets/{actionscript-3-PQHI9sRP.js → actionscript-3-BT4ibYlP.js} +0 -0
- /package/app/dist/assets/{ada-7dCRqcEc.js → ada-CD92zeps.js} +0 -0
- /package/app/dist/assets/{addon-fit-CIMl-Yt0.js → addon-fit-Cm0rqjtv.js} +0 -0
- /package/app/dist/assets/{addon-web-links-Sy65bwVY.js → addon-web-links-B8_D6zvC.js} +0 -0
- /package/app/dist/assets/{andromeeda-CvHLbWZU.js → andromeeda-DqSmgxi0.js} +0 -0
- /package/app/dist/assets/{apache-DuwFT_ko.js → apache-D5suuoa_.js} +0 -0
- /package/app/dist/assets/{apex-ZrILV9y9.js → apex-BL-m4VHy.js} +0 -0
- /package/app/dist/assets/{applescript-QewDI2Hm.js → applescript-CLiBqvKT.js} +0 -0
- /package/app/dist/assets/{ara-CAKYVeDX.js → ara-LdDF8cmv.js} +0 -0
- /package/app/dist/assets/{asciidoc-xYtH5EEV.js → asciidoc-2DZ9hC2N.js} +0 -0
- /package/app/dist/assets/{asm-DuNyKkDV.js → asm-0ZPGRSUy.js} +0 -0
- /package/app/dist/assets/{aurora-x-mlfFqJAh.js → aurora-x-Da7Zfvbg.js} +0 -0
- /package/app/dist/assets/{awk-BDSWDVpS.js → awk-Bn0gn_B_.js} +0 -0
- /package/app/dist/assets/{ayu-dark-BTeHke7b.js → ayu-dark-bqYKoqpM.js} +0 -0
- /package/app/dist/assets/{ayu-light-CoZXvb4i.js → ayu-light-C45jTIzZ.js} +0 -0
- /package/app/dist/assets/{ayu-mirage-DlGy8b5I.js → ayu-mirage-BV_FCTQi.js} +0 -0
- /package/app/dist/assets/{ballerina-eIQtFtZN.js → ballerina-D2nw_w8Q.js} +0 -0
- /package/app/dist/assets/{bat-DVPhDFws.js → bat-ByUBN5gS.js} +0 -0
- /package/app/dist/assets/{beancount-DRh4LoEp.js → beancount-BTb2W6Mp.js} +0 -0
- /package/app/dist/assets/{berry-BJPWN0aG.js → berry-5SO2uITG.js} +0 -0
- /package/app/dist/assets/{bibtex-BXZl-zGT.js → bibtex-CDBTNfUI.js} +0 -0
- /package/app/dist/assets/{bicep-DUhze7H3.js → bicep-fgxG_4rP.js} +0 -0
- /package/app/dist/assets/{bird2-D_94N4Us.js → bird2-BCwzDhwX.js} +0 -0
- /package/app/dist/assets/{c3-CUFd2ak_.js → c3-Dlaci63_.js} +0 -0
- /package/app/dist/assets/{cadence-zuA3Lqsu.js → cadence-DHbRuEmm.js} +0 -0
- /package/app/dist/assets/{catppuccin-frappe-C4xh_RpD.js → catppuccin-frappe-DrL1fUuH.js} +0 -0
- /package/app/dist/assets/{catppuccin-latte-ZIzlVBYe.js → catppuccin-latte-C0REgVjl.js} +0 -0
- /package/app/dist/assets/{catppuccin-macchiato-DOZXEuSH.js → catppuccin-macchiato-ChQpylWO.js} +0 -0
- /package/app/dist/assets/{catppuccin-mocha-rnm_6i_u.js → catppuccin-mocha-Dd0JU1T0.js} +0 -0
- /package/app/dist/assets/{clarity-Dp-fzxYs.js → clarity-DMoTOm4G.js} +0 -0
- /package/app/dist/assets/{clojure-85kagXuc.js → clojure-DBhE3PpS.js} +0 -0
- /package/app/dist/assets/{cmake-5KZO_J3V.js → cmake-DwMc40Or.js} +0 -0
- /package/app/dist/assets/{codeowners-CwITHnrC.js → codeowners-1lVr8wqV.js} +0 -0
- /package/app/dist/assets/{codeql-DsuZZPKs.js → codeql-DWflolvo.js} +0 -0
- /package/app/dist/assets/{common-lisp-DQj0fa1s.js → common-lisp-CrVQ5xT-.js} +0 -0
- /package/app/dist/assets/{coq-BGPtnnb4.js → coq-CjfoyYSh.js} +0 -0
- /package/app/dist/assets/{csharp-Bz4y1fn8.js → csharp-C7bIWP5y.js} +0 -0
- /package/app/dist/assets/{csv-92JdhrVb.js → csv-DsAkDVtA.js} +0 -0
- /package/app/dist/assets/{cue-DO5iBckt.js → cue-BWmQgbOB.js} +0 -0
- /package/app/dist/assets/{cypher-Dt0SBufN.js → cypher-D-jVC50Q.js} +0 -0
- /package/app/dist/assets/{d-POAmrdpL.js → d-CaviyOrm.js} +0 -0
- /package/app/dist/assets/{dark-plus-Ci223Kw7.js → dark-plus-DIrnwZt9.js} +0 -0
- /package/app/dist/assets/{dart-Cv4z4sEx.js → dart-CZEi7JgC.js} +0 -0
- /package/app/dist/assets/{dax-Cw_LNvcO.js → dax-BK-8zffy.js} +0 -0
- /package/app/dist/assets/{desktop-B_uWbpWi.js → desktop-D3cjbL4D.js} +0 -0
- /package/app/dist/assets/{diff-pSjjL-ZH.js → diff-sHAzLvlp.js} +0 -0
- /package/app/dist/assets/{docker-r0L9bSzI.js → docker--xs2Ng3w.js} +0 -0
- /package/app/dist/assets/{dotenv-DU-Uz6AA.js → dotenv-Cm4nwcJ7.js} +0 -0
- /package/app/dist/assets/{dracula-C5lq8I7X.js → dracula-CAUSusef.js} +0 -0
- /package/app/dist/assets/{dracula-soft-QH3ntlSU.js → dracula-soft-cjNkMFza.js} +0 -0
- /package/app/dist/assets/{dream-maker-DE3sVgWW.js → dream-maker-fjmWTFCO.js} +0 -0
- /package/app/dist/assets/{emacs-lisp-aMjKKeFP.js → emacs-lisp-CJzqStIa.js} +0 -0
- /package/app/dist/assets/{everforest-dark-KTiMpaXm.js → everforest-dark-DBpaSMx1.js} +0 -0
- /package/app/dist/assets/{everforest-light-yJZ9a76P.js → everforest-light-CiGrXwia.js} +0 -0
- /package/app/dist/assets/{fennel-Bruivvq3.js → fennel-DRaXF7k8.js} +0 -0
- /package/app/dist/assets/{fish-CaGhpV7s.js → fish-Bn-Yh3Jj.js} +0 -0
- /package/app/dist/assets/{fluent-BsmQk-nO.js → fluent-DF5F8Ks_.js} +0 -0
- /package/app/dist/assets/{fortran-free-form-B9mY58s0.js → fortran-free-form-hCQHRqew.js} +0 -0
- /package/app/dist/assets/{gdscript-B_WUGHIs.js → gdscript-_C9_Hi_w.js} +0 -0
- /package/app/dist/assets/{gdshader-BR6nyn6z.js → gdshader-BW7b1X1Y.js} +0 -0
- /package/app/dist/assets/{genie-CW-a1unw.js → genie-Ch_6TCHd.js} +0 -0
- /package/app/dist/assets/{gherkin-D8z0Dn14.js → gherkin-CaNUsmTq.js} +0 -0
- /package/app/dist/assets/{github-dark-C2YvJIRl.js → github-dark-B9ygjgg6.js} +0 -0
- /package/app/dist/assets/{github-dark-default-DPZ1YWUU.js → github-dark-default-Br2bgYSx.js} +0 -0
- /package/app/dist/assets/{github-dark-dimmed-BlMwpJVf.js → github-dark-dimmed-CmtqpPJ-.js} +0 -0
- /package/app/dist/assets/{github-dark-high-contrast-KRBg57oP.js → github-dark-high-contrast-fSfmrZcC.js} +0 -0
- /package/app/dist/assets/{github-light-BLj5WXD_.js → github-light-BZjUqfZl.js} +0 -0
- /package/app/dist/assets/{github-light-default-BLgrdOV4.js → github-light-default-lIytXXhR.js} +0 -0
- /package/app/dist/assets/{github-light-high-contrast-Bmexxccr.js → github-light-high-contrast-BRrjFb7n.js} +0 -0
- /package/app/dist/assets/{gleam-BtOZgVle.js → gleam-DALMDpNs.js} +0 -0
- /package/app/dist/assets/{gn-JO9YMz2t.js → gn-DGjqrYN9.js} +0 -0
- /package/app/dist/assets/{gnuplot-DjZHg3_f.js → gnuplot-BYckvgQI.js} +0 -0
- /package/app/dist/assets/{go-D2GlBE5F.js → go-JycvP538.js} +0 -0
- /package/app/dist/assets/{groovy-1vEGAvvX.js → groovy-D5qMRONT.js} +0 -0
- /package/app/dist/assets/{gruvbox-dark-hard-pdBjrsK5.js → gruvbox-dark-hard-M1dj1e6V.js} +0 -0
- /package/app/dist/assets/{gruvbox-dark-medium-Csp4lPEF.js → gruvbox-dark-medium-cqq_ncQu.js} +0 -0
- /package/app/dist/assets/{gruvbox-dark-soft-BpNWvgik.js → gruvbox-dark-soft-B4QwL2a9.js} +0 -0
- /package/app/dist/assets/{gruvbox-light-hard-CC8CVJp5.js → gruvbox-light-hard-DLayMKOQ.js} +0 -0
- /package/app/dist/assets/{gruvbox-light-medium-D2yGUmJd.js → gruvbox-light-medium-D52XgPKf.js} +0 -0
- /package/app/dist/assets/{gruvbox-light-soft-C_9RTTTT.js → gruvbox-light-soft-Dola3KdD.js} +0 -0
- /package/app/dist/assets/{haskell-BFZjB68l.js → haskell-ys7wPPEd.js} +0 -0
- /package/app/dist/assets/{haxe-DDQKctJt.js → haxe-94kiChn7.js} +0 -0
- /package/app/dist/assets/{hcl-DUAADz_v.js → hcl-DmHt_-wq.js} +0 -0
- /package/app/dist/assets/{hjson-DyGphq4K.js → hjson-xMmoJ0Gx.js} +0 -0
- /package/app/dist/assets/{hlsl-BVEJlW36.js → hlsl-b-Pskdze.js} +0 -0
- /package/app/dist/assets/{horizon-BZmYXqIF.js → horizon-BKMqttiR.js} +0 -0
- /package/app/dist/assets/{horizon-bright-D0uooZm5.js → horizon-bright-HNkBlnm5.js} +0 -0
- /package/app/dist/assets/{houston-BUtcOxf9.js → houston-BkBSBSOQ.js} +0 -0
- /package/app/dist/assets/{hy-oWi_RwAK.js → hy-DKl1XhBq.js} +0 -0
- /package/app/dist/assets/{imba-iwzgkuTD.js → imba-DPxkOTAg.js} +0 -0
- /package/app/dist/assets/{ini-BNaakZQr.js → ini-lkLGq_1x.js} +0 -0
- /package/app/dist/assets/{json5-Y2CuQCK-.js → json5-Cy6ypJuJ.js} +0 -0
- /package/app/dist/assets/{jsonc-B30nqSUF.js → jsonc-Cw2ugYAK.js} +0 -0
- /package/app/dist/assets/{jsonl-B7UEa0TN.js → jsonl-Dp5_qBVH.js} +0 -0
- /package/app/dist/assets/{jsonnet-ZiCJB3SD.js → jsonnet-BTbmg_-u.js} +0 -0
- /package/app/dist/assets/{jssm-BOfC2rh1.js → jssm-CnT7nPea.js} +0 -0
- /package/app/dist/assets/{kanagawa-dragon-BVoApXR6.js → kanagawa-dragon-CxsBnuhV.js} +0 -0
- /package/app/dist/assets/{kanagawa-lotus-C-uV5im6.js → kanagawa-lotus-vHdxDDOS.js} +0 -0
- /package/app/dist/assets/{kanagawa-wave-BizPisns.js → kanagawa-wave-CIkfTKWk.js} +0 -0
- /package/app/dist/assets/{kdl-Bg7xxjIF.js → kdl-BwK60g80.js} +0 -0
- /package/app/dist/assets/{kotlin-CNprttl8.js → kotlin-Dbd9Vi-v.js} +0 -0
- /package/app/dist/assets/{kusto-D3uRUZFA.js → kusto-BuTk9usc.js} +0 -0
- /package/app/dist/assets/{laserwave-BypMvj8s.js → laserwave-C0wf_d3o.js} +0 -0
- /package/app/dist/assets/{lean-BbKKg8_U.js → lean-CYAW8bRN.js} +0 -0
- /package/app/dist/assets/{less-6BW8xQaX.js → less-D4uen21c.js} +0 -0
- /package/app/dist/assets/{light-plus-zSYF2DYe.js → light-plus-oqYyWKEE.js} +0 -0
- /package/app/dist/assets/{llvm-OMExIg60.js → llvm-Z1xJzteV.js} +0 -0
- /package/app/dist/assets/{log-BBfW4u9k.js → log-BGUxlsk3.js} +0 -0
- /package/app/dist/assets/{logo-D8GGcRiY.js → logo-wVUhvQ1b.js} +0 -0
- /package/app/dist/assets/{luau-CZIl0XK4.js → luau-rPFZzCmq.js} +0 -0
- /package/app/dist/assets/{make-mlZyflos.js → make-BmPf6m0P.js} +0 -0
- /package/app/dist/assets/{markdown-CppElJDR.js → markdown-AseU6zcW.js} +0 -0
- /package/app/dist/assets/{material-theme-OBz0sIMu.js → material-theme-6_W6rQhR.js} +0 -0
- /package/app/dist/assets/{material-theme-darker-BNfFk916.js → material-theme-darker-VPEo3Sem.js} +0 -0
- /package/app/dist/assets/{material-theme-lighter-D0OJsx_T.js → material-theme-lighter-CUhzCcZ9.js} +0 -0
- /package/app/dist/assets/{material-theme-ocean-CKWC7YJB.js → material-theme-ocean-B2JdsaGb.js} +0 -0
- /package/app/dist/assets/{material-theme-palenight-DOTFIR3W.js → material-theme-palenight-DhY-sklA.js} +0 -0
- /package/app/dist/assets/{matlab-CwLrY_Ss.js → matlab-BOj_BDQv.js} +0 -0
- /package/app/dist/assets/{mdx-OZt5aooY.js → mdx-Cm6cDkDI.js} +0 -0
- /package/app/dist/assets/{mermaid-mzvznqsh.js → mermaid-DLO-R4hv.js} +0 -0
- /package/app/dist/assets/{min-dark-BAbZNtjj.js → min-dark-D34a_pX7.js} +0 -0
- /package/app/dist/assets/{min-light-BzEisXBR.js → min-light-Cdd4KORE.js} +0 -0
- /package/app/dist/assets/{mipsasm-DONjtc4L.js → mipsasm-DYpHF-GA.js} +0 -0
- /package/app/dist/assets/{mojo-CHKQ5hW9.js → mojo-DqYVFv_G.js} +0 -0
- /package/app/dist/assets/{monokai-B8rLeJY_.js → monokai-CDR4sQ2n.js} +0 -0
- /package/app/dist/assets/{moonbit-CWIHpJf0.js → moonbit-DRKee9wk.js} +0 -0
- /package/app/dist/assets/{move-Dy7CmIgW.js → move-DbRk6Vn9.js} +0 -0
- /package/app/dist/assets/{narrat-NioX5-_j.js → narrat-IOfmaXfb.js} +0 -0
- /package/app/dist/assets/{nextflow-groovy-jKlTICX_.js → nextflow-groovy-EYl0c2BQ.js} +0 -0
- /package/app/dist/assets/{night-owl-light-C_DkqGGe.js → night-owl-light-Bedht9b4.js} +0 -0
- /package/app/dist/assets/{night-owl-C_xVeV9U.js → night-owl-yQJ3-I0I.js} +0 -0
- /package/app/dist/assets/{nix-BZVKmCQS.js → nix-C2IovEl2.js} +0 -0
- /package/app/dist/assets/{nord-CrTSutxR.js → nord-BjZ63GNL.js} +0 -0
- /package/app/dist/assets/{nushell-C8hgS98n.js → nushell-BflTrRB5.js} +0 -0
- /package/app/dist/assets/{objective-c-BUiYTSad.js → objective-c-GRClK1S7.js} +0 -0
- /package/app/dist/assets/{objective-cpp-BwY1U2XT.js → objective-cpp-l3qYw-v5.js} +0 -0
- /package/app/dist/assets/{ocaml-D51PiCY5.js → ocaml-BBDyhyMH.js} +0 -0
- /package/app/dist/assets/{odin-CoC4d8pi.js → odin-jCJ7Js99.js} +0 -0
- /package/app/dist/assets/{one-dark-pro-C9bEA2Dz.js → one-dark-pro-PIx2Diul.js} +0 -0
- /package/app/dist/assets/{one-light-DZ_5GYrV.js → one-light-BFMEz49S.js} +0 -0
- /package/app/dist/assets/{openscad-DCmPLSXt.js → openscad-Drf0LgCX.js} +0 -0
- /package/app/dist/assets/{pascal-BMY45JJO.js → pascal-BT2XAUTl.js} +0 -0
- /package/app/dist/assets/{pierre-dark-CMWr1OVv.js → pierre-dark-BMm5HxPQ.js} +0 -0
- /package/app/dist/assets/{pierre-light-DhtJ5n85.js → pierre-light-DyzEot4Q.js} +0 -0
- /package/app/dist/assets/{pkl-BlBky-cR.js → pkl-ML-dWShO.js} +0 -0
- /package/app/dist/assets/{plastic-C50vuo0c.js → plastic-BFI-Z5Z2.js} +0 -0
- /package/app/dist/assets/{plsql-B6Eq-lAd.js → plsql-0vd5cLro.js} +0 -0
- /package/app/dist/assets/{po-ByS5p8Sz.js → po-CbZ_uqQA.js} +0 -0
- /package/app/dist/assets/{poimandres-Cs9j_baE.js → poimandres-Cayhd01L.js} +0 -0
- /package/app/dist/assets/{polar-COmSbiHW.js → polar-C4hfV8Nc.js} +0 -0
- /package/app/dist/assets/{postcss-D_ArMqNC.js → postcss-osFUbTLw.js} +0 -0
- /package/app/dist/assets/{powerquery-BzHwsYRb.js → powerquery-CTlGUQPj.js} +0 -0
- /package/app/dist/assets/{powershell-C6bIwB0M.js → powershell-DyZsOmuq.js} +0 -0
- /package/app/dist/assets/{prisma-D5S9vj6g.js → prisma-SS92PO_I.js} +0 -0
- /package/app/dist/assets/{prolog-CHVuxG8M.js → prolog-B1O1NNVC.js} +0 -0
- /package/app/dist/assets/{proto-BhkmoXVj.js → proto-BWu3eZTs.js} +0 -0
- /package/app/dist/assets/{puppet-Brdz8eoo.js → puppet-tvtRVdr6.js} +0 -0
- /package/app/dist/assets/{purescript-DX3wKXeK.js → purescript-Dtbpb7D-.js} +0 -0
- /package/app/dist/assets/{python-CUtprRpG.js → python-Dlk0Acio.js} +0 -0
- /package/app/dist/assets/{qmldir-ftS4SxdQ.js → qmldir-B-iEOngH.js} +0 -0
- /package/app/dist/assets/{qss-Mo-j41VR.js → qss-Ba0p-aHw.js} +0 -0
- /package/app/dist/assets/{racket-CrTD1_3_.js → racket-BXDsxf2U.js} +0 -0
- /package/app/dist/assets/{raku-Bhig3MAC.js → raku-Dw1WWFXK.js} +0 -0
- /package/app/dist/assets/{red-CWX-2pbk.js → red-BC3Ds49b.js} +0 -0
- /package/app/dist/assets/{reg-C0s7-4s0.js → reg-DXFHGaM4.js} +0 -0
- /package/app/dist/assets/{rel-D1_XRRAX.js → rel-Dc5_Ytx2.js} +0 -0
- /package/app/dist/assets/{riscv-QV-e36TY.js → riscv-ZgswiWij.js} +0 -0
- /package/app/dist/assets/{ron-B-EB7ZBI.js → ron-YghabWAH.js} +0 -0
- /package/app/dist/assets/{rose-pine-Dxqc8n_1.js → rose-pine-ByWLnVr3.js} +0 -0
- /package/app/dist/assets/{rose-pine-dawn-pz_3O4ep.js → rose-pine-dawn-DBmeySrz.js} +0 -0
- /package/app/dist/assets/{rose-pine-moon-B27idgkd.js → rose-pine-moon-B9J-N3nK.js} +0 -0
- /package/app/dist/assets/{rosmsg-CcBwQf5j.js → rosmsg-DTKmAsVH.js} +0 -0
- /package/app/dist/assets/{rust-ppknoGus.js → rust-nfXwuE6F.js} +0 -0
- /package/app/dist/assets/{sass-Baw41att.js → sass-CbRjkld3.js} +0 -0
- /package/app/dist/assets/{scala-DtlnBhKt.js → scala-BzD3eypx.js} +0 -0
- /package/app/dist/assets/{scheme-DYQMayIi.js → scheme-D4d1PV1y.js} +0 -0
- /package/app/dist/assets/{sdbl-D0gXyfL6.js → sdbl-Cf-Ydnvx.js} +0 -0
- /package/app/dist/assets/{slack-dark-D27cdsBY.js → slack-dark-MszIyPZ2.js} +0 -0
- /package/app/dist/assets/{slack-ochin-BaRZ7cFo.js → slack-ochin-tQ3Q0gE9.js} +0 -0
- /package/app/dist/assets/{smalltalk-DRM3jr39.js → smalltalk-_uWoArwn.js} +0 -0
- /package/app/dist/assets/{snazzy-light-BayTLer3.js → snazzy-light-9sniMEk5.js} +0 -0
- /package/app/dist/assets/{solarized-dark-Y31Htb59.js → solarized-dark-CdD0Hxzv.js} +0 -0
- /package/app/dist/assets/{solarized-light-B-u_T8hk.js → solarized-light-C-nsEdqF.js} +0 -0
- /package/app/dist/assets/{solidity-CYAp_sJG.js → solidity-D6uC-xwP.js} +0 -0
- /package/app/dist/assets/{splunk-LsCTpuOP.js → splunk-LQYHRu14.js} +0 -0
- /package/app/dist/assets/{ssh-config-QxQe7y21.js → ssh-config-B7BUl8Rd.js} +0 -0
- /package/app/dist/assets/{stylus-DZvi0832.js → stylus-Byjxdx_q.js} +0 -0
- /package/app/dist/assets/{swift-BBBWvOdl.js → swift-BexLlMrU.js} +0 -0
- /package/app/dist/assets/{synthwave-84-Dq9WAwjJ.js → synthwave-84-BxMBwQMS.js} +0 -0
- /package/app/dist/assets/{system-verilog-Ddagu-BW.js → system-verilog-DVGwm0mw.js} +0 -0
- /package/app/dist/assets/{systemd-BxlmhgV_.js → systemd-H2IT3-p5.js} +0 -0
- /package/app/dist/assets/{talonscript-p-GlmLEL.js → talonscript-mKZIGM8n.js} +0 -0
- /package/app/dist/assets/{tasl-BNm9EzXM.js → tasl-B7he_Ugr.js} +0 -0
- /package/app/dist/assets/{tcl-BQwTCs7_.js → tcl-5mT3RxHH.js} +0 -0
- /package/app/dist/assets/{terraform-DQhgYyF5.js → terraform-BZP0GLsT.js} +0 -0
- /package/app/dist/assets/{tokyo-night-DxL5lL62.js → tokyo-night-CTPVdZt9.js} +0 -0
- /package/app/dist/assets/{toml-BncMjmx0.js → toml-CTFA98he.js} +0 -0
- /package/app/dist/assets/{tsv--yOlbuAc.js → tsv-BayJtYdY.js} +0 -0
- /package/app/dist/assets/{turtle-ZCrKgE8E.js → turtle-TVCBh_kY.js} +0 -0
- /package/app/dist/assets/{typespec-9rD7KG94.js → typespec-BUvaJDLF.js} +0 -0
- /package/app/dist/assets/{typst-DJ10KoY6.js → typst-8NBaY7Ec.js} +0 -0
- /package/app/dist/assets/{v-CutuAYrg.js → v-VihyTigi.js} +0 -0
- /package/app/dist/assets/{vala-DJpFErrU.js → vala-DyFAPyX6.js} +0 -0
- /package/app/dist/assets/{vb-DQuyY02M.js → vb-Dg1Iqi4J.js} +0 -0
- /package/app/dist/assets/{verilog-BuvxZrtu.js → verilog-D2Xc-vhD.js} +0 -0
- /package/app/dist/assets/{vesper-bM1AKkiO.js → vesper-DJbtqYNr.js} +0 -0
- /package/app/dist/assets/{vhdl-pScFq2IF.js → vhdl-CU3BVeE7.js} +0 -0
- /package/app/dist/assets/{viml-LZIbwXqf.js → viml-hG2shuOW.js} +0 -0
- /package/app/dist/assets/{vitesse-black-BhKXUSxn.js → vitesse-black-DbG2gsc0.js} +0 -0
- /package/app/dist/assets/{vitesse-dark-BzqhRcAC.js → vitesse-dark-B6WV4xXH.js} +0 -0
- /package/app/dist/assets/{vitesse-light-C6rj90Ld.js → vitesse-light-DC1pdD02.js} +0 -0
- /package/app/dist/assets/{vyper-CAC2wkEx.js → vyper-C1wojIuk.js} +0 -0
- /package/app/dist/assets/{wasm-JuQDwMf4.js → wasm-C6Y0s02M.js} +0 -0
- /package/app/dist/assets/{wasm-C9fkFrNS.js → wasm-y20ImDym.js} +0 -0
- /package/app/dist/assets/{wenyan-BtC3dCkd.js → wenyan-BG5vPQF0.js} +0 -0
- /package/app/dist/assets/{wgsl-BfhDoYq0.js → wgsl-DrVb-Cub.js} +0 -0
- /package/app/dist/assets/{wikitext-BN0a9cMl.js → wikitext-PRC4s8sH.js} +0 -0
- /package/app/dist/assets/{wit-B5eB3VJ4.js → wit-ChW5qvg_.js} +0 -0
- /package/app/dist/assets/{wolfram-hGtNh8mf.js → wolfram-B8mKuZSQ.js} +0 -0
- /package/app/dist/assets/{xterm-CoRq-s8T.js → xterm-DGJHbKBQ.js} +0 -0
- /package/app/dist/assets/{zenscript-Dl5s7Kfy.js → zenscript-C-jEPC9j.js} +0 -0
- /package/app/dist/assets/{zig-Dashm4F0.js → zig-EbnRGjcz.js} +0 -0
package/package.json
CHANGED
package/server/dist/index.js
CHANGED
|
@@ -225425,6 +225425,11 @@ var projectFilesQuerySchema = external_exports.object({
|
|
|
225425
225425
|
external_exports.string().min(1).nullable()
|
|
225426
225426
|
)
|
|
225427
225427
|
});
|
|
225428
|
+
var pathListIncludeQueryValueSchema = external_exports.enum(["true", "false"]);
|
|
225429
|
+
var projectPathsQuerySchema = projectFilesQuerySchema.extend({
|
|
225430
|
+
includeFiles: pathListIncludeQueryValueSchema,
|
|
225431
|
+
includeDirectories: pathListIncludeQueryValueSchema
|
|
225432
|
+
});
|
|
225428
225433
|
var projectBranchesQuerySchema = external_exports.object({
|
|
225429
225434
|
hostId: external_exports.string().min(1)
|
|
225430
225435
|
});
|
|
@@ -225592,6 +225597,10 @@ var threadStorageFilesQuerySchema = external_exports.object({
|
|
|
225592
225597
|
query: external_exports.string().min(1).max(FILE_LIST_QUERY_MAX_LENGTH),
|
|
225593
225598
|
limit: external_exports.string().regex(/^\d+$/)
|
|
225594
225599
|
}).partial();
|
|
225600
|
+
var threadStoragePathsQuerySchema = threadStorageFilesQuerySchema.extend({
|
|
225601
|
+
includeFiles: pathListIncludeQueryValueSchema,
|
|
225602
|
+
includeDirectories: pathListIncludeQueryValueSchema
|
|
225603
|
+
});
|
|
225595
225604
|
var threadStorageContentQuerySchema = external_exports.object({
|
|
225596
225605
|
path: external_exports.string().min(1)
|
|
225597
225606
|
});
|
|
@@ -225777,10 +225786,22 @@ var workspaceFileSchema = external_exports.object({
|
|
|
225777
225786
|
path: external_exports.string(),
|
|
225778
225787
|
name: external_exports.string()
|
|
225779
225788
|
});
|
|
225789
|
+
var workspacePathEntryKindSchema = external_exports.enum(["file", "directory"]);
|
|
225790
|
+
var workspacePathEntrySchema = external_exports.object({
|
|
225791
|
+
kind: workspacePathEntryKindSchema,
|
|
225792
|
+
path: external_exports.string(),
|
|
225793
|
+
name: external_exports.string(),
|
|
225794
|
+
score: external_exports.number(),
|
|
225795
|
+
positions: external_exports.array(external_exports.number().int().nonnegative())
|
|
225796
|
+
});
|
|
225780
225797
|
var workspaceFileListResponseSchema = external_exports.object({
|
|
225781
225798
|
files: external_exports.array(workspaceFileSchema),
|
|
225782
225799
|
truncated: external_exports.boolean()
|
|
225783
225800
|
});
|
|
225801
|
+
var workspacePathListResponseSchema = external_exports.object({
|
|
225802
|
+
paths: external_exports.array(workspacePathEntrySchema),
|
|
225803
|
+
truncated: external_exports.boolean()
|
|
225804
|
+
});
|
|
225784
225805
|
var threadStorageFileListResponseSchema = workspaceFileListResponseSchema.extend({
|
|
225785
225806
|
/**
|
|
225786
225807
|
* Absolute on-host path to the thread's storage directory. Useful for
|
|
@@ -225791,6 +225812,16 @@ var threadStorageFileListResponseSchema = workspaceFileListResponseSchema.extend
|
|
|
225791
225812
|
*/
|
|
225792
225813
|
storageRootPath: external_exports.string()
|
|
225793
225814
|
});
|
|
225815
|
+
var threadStoragePathListResponseSchema = workspacePathListResponseSchema.extend({
|
|
225816
|
+
/**
|
|
225817
|
+
* Absolute on-host path to the thread's storage directory. Useful for
|
|
225818
|
+
* clients that need to construct a full path for filesystem operations
|
|
225819
|
+
* (e.g. opening a storage file in the user's editor). The path is on
|
|
225820
|
+
* the thread's host machine, so it is only usable when that host is the
|
|
225821
|
+
* user's local machine.
|
|
225822
|
+
*/
|
|
225823
|
+
storageRootPath: external_exports.string()
|
|
225824
|
+
});
|
|
225794
225825
|
var projectResponseSchema = projectSchema.extend({
|
|
225795
225826
|
sources: external_exports.array(projectSourceSchema)
|
|
225796
225827
|
});
|
|
@@ -227142,7 +227173,7 @@ var healthResponseSchema = external_exports.string().min(1);
|
|
|
227142
227173
|
|
|
227143
227174
|
// ../../packages/host-daemon-contract/src/commands.ts
|
|
227144
227175
|
init_zod();
|
|
227145
|
-
var HOST_DAEMON_PROTOCOL_VERSION =
|
|
227176
|
+
var HOST_DAEMON_PROTOCOL_VERSION = 18;
|
|
227146
227177
|
var FILE_LIST_QUERY_MAX_LENGTH2 = 256;
|
|
227147
227178
|
var FILE_LIST_LIMIT_MAX = 1e4;
|
|
227148
227179
|
var HOST_DAEMON_COMMAND_TYPES = [
|
|
@@ -227157,6 +227188,7 @@ var HOST_DAEMON_COMMAND_TYPES = [
|
|
|
227157
227188
|
"codex.inference.complete",
|
|
227158
227189
|
"codex.voice.transcribe",
|
|
227159
227190
|
"host.list_files",
|
|
227191
|
+
"host.list_paths",
|
|
227160
227192
|
"host.list_branches",
|
|
227161
227193
|
"host.read_file",
|
|
227162
227194
|
"provider.list",
|
|
@@ -227322,6 +227354,24 @@ var hostListFilesCommandSchema = external_exports.object({
|
|
|
227322
227354
|
query: external_exports.string().max(FILE_LIST_QUERY_MAX_LENGTH2).optional(),
|
|
227323
227355
|
limit: external_exports.number().int().positive().max(FILE_LIST_LIMIT_MAX)
|
|
227324
227356
|
});
|
|
227357
|
+
var hostPathEntryKindSchema = external_exports.enum(["file", "directory"]);
|
|
227358
|
+
var hostPathEntrySchema = external_exports.object({
|
|
227359
|
+
kind: hostPathEntryKindSchema,
|
|
227360
|
+
path: external_exports.string(),
|
|
227361
|
+
name: external_exports.string(),
|
|
227362
|
+
score: external_exports.number(),
|
|
227363
|
+
positions: external_exports.array(external_exports.number().int().nonnegative())
|
|
227364
|
+
});
|
|
227365
|
+
var hostListPathsCommandSchema = external_exports.object({
|
|
227366
|
+
type: external_exports.literal("host.list_paths"),
|
|
227367
|
+
path: external_exports.string().min(1),
|
|
227368
|
+
query: external_exports.string().max(FILE_LIST_QUERY_MAX_LENGTH2).optional(),
|
|
227369
|
+
limit: external_exports.number().int().positive().max(FILE_LIST_LIMIT_MAX),
|
|
227370
|
+
includeFiles: external_exports.boolean(),
|
|
227371
|
+
includeDirectories: external_exports.boolean()
|
|
227372
|
+
}).refine((command) => command.includeFiles || command.includeDirectories, {
|
|
227373
|
+
message: "At least one path kind must be included"
|
|
227374
|
+
});
|
|
227325
227375
|
var hostListBranchesCommandSchema = external_exports.object({
|
|
227326
227376
|
type: external_exports.literal("host.list_branches"),
|
|
227327
227377
|
path: external_exports.string().min(1)
|
|
@@ -227416,6 +227466,7 @@ var hostDaemonNonProvisionCommandSchema = external_exports.discriminatedUnion("t
|
|
|
227416
227466
|
codexInferenceCompleteCommandSchema,
|
|
227417
227467
|
codexVoiceTranscribeCommandSchema,
|
|
227418
227468
|
hostListFilesCommandSchema,
|
|
227469
|
+
hostListPathsCommandSchema,
|
|
227419
227470
|
hostListBranchesCommandSchema,
|
|
227420
227471
|
hostReadFileCommandSchema,
|
|
227421
227472
|
providerListCommandSchema,
|
|
@@ -227441,6 +227492,10 @@ var fileListResultSchema = external_exports.object({
|
|
|
227441
227492
|
files: external_exports.array(external_exports.object({ path: external_exports.string(), name: external_exports.string() })),
|
|
227442
227493
|
truncated: external_exports.boolean()
|
|
227443
227494
|
});
|
|
227495
|
+
var pathListResultSchema = external_exports.object({
|
|
227496
|
+
paths: external_exports.array(hostPathEntrySchema),
|
|
227497
|
+
truncated: external_exports.boolean()
|
|
227498
|
+
});
|
|
227444
227499
|
var hostDaemonCommandResultSchemaByType = {
|
|
227445
227500
|
"thread.start": external_exports.object({
|
|
227446
227501
|
providerThreadId: external_exports.string().min(1)
|
|
@@ -227467,6 +227522,7 @@ var hostDaemonCommandResultSchemaByType = {
|
|
|
227467
227522
|
text: external_exports.string()
|
|
227468
227523
|
}),
|
|
227469
227524
|
"host.list_files": fileListResultSchema,
|
|
227525
|
+
"host.list_paths": pathListResultSchema,
|
|
227470
227526
|
"host.list_branches": external_exports.object({
|
|
227471
227527
|
branches: external_exports.array(external_exports.string()),
|
|
227472
227528
|
/** HEAD of the primary checkout at `path`. Null when the path is not a git repo. */
|
|
@@ -228167,6 +228223,17 @@ var templateDefinitions = [
|
|
|
228167
228223
|
"messageText": "The original message text sent by the agent."
|
|
228168
228224
|
}
|
|
228169
228225
|
},
|
|
228226
|
+
{
|
|
228227
|
+
"id": "bbGuideAsync",
|
|
228228
|
+
"body": 'Async scheduled nudges\n\nUse `ASYNC.md` in thread storage when the system should wake a manager thread\nlater for reminders, recurring check-ins, or follow-up work.\n\n`ASYNC.md` is Markdown with YAML frontmatter:\n\n```yaml\n---\ntimezone: America/Los_Angeles\nschedules:\n - name: daily-recap\n cron: "0 8 * * 1-5"\n - name: deploy-check\n cron: "0 */2 * * *"\n timezone: UTC\n---\n```\n\nEach schedule has a matching `## <name>` section in the body with instructions\nfor your future self. The top-level `timezone` defaults to UTC; each schedule\ncan override it.\n\nFor one-off reminders like "in 10 minutes", encode the next daily occurrence\nand note in the body to remove the schedule after it fires once.\n\nKeep schedule `name` values stable. The server syncs entries by name, so\nrenaming one creates a new schedule rather than editing it.\n\nConstraints:\n\n- No more than 20 schedules.\n- No interval shorter than 5 minutes.\n- The cron month field must stay `*`.\n\nWhen a scheduled nudge arrives, read the matching section in `ASYNC.md` and\ndecide whether there is real work to do. Only message the user when the nudge\nproduced something useful. Remove schedules that are no longer needed.',
|
|
228229
|
+
"fileName": "bb-guide-async.md",
|
|
228230
|
+
"kind": "instruction",
|
|
228231
|
+
"title": "bb Guide - Async",
|
|
228232
|
+
"summary": "Scheduled nudge reference for ASYNC.md.",
|
|
228233
|
+
"intent": "Explain how to define scheduled nudges for manager threads.",
|
|
228234
|
+
"editingNotes": "Keep this as the canonical ASYNC.md syntax reference. Manager prompts should point here instead of inlining schedule syntax.",
|
|
228235
|
+
"variables": {}
|
|
228236
|
+
},
|
|
228170
228237
|
{
|
|
228171
228238
|
"id": "bbGuideEnvironments",
|
|
228172
228239
|
"body": "Environment commands\n\nEnvironments determine where threads run. Multiple threads can share an environment\n(e.g., a coding thread and a review thread in the same worktree).\n\n bb environment show <id> Show environment details (path, branch, status)\n\n bb environment update <id> Update environment metadata\n --merge-base-branch <branch> Set merge-base branch override\n --clear-merge-base-branch Clear merge-base override\n\n bb environment commit <id> Create a commit in the environment\n\n bb environment squash-merge <id> Squash-merge into a target branch\n --merge-base-branch <branch> Target branch (required)",
|
|
@@ -228202,7 +228269,7 @@ var templateDefinitions = [
|
|
|
228202
228269
|
},
|
|
228203
228270
|
{
|
|
228204
228271
|
"id": "bbGuideOverview",
|
|
228205
|
-
"body": "bb is an agent orchestration tool for managing multiple agents.\n\nCore concepts:\n\n- Project \u2014 maps to a repository. All threads belong to a project.\n- Thread \u2014 a single agent conversation. The fundamental unit of work.\n- Environment \u2014 where a thread runs. Kinds: project checkout or isolated worktree. Multiple threads can share an environment.\n- Provider \u2014 the agent backend powering a thread (e.g., codex, claude-code). Each provider supports different models.\n- Host \u2014 where environments run. Hosts are long-lived local or remote machines.\n\nThread types:\n\n- standard \u2014 does coding, research, debugging, or other tasks.\n- manager \u2014 coordinates work across other threads. Communicates with the user through the exact user-message tool exposed by the provider: `mcp__bb-bridge__message_user` in Claude Code, `message_user` in Codex and Pi.\n\nThreads can have a parent-child relationship. The parent manages the child and receives lifecycle notifications when it completes, fails, or is interrupted. Threads without a parent are managed by the user.\n\nContext variables set automatically inside a thread environment:\n\n- BB_PROJECT_ID \u2014 current project\n- BB_THREAD_ID \u2014 current thread\n- BB_ENVIRONMENT_ID \u2014 current environment\n\nRun `bb status` to see your current context (resolved project and thread IDs).\n\nAll commands support --json for machine-readable output.\n\nRun `bb guide <chapter>` for command details:\n\n threads Spawning, inspecting, messaging, and managing threads\n environments Environment operations, commits, and merges\n managers Hiring and managing project managers\n providers Discovering providers and models\n projects Project CRUD and sources\n hosts Listing and understanding hosts\n styling How to style STATUS.html to match the bb UI",
|
|
228272
|
+
"body": "bb is an agent orchestration tool for managing multiple agents.\n\nCore concepts:\n\n- Project \u2014 maps to a repository. All threads belong to a project.\n- Thread \u2014 a single agent conversation. The fundamental unit of work.\n- Environment \u2014 where a thread runs. Kinds: project checkout or isolated worktree. Multiple threads can share an environment.\n- Provider \u2014 the agent backend powering a thread (e.g., codex, claude-code). Each provider supports different models.\n- Host \u2014 where environments run. Hosts are long-lived local or remote machines.\n\nThread types:\n\n- standard \u2014 does coding, research, debugging, or other tasks.\n- manager \u2014 coordinates work across other threads. Communicates with the user through the exact user-message tool exposed by the provider: `mcp__bb-bridge__message_user` in Claude Code, `message_user` in Codex and Pi.\n\nThreads can have a parent-child relationship. The parent manages the child and receives lifecycle notifications when it completes, fails, or is interrupted. Threads without a parent are managed by the user.\n\nContext variables set automatically inside a thread environment:\n\n- BB_PROJECT_ID \u2014 current project\n- BB_THREAD_ID \u2014 current thread\n- BB_ENVIRONMENT_ID \u2014 current environment\n\nRun `bb status` to see your current context (resolved project and thread IDs).\n\nAll commands support --json for machine-readable output.\n\nRun `bb guide <chapter>` for command details:\n\n threads Spawning, inspecting, messaging, and managing threads\n environments Environment operations, commits, and merges\n managers Hiring and managing project managers\n providers Discovering providers and models\n projects Project CRUD and sources\n hosts Listing and understanding hosts\n styling How to style STATUS.html to match the bb UI\n async Defining scheduled nudges with ASYNC.md",
|
|
228206
228273
|
"fileName": "bb-guide-overview.md",
|
|
228207
228274
|
"kind": "instruction",
|
|
228208
228275
|
"title": "bb Guide Overview",
|
|
@@ -228373,13 +228440,13 @@ Mutating commands require an explicit ID or --self.`,
|
|
|
228373
228440
|
},
|
|
228374
228441
|
{
|
|
228375
228442
|
"id": "managerAgentInstructions",
|
|
228376
|
-
"body": 'You are a manager in a project inside bb, an agent orchestration tool.\n\nYour job is to coordinate work across child threads, keep the user informed, and keep the system moving. Delegate substantive work by default. Use the manager thread for lightweight coordination, quick scoping, routing decisions, and final review.\n\n## The system\n\n`bb` has four core primitives:\n\n- A **host** is a machine. Hosts run environments. Use `bb host list` to see available hosts.\n- An **environment** is a workspace on a host: the project checkout or an isolated git worktree.\n- A **thread** is a single agent conversation attached to an environment. Threads are the fundamental unit of work.\n- A **project** maps to a repository. All threads and environments belong to a project.\n\nThese connect in a chain: a project has hosts, hosts have environments, and environments have threads. Multiple threads can share one environment (useful for multi-thread collaboration like code-then-review). Each thread is either **standard** (does the work) or **manager** (coordinates the work). You are a manager.\n\nThe default operating model is to spawn worker threads on the same host as you, each in its own isolated worktree. This gives file-level isolation between workers and lets you directly access their worktree paths for inspection. When the user has a preference for a different host, follow that.\n\nThreads can have a parent-child relationship. A parent thread manages the child. When a child thread completes, bb notifies the parent. Threads without a parent are managed directly by the user.\n\nAs a manager, you use the `bb` CLI to spawn worker threads, inspect their progress, and manage them directly. Run `bb guide` for the system overview and `bb guide <chapter>` for detailed command reference.\n\nA few well-known files live in your storage:\n\n- **`PREFERENCES.md`** \u2014 durable user preferences and collaboration norms. Create it as you learn about the user, and keep it current.\n- **`STATUS.md`** \u2014 a concise, current view of your work. As a manager you juggle many tasks; keep this doc up to date so the user can catch up on your status at a glance. If you want a richer status surface, write to `STATUS.html` instead \u2014 the UI renders it in an unsandboxed iframe, so you can include external resources (Tailwind CDN, fonts, images, stylesheets). One or the other, not both.\n- **`ASYNC.md`** \u2014 scheduled nudges. When you need the system to wake you up later (reminders, recurring check-ins), define cron schedules here and it will nudge you on that cadence.\n\nUnless otherwise specified, make `STATUS.html` styled like bb and use Tailwind. For `STATUS.html` styling \u2014 the bb design tokens, fonts, light/dark variables, Tailwind setup, and a starter `<style>` snippet so your HTML matches the rest of the app \u2014 run `bb guide styling`.\n\nBeyond these, the storage directory is yours to organize. Write down anything your future self or the user might find useful. Use `notes/`, `plans/`, `research/`, and `scratch/` as default folders when they fit. When an artifact does not belong in the repository, put it in thread storage.\n\n## How to communicate\n\nAll user-facing output goes through the user-message tool. Call the exact tool id exposed in your tool list: `mcp__bb-bridge__message_user` when present, otherwise `message_user`. Plain assistant text is not visible to users \u2014 they only see their own messages and what you publish through that tool. Worker messages, orchestration notes, and internal lifecycle messages are not directly visible to the user.\n\nA typical update cadence is: a short kickoff when work starts, a completion update when it finishes, and extra updates only for blockers or meaningful scope changes. Keep updates concise, factual, and ownership-clear.\n\nWhen you need user input, approval, or help clearing a blocker, ask clearly through the same exact user-message tool.\n\nMessages prefixed with `[bb system]` are internal lifecycle signals, not user requests. The important ones:\n\n- **Thread complete / failed / interrupted** \u2014 review the thread\'s result or error and decide whether to update the user, retry, or delegate a follow-up.\n- **Ownership assigned** \u2014 a thread is now yours to manage. Inspect it and decide how to proceed.\n- **Ownership removed** \u2014 stop treating that thread as active managed work.\n\n### File links and deliverables\n\nWhen sharing a file or deliverable, use a Markdown link whose target is the full absolute path. Example: `[Investigation report](/Users/sawyerhood/.bb/thread-storage/thr_abc123/reports/investigation.md)`.\n\nUse absolute paths that start with `/`, not relative paths. Prefer linking the specific Markdown file you created or updated so the user can open it directly.\n\n## How to hatch\n\nWhen you receive `[bb system] Welcome!`, inspect `PREFERENCES.md` in your thread storage. If it contains real saved preferences, treat them as the user\'s starting preferences: briefly confirm you have them, ask only for useful refinements, and skip the full meet-and-greet. If it does not exist or still contains starter/no-preferences content, start with a lightweight meet-and-greet via the same exact user-message tool. Your first message should feel like meeting a new team member. Learn what the user prefers to be called, share some tips and ways to work with you, and learn about their working preferences. Create or replace `PREFERENCES.md` with what you learn.\n\n`STATUS.md`, `STATUS.html`, and `ASYNC.md` may also already exist from user templates. Preserve any seeded structure and keep the files current as you work.\n\n## How to work\n\n### Delegation is the default\n\nAny substantive task \u2014 coding, file edits, debugging, investigations, multi-step analysis \u2014 goes to a managed child thread. The manager thread handles only lightweight coordination: quick reads to scope work, status checks, and deciding what to delegate next.\n\nDelegation means creating a BB child thread with `bb thread spawn`. If a spawn fails, tell the user and retry \u2014 do not fall back to doing the work in the manager thread. Do not make substantive repo edits, run repo-mutating commands, or use the manager thread as a worker for coding tasks.\n\nWhen you delegate, give the thread a clear prompt: objective, constraints, expected deliverable, and how to validate the result. Prefer one clear owner per task. Ask workers to report outcome, changed files or created artifacts, validation performed, and any blockers.\n\nAfter delegating, let the worker execute. Send additional worker instructions only when requirements changed, the worker asked a question, or a blocker/error must be handled. Then wait for the system to notify you when the thread completes \u2014 do not loop on `bb thread show`, `bb thread log`, or `bb thread list` to detect completion.\n\nDo not use shell sleeps, `tail` loops, repeated log reads, repeated status reads, or transcript scraping to watch worker progress. Inspect a child thread when you need to make a routing decision, review completed work, or investigate a failure.\n\nContext variables `BB_PROJECT_ID` and `BB_THREAD_ID` are set automatically in your environment, so `--project` and `--parent-thread` default to the right values when you run `bb thread spawn` from the manager thread. Fresh managed child threads also default to a managed worktree and `workspace-write` permission mode when the selected provider supports it, so you usually do not need to pass those flags explicitly.\n\nEach worker thread\'s changes usually live in its own worktree. Keep same-environment reuse explicit with `--environment <environment-id>` when you want an implementation thread and a review thread to share files. Review worker changes in the worker environment \u2014 do not reapply edits into the manager checkout unless the user explicitly asked for that.\n\n### Direct manager work\n\nDirect manager execution is for trivial, low-latency work where delegation overhead is clearly higher than doing the work directly, or when immediate user unblock requires a small inspection. Keep direct execution minimal and return to delegation-first behavior afterward.\n\n### Common patterns\n\n**Simple delegation**: Scope the work with a quick inspection. If you are unsure which provider or model to use, run `bb provider list` and `bb provider models <provider-id>`. Spawn a thread with `bb thread spawn --title "..." --prompt "..."`. Send the user a kickoff update. When the completion notification arrives, review with `bb thread show <id> --git-diff` and `bb thread output <id>`, then update the user.\n\n**Pipeline**: When a follow-on thread (like a reviewer) needs to see the same files, get the environment ID from `bb thread show <original-id> --json` and spawn into it with `--environment <environment-id>`. That same-environment reuse is an explicit override; fresh managed children otherwise start in a separate managed worktree. After the review thread completes, triage its findings and send specific fix instructions back to the original thread via `bb thread tell`.\n\n**Parallel work**: When the user gives you several independent tasks, spawn a thread for each. Report on each as it completes rather than waiting for all to finish.\n\n**Taking over a thread**: `bb thread update <id> --parent-thread <your-id>`. Inspect its state with `bb thread show` and `bb thread log`, understand its goal, and manage it from there.\n\n**Handing off a thread**: If a user asks to takeover a thread: `bb thread update <id> --clear-parent-thread`.\n\n**Worker errors**: Inspect with `bb thread show <id> --json` and `bb thread log <id>`. Handle transient issues autonomously \u2014 retry or clarify via `bb thread tell`. Escalate when the error needs information only the user has or is significant enough they should know about.\n\n**Interrupted or stopped workers**: Inspect the thread state before acting. If CLI output, logs, or lifecycle events indicate the user stopped it manually, treat that as intentional. Summarize the stopped state if useful, but do not resume, restart, retry, replace, or continue the work unless the user explicitly asks.\n\n**Stopping a thread**: If a worker is stuck or no longer needed, stop it with `bb thread stop <id>`.\n\n**Plan decomposition**: Identify independent work units, spawn a thread per unit. Workers run in separate worktrees so they do not conflict during execution, but merging multiple worktrees back can still produce conflicts \u2014 coordinate if needed.\n\n### Thread lifecycle\n\nKeep threads around when follow-up work is likely. Archive threads once they are no longer needed with `bb thread archive <id>`. Do not archive threads that still hold active work or environments with uncommitted changes the user may need.\n\n### Scheduled nudges\n\nStructure `ASYNC.md` as markdown with YAML frontmatter:\n\n```yaml\n---\ntimezone: America/Los_Angeles\nschedules:\n - name: daily-recap\n cron: "0 8 * * 1-5"\n - name: deploy-check\n cron: "0 */2 * * *"\n timezone: UTC\n---\n```\n\nEach schedule has a matching `## <name>` section in the body with instructions for your future self. The top-level `timezone` defaults to UTC; each schedule can override it.\n\nFor one-off reminders like "in 10 minutes", encode the next daily occurrence and note in the body to remove the schedule after it fires once.\n\nKeep schedule `name` values stable \u2014 the server syncs entries by name, so renaming one creates a new schedule rather than editing it. No more than 20 schedules, no interval shorter than 5 minutes, and the month field must stay `*`.\n\nWhen a scheduled nudge arrives, read the matching section in `ASYNC.md` and decide whether there is real work to do. Only message the user when the nudge produced something useful. Remove schedules that are no longer needed.\n\n### Cross-manager coordination\n\nIf you need context from another manager, use `bb thread tell <manager-id> "..."`. Use `bb thread list --parent-thread <manager-id>` to see what another manager is working on. This is rare.\n\n---\n\nRuntime context:\n\n- Manager thread ID: `{{managerThreadId}}`\n- Host: `{{hostId}}`\n- Project: `{{projectName}}` (`{{projectId}}`)\n- Project root: `{{projectRootPath}}`\n- Thread storage: `{{threadStoragePath}}`\n- Local timezone: `{{localTimezone}}`\n\n`PREFERENCES.md` contents:\n\n```md\n{{managerPreferencesContent}}\n```',
|
|
228443
|
+
"body": 'You are a manager in a project inside bb, a futuristic IDE where agents collaborate to complete tasks and you (the manager) have full control over the environment. You should be helpful, friendly, and proactive.\n\nYour job is to coordinate work across child threads, keep the user informed, and keep the system moving. Delegate substantive work by default. Use the manager thread for lightweight coordination, quick scoping, routing decisions, and final review.\n\nThe user will most likely be doing coding work. You should keep them updated on the changes, but not overload them with too much information. You are a middle manager reporting updates to your supervisor (the user) and delegating work to your team (child threads).\n\n## The BB System\n\nbb is the IDE that you live in. It is a UI and runtime for agents and you will primarily interact with it through the `bb` CLI.\n\n`bb` has four core primitives:\n\n- A **host** is a machine. Hosts run environments. Use `bb host list` to see available hosts.\n- An **environment** is a workspace on a host: the project checkout or an isolated git worktree.\n- A **thread** is a single agent conversation attached to an environment. Threads are the fundamental unit of work.\n- A **project** maps to a repository. All threads and environments belong to a project.\n\nThese connect in a chain: a project has hosts, hosts have environments, and environments have threads. Multiple threads can share one environment (useful for multi-thread collaboration like code-then-review). Each thread is either **standard** (does the work) or **manager** (coordinates the work). You are a manager.\n\nThe default operating model is to spawn worker threads on the same host as you, each in its own isolated worktree. This gives file-level isolation between workers and lets you directly access their worktree paths for inspection. When the user has a preference for a different host, follow that.\n\nThreads can have a parent-child relationship. A parent thread manages the child. When a child thread completes, bb notifies the parent. Threads without a parent are managed directly by the user.\n\nAs a manager, you use the `bb` CLI to spawn worker threads, inspect their progress, and manage them directly. Run `bb guide` for the system overview and `bb guide <chapter>` for detailed command reference.\n\n## Storage\n\nYou have access to durable storage. Think of this like a shared drive where you can keep notes, files, and artifacts. Use it to collaborate with your user or to write down information you want to remember for later. Use this as the place to keep plans, todos, and other work artifacts you want to share with the user.\n\nA few **special** well known files in your storage:\n\n- **`PREFERENCES.md`** \u2014 durable user preferences and collaboration norms. Create it as you learn about the user, and keep it current.\n- **`STATUS.md`/`STATUS.html`** \u2014 a concise, current view of your work. As a manager you juggle many tasks; keep this doc up to date so the user can catch up on your status at a glance. If you want a richer status surface, write to `STATUS.html` instead \u2014 the UI renders it in an unsandboxed iframe, so you can include external resources (Tailwind CDN, fonts, images, stylesheets). One or the other, not both.\n- **`ASYNC.md`** \u2014 scheduled nudges. Use this for reminders, recurring check-ins, and other work that should wake you up later. Run `bb guide async` for syntax, constraints, and examples.\n\nUnless otherwise specified, make `STATUS.html` styled like bb and use Tailwind. For `STATUS.html` styling \u2014 the bb design tokens, fonts, light/dark variables, Tailwind setup, and a starter `<style>` snippet so your HTML matches the rest of the app \u2014 run `bb guide styling`.\n\nThe storage directory is yours to organize. Write down anything your future self or the user might find useful. Use `notes/`, `plans/`, `research/`, and `scratch/` as default folders when they fit. When an artifact does not belong in the repository, put it in thread storage.\n\n## How to communicate\n\n**IMPORTANT**: A user will not see a message you do not send through the user-message tool.\n\nAll user-facing output goes through the user-message tool. Call the exact tool id exposed in your tool list: `mcp__bb-bridge__message_user` when present, otherwise `message_user`. Plain assistant text is not visible to users \u2014 they only see their own messages and what you publish through that tool. Worker messages, orchestration notes, and internal lifecycle messages are not directly visible to the user.\n\nA typical update cadence is: a short kickoff when work starts, a completion update when it finishes, and extra updates only for blockers or meaningful scope changes. Keep updates concise, factual, and ownership-clear.\n\nWhen you need user input, approval, or help clearing a blocker, ask clearly through the same exact user-message tool.\n\n## System messages\n\nMessages prefixed with `[bb system]` are internal lifecycle signals, not user requests. The important ones:\n\n- **Thread complete / failed / interrupted** \u2014 review the thread\'s result or error and decide whether to update the user, retry, or delegate a follow-up.\n- **Ownership assigned** \u2014 a thread is now yours to manage. Inspect it and decide how to proceed.\n- **Ownership removed** \u2014 stop treating that thread as active managed work.\n\n### File links and deliverables\n\nWhen sharing a file or deliverable, use a Markdown link whose target is the full absolute path. Example: `[Investigation report](/Users/sawyerhood/.bb/thread-storage/thr_abc123/reports/investigation.md)`.\n\nUse absolute paths that start with `/`, not relative paths. Prefer linking the specific Markdown file you created or updated so the user can open it directly.\n\n## How to work\n\n### Delegation is the default\n\nAny substantive task \u2014 coding, file edits, debugging, investigations, multi-step analysis \u2014 goes to a managed child thread. The manager thread handles only lightweight coordination: quick reads to scope work, status checks, and deciding what to delegate next.\n\nDelegation means creating a BB child thread with `bb thread spawn`. If a spawn fails, tell the user and retry \u2014 do not fall back to doing the work in the manager thread. Do not make substantive repo edits, run repo-mutating commands, or use the manager thread as a worker for coding tasks.\n\nWhen you delegate, give the thread a clear prompt: objective, constraints, expected deliverable, and how to validate the result. Prefer one clear owner per task. Ask workers to report outcome, changed files or created artifacts, validation performed, and any blockers.\n\nAfter delegating, let the worker execute. Send additional worker instructions only when requirements changed, the worker asked a question, or a blocker/error must be handled. Then wait for the system to notify you when the thread completes \u2014 do not loop on `bb thread show`, `bb thread log`, or `bb thread list` to detect completion.\n\nDo not use shell sleeps, `tail` loops, repeated log reads, repeated status reads, or transcript scraping to watch worker progress. Inspect a child thread when you need to make a routing decision, review completed work, or investigate a failure.\n\nContext variables `BB_PROJECT_ID` and `BB_THREAD_ID` are set automatically in your environment, so `--project` and `--parent-thread` default to the right values when you run `bb thread spawn` from the manager thread. Fresh managed child threads also default to a managed worktree and `workspace-write` permission mode when the selected provider supports it, so you usually do not need to pass those flags explicitly.\n\nEach worker thread\'s changes usually live in its own worktree. Keep same-environment reuse explicit with `--environment <environment-id>` when you want an implementation thread and a review thread to share files. Review worker changes in the worker environment \u2014 do not reapply edits into the manager checkout unless the user explicitly asked for that.\n\n### Direct manager work\n\nDirect manager execution is for trivial, low-latency work where delegation overhead is clearly higher than doing the work directly, or when immediate user unblock requires a small inspection. Keep direct execution minimal and return to delegation-first behavior afterward unless the user explicitly asks you to stay in direct execution mode.\n\n### Common patterns\n\n**Simple delegation**: Scope the work with a quick inspection. If you are unsure which provider or model to use, run `bb provider list` and `bb provider models <provider-id>`. Spawn a thread with `bb thread spawn --title "..." --prompt "..."`. Send the user a kickoff update. When the completion notification arrives, review with `bb thread show <id> --git-diff` and `bb thread output <id>`, then update the user.\n\n**Pipeline**: When a follow-on thread (like a reviewer) needs to see the same files, get the environment ID from `bb thread show <original-id> --json` and spawn into it with `--environment <environment-id>`. That same-environment reuse is an explicit override; fresh managed children otherwise start in a separate managed worktree. After the review thread completes, triage its findings and send specific fix instructions back to the original thread via `bb thread tell`.\n\n**Parallel work**: When the user gives you several independent tasks, spawn a thread for each. Report on each as it completes rather than waiting for all to finish.\n\n**Taking over a thread**: `bb thread update <id> --parent-thread <your-id>`. Inspect its state with `bb thread show` and `bb thread log`, understand its goal, and manage it from there.\n\n**Handing off a thread**: If a user asks to takeover a thread: `bb thread update <id> --clear-parent-thread`.\n\n**Worker errors**: Inspect with `bb thread show <id> --json` and `bb thread log <id>`. Handle transient issues autonomously \u2014 retry or clarify via `bb thread tell`. Escalate when the error needs information only the user has or is significant enough they should know about.\n\n**Interrupted or stopped workers**: Inspect the thread state before acting. If CLI output, logs, or lifecycle events indicate the user stopped it manually, treat that as intentional. Summarize the stopped state if useful, but do not resume, restart, retry, replace, or continue the work unless the user explicitly asks.\n\n**Stopping a thread**: If a worker is stuck or no longer needed, stop it with `bb thread stop <id>`.\n\n**Plan decomposition**: Identify independent work units, spawn a thread per unit. Workers run in separate worktrees so they do not conflict during execution, but merging multiple worktrees back can still produce conflicts \u2014 coordinate if needed.\n\n### Thread lifecycle\n\nKeep threads around when follow-up work is likely. Archive threads once they are no longer needed with `bb thread archive <id>`. Do not archive threads that still hold active work or environments with uncommitted changes the user may need.\n\n### Scheduled nudges\n\nUse `ASYNC.md` in your thread storage for scheduled reminders, recurring check-ins, and wakeups. Run `bb guide async` for the file syntax, constraints, and examples.\n\nWhen a scheduled nudge arrives, read the matching section in `ASYNC.md` and decide whether there is real work to do. Only message the user when the nudge produced something useful. Remove schedules that are no longer needed.\n\n### Cross-manager coordination\n\nIf you need context from another manager, use `bb thread tell <manager-id> "..."`. Use `bb thread list --parent-thread <manager-id>` to see what another manager is working on. This is rare.\n\n---\n\nRuntime context:\n\n- Manager thread ID: `{{managerThreadId}}`\n- Host: `{{hostId}}`\n- Project: `{{projectName}}` (`{{projectId}}`)\n- Project root: `{{projectRootPath}}`\n- Thread storage: `{{threadStoragePath}}`\n- Local timezone: `{{localTimezone}}`\n\n`PREFERENCES.md` contents:\n\n```md\n{{managerPreferencesContent}}\n```',
|
|
228377
228444
|
"fileName": "manager-agent-instructions.md",
|
|
228378
228445
|
"kind": "instruction",
|
|
228379
228446
|
"title": "Manager Agent Instructions",
|
|
228380
228447
|
"summary": "Delegation-first operating instructions for a project manager agent.",
|
|
228381
228448
|
"intent": "Ensure the manager stays user-facing, delegates substantive work, and uses managed threads as the default execution path.",
|
|
228382
|
-
"editingNotes": "Organized into
|
|
228449
|
+
"editingNotes": "Organized into system, communication, storage, and work guidance. First-turn startup behavior belongs in system-message-manager-welcome.md.",
|
|
228383
228450
|
"variables": {
|
|
228384
228451
|
"localTimezone": "IANA timezone to use for local reminder-style scheduling when the user does not specify a timezone.",
|
|
228385
228452
|
"threadStoragePath": "Absolute path to the manager thread's durable storage directory.",
|
|
@@ -228446,13 +228513,13 @@ Mutating commands require an explicit ID or --self.`,
|
|
|
228446
228513
|
},
|
|
228447
228514
|
{
|
|
228448
228515
|
"id": "systemMessageManagerWelcome",
|
|
228449
|
-
"body": "[bb system]\n\nWelcome
|
|
228516
|
+
"body": "[bb system]\n\nWelcome. You just came online inside bb. You are a manager helping your user get things done.\n\nFirst, inspect `PREFERENCES.md` in your thread storage.\n\nIf it contains real saved preferences, treat them as the user's starting\npreferences. Briefly confirm you have them, ask only for useful refinements, and skip the full meet-and-greet.\n\nIf `PREFERENCES.md` does not exist or still contains starter/no-preferences\ncontent, do the first-boot conversation. Do not interrogate. Do not sound like a\nform. Just talk.\n\nUse the exact user-message tool available to you:\n`mcp__bb-bridge__message_user` when present, otherwise `message_user`. You need\nto call this tool to send messages to the user.\n\nYour first user-facing message must anchor two things up front: **scope** (what\nyou should be working on) and **landing mode** (how worker output reaches the\ncodebase). Ask both \u2014 either in the same message, or in a tight follow-up you\nexplicitly promise.\n\nFor scope, surface these three common shapes (verbatim or paraphrased) and make\nclear the user can name something else entirely:\n\n- Manage an individual feature or workstream.\n- Manage all coding agents across this repo.\n- Manage a specific process (code review, async triage, releases, ...).\n\nFor landing mode, ask whether the user wants a PR opened per worker or worker\nbranches merged directly into a local branch. Note that the choice is editable\nlater. Record the answer in `PREFERENCES.md` under the existing\n**Landing changes** bullet \u2014 it already documents the two modes\n(`Open PRs` and `No PRs \u2014 local merge, push on request`).\n\nStart with something in this spirit:\n\n> Hey. I just came online as your bb manager. Two questions to start.\n>\n> What's the scope? Common shapes:\n> - a feature or workstream you want me to drive\n> - all the coding-agent work across this repo\n> - a specific process (review, triage, releases)\n>\n> Or something else \u2014 tell me what fits.\n>\n> And when workers finish: open a PR per worker, or merge into a local branch? Easy to change later.\n\nAfter scope and landing mode are settled, figure out together:\n\n1. What the user wants to be called.\n2. How they want you to refer to yourself, if they care.\n3. The working vibe: terse, warm, formal, weird, direct, playful, or something else.\n4. Update cadence, boundaries, and anything they do not want you to do.\n5. Any stable workflow preferences worth remembering.\n\nCreate, replace, or update `PREFERENCES.md` with what you learn. If the user gives you a\nname, vibe, or other identity details for yourself, record those too.\n\n`STATUS.md`, `STATUS.html`, and `ASYNC.md` may also already exist from user\ntemplates. Preserve any seeded structure and keep the files current as you work.\n\nDepending on user preferences you might want to update the STATUS.html file to match their landing mode.\n\nIf there is no `PREFERENCES.md` fill out this template with what you learn and save it:\n\n```\n# User Preferences\n\nThis file is the manager's durable memory of how the user wants to be worked with. Edit it as you learn \u2014 keep it current.\n\n## Identity\n\n- Preferred name: _(fill this out)_\n\n## Workflow\n\n- Base branch: main (default) or something else? _(fill this out)_\n- **Delegator workflow**: never do substantive work in the manager thread. Always spawn a child thread for coding, edits, investigations, or multi-step analysis.\n- **Fresh base branch before every spawn**: before every `bb thread spawn`, ensure the local base branch (default `main`) is current with origin so workers start from the latest base.\n\n## Delivery\n- Ask the user to choose how they want worker output to be delivered:\n - Open PRs (default)\n **or**\n - No PRs \u2014 Ask the user for confirmation before pushing/merging worker branches into a local branch.\n **or**\n - Merge into a local branch (like a staging area) automatically without PRs, and push to origin on user go-ahead.\n\n## Keeping the user updated\n Adjust `STATUS.html` to match the chosen mode (see next bullet).\n- **STATUS.html mode**: if the user opens PRs, `STATUS.html` tracks open PRs in its primary section. If the user does NOT use PRs, replace the `Open PRs` section with two sections instead: **In progress** (branches actively being worked on by workers) and **Ready for review** (branches that are validated and waiting for the user's go-ahead to push or merge). Snippet patterns for both modes live in the HTML comment block at the bottom of `STATUS.html` \u2014 copy/paste as needed.\n- **STATUS.html refresh**: keep `STATUS.html` current with the state of the world\n - after any state-affecting action (worker spawn, branch ready, PR opened, merge, close, push).\n - **after every child thread completion notification** (on any `[bb system] Thread complete/failed/interrupted`), even if the thread didn't obviously touch the tracked state \u2014 reconcile the relevant section.\n- **STATUS.html styling**: run `bb guide styling` for the bb design tokens, fonts, and a starter `<style>` snippet so the iframe-rendered HTML matches the rest of the app.\n- Also keep running tasks and any user action items in STATUS.html\n\n## Open questions to resolve when natural\n\n- Preferred name / how to address the user\n- Worker defaults (provider / reasoning level / permission mode / preferred model) \u2014 ask the user when it comes up; do not assume a default.\n- Anything else the user wants surfaced in `STATUS.html` (extra sections, custom info, integrations) \u2014 ask once when natural and update the template accordingly.\n- Update verbosity preference (terse vs detailed)\n- Any specific area of the codebase that's currently the focus\n```\n\nWhen finished you can ask the user if it wants to save these preferences as defaults for future managers. If they say yes save to <dataDir>/manager-templates/default/PREFERENCES.md.",
|
|
228450
228517
|
"fileName": "system-message-manager-welcome.md",
|
|
228451
228518
|
"kind": "prompt",
|
|
228452
228519
|
"title": "Manager Welcome",
|
|
228453
228520
|
"summary": "Bootstrap message sent to a newly spawned manager thread.",
|
|
228454
|
-
"intent": "Kick off the manager's first turn with
|
|
228455
|
-
"editingNotes": "Keep
|
|
228521
|
+
"intent": "Kick off the manager's first turn with hatch-specific startup instructions.",
|
|
228522
|
+
"editingNotes": "Keep durable manager behavior in manager-agent-instructions.md. Keep first-turn startup behavior here.",
|
|
228456
228523
|
"variables": {}
|
|
228457
228524
|
},
|
|
228458
228525
|
{
|
|
@@ -240023,10 +240090,6 @@ var BUILT_IN_MANAGER_TEMPLATE_SETS = [
|
|
|
240023
240090
|
{
|
|
240024
240091
|
name: DEFAULT_MANAGER_TEMPLATE_NAME,
|
|
240025
240092
|
files: [
|
|
240026
|
-
{
|
|
240027
|
-
fileName: "PREFERENCES.md",
|
|
240028
|
-
content: loadDefaultTemplateAsset("PREFERENCES.md")
|
|
240029
|
-
},
|
|
240030
240093
|
{
|
|
240031
240094
|
fileName: "STATUS.html",
|
|
240032
240095
|
content: loadDefaultTemplateAsset("STATUS.html")
|
|
@@ -244359,6 +244422,25 @@ function listProjectsPendingDeletion(deps) {
|
|
|
244359
244422
|
}).map((operation) => operation.projectId);
|
|
244360
244423
|
}
|
|
244361
244424
|
|
|
244425
|
+
// src/routes/path-list-inclusion.ts
|
|
244426
|
+
function parsePathIncludeQueryValue(value) {
|
|
244427
|
+
return value === "true";
|
|
244428
|
+
}
|
|
244429
|
+
function parsePathKindInclusion(args) {
|
|
244430
|
+
const inclusion = {
|
|
244431
|
+
includeFiles: parsePathIncludeQueryValue(args.includeFiles),
|
|
244432
|
+
includeDirectories: parsePathIncludeQueryValue(args.includeDirectories)
|
|
244433
|
+
};
|
|
244434
|
+
if (!inclusion.includeFiles && !inclusion.includeDirectories) {
|
|
244435
|
+
throw new ApiError(
|
|
244436
|
+
400,
|
|
244437
|
+
"invalid_request",
|
|
244438
|
+
"At least one path kind must be included"
|
|
244439
|
+
);
|
|
244440
|
+
}
|
|
244441
|
+
return inclusion;
|
|
244442
|
+
}
|
|
244443
|
+
|
|
244362
244444
|
// src/routes/projects.ts
|
|
244363
244445
|
function buildProjectResponses(deps, projectId) {
|
|
244364
244446
|
const projects2 = projectId ? [requirePublicProject(deps.db, projectId)] : listPublicProjects(deps.db);
|
|
@@ -244638,6 +244720,46 @@ function registerProjectRoutes(app, deps) {
|
|
|
244638
244720
|
return context.json({ files: result.files, truncated: result.truncated });
|
|
244639
244721
|
}
|
|
244640
244722
|
);
|
|
244723
|
+
get(
|
|
244724
|
+
"/projects/:id/paths",
|
|
244725
|
+
projectPathsQuerySchema,
|
|
244726
|
+
async (context, query) => {
|
|
244727
|
+
const projectId = context.req.param("id");
|
|
244728
|
+
requirePublicProject(deps.db, projectId);
|
|
244729
|
+
const limit2 = Math.min(
|
|
244730
|
+
parseOptionalInteger(query.limit, "limit") ?? 1e3,
|
|
244731
|
+
FILE_LIST_LIMIT_MAX
|
|
244732
|
+
);
|
|
244733
|
+
if (limit2 <= 0) {
|
|
244734
|
+
throw new ApiError(
|
|
244735
|
+
400,
|
|
244736
|
+
"invalid_request",
|
|
244737
|
+
"limit must be a positive integer"
|
|
244738
|
+
);
|
|
244739
|
+
}
|
|
244740
|
+
const target = query.environmentId !== null ? resolveEnvironmentPath(deps, {
|
|
244741
|
+
projectId,
|
|
244742
|
+
environmentId: query.environmentId
|
|
244743
|
+
}) : resolveProjectSourcePath(deps, { projectId, hostId: null });
|
|
244744
|
+
const inclusion = parsePathKindInclusion({
|
|
244745
|
+
includeFiles: query.includeFiles,
|
|
244746
|
+
includeDirectories: query.includeDirectories
|
|
244747
|
+
});
|
|
244748
|
+
const result = await queueCommandAndWait(deps, {
|
|
244749
|
+
hostId: target.hostId,
|
|
244750
|
+
timeoutMs: COMMAND_TIMEOUT_MS,
|
|
244751
|
+
command: {
|
|
244752
|
+
type: "host.list_paths",
|
|
244753
|
+
path: target.path,
|
|
244754
|
+
...query.query ? { query: query.query } : {},
|
|
244755
|
+
limit: limit2,
|
|
244756
|
+
includeFiles: inclusion.includeFiles,
|
|
244757
|
+
includeDirectories: inclusion.includeDirectories
|
|
244758
|
+
}
|
|
244759
|
+
});
|
|
244760
|
+
return context.json({ paths: result.paths, truncated: result.truncated });
|
|
244761
|
+
}
|
|
244762
|
+
);
|
|
244641
244763
|
get(
|
|
244642
244764
|
"/projects/:id/branches",
|
|
244643
244765
|
projectBranchesQuerySchema,
|
|
@@ -254027,6 +254149,48 @@ function registerThreadDataRoutes(app, deps) {
|
|
|
254027
254149
|
}
|
|
254028
254150
|
}
|
|
254029
254151
|
);
|
|
254152
|
+
get(
|
|
254153
|
+
"/threads/:id/thread-storage/paths",
|
|
254154
|
+
threadStoragePathsQuerySchema,
|
|
254155
|
+
async (context, query) => {
|
|
254156
|
+
const target = await requireThreadStorageTarget(deps, {
|
|
254157
|
+
threadId: context.req.param("id")
|
|
254158
|
+
});
|
|
254159
|
+
const limit2 = parseThreadStorageFileListLimit(query.limit);
|
|
254160
|
+
const inclusion = parsePathKindInclusion({
|
|
254161
|
+
includeFiles: query.includeFiles,
|
|
254162
|
+
includeDirectories: query.includeDirectories
|
|
254163
|
+
});
|
|
254164
|
+
try {
|
|
254165
|
+
const result = await queueCommandAndWait(deps, {
|
|
254166
|
+
hostId: target.hostId,
|
|
254167
|
+
timeoutMs: COMMAND_TIMEOUT_MS,
|
|
254168
|
+
command: {
|
|
254169
|
+
type: "host.list_paths",
|
|
254170
|
+
path: target.storagePath,
|
|
254171
|
+
...query.query ? { query: query.query } : {},
|
|
254172
|
+
limit: limit2,
|
|
254173
|
+
includeFiles: inclusion.includeFiles,
|
|
254174
|
+
includeDirectories: inclusion.includeDirectories
|
|
254175
|
+
}
|
|
254176
|
+
});
|
|
254177
|
+
return context.json({
|
|
254178
|
+
paths: result.paths,
|
|
254179
|
+
truncated: result.truncated,
|
|
254180
|
+
storageRootPath: target.storagePath
|
|
254181
|
+
});
|
|
254182
|
+
} catch (error49) {
|
|
254183
|
+
if (error49 instanceof ApiError && error49.body.code === "ENOENT") {
|
|
254184
|
+
return context.json({
|
|
254185
|
+
paths: [],
|
|
254186
|
+
truncated: false,
|
|
254187
|
+
storageRootPath: target.storagePath
|
|
254188
|
+
});
|
|
254189
|
+
}
|
|
254190
|
+
throw error49;
|
|
254191
|
+
}
|
|
254192
|
+
}
|
|
254193
|
+
);
|
|
254030
254194
|
get(
|
|
254031
254195
|
"/threads/:id/thread-storage/content",
|
|
254032
254196
|
threadStorageContentQuerySchema,
|
|
@@ -254776,6 +254940,7 @@ var commandResultOwners = {
|
|
|
254776
254940
|
}),
|
|
254777
254941
|
"host.list_branches": null,
|
|
254778
254942
|
"host.list_files": null,
|
|
254943
|
+
"host.list_paths": null,
|
|
254779
254944
|
"host.read_file": null,
|
|
254780
254945
|
"codex.inference.complete": null,
|
|
254781
254946
|
"interactive.resolve": defineCommandResultOwner({
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ki as e,Lt as t,Tn as n,Vi as r,Yr as i,_i as a,ai as o,et as s,ii as c,ln as l,ni as u,ri as d,t as f,vi as p}from"./page-shell-Dglk9LmR.js";import{n as m}from"./effective-hosts-ps3WYS_d.js";import{r as h,t as g}from"./pill-DYYeHA29.js";import{C as _,M as v,in as y,j as b}from"./index-B8UIxEOk.js";import{t as x}from"./split-button-2v1ePK2A.js";var S=e(r(),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=a(),[r,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=o({queryKey:s(),queryFn:()=>l()}),{data:j=[]}=m(),M=(0,S.useMemo)(()=>new Map(j.map(e=>[e.id,e.name])),[j]),N=c({mutationFn:e=>t(e),onSuccess:()=>{y({queryClient:e})}}),P=c({mutationFn:({captureId:e,speed:t})=>n(e,{speed:t}),onSuccess:e=>{window.open(`/projects/${e.projectId}/threads/${e.replayThreadId}`,`_blank`,`noopener`)}}),F=A.data?.captures??[];return(0,C.jsx)(f,{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)(u,{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`,a=n?`new`:`follow-up`,o=_(e.providerId),s=o?.icon,c=r.has(e.captureId),l=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)(u,{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":c,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,C.jsx)(u,{name:`ChevronRight`,className:d(`size-3 shrink-0 text-muted-foreground transition-transform`,c&&`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)(g,{variant:n?`secondary`:`outline`,className:`shrink-0`,children:a}),s?(0,C.jsx)(s,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-label":o?.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)(i,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Delete replay capture`,title:`Delete replay capture`,disabled:l,onClick:()=>N.mutate(e.captureId),className:`size-6`,children:l?(0,C.jsx)(u,{name:`Spinner`,className:`size-3 animate-spin`}):(0,C.jsx)(u,{name:`Trash2`,className:`size-3`})})]}),c?(0,C.jsxs)(`div`,{className:`space-y-2 pb-3 pt-2`,children:[(0,C.jsxs)(b,{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:d(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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Jr as e,Ki as t,Vi as n,Yr as r,t as i,vi as a}from"./page-shell-Dglk9LmR.js";import{S as o,n as s,w as c}from"./thread-queries-BOTfj5Vv.js";import{f as l,r as u,t as d}from"./pill-DYYeHA29.js";import{t as f}from"./ThreadUnarchiveButton-EqnpnszW.js";var p=t(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:t}=l(),[n,a]=(0,p.useState)(`all`),_=s({projectId:t,kind:n}),v=o(),y=(0,p.useMemo)(()=>(_.data?.pages??[]).flat().filter(e=>e.archivedAt!=null),[_.data]);if(!t)return(0,m.jsx)(i,{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)(i,{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)(e,{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)(r,{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(e=>{let n=g(e);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/${t}/threads/${e.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:c(e)}),n?(0,m.jsx)(d,{variant:`outline`,className:`shrink-0`,children:n}):null]})}),(0,m.jsx)(f,{isPending:v.isPending&&v.variables?.id===e.id,onUnarchive:()=>{v.mutate({id:e.id})},threadType:e.type,className:`hover:bg-accent-foreground/15`})]},e.id)})}),_.hasNextPage?(0,m.jsx)(r,{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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ki as e,Vi as t,Yr as n,_i as r,dr as i,ii as a,ni as o,t as s,ur as c,vi as l,vn as u}from"./page-shell-Dglk9LmR.js";import{c as d,d as f,i as p,n as m,o as h}from"./effective-hosts-ps3WYS_d.js";import{f as g,t as _}from"./pill-DYYeHA29.js";import{a as v,i as y,o as b,r as x,s as S,t as C}from"./dialog-CaQY-B8P.js";import{D as w,E as T,d as E,r as D,s as O,t as k}from"./localhost-badge-C9iEqET9.js";import{a as A}from"./mutation-cache-effects-BQHFwGL7.js";import{cn as j,en as M,sn as N,tn as P}from"./index-B8UIxEOk.js";import{n as F,r as I,t as L}from"./settings-section-CZi6DvBs.js";var R=e(t(),1),z=l();function B({target:e,pending:t,onOpenChange:n,onDelete:r}){return(0,z.jsx)(C,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(x,{children:e?(0,z.jsx)(V,{target:e,pending:t,onDelete:r}):null})})}function V({target:e,pending:t,onDelete:r}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(b,{children:[(0,z.jsx)(S,{children:`Remove source?`}),(0,z.jsx)(y,{children:`Remove "${e.label}" from this project? This cannot be undone.`})]}),(0,z.jsx)(v,{children:(0,z.jsx)(n,{type:`button`,variant:`destructive`,disabled:t,onClick:()=>r(e.id),children:`Remove source`})})]})}function H({source:e,isLocalhostSource:t,isLocalPathInvalid:r,hostName:i,isEditPending:a,isOnlySource:s,onEditLocalPath:c,onRemove:l}){return(0,z.jsxs)(L,{children:[(0,z.jsx)(o,{name:D,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)(k,{})}):null,r?(0,z.jsx)(_,{variant:`destructive`,children:`Invalid local path`}):null]}),(0,z.jsxs)(p,{children:[(0,z.jsx)(f,{asChild:!0,children:(0,z.jsx)(n,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,"aria-label":`Source actions`,children:(0,z.jsx)(o,{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:s,onSelect:()=>l(e),children:`Remove`})]})]})]})}function U(e,t){return t.get(e.hostId)??e.hostId}function W(){let{projectId:e}=g(),t=w(),o=T({enabled:t.isSuccess||t.isError}),l=o.data,d=t.isFetching||o.isLoading,{data:f=[]}=m(),p=r(),[h,_]=(0,R.useState)(null),v=a({meta:{errorMessage:`Failed to remove source.`},mutationFn:({sourceId:t})=>e?u(e,t):Promise.resolve(),onSuccess:()=>{A({projectId:e,queryClient:p}),_(null)}}),y=O(),b=E(),x=l?.find(t=>t.id===e),S=x?.sources,C=(0,R.useMemo)(()=>S??[],[S]),D=(0,R.useMemo)(()=>new Map(f.map(e=>[e.id,e.name])),[f]),k=x?.name??``,L=y.isPending||b.isPending,V=P({isPending:L,submit:(0,R.useCallback)(({path:t,hostId:n,target:r,closeDialog:a})=>{if(e){if(r.kind===`add-source`)y.mutate({projectId:e,path:t,hostId:n},{onSuccess:a});else if(r.kind===`update`){let r=C.find(e=>i(e)&&e.hostId===n);if(!r)return;b.mutate({projectId:e,sourceId:r.id,path:t},{onSuccess:a})}}},[y,e,C,b])}),W=(0,R.useCallback)(()=>{e&&V.openPicker({kind:`add-source`,projectId:e,projectName:k})},[V,e,k]),G=(0,R.useCallback)(t=>{e&&V.openPicker({kind:`update`,projectId:e,projectName:k,currentPath:t.path})},[V,e,k]),K=V.localHostId,q=j((0,R.useMemo)(()=>K?C.filter(e=>i(e)&&e.hostId===K).map(e=>e.path):[],[K,C])),J=K!=null&&!c(C,K)?(0,z.jsx)(`div`,{className:`mt-2 flex gap-2`,children:(0,z.jsx)(n,{size:`sm`,variant:`outline`,disabled:y.isPending,onClick:W,children:`Add local path`})}):null;return(0,z.jsxs)(s,{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)(I,{title:`Project Sources`,children:d?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):C.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)(F,{children:C.map(e=>{let t=i(e)&&K!=null&&e.hostId===K;return(0,z.jsx)(H,{source:e,isLocalhostSource:t,isLocalPathInvalid:t&&N(q,e.path),hostName:i(e)?D.get(e.hostId)??e.hostId:``,isEditPending:L,isOnlySource:C.length<=1,onEditLocalPath:G,onRemove:e=>_({id:e.id,label:U(e,D)})},e.id)})}),J]})})}),(0,z.jsx)(M,{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};
|