claude-mux 0.9.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +13 -0
  3. package/dist/app.d.ts +2 -1
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/claude/commands.d.ts +15 -0
  6. package/dist/claude/commands.d.ts.map +1 -0
  7. package/dist/claude/commands.js +245 -0
  8. package/dist/claude/commands.js.map +1 -0
  9. package/dist/components/Header.d.ts +2 -1
  10. package/dist/components/Header.d.ts.map +1 -1
  11. package/dist/components/HelpDialog.d.ts +2 -1
  12. package/dist/components/HelpDialog.d.ts.map +1 -1
  13. package/dist/components/SessionEntry.d.ts +2 -1
  14. package/dist/components/SessionEntry.d.ts.map +1 -1
  15. package/dist/components/SessionList.d.ts +2 -1
  16. package/dist/components/SessionList.d.ts.map +1 -1
  17. package/dist/components/StatusBar.d.ts +2 -1
  18. package/dist/components/StatusBar.d.ts.map +1 -1
  19. package/dist/db/sessions-json.d.ts +1 -1
  20. package/dist/db/sessions-json.js +1 -1
  21. package/dist/server/message-queue.d.ts +7 -0
  22. package/dist/server/message-queue.d.ts.map +1 -1
  23. package/dist/server/message-queue.js +57 -4
  24. package/dist/server/message-queue.js.map +1 -1
  25. package/dist/server/ws-handlers.d.ts +34 -7
  26. package/dist/server/ws-handlers.d.ts.map +1 -1
  27. package/dist/server/ws-handlers.js +137 -51
  28. package/dist/server/ws-handlers.js.map +1 -1
  29. package/dist/tmux/snapshot.d.ts +26 -0
  30. package/dist/tmux/snapshot.d.ts.map +1 -0
  31. package/dist/tmux/snapshot.js +121 -0
  32. package/dist/tmux/snapshot.js.map +1 -0
  33. package/dist/utils/version.d.ts +1 -1
  34. package/dist/utils/version.d.ts.map +1 -1
  35. package/dist/utils/version.js +1 -1
  36. package/dist/utils/version.js.map +1 -1
  37. package/dist/web/client/_app/immutable/assets/0.BHMH03xN.css +1 -0
  38. package/dist/web/client/_app/immutable/assets/2.BPFnFMPa.css +1 -0
  39. package/dist/web/client/_app/immutable/assets/3.C-mmGOc7.css +1 -0
  40. package/dist/web/client/_app/immutable/chunks/B-uNUC1g.js +2 -0
  41. package/dist/web/client/_app/immutable/chunks/BC4YnY_W.js +1 -0
  42. package/dist/web/client/_app/immutable/chunks/BMXiuv0v.js +1 -0
  43. package/dist/web/client/_app/immutable/chunks/BcLVN_yA.js +1 -0
  44. package/dist/web/client/_app/immutable/chunks/C75YkvRA.js +1 -0
  45. package/dist/web/client/_app/immutable/chunks/CrbnT13E.js +1 -0
  46. package/dist/web/client/_app/immutable/chunks/DuapVKBU.js +2 -0
  47. package/dist/web/client/_app/immutable/chunks/jsJxHQ3D.js +69 -0
  48. package/dist/web/client/_app/immutable/chunks/wbPk3Yxo.js +81 -0
  49. package/dist/web/client/_app/immutable/entry/app.BPxQgXOL.js +2 -0
  50. package/dist/web/client/_app/immutable/entry/start.CFsMAOx8.js +1 -0
  51. package/dist/web/client/_app/immutable/nodes/0.CWdPHOZW.js +1 -0
  52. package/dist/web/client/_app/immutable/nodes/1.CBrHLWCB.js +1 -0
  53. package/dist/web/client/_app/immutable/nodes/2.Concd-Od.js +1 -0
  54. package/dist/web/client/_app/immutable/nodes/3.Bxw2z5gl.js +101 -0
  55. package/dist/web/client/_app/version.json +1 -1
  56. package/dist/web/client/apple-touch-icon.png +0 -0
  57. package/dist/web/client/icon-192.png +0 -0
  58. package/dist/web/client/icon-512.png +0 -0
  59. package/dist/web/client/manifest.webmanifest +16 -0
  60. package/dist/web/server/chunks/{0-lm2SXXXL.js → 0-DdxdcbPU.js} +13 -12
  61. package/dist/web/server/chunks/0-DdxdcbPU.js.map +1 -0
  62. package/dist/web/server/chunks/{1-DL620-sU.js → 1-CvSoa3QJ.js} +6 -6
  63. package/dist/web/server/chunks/1-CvSoa3QJ.js.map +1 -0
  64. package/dist/web/server/chunks/2-BrM2VX61.js +20 -0
  65. package/dist/web/server/chunks/2-BrM2VX61.js.map +1 -0
  66. package/dist/web/server/chunks/3-DPGMF1DL.js +23 -0
  67. package/dist/web/server/chunks/3-DPGMF1DL.js.map +1 -0
  68. package/dist/web/server/chunks/{popover-trigger-BQJRZ2Xv.js → _layout.svelte-DQzPx1fa.js} +3622 -288
  69. package/dist/web/server/chunks/_layout.svelte-DQzPx1fa.js.map +1 -0
  70. package/dist/web/server/chunks/{_page.svelte-CREhk3v0.js → _page.svelte-BlOLzyrl.js} +4 -4
  71. package/dist/web/server/chunks/_page.svelte-BlOLzyrl.js.map +1 -0
  72. package/dist/web/server/chunks/{_server.ts-CTIiLzg9.js → _server.ts-12NE7UeG.js} +5 -5
  73. package/dist/web/server/chunks/{_server.ts-CTIiLzg9.js.map → _server.ts-12NE7UeG.js.map} +1 -1
  74. package/dist/web/server/chunks/{_server.ts-Dj_iwP-Z.js → _server.ts-BDmSWnC6.js} +8 -6
  75. package/dist/web/server/chunks/{_server.ts-Dj_iwP-Z.js.map → _server.ts-BDmSWnC6.js.map} +1 -1
  76. package/dist/web/server/chunks/{_server.ts-B-6emYlG.js → _server.ts-BFLtnMcp.js} +7 -5
  77. package/dist/web/server/chunks/{_server.ts-B-6emYlG.js.map → _server.ts-BFLtnMcp.js.map} +1 -1
  78. package/dist/web/server/chunks/{_server.ts-DyeW0P3w.js → _server.ts-BOo-YmUp.js} +5 -4
  79. package/dist/web/server/chunks/{_server.ts-DyeW0P3w.js.map → _server.ts-BOo-YmUp.js.map} +1 -1
  80. package/dist/web/server/chunks/{_server.ts-BUOOqQRk.js → _server.ts-BXt5Kowc.js} +3 -3
  81. package/dist/web/server/chunks/{_server.ts-BUOOqQRk.js.map → _server.ts-BXt5Kowc.js.map} +1 -1
  82. package/dist/web/server/chunks/{_server.ts-ChuAmmhw.js → _server.ts-BYBeCdq2.js} +4 -4
  83. package/dist/web/server/chunks/{_server.ts-ChuAmmhw.js.map → _server.ts-BYBeCdq2.js.map} +1 -1
  84. package/dist/web/server/chunks/{_server.ts-ZObkLZOS.js → _server.ts-Bm14TVxq.js} +2 -2
  85. package/dist/web/server/chunks/{_server.ts-ZObkLZOS.js.map → _server.ts-Bm14TVxq.js.map} +1 -1
  86. package/dist/web/server/chunks/{_server.ts-DIhiJl4f.js → _server.ts-C0ur_l7h.js} +5 -4
  87. package/dist/web/server/chunks/{_server.ts-DIhiJl4f.js.map → _server.ts-C0ur_l7h.js.map} +1 -1
  88. package/dist/web/server/chunks/{_server.ts-D0ylgRRV.js → _server.ts-CJ0nhTTh.js} +3 -3
  89. package/dist/web/server/chunks/{_server.ts-D0ylgRRV.js.map → _server.ts-CJ0nhTTh.js.map} +1 -1
  90. package/dist/web/server/chunks/{_server.ts-DLI_Pwvd.js → _server.ts-CgG8pj06.js} +2 -2
  91. package/dist/web/server/chunks/{_server.ts-DLI_Pwvd.js.map → _server.ts-CgG8pj06.js.map} +1 -1
  92. package/dist/web/server/chunks/_server.ts-CrRQ-1IB.js +208 -0
  93. package/dist/web/server/chunks/_server.ts-CrRQ-1IB.js.map +1 -0
  94. package/dist/web/server/chunks/{_server.ts-CkC3JTyo.js → _server.ts-CzgDUjKe.js} +12 -11
  95. package/dist/web/server/chunks/{_server.ts-CkC3JTyo.js.map → _server.ts-CzgDUjKe.js.map} +1 -1
  96. package/dist/web/server/chunks/{_server.ts-DK7C_rXn.js → _server.ts-D8hEf52k.js} +13 -12
  97. package/dist/web/server/chunks/{_server.ts-DK7C_rXn.js.map → _server.ts-D8hEf52k.js.map} +1 -1
  98. package/dist/web/server/chunks/{_server.ts-B4o51l3m.js → _server.ts-DJhqVvwC.js} +3 -3
  99. package/dist/web/server/chunks/{_server.ts-B4o51l3m.js.map → _server.ts-DJhqVvwC.js.map} +1 -1
  100. package/dist/web/server/chunks/{_server.ts-Bkk6XA1G.js → _server.ts-DQhRNIQX.js} +15 -9
  101. package/dist/web/server/chunks/{_server.ts-Bkk6XA1G.js.map → _server.ts-DQhRNIQX.js.map} +1 -1
  102. package/dist/web/server/chunks/{_server.ts-B2vhCPsh.js → _server.ts-DtVo0TCf.js} +4 -4
  103. package/dist/web/server/chunks/{_server.ts-B2vhCPsh.js.map → _server.ts-DtVo0TCf.js.map} +1 -1
  104. package/dist/web/server/chunks/{_server.ts-Bp8qgUhz.js → _server.ts-S3P3Wga8.js} +3 -3
  105. package/dist/web/server/chunks/{_server.ts-Bp8qgUhz.js.map → _server.ts-S3P3Wga8.js.map} +1 -1
  106. package/dist/web/server/chunks/{_server.ts-Cy0wvEJk.js → _server.ts-UE7vj5nG.js} +7 -6
  107. package/dist/web/server/chunks/{_server.ts-Cy0wvEJk.js.map → _server.ts-UE7vj5nG.js.map} +1 -1
  108. package/dist/web/server/chunks/{_server.ts-BEQA_put.js → _server.ts-mGAUzFSv.js} +2 -2
  109. package/dist/web/server/chunks/{_server.ts-BEQA_put.js.map → _server.ts-mGAUzFSv.js.map} +1 -1
  110. package/dist/web/server/chunks/{_server.ts-eFJEOOS1.js → _server.ts-qEqBc4dH.js} +5 -5
  111. package/dist/web/server/chunks/{_server.ts-eFJEOOS1.js.map → _server.ts-qEqBc4dH.js.map} +1 -1
  112. package/dist/web/server/chunks/{agents-rTKwF5qh.js → agents-21cPpmjY.js} +1 -1
  113. package/dist/web/server/chunks/{agents-rTKwF5qh.js.map → agents-21cPpmjY.js.map} +1 -1
  114. package/dist/web/server/chunks/{attachments-B8VMrOm4.js → attachments-KlCvKhak.js} +2 -2
  115. package/dist/web/server/chunks/{attachments-B8VMrOm4.js.map → attachments-KlCvKhak.js.map} +1 -1
  116. package/dist/web/server/chunks/{button-BKSlzQeg.js → button-DG6I4Dia.js} +4733 -885
  117. package/dist/web/server/chunks/button-DG6I4Dia.js.map +1 -0
  118. package/dist/web/server/chunks/{constants-CZFdiL46.js → constants-DxYZCFLw.js} +1 -1
  119. package/dist/web/server/chunks/{constants-CZFdiL46.js.map → constants-DxYZCFLw.js.map} +1 -1
  120. package/dist/web/server/chunks/{error.svelte-VCYDSS3H.js → error.svelte-r19Dfgak.js} +3 -5
  121. package/dist/web/server/chunks/error.svelte-r19Dfgak.js.map +1 -0
  122. package/dist/web/server/chunks/{exports-DLCVjVJM.js → exports-BqJxdkkd.js} +67 -5
  123. package/dist/web/server/chunks/exports-BqJxdkkd.js.map +1 -0
  124. package/dist/web/server/chunks/{root-L_UzGTpb.js → exports-zB_G8R4F.js} +1604 -1549
  125. package/dist/web/server/chunks/exports-zB_G8R4F.js.map +1 -0
  126. package/dist/web/server/chunks/{hooks.server-CzdMWOsb.js → hooks.server-IAZrpw3O.js} +7 -6
  127. package/dist/web/server/chunks/hooks.server-IAZrpw3O.js.map +1 -0
  128. package/dist/web/server/chunks/{message-queue-BhryIx7W.js → message-queue-DletiFqf.js} +41 -6
  129. package/dist/web/server/chunks/message-queue-DletiFqf.js.map +1 -0
  130. package/dist/web/server/chunks/{sessions-json-w9KPwiDl.js → sessions-json-CaSa-c37.js} +1 -1
  131. package/dist/web/server/chunks/{sessions-json-w9KPwiDl.js.map → sessions-json-CaSa-c37.js.map} +1 -1
  132. package/dist/web/server/chunks/{shared-server-CB2NTyFt.js → shared-server-Cs1g-wuJ.js} +1 -1
  133. package/dist/web/server/chunks/{shared-server-CB2NTyFt.js.map → shared-server-Cs1g-wuJ.js.map} +1 -1
  134. package/dist/web/server/chunks/{state.svelte-DM05ho1v.js → state.svelte-Bb67lT4B.js} +2 -2
  135. package/dist/web/server/chunks/{state.svelte-DM05ho1v.js.map → state.svelte-Bb67lT4B.js.map} +1 -1
  136. package/dist/web/server/chunks/{ws-handlers-B_p_71BD.js → ws-handlers-KQ7tQLV2.js} +296 -70
  137. package/dist/web/server/chunks/ws-handlers-KQ7tQLV2.js.map +1 -0
  138. package/dist/web/server/chunks/{ws-managers-B0N9UU0g.js → ws-managers-Bk8Kzixf.js} +2 -2
  139. package/dist/web/server/chunks/{ws-managers-B0N9UU0g.js.map → ws-managers-Bk8Kzixf.js.map} +1 -1
  140. package/dist/web/server/index.js +1362 -1175
  141. package/dist/web/server/index.js.map +1 -1
  142. package/dist/web/server/manifest.js +50 -33
  143. package/dist/web/server/manifest.js.map +1 -1
  144. package/package.json +13 -13
  145. package/src/claude/commands.ts +262 -0
  146. package/src/db/sessions-json.ts +1 -1
  147. package/src/server/message-queue.ts +59 -4
  148. package/src/server/ws-handlers.ts +179 -56
  149. package/src/tmux/snapshot.ts +132 -0
  150. package/src/utils/version.ts +1 -1
  151. package/tests/components/Header.test.tsx +1 -1
  152. package/tests/db/sessions.test.ts +10 -8
  153. package/tests/setup/hooks.test.ts +4 -4
  154. package/web/.svelte-kit/adapter-bun/.vite/manifest.json +59 -66
  155. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.C_Esdb-g.css +1 -0
  156. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.BPFnFMPa.css +1 -0
  157. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.C-mmGOc7.css +1 -0
  158. package/web/.svelte-kit/adapter-bun/chunks/attachments.js +1 -1
  159. package/web/.svelte-kit/adapter-bun/chunks/button.js +9 -9
  160. package/web/.svelte-kit/adapter-bun/chunks/exports.js +5 -5
  161. package/web/.svelte-kit/adapter-bun/chunks/internal.js +29 -122
  162. package/web/.svelte-kit/adapter-bun/chunks/internal2.js +128 -0
  163. package/web/.svelte-kit/adapter-bun/chunks/message-queue.js +41 -7
  164. package/web/.svelte-kit/adapter-bun/chunks/popover-trigger.js +777 -288
  165. package/web/.svelte-kit/adapter-bun/chunks/root.js +1510 -1432
  166. package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +8 -8
  167. package/web/.svelte-kit/adapter-bun/chunks/shared-server.js +3 -3
  168. package/web/.svelte-kit/adapter-bun/chunks/state.svelte.js +1 -1
  169. package/web/.svelte-kit/adapter-bun/chunks/{render-context.js → uneval.js} +46 -109
  170. package/web/.svelte-kit/adapter-bun/chunks/utils.js +1728 -32
  171. package/web/.svelte-kit/adapter-bun/chunks/utils2.js +41 -0
  172. package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +231 -57
  173. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/commands/_server.ts.js +212 -0
  174. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/projects/new-session/_server.ts.js +1 -1
  175. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/_server.ts.js +1 -1
  176. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/attach/_server.ts.js +1 -1
  177. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +2 -2
  178. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +1 -1
  179. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +1 -1
  180. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/send/_server.ts.js +1 -1
  181. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/voice/_server.ts.js +1 -1
  182. package/web/.svelte-kit/adapter-bun/entries/fallbacks/error.svelte.js +5 -5
  183. package/web/.svelte-kit/adapter-bun/entries/hooks.server.js +1 -1
  184. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.server.ts.js +1 -1
  185. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +6 -527
  186. package/web/.svelte-kit/adapter-bun/entries/pages/_page.svelte.js +2 -2
  187. package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +428 -201
  188. package/web/.svelte-kit/adapter-bun/env.js +13 -0
  189. package/web/.svelte-kit/adapter-bun/index.js +788 -903
  190. package/web/.svelte-kit/adapter-bun/internal.js +6 -6
  191. package/web/.svelte-kit/adapter-bun/manifest-full.js +10 -3
  192. package/web/.svelte-kit/adapter-bun/manifest.js +10 -3
  193. package/web/.svelte-kit/adapter-bun/nodes/0.js +2 -2
  194. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  195. package/web/.svelte-kit/adapter-bun/nodes/2.js +2 -2
  196. package/web/.svelte-kit/adapter-bun/nodes/3.js +2 -4
  197. package/web/.svelte-kit/adapter-bun/remote-entry.js +365 -140
  198. package/web/.svelte-kit/ambient.d.ts +210 -198
  199. package/web/.svelte-kit/env.d.ts +1 -0
  200. package/web/.svelte-kit/generated/client/app.js +11 -1
  201. package/web/.svelte-kit/generated/client/nodes/1.js +1 -1
  202. package/web/.svelte-kit/generated/client-optimized/app.js +11 -1
  203. package/web/.svelte-kit/generated/client-optimized/nodes/1.js +1 -1
  204. package/web/.svelte-kit/generated/root.svelte +1 -1
  205. package/web/.svelte-kit/generated/server/internal.js +6 -5
  206. package/web/.svelte-kit/generated/shared/error-template.js +1 -0
  207. package/web/.svelte-kit/non-ambient.d.ts +9 -8
  208. package/web/.svelte-kit/output/client/.vite/manifest.json +86 -70
  209. package/web/.svelte-kit/output/client/_app/immutable/assets/0.BHMH03xN.css +1 -0
  210. package/web/.svelte-kit/output/client/_app/immutable/assets/2.BPFnFMPa.css +1 -0
  211. package/web/.svelte-kit/output/client/_app/immutable/assets/3.C-mmGOc7.css +1 -0
  212. package/web/.svelte-kit/output/client/_app/immutable/chunks/B-uNUC1g.js +2 -0
  213. package/web/.svelte-kit/output/client/_app/immutable/chunks/BC4YnY_W.js +1 -0
  214. package/web/.svelte-kit/output/client/_app/immutable/chunks/BMXiuv0v.js +1 -0
  215. package/web/.svelte-kit/output/client/_app/immutable/chunks/BcLVN_yA.js +1 -0
  216. package/web/.svelte-kit/output/client/_app/immutable/chunks/C75YkvRA.js +1 -0
  217. package/web/.svelte-kit/output/client/_app/immutable/chunks/CrbnT13E.js +1 -0
  218. package/web/.svelte-kit/output/client/_app/immutable/chunks/DuapVKBU.js +2 -0
  219. package/web/.svelte-kit/output/client/_app/immutable/chunks/jsJxHQ3D.js +69 -0
  220. package/web/.svelte-kit/output/client/_app/immutable/chunks/wbPk3Yxo.js +81 -0
  221. package/web/.svelte-kit/output/client/_app/immutable/entry/app.BPxQgXOL.js +2 -0
  222. package/web/.svelte-kit/output/client/_app/immutable/entry/start.CFsMAOx8.js +1 -0
  223. package/web/.svelte-kit/output/client/_app/immutable/nodes/0.CWdPHOZW.js +1 -0
  224. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.CBrHLWCB.js +1 -0
  225. package/web/.svelte-kit/output/client/_app/immutable/nodes/2.Concd-Od.js +1 -0
  226. package/web/.svelte-kit/output/client/_app/immutable/nodes/3.Bxw2z5gl.js +101 -0
  227. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  228. package/web/.svelte-kit/output/client/apple-touch-icon.png +0 -0
  229. package/web/.svelte-kit/output/client/icon-192.png +0 -0
  230. package/web/.svelte-kit/output/client/icon-512.png +0 -0
  231. package/web/.svelte-kit/output/client/manifest.webmanifest +16 -0
  232. package/web/.svelte-kit/output/server/.vite/manifest.json +59 -66
  233. package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.C_Esdb-g.css +1 -0
  234. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.BPFnFMPa.css +1 -0
  235. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.C-mmGOc7.css +1 -0
  236. package/web/.svelte-kit/output/server/chunks/attachments.js +1 -1
  237. package/web/.svelte-kit/output/server/chunks/button.js +9 -9
  238. package/web/.svelte-kit/output/server/chunks/exports.js +5 -5
  239. package/web/.svelte-kit/output/server/chunks/internal.js +29 -122
  240. package/web/.svelte-kit/output/server/chunks/internal2.js +128 -0
  241. package/web/.svelte-kit/output/server/chunks/message-queue.js +41 -7
  242. package/web/.svelte-kit/output/server/chunks/popover-trigger.js +777 -288
  243. package/web/.svelte-kit/output/server/chunks/root.js +1510 -1432
  244. package/web/.svelte-kit/output/server/chunks/sessions-json.js +8 -8
  245. package/web/.svelte-kit/output/server/chunks/shared-server.js +3 -3
  246. package/web/.svelte-kit/output/server/chunks/state.svelte.js +1 -1
  247. package/web/.svelte-kit/output/server/chunks/{render-context.js → uneval.js} +46 -109
  248. package/web/.svelte-kit/output/server/chunks/utils.js +1728 -32
  249. package/web/.svelte-kit/output/server/chunks/utils2.js +41 -0
  250. package/web/.svelte-kit/output/server/chunks/ws-handlers.js +231 -57
  251. package/web/.svelte-kit/output/server/entries/endpoints/api/commands/_server.ts.js +212 -0
  252. package/web/.svelte-kit/output/server/entries/endpoints/api/projects/new-session/_server.ts.js +1 -1
  253. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/_server.ts.js +1 -1
  254. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/attach/_server.ts.js +1 -1
  255. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +2 -2
  256. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +1 -1
  257. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +1 -1
  258. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/send/_server.ts.js +1 -1
  259. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/voice/_server.ts.js +1 -1
  260. package/web/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +5 -5
  261. package/web/.svelte-kit/output/server/entries/hooks.server.js +1 -1
  262. package/web/.svelte-kit/output/server/entries/pages/_layout.server.ts.js +1 -1
  263. package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +6 -527
  264. package/web/.svelte-kit/output/server/entries/pages/_page.svelte.js +2 -2
  265. package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +428 -201
  266. package/web/.svelte-kit/output/server/env.js +13 -0
  267. package/web/.svelte-kit/output/server/index.js +788 -903
  268. package/web/.svelte-kit/output/server/internal.js +6 -6
  269. package/web/.svelte-kit/output/server/manifest-full.js +10 -3
  270. package/web/.svelte-kit/output/server/manifest.js +10 -3
  271. package/web/.svelte-kit/output/server/nodes/0.js +2 -2
  272. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  273. package/web/.svelte-kit/output/server/nodes/2.js +2 -2
  274. package/web/.svelte-kit/output/server/nodes/3.js +2 -4
  275. package/web/.svelte-kit/output/server/remote-entry.js +365 -140
  276. package/web/.svelte-kit/tsconfig.json +2 -4
  277. package/web/.svelte-kit/types/route_meta_data.json +3 -0
  278. package/web/.svelte-kit/types/src/routes/$types.d.ts +1 -1
  279. package/web/.svelte-kit/types/src/routes/api/commands/$types.d.ts +9 -0
  280. package/web/package.json +11 -11
  281. package/web/src/app.html +9 -1
  282. package/web/src/hooks.server.ts +2 -1
  283. package/web/src/lib/components/CommandPalette.svelte +244 -0
  284. package/web/src/lib/components/TerminalView.svelte +113 -0
  285. package/web/src/lib/stores/terminal.svelte.ts +183 -31
  286. package/web/src/lib/terminal/ansi.ts +48 -0
  287. package/web/src/routes/+layout.svelte +14 -4
  288. package/web/src/routes/+page.svelte +1 -1
  289. package/web/src/routes/api/commands/+server.ts +9 -0
  290. package/web/src/routes/session/[target]/+page.svelte +397 -160
  291. package/web/static/apple-touch-icon.png +0 -0
  292. package/web/static/icon-192.png +0 -0
  293. package/web/static/icon-512.png +0 -0
  294. package/web/static/manifest.webmanifest +16 -0
  295. package/web/vite.config.ts +2 -1
  296. package/dist/web/client/_app/immutable/assets/0._7q2-APf.css +0 -1
  297. package/dist/web/client/_app/immutable/assets/2.s6Kx4oz1.css +0 -1
  298. package/dist/web/client/_app/immutable/assets/3.luY-vLwW.css +0 -1
  299. package/dist/web/client/_app/immutable/chunks/0aSLiJ5c.js +0 -3
  300. package/dist/web/client/_app/immutable/chunks/BIuG5Qqu.js +0 -1
  301. package/dist/web/client/_app/immutable/chunks/CGb10hB5.js +0 -1
  302. package/dist/web/client/_app/immutable/chunks/D-34IVnr.js +0 -1
  303. package/dist/web/client/_app/immutable/chunks/D7LHlC1M.js +0 -2
  304. package/dist/web/client/_app/immutable/chunks/DTyl4EVg.js +0 -1
  305. package/dist/web/client/_app/immutable/chunks/pkYTw7Ge.js +0 -69
  306. package/dist/web/client/_app/immutable/entry/app.B5KQK7RI.js +0 -2
  307. package/dist/web/client/_app/immutable/entry/start.C0ocDcXk.js +0 -1
  308. package/dist/web/client/_app/immutable/nodes/0.D9NtpoCP.js +0 -1
  309. package/dist/web/client/_app/immutable/nodes/1.oevNjH1i.js +0 -1
  310. package/dist/web/client/_app/immutable/nodes/2.8u-solqb.js +0 -1
  311. package/dist/web/client/_app/immutable/nodes/3.CtE6Zacp.js +0 -98
  312. package/dist/web/server/chunks/0-lm2SXXXL.js.map +0 -1
  313. package/dist/web/server/chunks/1-DL620-sU.js.map +0 -1
  314. package/dist/web/server/chunks/2-ChlJ4D7y.js +0 -19
  315. package/dist/web/server/chunks/2-ChlJ4D7y.js.map +0 -1
  316. package/dist/web/server/chunks/3-NLTGD1Yq.js +0 -24
  317. package/dist/web/server/chunks/3-NLTGD1Yq.js.map +0 -1
  318. package/dist/web/server/chunks/_layout.svelte-yoaT7ri1.js +0 -3358
  319. package/dist/web/server/chunks/_layout.svelte-yoaT7ri1.js.map +0 -1
  320. package/dist/web/server/chunks/_page.svelte-CREhk3v0.js.map +0 -1
  321. package/dist/web/server/chunks/_page.svelte-DtdzlL3m.js +0 -1392
  322. package/dist/web/server/chunks/_page.svelte-DtdzlL3m.js.map +0 -1
  323. package/dist/web/server/chunks/button-BKSlzQeg.js.map +0 -1
  324. package/dist/web/server/chunks/chunks-DLJ18IUO.js +0 -57
  325. package/dist/web/server/chunks/chunks-DLJ18IUO.js.map +0 -1
  326. package/dist/web/server/chunks/client-Dnt8rmsr.js +0 -19
  327. package/dist/web/server/chunks/client-Dnt8rmsr.js.map +0 -1
  328. package/dist/web/server/chunks/error.svelte-VCYDSS3H.js.map +0 -1
  329. package/dist/web/server/chunks/exports-DLCVjVJM.js.map +0 -1
  330. package/dist/web/server/chunks/hooks.server-CzdMWOsb.js.map +0 -1
  331. package/dist/web/server/chunks/internal-CwN2I5C2.js +0 -66
  332. package/dist/web/server/chunks/internal-CwN2I5C2.js.map +0 -1
  333. package/dist/web/server/chunks/message-queue-BhryIx7W.js.map +0 -1
  334. package/dist/web/server/chunks/popover-trigger-BQJRZ2Xv.js.map +0 -1
  335. package/dist/web/server/chunks/root-L_UzGTpb.js.map +0 -1
  336. package/dist/web/server/chunks/ws-handlers-B_p_71BD.js.map +0 -1
  337. package/tests/server/integration.test.ts +0 -319
  338. package/tests/server/sessions.test.ts +0 -114
  339. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.OA9bot5w.css +0 -1
  340. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.luY-vLwW.css +0 -1
  341. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.s6Kx4oz1.css +0 -1
  342. package/web/.svelte-kit/adapter-bun/chunks/client.js +0 -30
  343. package/web/.svelte-kit/adapter-bun/chunks/environment.js +0 -34
  344. package/web/.svelte-kit/adapter-bun/chunks/index.js +0 -58
  345. package/web/.svelte-kit/adapter-bun/chunks/shared.js +0 -1482
  346. package/web/.svelte-kit/output/client/_app/immutable/assets/0._7q2-APf.css +0 -1
  347. package/web/.svelte-kit/output/client/_app/immutable/assets/2.s6Kx4oz1.css +0 -1
  348. package/web/.svelte-kit/output/client/_app/immutable/assets/3.luY-vLwW.css +0 -1
  349. package/web/.svelte-kit/output/client/_app/immutable/chunks/0aSLiJ5c.js +0 -3
  350. package/web/.svelte-kit/output/client/_app/immutable/chunks/BIuG5Qqu.js +0 -1
  351. package/web/.svelte-kit/output/client/_app/immutable/chunks/CGb10hB5.js +0 -1
  352. package/web/.svelte-kit/output/client/_app/immutable/chunks/D-34IVnr.js +0 -1
  353. package/web/.svelte-kit/output/client/_app/immutable/chunks/D7LHlC1M.js +0 -2
  354. package/web/.svelte-kit/output/client/_app/immutable/chunks/DTyl4EVg.js +0 -1
  355. package/web/.svelte-kit/output/client/_app/immutable/chunks/pkYTw7Ge.js +0 -69
  356. package/web/.svelte-kit/output/client/_app/immutable/entry/app.B5KQK7RI.js +0 -2
  357. package/web/.svelte-kit/output/client/_app/immutable/entry/start.C0ocDcXk.js +0 -1
  358. package/web/.svelte-kit/output/client/_app/immutable/nodes/0.D9NtpoCP.js +0 -1
  359. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.oevNjH1i.js +0 -1
  360. package/web/.svelte-kit/output/client/_app/immutable/nodes/2.8u-solqb.js +0 -1
  361. package/web/.svelte-kit/output/client/_app/immutable/nodes/3.CtE6Zacp.js +0 -98
  362. package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.OA9bot5w.css +0 -1
  363. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.luY-vLwW.css +0 -1
  364. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.s6Kx4oz1.css +0 -1
  365. package/web/.svelte-kit/output/server/chunks/client.js +0 -30
  366. package/web/.svelte-kit/output/server/chunks/environment.js +0 -34
  367. package/web/.svelte-kit/output/server/chunks/index.js +0 -58
  368. package/web/.svelte-kit/output/server/chunks/shared.js +0 -1482
  369. package/web/src/lib/components/TerminalRenderer.svelte +0 -101
package/CLAUDE.md CHANGED
@@ -14,7 +14,7 @@ bun run dev:serve --host 0.0.0.0 # LAN access
14
14
 
15
15
  **HMR handles most changes automatically** - no restart needed for Svelte components, stores, routes, or API endpoints. Only `vite.config.ts` changes require a restart.
16
16
 
17
- After each change, check tmux pane `0:1.1` to verify HMR worked. If the server died, restart it. Do not start a new server if one is already running. If the pane reference is wrong, find the correct one and update this file.
17
+ After each change, check tmux pane `dev:1.1` to verify HMR worked. If the server died, restart it. Do not start a new server if one is already running. If the pane reference is wrong, find the correct one and update this file.
18
18
 
19
19
  ## Build & Development Commands
20
20
 
package/README.md CHANGED
@@ -128,6 +128,19 @@ sudo loginctl enable-linger $USER # ONE-TIME sudo: keeps service runni
128
128
 
129
129
  Logs: `journalctl --user -u claude-mux.service -f`
130
130
 
131
+ ### Secrets / API keys (Groq voice, etc.)
132
+
133
+ The unit reads `~/.config/claude-mux/env` if present (`EnvironmentFile=-`). Put any `KEY=value` env vars there — they survive restarts and stay out of the unit file. Voice transcription needs `GROQ_API_KEY`:
134
+
135
+ ```bash
136
+ umask 077
137
+ mkdir -p ~/.config/claude-mux
138
+ printf 'GROQ_API_KEY=gsk_...\n' > ~/.config/claude-mux/env
139
+ systemctl --user restart claude-mux.service
140
+ ```
141
+
142
+ Edit the file then `systemctl --user restart claude-mux.service` to pick up changes.
143
+
131
144
  ---
132
145
 
133
146
  ## Quick Start
package/dist/app.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function App(): import("react/jsx-runtime").JSX.Element;
1
+ import React from "react";
2
+ export declare function App(): React.JSX.Element;
2
3
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,GAAG,4CAyKlB"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAkBhE,wBAAgB,GAAG,sBAyKlB"}
@@ -0,0 +1,15 @@
1
+ export type CommandKind = "builtin" | "command" | "skill" | "agent";
2
+ export interface DiscoveredCommand {
3
+ /** Display name, e.g. "/linus", "/ak:p1", "@code-reviewer" */
4
+ name: string;
5
+ /** Text inserted into the prompt when selected */
6
+ insert: string;
7
+ kind: CommandKind;
8
+ /** "builtin" | "user" | "project" | "plugin:<id>" */
9
+ source: string;
10
+ description: string;
11
+ /** Absolute path of the defining file (absent for builtins) */
12
+ path?: string;
13
+ }
14
+ export declare function discoverCommands(cwd?: string): DiscoveredCommand[];
15
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/claude/commands.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA0MD,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA8BlE"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Discover slash commands, skills, and subagents available to Claude Code.
3
+ *
4
+ * Sources scanned (mirrors Claude Code's own lookup):
5
+ * - built-in slash commands (static list)
6
+ * - ~/.claude/commands/**\/*.md (user commands)
7
+ * - ~/.claude/skills/<name>/SKILL.md (user skills)
8
+ * - ~/.claude/agents/*.md (user subagents)
9
+ * - <cwd>/.claude/{commands,skills,agents} (project-scoped)
10
+ * - enabled plugins from ~/.claude/plugins/installed_plugins.json
11
+ * → <installPath>/{commands,skills,agents}, namespaced as `plugin:name`
12
+ */
13
+ import { existsSync, readdirSync, readFileSync, statSync } from "fs";
14
+ import { homedir } from "os";
15
+ import { basename, dirname, join, relative } from "path";
16
+ const BUILTINS = [
17
+ ["/clear", "Clear conversation history"],
18
+ ["/compact", "Compact conversation (optional focus instructions)"],
19
+ ["/config", "Open settings"],
20
+ ["/cost", "Show token usage and cost"],
21
+ ["/context", "Show context window usage"],
22
+ ["/doctor", "Check Claude Code installation health"],
23
+ ["/exit", "Exit Claude Code"],
24
+ ["/fast", "Toggle fast mode"],
25
+ ["/help", "Show help and available commands"],
26
+ ["/init", "Initialize CLAUDE.md for this project"],
27
+ ["/login", "Sign in"],
28
+ ["/logout", "Sign out"],
29
+ ["/mcp", "Manage MCP servers"],
30
+ ["/memory", "Edit memory files"],
31
+ ["/model", "Switch model"],
32
+ ["/permissions", "View and manage permissions"],
33
+ ["/plan", "Enter plan mode"],
34
+ ["/rc", "Remote Control — pair this session with claude.ai"],
35
+ ["/resume", "Resume a previous session"],
36
+ ["/review", "Request a code review"],
37
+ ["/status", "Show session status"],
38
+ ["/terminal-setup", "Configure terminal key bindings"],
39
+ ["/vim", "Toggle vim mode"],
40
+ ["/agents", "Manage subagents"],
41
+ ["/plugin", "Manage plugins"],
42
+ ["/hooks", "Manage hooks"],
43
+ ["/add-dir", "Add a working directory"],
44
+ ["/bug", "Report a bug"],
45
+ ["/release-notes", "Show release notes"],
46
+ ["/rewind", "Rewind conversation / files to a checkpoint"],
47
+ ["/skills", "List available skills"],
48
+ ["/tasks", "Show background tasks"],
49
+ ["/statusline", "Configure status line"],
50
+ ["/workflows", "Show running workflows"],
51
+ ];
52
+ /** Parse a minimal YAML frontmatter block: returns name/description if present. */
53
+ function parseFrontmatter(content) {
54
+ if (!content.startsWith("---"))
55
+ return {};
56
+ const end = content.indexOf("\n---", 3);
57
+ if (end === -1)
58
+ return {};
59
+ const block = content.slice(3, end);
60
+ const out = {};
61
+ const lines = block.split("\n");
62
+ for (let i = 0; i < lines.length; i++) {
63
+ const m = lines[i].match(/^(name|description):\s*(.*)$/);
64
+ if (!m)
65
+ continue;
66
+ const key = m[1];
67
+ let val = m[2].trim();
68
+ if (val === "|" || val === ">" || val === "|-" || val === ">-") {
69
+ // Block scalar — gather indented continuation lines
70
+ const parts = [];
71
+ while (i + 1 < lines.length && /^\s+\S/.test(lines[i + 1])) {
72
+ parts.push(lines[++i].trim());
73
+ }
74
+ val = parts.join(" ");
75
+ }
76
+ else {
77
+ val = val.replace(/^(['"])(.*)\1$/, "$2");
78
+ }
79
+ out[key] = val;
80
+ }
81
+ return out;
82
+ }
83
+ function firstMeaningfulLine(content) {
84
+ const body = content.startsWith("---")
85
+ ? content.slice(content.indexOf("\n---", 3) + 4)
86
+ : content;
87
+ for (const raw of body.split("\n")) {
88
+ const line = raw.replace(/^#+\s*/, "").trim();
89
+ if (line)
90
+ return line.slice(0, 200);
91
+ }
92
+ return "";
93
+ }
94
+ function readMd(path) {
95
+ try {
96
+ const content = readFileSync(path, "utf-8");
97
+ const fm = parseFrontmatter(content);
98
+ return { name: fm.name, description: fm.description || firstMeaningfulLine(content) };
99
+ }
100
+ catch {
101
+ return { description: "" };
102
+ }
103
+ }
104
+ function walkMd(dir, out = []) {
105
+ if (!existsSync(dir))
106
+ return out;
107
+ let entries;
108
+ try {
109
+ entries = readdirSync(dir);
110
+ }
111
+ catch {
112
+ return out;
113
+ }
114
+ for (const e of entries) {
115
+ const p = join(dir, e);
116
+ let st;
117
+ try {
118
+ st = statSync(p);
119
+ }
120
+ catch {
121
+ continue;
122
+ }
123
+ if (st.isDirectory())
124
+ walkMd(p, out);
125
+ else if (e.endsWith(".md"))
126
+ out.push(p);
127
+ }
128
+ return out;
129
+ }
130
+ /** Commands dir: every .md file → command; subdirs namespace as `dir:name`. */
131
+ function scanCommands(dir, source, prefix = "") {
132
+ return walkMd(dir).map((file) => {
133
+ const rel = relative(dir, file).replace(/\.md$/, "");
134
+ const parts = rel.split(/[\\/]/);
135
+ const bare = parts.length > 1 ? `${parts.slice(0, -1).join(":")}:${parts.at(-1)}` : parts[0];
136
+ const name = prefix ? `${prefix}:${bare}` : bare;
137
+ const md = readMd(file);
138
+ return {
139
+ name: `/${name}`,
140
+ insert: `/${name}`,
141
+ kind: "command",
142
+ source,
143
+ description: md.description,
144
+ path: file,
145
+ };
146
+ });
147
+ }
148
+ /** Skills dir: every SKILL.md under it (any depth) → skill named by frontmatter or folder. */
149
+ function scanSkills(dir, source, prefix = "") {
150
+ return walkMd(dir)
151
+ .filter((f) => basename(f) === "SKILL.md")
152
+ .map((file) => {
153
+ const md = readMd(file);
154
+ const bare = md.name || basename(dirname(file));
155
+ const name = prefix ? `${prefix}:${bare}` : bare;
156
+ return {
157
+ name: `/${name}`,
158
+ insert: `/${name}`,
159
+ kind: "skill",
160
+ source,
161
+ description: md.description,
162
+ path: file,
163
+ };
164
+ });
165
+ }
166
+ /** Agents dir: every .md → subagent (invoked by name / @mention). */
167
+ function scanAgents(dir, source) {
168
+ return walkMd(dir).map((file) => {
169
+ const md = readMd(file);
170
+ const name = md.name || basename(file, ".md");
171
+ return {
172
+ name: `@${name}`,
173
+ insert: `@${name}`,
174
+ kind: "agent",
175
+ source,
176
+ description: md.description,
177
+ path: file,
178
+ };
179
+ });
180
+ }
181
+ function scanRoot(root, source, prefix = "") {
182
+ return [
183
+ ...scanCommands(join(root, "commands"), source, prefix),
184
+ ...scanSkills(join(root, "skills"), source, prefix),
185
+ ...scanAgents(join(root, "agents"), source),
186
+ ];
187
+ }
188
+ function enabledPlugins(claudeDir) {
189
+ const installedPath = join(claudeDir, "plugins", "installed_plugins.json");
190
+ if (!existsSync(installedPath))
191
+ return [];
192
+ let installed;
193
+ try {
194
+ installed = JSON.parse(readFileSync(installedPath, "utf-8"));
195
+ }
196
+ catch {
197
+ return [];
198
+ }
199
+ let enabled = {};
200
+ try {
201
+ const settings = JSON.parse(readFileSync(join(claudeDir, "settings.json"), "utf-8"));
202
+ enabled = settings.enabledPlugins || {};
203
+ }
204
+ catch {
205
+ // no settings → treat all installed as enabled
206
+ }
207
+ const out = [];
208
+ for (const [id, entries] of Object.entries(installed.plugins || {})) {
209
+ if (id in enabled && enabled[id] === false)
210
+ continue;
211
+ const entry = entries?.[0];
212
+ if (!entry?.installPath || !existsSync(entry.installPath))
213
+ continue;
214
+ out.push({ id, name: id.split("@")[0], installPath: entry.installPath });
215
+ }
216
+ return out;
217
+ }
218
+ export function discoverCommands(cwd) {
219
+ const claudeDir = join(homedir(), ".claude");
220
+ const result = BUILTINS.map(([name, description]) => ({
221
+ name,
222
+ insert: name,
223
+ kind: "builtin",
224
+ source: "builtin",
225
+ description,
226
+ }));
227
+ result.push(...scanRoot(claudeDir, "user"));
228
+ if (cwd && existsSync(join(cwd, ".claude"))) {
229
+ result.push(...scanRoot(join(cwd, ".claude"), "project"));
230
+ }
231
+ for (const plugin of enabledPlugins(claudeDir)) {
232
+ result.push(...scanRoot(plugin.installPath, `plugin:${plugin.name}`, plugin.name));
233
+ }
234
+ // Dedup by name, first wins (project > user? Claude Code prefers project; we scanned user first
235
+ // so flip precedence here by keeping the last project entry)
236
+ const byName = new Map();
237
+ for (const c of result) {
238
+ const existing = byName.get(c.name);
239
+ if (!existing || (existing.source === "user" && c.source === "project")) {
240
+ byName.set(c.name, c);
241
+ }
242
+ }
243
+ return [...byName.values()];
244
+ }
245
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/claude/commands.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import React from "react";
1
2
  interface HeaderProps {
2
3
  claudeCount: number;
3
4
  tmuxCount: number;
4
5
  }
5
- export declare function Header({ claudeCount, tmuxCount }: HeaderProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Header({ claudeCount, tmuxCount }: HeaderProps): React.JSX.Element;
6
7
  export {};
7
8
  //# sourceMappingURL=Header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,WAAW,2CAuB7D"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,WAAW,qBAuB7D"}
@@ -1,6 +1,7 @@
1
+ import React from "react";
1
2
  interface HelpDialogProps {
2
3
  width?: number;
3
4
  }
4
- export declare function HelpDialog({ width }: HelpDialogProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function HelpDialog({ width }: HelpDialogProps): React.JSX.Element;
5
6
  export {};
6
7
  //# sourceMappingURL=HelpDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HelpDialog.d.ts","sourceRoot":"","sources":["../../src/components/HelpDialog.tsx"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,2CA6BpD"}
1
+ {"version":3,"file":"HelpDialog.d.ts","sourceRoot":"","sources":["../../src/components/HelpDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,qBA6BpD"}
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import type { Session } from "../db/index.js";
2
3
  import type { TmuxSession } from "../tmux/detect.js";
3
4
  export type DisplayItem = {
@@ -12,6 +13,6 @@ interface SessionEntryProps {
12
13
  isSelected: boolean;
13
14
  width?: number;
14
15
  }
15
- export declare function SessionEntry({ item, isSelected, width }: SessionEntryProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function SessionEntry({ item, isSelected, width }: SessionEntryProps): React.JSX.Element;
16
17
  export {};
17
18
  //# sourceMappingURL=SessionEntry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionEntry.d.ts","sourceRoot":"","sources":["../../src/components/SessionEntry.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBrD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AAE/C,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkDD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,iBAAiB,2CAM1E"}
1
+ {"version":3,"file":"SessionEntry.d.ts","sourceRoot":"","sources":["../../src/components/SessionEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBrD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AAE/C,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkDD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,iBAAiB,qBAM1E"}
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  import type { Session } from "../db/index.js";
2
3
  import type { TmuxSession } from "../tmux/detect.js";
3
4
  import { type DisplayItem } from "./SessionEntry.js";
@@ -7,7 +8,7 @@ interface SessionListProps {
7
8
  selectedIndex: number;
8
9
  width?: number;
9
10
  }
10
- export declare function SessionList({ sessions, tmuxSessions, selectedIndex, width }: SessionListProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function SessionList({ sessions, tmuxSessions, selectedIndex, width }: SessionListProps): React.JSX.Element;
11
12
  export declare function getTotalItemCount(sessions: Session[], tmuxSessions: TmuxSession[]): number;
12
13
  export declare function getItemAtIndex(sessions: Session[], tmuxSessions: TmuxSession[], index: number): DisplayItem | null;
13
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../src/components/SessionList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CA0C7F;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAY1F;AAGD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,WAAW,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,WAAW,GAAG,IAAI,CAoBpB"}
1
+ {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../src/components/SessionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,gBAAgB,qBA0C7F;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAY1F;AAGD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,WAAW,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,WAAW,GAAG,IAAI,CAoBpB"}
@@ -1,6 +1,7 @@
1
+ import React from "react";
1
2
  interface StatusBarProps {
2
3
  inTmux: boolean;
3
4
  }
4
- export declare function StatusBar({ inTmux }: StatusBarProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function StatusBar({ inTmux }: StatusBarProps): React.JSX.Element;
5
6
  export {};
6
7
  //# sourceMappingURL=StatusBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,2CAiBnD"}
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,cAAc;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,qBAiBnD"}
@@ -73,7 +73,7 @@ export declare function clearChromeActive(id: string): boolean;
73
73
  */
74
74
  export declare function removeScreenshot(id: string, screenshotPath: string): boolean;
75
75
  /**
76
- * Get all sessions, sorted by priority (permission > waiting > idle > busy).
76
+ * Get all sessions, sorted by ID for stable ordering.
77
77
  */
78
78
  export declare function getAllSessions(): Session[];
79
79
  /**
@@ -173,7 +173,7 @@ export function removeScreenshot(id, screenshotPath) {
173
173
  return true;
174
174
  }
175
175
  /**
176
- * Get all sessions, sorted by priority (permission > waiting > idle > busy).
176
+ * Get all sessions, sorted by ID for stable ordering.
177
177
  */
178
178
  export function getAllSessions() {
179
179
  ensureSessionsDir();
@@ -35,5 +35,12 @@ export declare function getQueueCounts(): Map<string, number>;
35
35
  * covers the case where a message is enqueued while already idle.
36
36
  */
37
37
  export declare function drainQueues(sessions: SessionLike[]): void;
38
+ /**
39
+ * Server-owned drain loop. Runs while any queue is non-empty, independent of
40
+ * whether a dashboard client is connected (the WS refresh loop only runs with
41
+ * clients, which previously left queues stuck once the phone closed the app).
42
+ * State comes straight from the session JSON files written by hooks.
43
+ */
44
+ export declare function ensureDrainLoop(): void;
38
45
  export {};
39
46
  //# sourceMappingURL=message-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/server/message-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACd;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAavG;AA+BD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAOrE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAIjE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAExD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAM9E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAQhG;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,qEAAqE;AACrE,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQpD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAqCzD"}
1
+ {"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/server/message-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACd;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAavG;AAyCD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAQrE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAIjE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAExD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAM9E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAQhG;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,qEAAqE;AACrE,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQpD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAiDzD;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAgBtC"}
@@ -3,6 +3,7 @@
3
3
  * Messages are queued per tmux target and auto-sent when the session goes idle.
4
4
  */
5
5
  import { execFileSync, execSync } from 'child_process';
6
+ import { getAllSessions } from '../db/index.js';
6
7
  // ============================================================================
7
8
  // Shared tmux text injection helper
8
9
  // ============================================================================
@@ -30,12 +31,19 @@ function getGlobalState() {
30
31
  if (!g[GLOBAL_KEY]) {
31
32
  g[GLOBAL_KEY] = {
32
33
  queues: new Map(),
33
- pendingDrain: new Map()
34
+ pendingDrain: new Map(),
35
+ recentlySent: new Map(),
36
+ drainTimer: null
34
37
  };
35
38
  }
36
- return g[GLOBAL_KEY];
39
+ const state = g[GLOBAL_KEY];
40
+ // Backfill fields added after an older module instance created the state (dev HMR)
41
+ state.recentlySent ??= new Map();
42
+ state.drainTimer ??= null;
43
+ return state;
37
44
  }
38
- const { queues, pendingDrain } = getGlobalState();
45
+ const globalState = getGlobalState();
46
+ const { queues, pendingDrain, recentlySent } = globalState;
39
47
  // ============================================================================
40
48
  // Queue operations
41
49
  // ============================================================================
@@ -45,6 +53,7 @@ export function enqueue(target, text) {
45
53
  }
46
54
  const queue = queues.get(target);
47
55
  queue.push({ text, queuedAt: Date.now() });
56
+ ensureDrainLoop();
48
57
  return queue;
49
58
  }
50
59
  export function dequeue(target) {
@@ -114,15 +123,26 @@ export function drainQueues(sessions) {
114
123
  continue;
115
124
  }
116
125
  if (session.state !== 'idle') {
126
+ // Session picked up work (hook flipped state) — clear send guard
117
127
  pendingDrain.delete(target);
128
+ recentlySent.delete(target);
118
129
  continue;
119
130
  }
131
+ // After an auto-send, wait for the session to leave idle (UserPromptSubmit
132
+ // hook) before sending the next message, so two queued messages don't get
133
+ // pasted into the same prompt. Falls back after 10s in case the hook never fires.
134
+ const sentAt = recentlySent.get(target);
135
+ if (sentAt !== undefined) {
136
+ if (now - sentAt < RESEND_FALLBACK_MS)
137
+ continue;
138
+ recentlySent.delete(target);
139
+ }
120
140
  const pendingTime = pendingDrain.get(target);
121
141
  if (pendingTime === undefined) {
122
142
  pendingDrain.set(target, now);
123
143
  continue;
124
144
  }
125
- if (now - pendingTime < 1000)
145
+ if (now - pendingTime < IDLE_GRACE_MS)
126
146
  continue;
127
147
  pendingDrain.delete(target);
128
148
  const message = dequeue(target);
@@ -130,6 +150,7 @@ export function drainQueues(sessions) {
130
150
  continue;
131
151
  try {
132
152
  sendTextToPane(target, message.text);
153
+ recentlySent.set(target, now);
133
154
  console.log(`[queue] Auto-sent queued message to ${target}`);
134
155
  }
135
156
  catch (err) {
@@ -140,4 +161,36 @@ export function drainQueues(sessions) {
140
161
  }
141
162
  }
142
163
  }
164
+ const IDLE_GRACE_MS = 1000;
165
+ const RESEND_FALLBACK_MS = 10_000;
166
+ const DRAIN_INTERVAL_MS = 500;
167
+ /**
168
+ * Server-owned drain loop. Runs while any queue is non-empty, independent of
169
+ * whether a dashboard client is connected (the WS refresh loop only runs with
170
+ * clients, which previously left queues stuck once the phone closed the app).
171
+ * State comes straight from the session JSON files written by hooks.
172
+ */
173
+ export function ensureDrainLoop() {
174
+ if (globalState.drainTimer)
175
+ return;
176
+ globalState.drainTimer = setInterval(() => {
177
+ if (getQueueCounts().size === 0) {
178
+ if (globalState.drainTimer)
179
+ clearInterval(globalState.drainTimer);
180
+ globalState.drainTimer = null;
181
+ return;
182
+ }
183
+ try {
184
+ drainQueues(getAllSessions());
185
+ }
186
+ catch (err) {
187
+ console.error('[queue] drain loop error:', err);
188
+ }
189
+ }, DRAIN_INTERVAL_MS);
190
+ // Don't keep the process alive just for this timer
191
+ globalState.drainTimer.unref?.();
192
+ }
193
+ // Resume draining if queues survived a module reload (dev HMR keeps globalThis)
194
+ if (getQueueCounts().size > 0)
195
+ ensureDrainLoop();
143
196
  //# sourceMappingURL=message-queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/server/message-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/server/message-queue.ts"],"names":[],"mappings":"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"}