@hienlh/ppm 0.18.5 → 0.18.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/{ai-resource-editor-C5GpzwXP.js → ai-resource-editor-C59ti0ED.js} +1 -1
  6. package/dist/web/assets/{angular-html-B7ZS6cwZ.js → angular-html-jfMqUuRd.js} +1 -1
  7. package/dist/web/assets/{angular-ts-CiibjfLJ.js → angular-ts-wytn9PMm.js} +1 -1
  8. package/dist/web/assets/{apl-DsChgbBI.js → apl-i-ahKx6O.js} +1 -1
  9. package/dist/web/assets/architecture-PBZL5I3N-Bs7wzj-W.js +1 -0
  10. package/dist/web/assets/{astro-CcrkAzRn.js → astro-DVBCJfG6.js} +1 -1
  11. package/dist/web/assets/{audio-preview-C0m1G-ba.js → audio-preview-GGksv6U8.js} +1 -1
  12. package/dist/web/assets/{blade-BW0AyHqd.js → blade-BHlL8SqU.js} +1 -1
  13. package/dist/web/assets/{bsl-D3fsZX-N.js → bsl-D-UOfR1F.js} +1 -1
  14. package/dist/web/assets/{cairo-BioL0Hpg.js → cairo-Bn6rucli.js} +1 -1
  15. package/dist/web/assets/chat-tab-CM5hUNpk.js +15 -0
  16. package/dist/web/assets/{cobol-SQ7BUEjA.js → cobol-Byn9FYKu.js} +1 -1
  17. package/dist/web/assets/code-editor-2yL9lCL1.js +10 -0
  18. package/dist/web/assets/{coffee-BwiA2ABt.js → coffee-DjBl4gm-.js} +1 -1
  19. package/dist/web/assets/{conflict-editor-CItgFyu9.js → conflict-editor-H1zmUXSQ.js} +1 -1
  20. package/dist/web/assets/{cpp-CsiyAYfZ.js → cpp-CKzic-3E.js} +1 -1
  21. package/dist/web/assets/{crystal-new71ISE.js → crystal-Bkg-Ly_g.js} +1 -1
  22. package/dist/web/assets/{csv-preview-Dz6hI2BO.js → csv-preview-Dzzyx_Gv.js} +1 -1
  23. package/dist/web/assets/data-grid-overlay-editor-B1mTl3KS.js +1 -0
  24. package/dist/web/assets/data-grid-types-BXwlFMzs.js +1 -0
  25. package/dist/web/assets/database-viewer-CiVA--mM.js +1 -0
  26. package/dist/web/assets/{diff-viewer-B-3Byzuf.js → diff-viewer-69nl3mqO.js} +1 -1
  27. package/dist/web/assets/dist-CUPbqNnL.js +11 -0
  28. package/dist/web/assets/{docx-preview-CM9l_r9q.js → docx-preview-CFvopEBf.js} +1 -1
  29. package/dist/web/assets/{edge-CtcrJXZt.js → edge-DVbZnd3Y.js} +1 -1
  30. package/dist/web/assets/{edit-diff-preview-yY096y6H.js → edit-diff-preview-BivQwZMD.js} +1 -1
  31. package/dist/web/assets/{elixir-vH8AlwfK.js → elixir-Dwi8Wu7W.js} +1 -1
  32. package/dist/web/assets/{elm-vhtnbbrd.js → elm-DtIv-HXJ.js} +1 -1
  33. package/dist/web/assets/{erb-xsqc-5NV.js → erb-D3HEDz1x.js} +1 -1
  34. package/dist/web/assets/{erlang-CqCTsrl7.js → erlang-2MjTCzGz.js} +1 -1
  35. package/dist/web/assets/esm-CZ8B8Ba2.js +2 -0
  36. package/dist/web/assets/{explorer-body-DHOiBqiL.js → explorer-body-DyPXovdU.js} +1 -1
  37. package/dist/web/assets/{explorer-window-content-CTBHwDgN.js → explorer-window-content-CXFdvs_i.js} +1 -1
  38. package/dist/web/assets/{extension-webview-D3LOkB2x.js → extension-webview-DIoKwGV4.js} +1 -1
  39. package/dist/web/assets/{fortran-fixed-form-Ctm2ZKzo.js → fortran-fixed-form-BLyAtyPM.js} +1 -1
  40. package/dist/web/assets/{fsharp-DLTMpL2s.js → fsharp-Bxbn_gbr.js} +1 -1
  41. package/dist/web/assets/{gdresource-D3G0lQVG.js → gdresource-sFMY4D2Q.js} +1 -1
  42. package/dist/web/assets/{git-commit-CScOErgk.js → git-commit-BzB9Lio5.js} +1 -1
  43. package/dist/web/assets/{git-log-panel-Bs9ShnYL.js → git-log-panel-Copm8mzy.js} +1 -1
  44. package/dist/web/assets/{git-rebase-C1SMSliG.js → git-rebase-CKSVd848.js} +1 -1
  45. package/dist/web/assets/gitGraph-HDMCJU4V-D7i54kbM.js +1 -0
  46. package/dist/web/assets/glide-data-grid-D0L8SZVt.js +138 -0
  47. package/dist/web/assets/{glimmer-js-DsQZnICF.js → glimmer-js-BY8aExAJ.js} +1 -1
  48. package/dist/web/assets/{glimmer-ts-DrhpAdWj.js → glimmer-ts-Bak54dBX.js} +1 -1
  49. package/dist/web/assets/{glsl-eYL0pYVx.js → glsl-nR2eaJQe.js} +1 -1
  50. package/dist/web/assets/{graphql-DBRFyWue.js → graphql-CGPPFAU6.js} +1 -1
  51. package/dist/web/assets/{group-chat-tab-CwaKPj6c.js → group-chat-tab-D9cazEAI.js} +1 -1
  52. package/dist/web/assets/{hack-CMqVlAxr.js → hack-CXIMX-Ol.js} +1 -1
  53. package/dist/web/assets/{haml-GfSHNbBz.js → haml-tPY-9Pfm.js} +1 -1
  54. package/dist/web/assets/{handlebars-rg_XF64o.js → handlebars-BuW1LT7T.js} +1 -1
  55. package/dist/web/assets/{html-BEmGwpcK.js → html-bgVcwZ-t.js} +1 -1
  56. package/dist/web/assets/{html-derivative-BIu-fSXa.js → html-derivative-D6-IxTgn.js} +1 -1
  57. package/dist/web/assets/{http-DpxX0ibD.js → http-CJ1zyB-h.js} +1 -1
  58. package/dist/web/assets/{hurl-DUVEpqRc.js → hurl-CmoT7l3T.js} +1 -1
  59. package/dist/web/assets/{hxml-BrTwgLjo.js → hxml-CztOsL8o.js} +1 -1
  60. package/dist/web/assets/{image-preview-BLDXptaD.js → image-preview-vFeN8o43.js} +1 -1
  61. package/dist/web/assets/{index-CtGTj9re.js → index-BewcuJw5.js} +6 -6
  62. package/dist/web/assets/info-3K5VOQVL-BV41AzR9.js +1 -0
  63. package/dist/web/assets/{jinja-x3_G86rb.js → jinja-B1pq3jJq.js} +1 -1
  64. package/dist/web/assets/{jison-4I0KPKa0.js → jison-D8B5pCwA.js} +1 -1
  65. package/dist/web/assets/{julia-DIztIJlK.js → julia-D0K3bwpU.js} +1 -1
  66. package/dist/web/assets/{just-CIbbsxt1.js → just-B9Jlddu-.js} +1 -1
  67. package/dist/web/assets/{keybindings-store-BgBfamMQ.js → keybindings-store-ruNjhVT3.js} +1 -1
  68. package/dist/web/assets/{latex-BSW7Iz55.js → latex-BPJSSE6j.js} +1 -1
  69. package/dist/web/assets/{liquid-DXEQy61g.js → liquid-lv10fo4U.js} +1 -1
  70. package/dist/web/assets/{lua-mPzZWOOd.js → lua-PNuaIBEF.js} +1 -1
  71. package/dist/web/assets/{markdown-renderer-IZiQd8mi.js → markdown-renderer-B46VJEHH.js} +3 -3
  72. package/dist/web/assets/markdown-renderer-CYiMPviS.js +1 -0
  73. package/dist/web/assets/{marko-DT4otfeN.js → marko-Du3frD6X.js} +1 -1
  74. package/dist/web/assets/{mdc-DF7GteQU.js → mdc-BeDVcFRl.js} +1 -1
  75. package/dist/web/assets/{mobile-explorer-sheet-BQ7FISPT.js → mobile-explorer-sheet-BkMZxqs3.js} +1 -1
  76. package/dist/web/assets/{nextflow-inS4q6JA.js → nextflow-DkcXP71s.js} +1 -1
  77. package/dist/web/assets/{nginx-C4sxDsIU.js → nginx-C5n8N_bt.js} +1 -1
  78. package/dist/web/assets/{nim-B_KZbdbl.js → nim-CIhyfs-A.js} +1 -1
  79. package/dist/web/assets/{notification-store-Cd1oQeCL.js → notification-store-B3IK7PXf.js} +1 -1
  80. package/dist/web/assets/{number-overlay-editor-J9_h14Jy.js → number-overlay-editor-NgOsWJ7x.js} +1 -1
  81. package/dist/web/assets/packet-RMMSAZCW-CaJoP44m.js +1 -0
  82. package/dist/web/assets/{pdf-preview-D_QDoRAJ.js → pdf-preview-DU_NRMno.js} +1 -1
  83. package/dist/web/assets/{perl-Bzur_Tvg.js → perl-Cf31sZYE.js} +1 -1
  84. package/dist/web/assets/{php-BjcXxjIr.js → php-Dzl_MDIW.js} +1 -1
  85. package/dist/web/assets/pie-UPGHQEXC-DSGZmNw2.js +1 -0
  86. package/dist/web/assets/postgres-viewer-C0h3Zfk9.js +3 -0
  87. package/dist/web/assets/{pug-DFgERppY.js → pug-CxSYHrB3.js} +1 -1
  88. package/dist/web/assets/{qml-CTl3rUgs.js → qml-DlEjGhwN.js} +1 -1
  89. package/dist/web/assets/radar-KQ55EAFF-Be4VUTs0.js +1 -0
  90. package/dist/web/assets/{razor-B8YTmkEh.js → razor-KVt5uW14.js} +1 -1
  91. package/dist/web/assets/{rst-KkcstADZ.js → rst-D5BwNTnw.js} +1 -1
  92. package/dist/web/assets/{ruby-BkGX_9bp.js → ruby-D5fejQwd.js} +1 -1
  93. package/dist/web/assets/{sas-CXAPcIB7.js → sas-Bj7B1CB2.js} +1 -1
  94. package/dist/web/assets/{scss-BstsOLPG.js → scss-BB0CUoCL.js} +1 -1
  95. package/dist/web/assets/{settings-store-DQcBuCyF.js → settings-store-C9YT1Hir.js} +2 -2
  96. package/dist/web/assets/{settings-tab-CsevraI7.js → settings-tab-Cep8gjxG.js} +1 -1
  97. package/dist/web/assets/{shaderlab-w3VeqhHk.js → shaderlab-BdjEZUMc.js} +1 -1
  98. package/dist/web/assets/{shellsession-CM2BxxEn.js → shellsession-Bp1OA1rR.js} +1 -1
  99. package/dist/web/assets/{soy-1-aTOd4S.js → soy-DlYz3wsC.js} +1 -1
  100. package/dist/web/assets/{sparql-CqmJ7XJo.js → sparql-CdfII5Jd.js} +1 -1
  101. package/dist/web/assets/{sql-query-editor-CzOTxy85.js → sql-query-editor-DJofTC9F.js} +1 -1
  102. package/dist/web/assets/sqlite-viewer-D7bskeyk.js +1 -0
  103. package/dist/web/assets/{stata-BbcHuOrm.js → stata-BvUA6GUW.js} +1 -1
  104. package/dist/web/assets/{surrealql-DYt8SBBH.js → surrealql--DLNbTyI.js} +1 -1
  105. package/dist/web/assets/{svelte-CBrmuJZk.js → svelte-CBfSsG4n.js} +1 -1
  106. package/dist/web/assets/{system-monitor-tab-CS9DhJrA.js → system-monitor-tab-CxgFsQx9.js} +1 -1
  107. package/dist/web/assets/team-member-sheet-Dn5NGkcp.js +2 -0
  108. package/dist/web/assets/{team-member-window-content-DSlnO1ay.js → team-member-window-content-DS9V4trr.js} +1 -1
  109. package/dist/web/assets/{templ-BWg_73eT.js → templ-Dv8zpKZW.js} +1 -1
  110. package/dist/web/assets/{terminal-tab-DCOinj6h.js → terminal-tab-CMs8AyFJ.js} +1 -1
  111. package/dist/web/assets/{tex-ChwnYbaL.js → tex-CsrOiqh1.js} +1 -1
  112. package/dist/web/assets/{tool-cards-DYQChJ7V.js → tool-cards-HHRTIlFv.js} +3 -3
  113. package/dist/web/assets/treemap-KZPCXAKY-Cu2zgbxU.js +1 -0
  114. package/dist/web/assets/{ts-tags-CFZZJcMc.js → ts-tags-3T98k4EJ.js} +1 -1
  115. package/dist/web/assets/{twig-DbRbrfbf.js → twig-u6QZ45FH.js} +1 -1
  116. package/dist/web/assets/{use-monaco-theme-DcRjryA0.js → use-monaco-theme-BLt-n9r1.js} +1 -1
  117. package/dist/web/assets/use-open-team-member-BwtzTuxf.js +1 -0
  118. package/dist/web/assets/{use-websocket-CX3F55gy.js → use-websocket-DA3Zwl3Z.js} +1 -1
  119. package/dist/web/assets/{vendor-mermaid-Dede75gn.js → vendor-mermaid-Bg4vE8QA.js} +193 -193
  120. package/dist/web/assets/{video-preview-DaYONH41.js → video-preview-BZhTYMFX.js} +1 -1
  121. package/dist/web/assets/{vue-iynf6DnU.js → vue-CxIsxtwn.js} +1 -1
  122. package/dist/web/assets/{vue-html-vP_PPbWw.js → vue-html-BGL5qnuH.js} +1 -1
  123. package/dist/web/assets/{vue-vine-BycfyDpl.js → vue-vine-DHPh_gMr.js} +1 -1
  124. package/dist/web/assets/{xml-BRgRn6xu.js → xml-C-vM2m7J.js} +1 -1
  125. package/dist/web/assets/{xsl-CWrfaC1u.js → xsl-DvTXNwuO.js} +1 -1
  126. package/dist/web/index.html +15 -15
  127. package/dist/web/monacoeditorwork/css.worker.bundle.js +122 -122
  128. package/dist/web/monacoeditorwork/editor.worker.bundle.js +78 -78
  129. package/dist/web/monacoeditorwork/html.worker.bundle.js +110 -110
  130. package/dist/web/monacoeditorwork/json.worker.bundle.js +108 -108
  131. package/dist/web/monacoeditorwork/ts.worker.bundle.js +81 -81
  132. package/dist/web/sw.js +1 -1
  133. package/package.json +1 -1
  134. package/packages/vscode-compat/node_modules/.bin/tsc.bunx +0 -0
  135. package/packages/vscode-compat/node_modules/.bin/tsc.exe +0 -0
  136. package/packages/vscode-compat/node_modules/.bin/tsserver.bunx +0 -0
  137. package/packages/vscode-compat/node_modules/.bin/tsserver.exe +0 -0
  138. package/src/services/edge-forwarder.ts +191 -191
  139. package/src/services/windows-process-tree.ts +351 -351
  140. package/src/web/app.tsx +8 -0
  141. package/src/web/components/chat/chat-tab.tsx +11 -0
  142. package/src/web/components/chat/team-activity-panel.tsx +4 -4
  143. package/src/web/components/chat/team-member-activity-format.ts +38 -0
  144. package/src/web/components/chat/team-member-activity-row.tsx +1 -29
  145. package/src/web/components/chat/team-member-sheet.tsx +47 -0
  146. package/src/web/components/chat/team-working-bar.tsx +62 -0
  147. package/src/web/components/chat/use-open-team-member.ts +41 -0
  148. package/.release-run.sh +0 -5
  149. package/dist/web/assets/architecture-PBZL5I3N-9f0Fi2Cw.js +0 -1
  150. package/dist/web/assets/chat-tab-Ca-jDA8G.js +0 -15
  151. package/dist/web/assets/click-outside-container-CbfvEfTe.js +0 -1
  152. package/dist/web/assets/code-editor-Biyx46no.js +0 -10
  153. package/dist/web/assets/data-grid-overlay-editor-Pq5c1EeR.js +0 -1
  154. package/dist/web/assets/database-viewer-7oDAd4kH.js +0 -1
  155. package/dist/web/assets/dist-BbSJO7hs.js +0 -11
  156. package/dist/web/assets/esm-D3_gA6XW.js +0 -2
  157. package/dist/web/assets/gitGraph-HDMCJU4V-B25fnH9y.js +0 -1
  158. package/dist/web/assets/glide-data-grid-DhqJzEAm.js +0 -138
  159. package/dist/web/assets/info-3K5VOQVL-Dqg_TKq-.js +0 -1
  160. package/dist/web/assets/markdown-renderer-PTkraBMz.js +0 -1
  161. package/dist/web/assets/packet-RMMSAZCW-91mSm_sq.js +0 -1
  162. package/dist/web/assets/pie-UPGHQEXC-D5-d4-hV.js +0 -1
  163. package/dist/web/assets/postgres-viewer-CHrw1Asz.js +0 -3
  164. package/dist/web/assets/radar-KQ55EAFF-D_wSb0Qz.js +0 -1
  165. package/dist/web/assets/sqlite-viewer-COHO7wsr.js +0 -1
  166. package/dist/web/assets/treemap-KZPCXAKY-DiNFF0Uo.js +0 -1
  167. /package/dist/web/assets/{abap-aW7-Jvmb.js → abap-C1K0-wzc.js} +0 -0
  168. /package/dist/web/assets/{actionscript-3-DTKrKcIk.js → actionscript-3-CJhQVjLA.js} +0 -0
  169. /package/dist/web/assets/{ada-BAPZyMF6.js → ada-Bt8r9fME.js} +0 -0
  170. /package/dist/web/assets/{andromeeda-B7tKiRbo.js → andromeeda-DF1I8qi3.js} +0 -0
  171. /package/dist/web/assets/{apache-DzlxyZL6.js → apache-CnlleE6P.js} +0 -0
  172. /package/dist/web/assets/{apex-YMuKkRzC.js → apex-j0C6Xmk6.js} +0 -0
  173. /package/dist/web/assets/{api-themes-BEEwU8CU.js → api-themes-8WTH6KpV.js} +0 -0
  174. /package/dist/web/assets/{applescript-CA5lfLCT.js → applescript-DO7AnO8U.js} +0 -0
  175. /package/dist/web/assets/{ara--oyOaCyG.js → ara-i83AydZj.js} +0 -0
  176. /package/dist/web/assets/{asciidoc-DnOF36RG.js → asciidoc-DbBA6-sF.js} +0 -0
  177. /package/dist/web/assets/{asm-BBlzivHM.js → asm-B5S47Rgr.js} +0 -0
  178. /package/dist/web/assets/{aurora-x-Vcb-h5c-.js → aurora-x-De_IaSKw.js} +0 -0
  179. /package/dist/web/assets/{awk-DIGedLLX.js → awk-CfyLHXqS.js} +0 -0
  180. /package/dist/web/assets/{ayu-dark-CpqJlEms.js → ayu-dark-DTLdZ1Si.js} +0 -0
  181. /package/dist/web/assets/{ayu-light-C_Ao3JZA.js → ayu-light-DTOfkzhu.js} +0 -0
  182. /package/dist/web/assets/{ayu-mirage-BYWxo0wh.js → ayu-mirage-DsAECCMv.js} +0 -0
  183. /package/dist/web/assets/{ballerina-Ba65P_0B.js → ballerina-CumGp9A7.js} +0 -0
  184. /package/dist/web/assets/{bat-CsJlH9w5.js → bat-Ca2SBbYN.js} +0 -0
  185. /package/dist/web/assets/{beancount-BPC5j2kY.js → beancount-CqyXBwwF.js} +0 -0
  186. /package/dist/web/assets/{berry-FDw8JA3_.js → berry-yl-kJr_H.js} +0 -0
  187. /package/dist/web/assets/{bibtex-7QrVi7O0.js → bibtex-DoFFszjV.js} +0 -0
  188. /package/dist/web/assets/{bicep-Ch0xl3Bs.js → bicep-CWPi4nfK.js} +0 -0
  189. /package/dist/web/assets/{bird2-DCEMu9Mp.js → bird2-DXew-ut0.js} +0 -0
  190. /package/dist/web/assets/{c-CUVHE-5K.js → c-clbySDvd.js} +0 -0
  191. /package/dist/web/assets/{c3-DSTfto87.js → c3-B65jvSM1.js} +0 -0
  192. /package/dist/web/assets/{cadence-C7hktLdb.js → cadence-Cm8tQTHN.js} +0 -0
  193. /package/dist/web/assets/{can-open-in-ppm-C1RSbZ7O.js → can-open-in-ppm-DXGOSUQc.js} +0 -0
  194. /package/dist/web/assets/{catppuccin-frappe-DkyYFCSH.js → catppuccin-frappe-DLeGslh_.js} +0 -0
  195. /package/dist/web/assets/{catppuccin-latte-BKnWZFTb.js → catppuccin-latte-CR5GeHws.js} +0 -0
  196. /package/dist/web/assets/{catppuccin-macchiato-C1Ab5ZLR.js → catppuccin-macchiato-p-XgjxhP.js} +0 -0
  197. /package/dist/web/assets/{catppuccin-mocha-COMc04WB.js → catppuccin-mocha-B8QOAZLl.js} +0 -0
  198. /package/dist/web/assets/{clarity-8PE1fP_c.js → clarity-DPulbvKH.js} +0 -0
  199. /package/dist/web/assets/{clojure-Bz98WDQt.js → clojure-DFuWS20u.js} +0 -0
  200. /package/dist/web/assets/{cmake-DU6g1qMF.js → cmake-DejCqcu4.js} +0 -0
  201. /package/dist/web/assets/{codeowners-2Gm3RtID.js → codeowners-BwAyqWIH.js} +0 -0
  202. /package/dist/web/assets/{codeql-B3FnVaRc.js → codeql-DgSwFjqI.js} +0 -0
  203. /package/dist/web/assets/{common-lisp-zYi9oKAF.js → common-lisp-CxIVJCtf.js} +0 -0
  204. /package/dist/web/assets/{coq-W0vNtu9V.js → coq-DLSjSnmf.js} +0 -0
  205. /package/dist/web/assets/{csharp-DlFGO-Bd.js → csharp-C1HHzXBp.js} +0 -0
  206. /package/dist/web/assets/{css-BLcoafWU.js → css-VXsMY--y.js} +0 -0
  207. /package/dist/web/assets/{csv-BpMytiYh.js → csv-BEbcJdHz.js} +0 -0
  208. /package/dist/web/assets/{csv-parser-JohiZK_a.js → csv-parser-BRtnJCfv.js} +0 -0
  209. /package/dist/web/assets/{cue-Ckjfj5Fx.js → cue-BkDnFqUD.js} +0 -0
  210. /package/dist/web/assets/{cypher-D9y8enlA.js → cypher-1cMqojSQ.js} +0 -0
  211. /package/dist/web/assets/{d-BQt_xM-A.js → d-BnYjRXtH.js} +0 -0
  212. /package/dist/web/assets/{dark-plus-YVOVVElU.js → dark-plus-XfbaH7kZ.js} +0 -0
  213. /package/dist/web/assets/{dart-CbQZvIly.js → dart-Ca7s-8hK.js} +0 -0
  214. /package/dist/web/assets/{dax-U83MmotH.js → dax-CmuOw-mY.js} +0 -0
  215. /package/dist/web/assets/{desktop-vhxlER7T.js → desktop-C2gJ6Ovb.js} +0 -0
  216. /package/dist/web/assets/{diff-qIh1K-1r.js → diff-BCEo1Ej7.js} +0 -0
  217. /package/dist/web/assets/{dist-k8y79TJM.js → dist-DOlBnxFX.js} +0 -0
  218. /package/dist/web/assets/{docker-CugomxC1.js → docker-DN2jlyAh.js} +0 -0
  219. /package/dist/web/assets/{dotenv-Bjf6iJkB.js → dotenv-NExMY2kS.js} +0 -0
  220. /package/dist/web/assets/{dracula-Cz9sO5UW.js → dracula-B9lbE01y.js} +0 -0
  221. /package/dist/web/assets/{dracula-soft-DY0S2NVH.js → dracula-soft-CMBBfKF_.js} +0 -0
  222. /package/dist/web/assets/{dream-maker-B8LMBotO.js → dream-maker-DEyDwFsd.js} +0 -0
  223. /package/dist/web/assets/{emacs-lisp-DuYCGVqQ.js → emacs-lisp-D_qP2zS6.js} +0 -0
  224. /package/dist/web/assets/{everforest-dark-WezKGzP_.js → everforest-dark-DbHa2U-p.js} +0 -0
  225. /package/dist/web/assets/{everforest-light-Do7h7sGp.js → everforest-light-BISkJchP.js} +0 -0
  226. /package/dist/web/assets/{fennel-DPc0PrDK.js → fennel-6B22SfJR.js} +0 -0
  227. /package/dist/web/assets/{fish-Boq_hlR9.js → fish-CubIIvJD.js} +0 -0
  228. /package/dist/web/assets/{fluent-LAzaxkrP.js → fluent-DF55zQ09.js} +0 -0
  229. /package/dist/web/assets/{fortran-free-form-CeCg8jZE.js → fortran-free-form-DvOu8jAt.js} +0 -0
  230. /package/dist/web/assets/{gdscript-CKnfKnN6.js → gdscript-DCPxdLpq.js} +0 -0
  231. /package/dist/web/assets/{gdshader-C_ofnb9K.js → gdshader-CTZ381FO.js} +0 -0
  232. /package/dist/web/assets/{genie-DhagrbXp.js → genie-C_QDtvgU.js} +0 -0
  233. /package/dist/web/assets/{gherkin-1uujaZW0.js → gherkin-BcvK42tF.js} +0 -0
  234. /package/dist/web/assets/{github-dark-DIV5FCeV.js → github-dark-C9afs_4w.js} +0 -0
  235. /package/dist/web/assets/{github-dark-default-CcP66ogT.js → github-dark-default-CKGVrl3Z.js} +0 -0
  236. /package/dist/web/assets/{github-dark-dimmed-Bj80ZBcI.js → github-dark-dimmed-C3dQZ_LC.js} +0 -0
  237. /package/dist/web/assets/{github-dark-high-contrast-CyI7oCCT.js → github-dark-high-contrast-DW78QukY.js} +0 -0
  238. /package/dist/web/assets/{github-light-CqqVK-2E.js → github-light-BnP2dznS.js} +0 -0
  239. /package/dist/web/assets/{github-light-default-DEhIDABz.js → github-light-default-C2fPZzPG.js} +0 -0
  240. /package/dist/web/assets/{github-light-high-contrast-BqtUZSo1.js → github-light-high-contrast-BzIuUFR2.js} +0 -0
  241. /package/dist/web/assets/{gleam-Bv3z0NLi.js → gleam-BpeKwEIO.js} +0 -0
  242. /package/dist/web/assets/{gn-knjS3hKu.js → gn-nUb_Mit0.js} +0 -0
  243. /package/dist/web/assets/{gnuplot-g56b7rpz.js → gnuplot-D7I0v20p.js} +0 -0
  244. /package/dist/web/assets/{go-DX8QO6z_.js → go-D7Qqska7.js} +0 -0
  245. /package/dist/web/assets/{groovy-DuYa0c1A.js → groovy-DS-pne5-.js} +0 -0
  246. /package/dist/web/assets/{gruvbox-dark-hard-D7IRkjrx.js → gruvbox-dark-hard-C0W01fsq.js} +0 -0
  247. /package/dist/web/assets/{gruvbox-dark-medium-UJ8YMtdx.js → gruvbox-dark-medium-Bqo6fQbg.js} +0 -0
  248. /package/dist/web/assets/{gruvbox-dark-soft-I2k_O22-.js → gruvbox-dark-soft-D-XSM_fu.js} +0 -0
  249. /package/dist/web/assets/{gruvbox-light-hard-CAJEeL1I.js → gruvbox-light-hard-IVAwMJRl.js} +0 -0
  250. /package/dist/web/assets/{gruvbox-light-medium-BzfBTG9R.js → gruvbox-light-medium-38ATiG7i.js} +0 -0
  251. /package/dist/web/assets/{gruvbox-light-soft-B4lq6YrU.js → gruvbox-light-soft-DnZr3c_0.js} +0 -0
  252. /package/dist/web/assets/{haskell-BG7xy9_5.js → haskell-uQcywkDH.js} +0 -0
  253. /package/dist/web/assets/{haxe-CyusqGGx.js → haxe-c6bI4_GT.js} +0 -0
  254. /package/dist/web/assets/{hcl-BewE7tWl.js → hcl-CQXTiEXq.js} +0 -0
  255. /package/dist/web/assets/{hjson-Ds8lzmRZ.js → hjson-ChETf2bz.js} +0 -0
  256. /package/dist/web/assets/{hlsl-ZFwRfL2h.js → hlsl-BMC4JGoE.js} +0 -0
  257. /package/dist/web/assets/{horizon-VAwIHbzU.js → horizon-BusFlhLW.js} +0 -0
  258. /package/dist/web/assets/{horizon-bright-wJOIDqMt.js → horizon-bright-2oD0Mz7W.js} +0 -0
  259. /package/dist/web/assets/{houston-CeohYS24.js → houston-DdbbjqFg.js} +0 -0
  260. /package/dist/web/assets/{hy-CUv6HDwS.js → hy-D_SOuqw9.js} +0 -0
  261. /package/dist/web/assets/{image-gallery-CbX4JjyT.js → image-gallery-CrM5fHKy.js} +0 -0
  262. /package/dist/web/assets/{imba-D8TAYKw4.js → imba-BxLOHO5I.js} +0 -0
  263. /package/dist/web/assets/{ini-BAKG__sb.js → ini-ox-CFcg0.js} +0 -0
  264. /package/dist/web/assets/{java-CTxgEFQr.js → java-Bzo8yIal.js} +0 -0
  265. /package/dist/web/assets/{javascript-CyPQ_iPD.js → javascript-DHuz9VXn.js} +0 -0
  266. /package/dist/web/assets/{json-atTPgPUT.js → json-0_y80FD5.js} +0 -0
  267. /package/dist/web/assets/{json5-LGxGeNhP.js → json5-CEQ50pGM.js} +0 -0
  268. /package/dist/web/assets/{jsonc-Bitk_sll.js → jsonc-CfrLEAKA.js} +0 -0
  269. /package/dist/web/assets/{jsonl-DdyTPXqv.js → jsonl-fKbrANC2.js} +0 -0
  270. /package/dist/web/assets/{jsonnet-GniiqKoY.js → jsonnet-DKbkPaQ2.js} +0 -0
  271. /package/dist/web/assets/{jssm-CW6QRmkd.js → jssm-Dxxx1Hqu.js} +0 -0
  272. /package/dist/web/assets/{jsx-Cr_EAVnd.js → jsx-DlJL-Oj3.js} +0 -0
  273. /package/dist/web/assets/{kanagawa-dragon-N1CxlLFc.js → kanagawa-dragon-CwN4SV1c.js} +0 -0
  274. /package/dist/web/assets/{kanagawa-lotus-DuDdnVEr.js → kanagawa-lotus-BHltayiE.js} +0 -0
  275. /package/dist/web/assets/{kanagawa-wave-BEcB8wPC.js → kanagawa-wave-D-KXPjw6.js} +0 -0
  276. /package/dist/web/assets/{kdl-YdJlGKnl.js → kdl-DvtoJdFo.js} +0 -0
  277. /package/dist/web/assets/{kotlin-D8Ou1-Vz.js → kotlin-CTS4MLcx.js} +0 -0
  278. /package/dist/web/assets/{kusto-CfNzHOLh.js → kusto-HtSE_sKm.js} +0 -0
  279. /package/dist/web/assets/{laserwave-Dw-UwgjO.js → laserwave-DaXZG9ge.js} +0 -0
  280. /package/dist/web/assets/{lean-Cob-4uj9.js → lean-BYtGUfWx.js} +0 -0
  281. /package/dist/web/assets/{less-D6UGsQ-F.js → less-BoxmU_Mk.js} +0 -0
  282. /package/dist/web/assets/{lib-D6yys864.js → lib-B1clP4ai.js} +0 -0
  283. /package/dist/web/assets/{libesm-BNnDqFup.js → libesm-ah-mr-sh.js} +0 -0
  284. /package/dist/web/assets/{light-plus-g6c1YK9w.js → light-plus-Bt5CyUuo.js} +0 -0
  285. /package/dist/web/assets/{llvm-BCk7-7xF.js → llvm-CSdk9q9V.js} +0 -0
  286. /package/dist/web/assets/{log-DyyODQCQ.js → log-B-kp_3CL.js} +0 -0
  287. /package/dist/web/assets/{logo-z3PSmZ0Q.js → logo-DdIsXFDO.js} +0 -0
  288. /package/dist/web/assets/{luau-CuwlNMKd.js → luau-DUBpLlzQ.js} +0 -0
  289. /package/dist/web/assets/{make-B2ZcjXHI.js → make-B3JVjoW_.js} +0 -0
  290. /package/dist/web/assets/{markdown-Bh7F2dEA.js → markdown-Seon0vHs.js} +0 -0
  291. /package/dist/web/assets/{material-theme-DIOuD6li.js → material-theme-Nq-ChX1P.js} +0 -0
  292. /package/dist/web/assets/{material-theme-darker-Cg3vOVsZ.js → material-theme-darker-CPV4ayXJ.js} +0 -0
  293. /package/dist/web/assets/{material-theme-lighter-B3plW7F5.js → material-theme-lighter-0kyjYqEd.js} +0 -0
  294. /package/dist/web/assets/{material-theme-ocean-BC3W6Qbp.js → material-theme-ocean-DGpAp5co.js} +0 -0
  295. /package/dist/web/assets/{material-theme-palenight-cn2b8irZ.js → material-theme-palenight-B0AUn0NG.js} +0 -0
  296. /package/dist/web/assets/{matlab-CbKDDcme.js → matlab-C2waytxs.js} +0 -0
  297. /package/dist/web/assets/{mdx-DfoNkGc0.js → mdx-DAis6R6I.js} +0 -0
  298. /package/dist/web/assets/{media-url-FbGzzFQa.js → media-url-CUpN5vI1.js} +0 -0
  299. /package/dist/web/assets/{mermaid-BpGcccah.js → mermaid-_rnT2YGD.js} +0 -0
  300. /package/dist/web/assets/{min-dark-C-1-xt-i.js → min-dark-BSSjchUB.js} +0 -0
  301. /package/dist/web/assets/{min-light-DkYGd6ZF.js → min-light-DomAFQsa.js} +0 -0
  302. /package/dist/web/assets/{mipsasm-Dk87orqA.js → mipsasm-bBgtvPyG.js} +0 -0
  303. /package/dist/web/assets/{mojo-Ctfni3Xg.js → mojo-Cp9BayW0.js} +0 -0
  304. /package/dist/web/assets/{monokai-dRz4X-9c.js → monokai-CL_9gbmn.js} +0 -0
  305. /package/dist/web/assets/{moonbit-BenWvd8O.js → moonbit-BS_fcr-P.js} +0 -0
  306. /package/dist/web/assets/{move-CDhttBEa.js → move-C79AH45U.js} +0 -0
  307. /package/dist/web/assets/{narrat-2qOoPAIA.js → narrat-CJ5s3BDf.js} +0 -0
  308. /package/dist/web/assets/{nextflow-groovy-C4CoTM6k.js → nextflow-groovy-ZHa4JrPJ.js} +0 -0
  309. /package/dist/web/assets/{night-owl-CC7ba6ex.js → night-owl-Jkf9zFQK.js} +0 -0
  310. /package/dist/web/assets/{night-owl-light-su9bVa5K.js → night-owl-light-DRPeaG5J.js} +0 -0
  311. /package/dist/web/assets/{nix-BOfpg6oF.js → nix-D2Jet9DN.js} +0 -0
  312. /package/dist/web/assets/{nord-Cup4UQrN.js → nord-CREVs22j.js} +0 -0
  313. /package/dist/web/assets/{nushell-CV3Ed_Pd.js → nushell-CAiDi_mR.js} +0 -0
  314. /package/dist/web/assets/{objective-c-DNKsz1d1.js → objective-c-CVkmJkC1.js} +0 -0
  315. /package/dist/web/assets/{objective-cpp-BT5L7lhS.js → objective-cpp-DIKDO1Ly.js} +0 -0
  316. /package/dist/web/assets/{ocaml-Qj-27E4B.js → ocaml-R9qtGQhs.js} +0 -0
  317. /package/dist/web/assets/{odin-C2scSLLk.js → odin-DTYNQqVr.js} +0 -0
  318. /package/dist/web/assets/{one-dark-pro-C1HWasX_.js → one-dark-pro-BSLWUJn5.js} +0 -0
  319. /package/dist/web/assets/{one-light-B3bElFuJ.js → one-light-DbkRXG3t.js} +0 -0
  320. /package/dist/web/assets/{openscad-C6UAQ5Px.js → openscad-BlPcSnmT.js} +0 -0
  321. /package/dist/web/assets/{pascal-DICllhaG.js → pascal-B1Y46ZZB.js} +0 -0
  322. /package/dist/web/assets/{pkl-qghE3sfq.js → pkl-BhJSJbFv.js} +0 -0
  323. /package/dist/web/assets/{plastic-ClZHBkI2.js → plastic-BzxsCTpi.js} +0 -0
  324. /package/dist/web/assets/{plsql-CKw-M6SO.js → plsql-DBba7dyP.js} +0 -0
  325. /package/dist/web/assets/{po-BKro6MCB.js → po-BvgLlnNo.js} +0 -0
  326. /package/dist/web/assets/{poimandres-Bdo7Kn_m.js → poimandres-DUaI_1JP.js} +0 -0
  327. /package/dist/web/assets/{polar-B1rAV5le.js → polar-C7uILwJn.js} +0 -0
  328. /package/dist/web/assets/{postcss-BsA5TXYz.js → postcss-BgJlpFdw.js} +0 -0
  329. /package/dist/web/assets/{powerquery-hxd8aiZs.js → powerquery-Dn1MIpZu.js} +0 -0
  330. /package/dist/web/assets/{powershell-D83XmNBi.js → powershell-Bo-DYzOS.js} +0 -0
  331. /package/dist/web/assets/{prisma-jpc3Lfer.js → prisma-CTLs5IdT.js} +0 -0
  332. /package/dist/web/assets/{prolog-By7loPcz.js → prolog-QRGun3eG.js} +0 -0
  333. /package/dist/web/assets/{proto-B03P8I7L.js → proto-B7PI7apn.js} +0 -0
  334. /package/dist/web/assets/{puppet-BLEutFx-.js → puppet-CBq0tLrP.js} +0 -0
  335. /package/dist/web/assets/{purescript-DdCIvtj7.js → purescript-DFewOQb2.js} +0 -0
  336. /package/dist/web/assets/{python-DwlqCvPN.js → python-iWuxKXvT.js} +0 -0
  337. /package/dist/web/assets/{qmldir-CkEpGrJr.js → qmldir-cXiW3AsF.js} +0 -0
  338. /package/dist/web/assets/{qss-B6SOQ6U9.js → qss-DASwAbBL.js} +0 -0
  339. /package/dist/web/assets/{r-Y0KMI7Y5.js → r-TU2eaIPw.js} +0 -0
  340. /package/dist/web/assets/{racket-BF5spJBc.js → racket-SkRKqrLY.js} +0 -0
  341. /package/dist/web/assets/{raku-xNANhvUv.js → raku-D31lthkZ.js} +0 -0
  342. /package/dist/web/assets/{red-DnHsBzi8.js → red-CTcQZevb.js} +0 -0
  343. /package/dist/web/assets/{reg-CWhYjQ7O.js → reg-D8YAsTGf.js} +0 -0
  344. /package/dist/web/assets/{regexp-CouLuX6r.js → regexp-CD2uvAWx.js} +0 -0
  345. /package/dist/web/assets/{rel-Ctf_fx-q.js → rel-CAaI-1fg.js} +0 -0
  346. /package/dist/web/assets/{riscv-Dji9ndNu.js → riscv-DR-hJVIj.js} +0 -0
  347. /package/dist/web/assets/{ron-BgHqfYU8.js → ron-CuUCJ0n4.js} +0 -0
  348. /package/dist/web/assets/{rose-pine-rIa8chEL.js → rose-pine-aFHxW48i.js} +0 -0
  349. /package/dist/web/assets/{rose-pine-dawn-B5US25HC.js → rose-pine-dawn-Bqz2sBRY.js} +0 -0
  350. /package/dist/web/assets/{rose-pine-moon-vC-4_Eb_.js → rose-pine-moon-wqyh0an4.js} +0 -0
  351. /package/dist/web/assets/{rosmsg-Bfxbgaxi.js → rosmsg-CI1ywimO.js} +0 -0
  352. /package/dist/web/assets/{run-in-terminal-D-Q9wPF_.js → run-in-terminal-CGW6o37_.js} +0 -0
  353. /package/dist/web/assets/{rust-DSRCI-l0.js → rust-p7Imk4G_.js} +0 -0
  354. /package/dist/web/assets/{sass-BaMwafsT.js → sass-C8JfaqCV.js} +0 -0
  355. /package/dist/web/assets/{scala-CnoxeIBD.js → scala-DNxCW1By.js} +0 -0
  356. /package/dist/web/assets/{scheme-BmSziQ83.js → scheme-BYuUPJoL.js} +0 -0
  357. /package/dist/web/assets/{sdbl-CGDFOQ4F.js → sdbl-DbPeJPUr.js} +0 -0
  358. /package/dist/web/assets/{send-to-chat-BPeYO9Pv.js → send-to-chat-YXHdAyLG.js} +0 -0
  359. /package/dist/web/assets/{shellscript-D3_gthD5.js → shellscript-DMiHlR3q.js} +0 -0
  360. /package/dist/web/assets/{slack-dark-Cy4dNR2g.js → slack-dark-C4xGcQXI.js} +0 -0
  361. /package/dist/web/assets/{slack-ochin-B8hNeONl.js → slack-ochin-BzgRt_wm.js} +0 -0
  362. /package/dist/web/assets/{smalltalk-B5OQnpLF.js → smalltalk-LDeL9PYH.js} +0 -0
  363. /package/dist/web/assets/{snazzy-light-DDL1ZQgf.js → snazzy-light-CXE7a5j_.js} +0 -0
  364. /package/dist/web/assets/{solarized-dark-COUdbN1J.js → solarized-dark-DgUhY74x.js} +0 -0
  365. /package/dist/web/assets/{solarized-light-CLHIejSq.js → solarized-light-DD9C-H-9.js} +0 -0
  366. /package/dist/web/assets/{solidity-DpQHaveQ.js → solidity-CAbDB4D4.js} +0 -0
  367. /package/dist/web/assets/{splunk-BGT75_a1.js → splunk-kQREPfIc.js} +0 -0
  368. /package/dist/web/assets/{sql-ZPjZoKEG.js → sql-CBzeNAD8.js} +0 -0
  369. /package/dist/web/assets/{ssh-config-B6oU9nqL.js → ssh-config-L1euxrsM.js} +0 -0
  370. /package/dist/web/assets/{stylus-Bbgm8BDk.js → stylus-DvBnYniP.js} +0 -0
  371. /package/dist/web/assets/{swift-7OUZlXRr.js → swift-DF5NDQp6.js} +0 -0
  372. /package/dist/web/assets/{synthwave-84-Dp7xsQqz.js → synthwave-84-DbBhB_Hq.js} +0 -0
  373. /package/dist/web/assets/{system-verilog-COlHqI_R.js → system-verilog-D8s2ZW_k.js} +0 -0
  374. /package/dist/web/assets/{systemd-DXL9nsy_.js → systemd-a5-XZJsG.js} +0 -0
  375. /package/dist/web/assets/{talonscript-Bkpiqjjy.js → talonscript-BLa0URTW.js} +0 -0
  376. /package/dist/web/assets/{tasl-Bpra97jM.js → tasl-DIoV4XcC.js} +0 -0
  377. /package/dist/web/assets/{tcl-BcDm6PGE.js → tcl-ztYAdXfQ.js} +0 -0
  378. /package/dist/web/assets/{terraform-DGQKmd9G.js → terraform-DvpCCiOZ.js} +0 -0
  379. /package/dist/web/assets/{tokyo-night-CyLasBR5.js → tokyo-night-BkHlYUv0.js} +0 -0
  380. /package/dist/web/assets/{toml-D-01EUMm.js → toml-acIrxos6.js} +0 -0
  381. /package/dist/web/assets/{tsv-DlZx-hGD.js → tsv-BJB5EVCT.js} +0 -0
  382. /package/dist/web/assets/{tsx-Bu211EOh.js → tsx-B1MmXGT3.js} +0 -0
  383. /package/dist/web/assets/{turtle-CwM--Nm2.js → turtle-DFceTiqd.js} +0 -0
  384. /package/dist/web/assets/{typescript-wOPax6Gk.js → typescript-Dz9wU5Y1.js} +0 -0
  385. /package/dist/web/assets/{typespec-C5n5j5Cf.js → typespec-CPuYZijj.js} +0 -0
  386. /package/dist/web/assets/{typst-DQS-vHSj.js → typst-CfsCIYv8.js} +0 -0
  387. /package/dist/web/assets/{use-blob-url-DdEfzVb8.js → use-blob-url-BmlYYZ8L.js} +0 -0
  388. /package/dist/web/assets/{v-BMQHRcJ5.js → v-CGo0jcXA.js} +0 -0
  389. /package/dist/web/assets/{vala-By6oCVpL.js → vala-AsSR0hrb.js} +0 -0
  390. /package/dist/web/assets/{vb-BSmHxRqj.js → vb-C7tvbXv1.js} +0 -0
  391. /package/dist/web/assets/{vendor-xterm-BHWghY3d.js → vendor-xterm-C1diXHJl.js} +0 -0
  392. /package/dist/web/assets/{verilog-Bt-zbfre.js → verilog--a33ND-p.js} +0 -0
  393. /package/dist/web/assets/{vesper-Bz7pxhsL.js → vesper-B_Z0h4pn.js} +0 -0
  394. /package/dist/web/assets/{vhdl-BXjhSHk-.js → vhdl-CWL5dZPN.js} +0 -0
  395. /package/dist/web/assets/{viml-B4m7rYZk.js → viml-BglmT14Y.js} +0 -0
  396. /package/dist/web/assets/{vitesse-black-BsmvsuHB.js → vitesse-black-RKFsSqQI.js} +0 -0
  397. /package/dist/web/assets/{vitesse-dark-Cqnvi8YY.js → vitesse-dark-D7zDWNmc.js} +0 -0
  398. /package/dist/web/assets/{vitesse-light-KbYJh0ae.js → vitesse-light-MAp87W5b.js} +0 -0
  399. /package/dist/web/assets/{vyper-BaHPAgL_.js → vyper-CgCBYg1G.js} +0 -0
  400. /package/dist/web/assets/{wasm-Cfq9I1o-.js → wasm-BOG7ZeTT.js} +0 -0
  401. /package/dist/web/assets/{wasm-Dpw0fYUw.js → wasm-Bwl4txwp.js} +0 -0
  402. /package/dist/web/assets/{wenyan-DZsJG8fl.js → wenyan-DpShPKXZ.js} +0 -0
  403. /package/dist/web/assets/{wgsl-CVc3AdMI.js → wgsl-BakcCblK.js} +0 -0
  404. /package/dist/web/assets/{wikitext-D9TsdERw.js → wikitext-NroRWVAO.js} +0 -0
  405. /package/dist/web/assets/{wit-B55b-kBe.js → wit-B5CM2pg6.js} +0 -0
  406. /package/dist/web/assets/{wolfram-BMCiuBhR.js → wolfram-7MTFBJpR.js} +0 -0
  407. /package/dist/web/assets/{yaml-T9AUQgxg.js → yaml-Bwr01G2K.js} +0 -0
  408. /package/dist/web/assets/{zenscript-C2NuU93Q.js → zenscript-Dj8GATvi.js} +0 -0
  409. /package/dist/web/assets/{zig-B4cWz8iD.js → zig-LAE-fbS-.js} +0 -0
package/src/web/app.tsx CHANGED
@@ -44,6 +44,9 @@ import { cn } from "@/lib/utils";
44
44
  const MobileExplorerSheet = lazy(() =>
45
45
  import("@/components/os-explorer/mobile/mobile-explorer-sheet").then((m) => ({ default: m.MobileExplorerSheet })),
46
46
  );
47
+ const TeamMemberSheet = lazy(() =>
48
+ import("@/components/chat/team-member-sheet").then((m) => ({ default: m.TeamMemberSheet })),
49
+ );
47
50
 
48
51
  type AuthState = "checking" | "authenticated" | "unauthenticated";
49
52
 
@@ -348,6 +351,11 @@ export function App() {
348
351
  <MobileExplorerSheet />
349
352
  </Suspense>
350
353
 
354
+ {/* Mobile stand-in for the team-member window, which WindowLayer never renders below md */}
355
+ <Suspense fallback={null}>
356
+ <TeamMemberSheet />
357
+ </Suspense>
358
+
351
359
  {/* Global bug report popup */}
352
360
  <BugReportPopup />
353
361
 
@@ -12,6 +12,8 @@ import { openBugReportPopup } from "@/lib/report-bug";
12
12
  import { getAISettings } from "@/lib/api-settings";
13
13
  import { MessageList } from "./message-list";
14
14
  import { BackgroundCommandBar } from "./background-command-bar";
15
+ import { TeamWorkingBar } from "./team-working-bar";
16
+ import { useTeamActivityFeed } from "@/hooks/use-team-activity-feed";
15
17
  import { MessageInput, type ChatAttachment, type MessagePriority } from "./message-input";
16
18
  import { SlashCommandPicker, type SlashItem } from "./slash-command-picker";
17
19
  import { FilePicker } from "./file-picker";
@@ -131,6 +133,12 @@ export function ChatTab({ metadata, tabId }: ChatTabProps) {
131
133
  killBackgroundShell,
132
134
  } = useChat(sessionId, providerId, projectName);
133
135
 
136
+ // Teammates keep working long after their spawn card scrolled away — a resume
137
+ // arrives by SendMessage and writes no card at all. Poll the roster whenever this
138
+ // session has a team so the working bar below the conversation stays truthful.
139
+ const primaryTeam = teamActivity?.teamNames?.[0] ?? "";
140
+ const { members: teamMembers } = useTeamActivityFeed(primaryTeam, !!primaryTeam);
141
+
134
142
  // Flush pending message once WS connects (replaces unreliable setTimeout)
135
143
  useEffect(() => {
136
144
  if (isConnected && pendingSendRef.current) {
@@ -627,6 +635,9 @@ export function ChatTab({ metadata, tabId }: ChatTabProps) {
627
635
  bashPartialOutput={bashPartialOutput}
628
636
  />
629
637
 
638
+ {/* Teammates still working — pinned here so it is the last thing under the conversation */}
639
+ <TeamWorkingBar teamName={primaryTeam} members={teamMembers} projectName={projectName} />
640
+
630
641
  {/* Bottom toolbar */}
631
642
  <div className="border-t border-border bg-panel shrink-0">
632
643
  {/* Unified toolbar: History, Config, Usage, Bug report, Connection */}
@@ -11,7 +11,7 @@ import { RefreshCw } from "lucide-react";
11
11
  import { cn } from "@/lib/utils";
12
12
  import type { TeamMessageItem } from "@/hooks/use-chat";
13
13
  import { useTeamActivityFeed } from "@/hooks/use-team-activity-feed";
14
- import { useWindowStore } from "@/components/floating-window/window-store";
14
+ import { useOpenTeamMember } from "./use-open-team-member";
15
15
  import { usePrefersCoarsePointer } from "@/components/os-explorer/use-coarse-long-press";
16
16
  import { TeamMemberList } from "./team-member-list";
17
17
  import { TeamMessageList } from "./team-message-list";
@@ -35,7 +35,7 @@ function teamLabel(name: string, sessionId?: string | null): string {
35
35
  export function TeamActivityPanel({ teamNames, messages, sessionId, projectName }: TeamActivityPanelProps) {
36
36
  const [selectedTeam, setSelectedTeam] = useState(teamNames[0] ?? "");
37
37
  const [tab, setTab] = useState<TeamTab>("members");
38
- const openWindow = useWindowStore((s) => s.open);
38
+ const openMember = useOpenTeamMember();
39
39
  // Touch needs the 44px minimum even at desktop width; a mouse does not.
40
40
  const coarse = usePrefersCoarsePointer();
41
41
 
@@ -51,9 +51,9 @@ export function TeamActivityPanel({ teamNames, messages, sessionId, projectName
51
51
 
52
52
  const openMemberSession = useCallback(
53
53
  (memberName: string) => {
54
- openWindow("team-member", { teamName: selectedTeam, memberName, projectName });
54
+ openMember({ teamName: selectedTeam, memberName, projectName });
55
55
  },
56
- [openWindow, selectedTeam, projectName],
56
+ [openMember, selectedTeam, projectName],
57
57
  );
58
58
 
59
59
  /**
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Formatting shared by every surface that shows a teammate's activity — the roster
3
+ * row in the team panel and the working bar pinned under the conversation.
4
+ *
5
+ * Kept apart from the components so both read the same answer to "who is this and
6
+ * what is it doing right now" instead of drifting into two phrasings.
7
+ */
8
+
9
+ import type { TeamMemberActivity } from "@/hooks/use-team-activity-feed";
10
+
11
+ /** Trailing agent-type segment — `ak-engineer:tester` reads as `tester`. */
12
+ export function shortAgentType(agentType?: string): string | undefined {
13
+ if (!agentType) return undefined;
14
+ const tail = agentType.split(":").pop();
15
+ return tail && tail !== "general-purpose" ? tail : agentType;
16
+ }
17
+
18
+ /** `1h 4m` / `12m` / `45s` — compact enough for a dense row. */
19
+ export function formatDuration(fromIso?: string, toIso?: string): string | undefined {
20
+ if (!fromIso) return undefined;
21
+ const from = new Date(fromIso).getTime();
22
+ const to = toIso ? new Date(toIso).getTime() : Date.now();
23
+ if (!Number.isFinite(from) || !Number.isFinite(to) || to < from) return undefined;
24
+ const totalSeconds = Math.floor((to - from) / 1000);
25
+ const hours = Math.floor(totalSeconds / 3600);
26
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
27
+ if (hours > 0) return `${hours}h ${minutes}m`;
28
+ if (minutes > 0) return `${minutes}m`;
29
+ return `${totalSeconds}s`;
30
+ }
31
+
32
+ /** Best one-line answer to "what is it doing" from the transcript tail. */
33
+ export function currentStep(member: TeamMemberActivity): string | undefined {
34
+ if (member.lastTool) {
35
+ return member.lastToolArg ? `${member.lastTool}: ${member.lastToolArg}` : member.lastTool;
36
+ }
37
+ return member.lastNarrative ?? member.description;
38
+ }
@@ -9,6 +9,7 @@
9
9
  import { Loader2, ChevronRight } from "lucide-react";
10
10
  import { cn } from "@/lib/utils";
11
11
  import type { TeamMemberActivity } from "@/hooks/use-team-activity-feed";
12
+ import { currentStep, formatDuration, shortAgentType } from "./team-member-activity-format";
12
13
 
13
14
  interface TeamMemberActivityRowProps {
14
15
  member: TeamMemberActivity;
@@ -22,35 +23,6 @@ const STATE_LABEL: Record<string, string> = {
22
23
  "no-transcript": "no session",
23
24
  };
24
25
 
25
- /** Trailing agent-type segment — `ak-engineer:tester` reads as `tester`. */
26
- function shortAgentType(agentType?: string): string | undefined {
27
- if (!agentType) return undefined;
28
- const tail = agentType.split(":").pop();
29
- return tail && tail !== "general-purpose" ? tail : agentType;
30
- }
31
-
32
- /** `1h 4m` / `12m` / `45s` — compact enough for a dense row. */
33
- export function formatDuration(fromIso?: string, toIso?: string): string | undefined {
34
- if (!fromIso) return undefined;
35
- const from = new Date(fromIso).getTime();
36
- const to = toIso ? new Date(toIso).getTime() : Date.now();
37
- if (!Number.isFinite(from) || !Number.isFinite(to) || to < from) return undefined;
38
- const totalSeconds = Math.floor((to - from) / 1000);
39
- const hours = Math.floor(totalSeconds / 3600);
40
- const minutes = Math.floor((totalSeconds % 3600) / 60);
41
- if (hours > 0) return `${hours}h ${minutes}m`;
42
- if (minutes > 0) return `${minutes}m`;
43
- return `${totalSeconds}s`;
44
- }
45
-
46
- /** Best one-line answer to "what is it doing" from the transcript tail. */
47
- function currentStep(member: TeamMemberActivity): string | undefined {
48
- if (member.lastTool) {
49
- return member.lastToolArg ? `${member.lastTool}: ${member.lastToolArg}` : member.lastTool;
50
- }
51
- return member.lastNarrative ?? member.description;
52
- }
53
-
54
26
  export function TeamMemberActivityRow({ member, onOpen }: TeamMemberActivityRowProps) {
55
27
  const working = member.workState === "working";
56
28
  const step = currentStep(member);
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Full-screen mobile presentation of a teammate's work session.
3
+ *
4
+ * Hosts the same content component the desktop floating window uses, so the steps,
5
+ * refresh and error states are shared code rather than a parallel mobile build.
6
+ * Self-gated singleton, mounted once at the app root beside the other overlays.
7
+ */
8
+
9
+ import { lazy, Suspense } from "react";
10
+ import { X } from "lucide-react";
11
+ import { BottomSheet } from "@/components/ui/mobile-bottom-sheet";
12
+ import { useTeamMemberSheet } from "./use-open-team-member";
13
+
14
+ const TeamMemberWindowContent = lazy(() => import("./team-member-window-content"));
15
+
16
+ export function TeamMemberSheet() {
17
+ const payload = useTeamMemberSheet((s) => s.payload);
18
+ const close = useTeamMemberSheet((s) => s.close);
19
+ if (!payload) return null;
20
+
21
+ return (
22
+ <BottomSheet open onClose={close} zIndex={45} className="flex h-[var(--sheet-vh)] flex-col p-0">
23
+ <div className="flex items-center gap-2 border-b border-border px-3 py-2 shrink-0">
24
+ <span className="truncate text-sm font-medium text-text-primary">
25
+ Session — {payload.memberName}
26
+ </span>
27
+ <button
28
+ type="button"
29
+ onClick={close}
30
+ className="ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary"
31
+ aria-label="Close"
32
+ >
33
+ <X className="size-5" />
34
+ </button>
35
+ </div>
36
+ <div className="min-h-0 flex-1 overflow-auto">
37
+ <Suspense fallback={<div className="p-4 text-sm text-text-2">Loading…</div>}>
38
+ {/* No floating window backs this sheet, so the id is only an identity for the content. */}
39
+ <TeamMemberWindowContent
40
+ id={`sheet-${payload.memberName}`}
41
+ payload={payload as unknown as Record<string, unknown>}
42
+ />
43
+ </Suspense>
44
+ </div>
45
+ </BottomSheet>
46
+ );
47
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Teammates working right now, pinned under the conversation.
3
+ *
4
+ * A teammate only appears in the transcript when it is *spawned*; every later task
5
+ * reaches it through SendMessage, which resumes the same agent and writes no new
6
+ * card. So after the first round the conversation goes quiet while members are
7
+ * still working, and the only way to notice was to open the team panel.
8
+ *
9
+ * This is deliberately a live overlay rather than chat events: work state is derived
10
+ * from transcripts on disk within a 90s window, so replaying an old session must show
11
+ * nothing here instead of claiming a long-finished teammate is still running.
12
+ */
13
+
14
+ import { Users } from "lucide-react";
15
+ import type { TeamMemberActivity } from "@/hooks/use-team-activity-feed";
16
+ import { currentStep, formatDuration, shortAgentType } from "./team-member-activity-format";
17
+ import { useOpenTeamMember } from "./use-open-team-member";
18
+
19
+ interface TeamWorkingBarProps {
20
+ teamName: string;
21
+ members: TeamMemberActivity[];
22
+ projectName?: string;
23
+ }
24
+
25
+ export function TeamWorkingBar({ teamName, members, projectName }: TeamWorkingBarProps) {
26
+ const openMember = useOpenTeamMember();
27
+ const working = members.filter((m) => m.workState === "working");
28
+ if (!teamName || working.length === 0) return null;
29
+
30
+ return (
31
+ <div className="shrink-0 border-t border-border bg-surface-elevated/60 px-2 py-1.5 space-y-1">
32
+ {working.map((member) => {
33
+ const step = currentStep(member);
34
+ const elapsed = formatDuration(member.startedAt);
35
+ const agentType = shortAgentType(member.agentType);
36
+ return (
37
+ <button
38
+ key={member.name}
39
+ type="button"
40
+ onClick={() => openMember({ teamName, memberName: member.name, projectName })}
41
+ className="flex w-full items-center gap-2 rounded px-1 py-1.5 min-h-[36px] text-left text-xs hover:bg-surface transition-colors"
42
+ title={`Open ${member.name}'s work session`}
43
+ >
44
+ <span className="relative flex size-2 shrink-0">
45
+ <span className="absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-60" />
46
+ <span className="relative inline-flex size-2 rounded-full bg-emerald-500" />
47
+ </span>
48
+ <Users className="size-3.5 shrink-0 text-accent-2" />
49
+ <span className="font-medium text-text-primary shrink-0">{member.name}</span>
50
+ {!!agentType && <span className="text-text-3 shrink-0 hidden sm:inline">{agentType}</span>}
51
+ {!!step && (
52
+ <span className="flex-1 truncate text-text-subtle" title={step}>
53
+ {step}
54
+ </span>
55
+ )}
56
+ {!!elapsed && <span className="ml-auto shrink-0 text-text-3 font-mono">{elapsed}</span>}
57
+ </button>
58
+ );
59
+ })}
60
+ </div>
61
+ );
62
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Opening a teammate's work session, on whichever presentation the device has.
3
+ *
4
+ * `WindowLayer` renders nothing below the `md` breakpoint, so `openWindow("team-member")`
5
+ * is a silent no-op on a phone — the tap looked broken. Desktop keeps the floating window;
6
+ * mobile gets the full-screen sheet, both hosting the same content component.
7
+ */
8
+
9
+ import { useCallback } from "react";
10
+ import { create } from "zustand";
11
+ import { useIsMobile } from "@/hooks/use-is-mobile";
12
+ import { useWindowStore } from "@/components/floating-window/window-store";
13
+ import type { TeamMemberWindowPayload } from "./team-member-window-content";
14
+
15
+ interface TeamMemberSheetState {
16
+ payload: TeamMemberWindowPayload | null;
17
+ open: (payload: TeamMemberWindowPayload) => void;
18
+ close: () => void;
19
+ }
20
+
21
+ /** Mobile-only: which teammate the full-screen sheet is showing, if any. */
22
+ export const useTeamMemberSheet = create<TeamMemberSheetState>((set) => ({
23
+ payload: null,
24
+ open: (payload) => set({ payload }),
25
+ close: () => set({ payload: null }),
26
+ }));
27
+
28
+ /** Callback that opens a teammate's session the right way for this viewport. */
29
+ export function useOpenTeamMember(): (payload: TeamMemberWindowPayload) => void {
30
+ const isMobile = useIsMobile();
31
+ const openWindow = useWindowStore((s) => s.open);
32
+ const openSheet = useTeamMemberSheet((s) => s.open);
33
+
34
+ return useCallback(
35
+ (payload: TeamMemberWindowPayload) => {
36
+ if (isMobile) openSheet(payload);
37
+ else openWindow("team-member", payload as unknown as Record<string, unknown>);
38
+ },
39
+ [isMobile, openSheet, openWindow],
40
+ );
41
+ }
package/.release-run.sh DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Temporary runner: invokes the release script with bun on PATH from the clean release clone.
3
- export PATH="$HOME/.bun/bin:$PATH"
4
- cd /c/Users/PC/ppm-wt/release || exit 1
5
- exec bash scripts/release.sh 0.18.5
@@ -1 +0,0 @@
1
- import{G as e}from"./vendor-mermaid-Dede75gn.js";export{e as createArchitectureServices};