mulmoterminal 9.4.0 → 9.6.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 (577) hide show
  1. package/README.md +5 -5
  2. package/bin/agent-bins.js +1 -1
  3. package/bin/cli-args.js +5 -5
  4. package/bin/has-command.js +3 -3
  5. package/bin/mulmoterminal.js +2 -2
  6. package/bin/room.js +1 -1
  7. package/bin/server-supervision.js +2 -2
  8. package/common/agentAccounts.ts +1 -1
  9. package/common/collectionNotifyTarget.ts +1 -1
  10. package/common/collectionPortability.ts +1 -1
  11. package/common/customAgents.ts +1 -1
  12. package/common/dirConfigSource.ts +1 -1
  13. package/common/guiMcpAgents.ts +2 -2
  14. package/common/machineLoad.ts +1 -1
  15. package/common/mobileFiles.ts +1 -1
  16. package/common/playfulEffects.ts +1 -1
  17. package/common/promptHistory.ts +1 -1
  18. package/common/rawContentType.ts +1 -1
  19. package/common/sessionProcesses.ts +1 -1
  20. package/common/sourceExtensions.ts +1 -1
  21. package/common/survivingSessions.ts +1 -1
  22. package/common/toolGroups.ts +6 -2
  23. package/common/transcriptView.ts +1 -1
  24. package/common/worktreeEnv.ts +1 -1
  25. package/dist/assets/{abnfDiagram-YUKMZFIV-DWmlUOJW.js → abnfDiagram-YUKMZFIV-hhgBEMEq.js} +1 -1
  26. package/dist/assets/architecture-WOLXFQ4H-C2eqTYis.js +1 -0
  27. package/dist/assets/{architectureDiagram-47P4ROYG-B8Hgq4Cp.js → architectureDiagram-47P4ROYG-FsL1segb.js} +1 -1
  28. package/dist/assets/{blockDiagram-E7TT5TSB-CIpT6QxM.js → blockDiagram-E7TT5TSB-DzJI6I2Q.js} +1 -1
  29. package/dist/assets/{c4Diagram-CRA5TL53-D_pxzVdZ.js → c4Diagram-CRA5TL53-CtJiRJPi.js} +1 -1
  30. package/dist/assets/channel-BEijHRv-.js +1 -0
  31. package/dist/assets/{chunk-2BW5OAIV-CWuO4jhK.js → chunk-2BW5OAIV-DTyc1chr.js} +1 -1
  32. package/dist/assets/{chunk-3YJQHVM4-BZqOeXYM.js → chunk-3YJQHVM4-SZZtBSbB.js} +1 -1
  33. package/dist/assets/{chunk-4EA7E6EY-BZhm-tyj.js → chunk-4EA7E6EY-Dnh5IiDB.js} +1 -1
  34. package/dist/assets/{chunk-7TKQ45FW-DYTRQAzI.js → chunk-7TKQ45FW-xY5f-VkB.js} +1 -1
  35. package/dist/assets/{chunk-AW2ZBBNX-CmX9OUG5.js → chunk-AW2ZBBNX-CzNEI48Y.js} +1 -1
  36. package/dist/assets/{chunk-DBDB3WZW-C_kRuZ_g.js → chunk-DBDB3WZW-CBaVRp3n.js} +1 -1
  37. package/dist/assets/{chunk-E2ZNV5FY-PMVyl7JW.js → chunk-E2ZNV5FY-D_ZloHYl.js} +1 -1
  38. package/dist/assets/{chunk-EU5HNXII-D6a2T4GB.js → chunk-EU5HNXII-CM48kCcn.js} +1 -1
  39. package/dist/assets/{chunk-FVRAUYC3-Ci8yvNZ9.js → chunk-FVRAUYC3-Cd0tkmQC.js} +1 -1
  40. package/dist/assets/{chunk-HJ2JQQFS-BAo22I2g.js → chunk-HJ2JQQFS-CDIS57pJ.js} +1 -1
  41. package/dist/assets/{chunk-HTAEGDNF-Bztf1TF9.js → chunk-HTAEGDNF-DJINU5Vm.js} +1 -1
  42. package/dist/assets/{chunk-KQW6MTUR-Cpd8uLaz.js → chunk-KQW6MTUR-DPMQ4ZII.js} +1 -1
  43. package/dist/assets/{chunk-NTY3LDVX-DS7EozMm.js → chunk-NTY3LDVX-ABBLvDpj.js} +1 -1
  44. package/dist/assets/{chunk-VPRB5NB3-BsayPsyI.js → chunk-VPRB5NB3-zipI-qki.js} +1 -1
  45. package/dist/assets/{chunk-XC4XBNZT-B9RAkj0_.js → chunk-XC4XBNZT-BjwIS2jF.js} +1 -1
  46. package/dist/assets/{classDiagram-v2-K4WV4PDN-B96anFih.js → classDiagram-v2-K4WV4PDN-Bv6BEoz9.js} +1 -1
  47. package/dist/assets/{cynefin-EF2NZ3EQ-DaRjsqTT.js → cynefin-EF2NZ3EQ-jj2DUfug.js} +1 -1
  48. package/dist/assets/{cynefinDiagram-3GCD6N5R-DmaDXqwQ.js → cynefinDiagram-3GCD6N5R-DmyRL1jR.js} +1 -1
  49. package/dist/assets/{dagre-W4DXFKR2-CCPYaPKW.js → dagre-W4DXFKR2--qRyrnSG.js} +1 -1
  50. package/dist/assets/{diagram-2UJZ2QOL-Bz_0J0xb.js → diagram-2UJZ2QOL--Am2W9eP.js} +1 -1
  51. package/dist/assets/{diagram-OVF4WLC6-DH40v_HT.js → diagram-OVF4WLC6-CrmIKNJ_.js} +1 -1
  52. package/dist/assets/{diagram-PFPMY2P6-Cn3GRglb.js → diagram-PFPMY2P6-Cz4VhlvF.js} +1 -1
  53. package/dist/assets/{diagram-UMYRVEAY-CURAPmRP.js → diagram-UMYRVEAY-C0_OEd0T.js} +1 -1
  54. package/dist/assets/{diagram-YEKJPTXX-Bw5Og2wh.js → diagram-YEKJPTXX-BhLd9EOW.js} +1 -1
  55. package/dist/assets/{diagram-ZIFT7M5P-C2ik6BtG.js → diagram-ZIFT7M5P-tdbeX1GX.js} +1 -1
  56. package/dist/assets/{dist-DEidvvvo.js → dist--M5nyOuA.js} +1 -1
  57. package/dist/assets/{dist-yOm_Z6fs.js → dist-BV1OoWUP.js} +1 -1
  58. package/dist/assets/{dist-DgGnuf0W.js → dist-CsojzGtC.js} +1 -1
  59. package/dist/assets/{dist-Dmvf_2Tb.js → dist-E8f8sfaM.js} +1 -1
  60. package/dist/assets/{dist-DB5NRLDD.js → dist-N2Vfmi62.js} +1 -1
  61. package/dist/assets/{ebnfDiagram-VR2GEFS7-VO3gnkr0.js → ebnfDiagram-VR2GEFS7-D36sVn6o.js} +1 -1
  62. package/dist/assets/{elk-IJKZMXRS-BKUcx8sd.js → elk-IJKZMXRS-Db-K1ezK.js} +1 -1
  63. package/dist/assets/{erDiagram-O2IAPWRE-BwvCT4xl.js → erDiagram-O2IAPWRE-CaVPyGk3.js} +1 -1
  64. package/dist/assets/eventmodeling-K75KTNOO-DYuYDxxo.js +1 -0
  65. package/dist/assets/flowDiagram-OXPTDLAJ-B4CYTSfJ.js +1 -0
  66. package/dist/assets/{ganttDiagram-R7TSEDQI-Bvl8cC1J.js → ganttDiagram-R7TSEDQI-B_qO4Nhi.js} +1 -1
  67. package/dist/assets/{gitGraph-VSP46ZUC-FUMBbzG-.js → gitGraph-VSP46ZUC-DXO4HvcW.js} +1 -1
  68. package/dist/assets/{gitGraphDiagram-XJZIOB7I-C1qKuleL.js → gitGraphDiagram-XJZIOB7I-DeiAOFyP.js} +1 -1
  69. package/dist/assets/index-BHPjYPj5.css +1 -0
  70. package/dist/assets/{index-DzaL9uvY.js → index-DrkgQTL9.js} +362 -362
  71. package/dist/assets/{info-OHQRW6UA-Cx1RvS7j.js → info-OHQRW6UA-W0rraMdj.js} +1 -1
  72. package/dist/assets/{infoDiagram-5W2HQ5XZ-CglvBIZr.js → infoDiagram-5W2HQ5XZ-DBdrFN9s.js} +1 -1
  73. package/dist/assets/{ishikawaDiagram-K3B6WC7H-21mhaWkV.js → ishikawaDiagram-K3B6WC7H-DFmkMZqA.js} +1 -1
  74. package/dist/assets/{journeyDiagram-COXZFDF6-mjRSLdQz.js → journeyDiagram-COXZFDF6-F8WZ7LhG.js} +1 -1
  75. package/dist/assets/{kanban-definition-P3RFRI5V-CU9Svbw1.js → kanban-definition-P3RFRI5V-D69TK8UM.js} +1 -1
  76. package/dist/assets/{line-C04Tfuea.js → line-C3UxcAKj.js} +1 -1
  77. package/dist/assets/{manifold-9aFkM3u1.js → manifold-C4_OD6jf.js} +1 -1
  78. package/dist/assets/{mermaid-parser.core--3w-WUbe.js → mermaid-parser.core-D9bG0VLG.js} +3 -3
  79. package/dist/assets/{mermaid.core-Dd_Uhv_d.js → mermaid.core-xdDqFngm.js} +4 -4
  80. package/dist/assets/{mindmap-definition-LZFPQGKD-CbW_yTNZ.js → mindmap-definition-LZFPQGKD-D0XqFq8l.js} +1 -1
  81. package/dist/assets/{packet-JDAUHWVQ-BXURqtlo.js → packet-JDAUHWVQ-xlLarQgj.js} +1 -1
  82. package/dist/assets/{pegDiagram-BGZESJAR-DSEUb-Of.js → pegDiagram-BGZESJAR-CYX1PF0A.js} +1 -1
  83. package/dist/assets/{pie-XZMESJXO-DjJ-azB2.js → pie-XZMESJXO-4GeXkqd6.js} +1 -1
  84. package/dist/assets/{pieDiagram-CAPJLFHJ-scI7bSEU.js → pieDiagram-CAPJLFHJ-CHInvczR.js} +1 -1
  85. package/dist/assets/{quadrantDiagram-GDMTTRAM-PNFCt89r.js → quadrantDiagram-GDMTTRAM-DTNouAH7.js} +1 -1
  86. package/dist/assets/{radar-ABXABTNO-L-Dw6KMl.js → radar-ABXABTNO-Ccdu3jGM.js} +1 -1
  87. package/dist/assets/{railroad-I3PHUGI6-BEAUsBZw.js → railroad-I3PHUGI6-nD7Lif0z.js} +1 -1
  88. package/dist/assets/railroad-abnf-LNEFI6M7-CUhu0O-Q.js +1 -0
  89. package/dist/assets/railroad-ebnf-DWYD2UWJ-DtcWz2W3.js +1 -0
  90. package/dist/assets/railroad-peg-JR7BVNR7-uhtRt6Pv.js +1 -0
  91. package/dist/assets/{railroadDiagram-SM67HX2B-BGvE-m81.js → railroadDiagram-SM67HX2B-C3VcwA1y.js} +1 -1
  92. package/dist/assets/{requirementDiagram-X7JNWC4A-7fmJx8OJ.js → requirementDiagram-X7JNWC4A-BEJRea8N.js} +1 -1
  93. package/dist/assets/{sankeyDiagram-UM26HJRW-MpHXOOu7.js → sankeyDiagram-UM26HJRW-BfuAg96e.js} +1 -1
  94. package/dist/assets/{sequenceDiagram-ZO4K6R2Y-BZi27q-9.js → sequenceDiagram-ZO4K6R2Y-CC6kNJnO.js} +1 -1
  95. package/dist/assets/{stateDiagram-v2-TBUQTH76-75Ru1bh5.js → stateDiagram-v2-TBUQTH76-CLmvvBWT.js} +1 -1
  96. package/dist/assets/{swimlanes-N4OXWK64-CdHEof1l.js → swimlanes-N4OXWK64-BTH3MSUE.js} +1 -1
  97. package/dist/assets/swimlanesDiagram-K3J5GTZL-mPXto8oK.js +8 -0
  98. package/dist/assets/{timeline-definition-YOQAKGHF-Du_4BiF0.js → timeline-definition-YOQAKGHF-B0y0Ek2u.js} +1 -1
  99. package/dist/assets/{treeView-D4JQ5SDB-CgXVgqsW.js → treeView-D4JQ5SDB-Cy-ron95.js} +1 -1
  100. package/dist/assets/{treemap-SAJKECNS-DSBvk8eX.js → treemap-SAJKECNS-nOFGvES9.js} +1 -1
  101. package/dist/assets/{usecaseDiagram-VIAY4XPW-1IDwuiBz.js → usecaseDiagram-VIAY4XPW-CSx_2lRT.js} +1 -1
  102. package/dist/assets/{vennDiagram-BLWOH2XV-BF_DWzBo.js → vennDiagram-BLWOH2XV-BLdAnXCX.js} +1 -1
  103. package/dist/assets/{wardley-7MLQ67FV-DBHhJ4uQ.js → wardley-7MLQ67FV-BBijlArL.js} +1 -1
  104. package/dist/assets/{wardleyDiagram-YMQ3BMBF-CZDA-U1D.js → wardleyDiagram-YMQ3BMBF-C7OyXDn4.js} +1 -1
  105. package/dist/assets/{xychartDiagram-TAQBALBS-txrLzFhj.js → xychartDiagram-TAQBALBS-CxRLvuvo.js} +1 -1
  106. package/dist/index.html +2 -2
  107. package/docs/guide/en/v9.2.0.md +6 -0
  108. package/docs/guide/en/v9.5.0.md +59 -0
  109. package/docs/guide/en/v9.6.0.md +64 -0
  110. package/docs/guide/ja/v9.2.0.md +5 -0
  111. package/docs/guide/ja/v9.5.0.md +58 -0
  112. package/docs/guide/ja/v9.6.0.md +58 -0
  113. package/package.json +3 -1
  114. package/plugins/plugins.json +2 -1
  115. package/server/agents/agent-availability.ts +1 -1
  116. package/server/agents/agent-session-title.ts +10 -10
  117. package/server/agents/{antigravity-mcp.ts → antigravity/antigravity-mcp.ts} +6 -6
  118. package/server/agents/{antigravity-session.ts → antigravity/antigravity-session.ts} +2 -2
  119. package/server/agents/{antigravity-sessions.ts → antigravity/antigravity-sessions.ts} +3 -3
  120. package/server/agents/{antigravity-skills.ts → antigravity/antigravity-skills.ts} +3 -3
  121. package/server/agents/{antigravity-usage.ts → antigravity/antigravity-usage.ts} +2 -2
  122. package/server/agents/{antigravity.ts → antigravity/antigravity.ts} +1 -1
  123. package/server/agents/{claude-args.ts → claude/claude-args.ts} +1 -1
  124. package/server/agents/{claude-help-probe.ts → claude/claude-help-probe.ts} +4 -4
  125. package/server/agents/{claude.ts → claude/claude.ts} +2 -2
  126. package/server/agents/{codex-activity.ts → codex/codex-activity.ts} +4 -4
  127. package/server/agents/{codex-events.ts → codex/codex-events.ts} +1 -1
  128. package/server/agents/{codex-hook.ts → codex/codex-hook.ts} +1 -1
  129. package/server/agents/{codex-rate-limits.ts → codex/codex-rate-limits.ts} +3 -3
  130. package/server/agents/{codex-rollout.ts → codex/codex-rollout.ts} +1 -1
  131. package/server/agents/{codex-session.ts → codex/codex-session.ts} +4 -4
  132. package/server/agents/{codex-sessions.ts → codex/codex-sessions.ts} +5 -5
  133. package/server/agents/{codex-skills.ts → codex/codex-skills.ts} +3 -3
  134. package/server/agents/{codex-thread-names.ts → codex/codex-thread-names.ts} +1 -1
  135. package/server/agents/{codex-usage.ts → codex/codex-usage.ts} +3 -3
  136. package/server/agents/{codex-user-turn.ts → codex/codex-user-turn.ts} +1 -1
  137. package/server/agents/{codex.ts → codex/codex.ts} +1 -1
  138. package/server/agents/{copilot-hook.ts → copilot/copilot-hook.ts} +2 -2
  139. package/server/agents/{copilot-hooks-file.ts → copilot/copilot-hooks-file.ts} +8 -8
  140. package/server/agents/{copilot-mcp.ts → copilot/copilot-mcp.ts} +1 -1
  141. package/server/agents/{copilot-sessions.ts → copilot/copilot-sessions.ts} +3 -3
  142. package/server/agents/{copilot.ts → copilot/copilot.ts} +1 -1
  143. package/server/agents/{cursor-hook.ts → cursor/cursor-hook.ts} +2 -2
  144. package/server/agents/{cursor-hooks-file.ts → cursor/cursor-hooks-file.ts} +7 -7
  145. package/server/agents/{cursor-last-turn.ts → cursor/cursor-last-turn.ts} +2 -2
  146. package/server/agents/{cursor-mcp.ts → cursor/cursor-mcp.ts} +7 -7
  147. package/server/agents/{cursor-sessions.ts → cursor/cursor-sessions.ts} +3 -3
  148. package/server/agents/{cursor-usage.ts → cursor/cursor-usage.ts} +3 -3
  149. package/server/agents/{cursor.ts → cursor/cursor.ts} +1 -1
  150. package/server/agents/git-exclude.ts +1 -1
  151. package/server/agents/{grok-mcp.ts → grok/grok-mcp.ts} +4 -4
  152. package/server/agents/{grok-session.ts → grok/grok-session.ts} +1 -1
  153. package/server/agents/{grok-sessions.ts → grok/grok-sessions.ts} +4 -4
  154. package/server/agents/{grok-usage.ts → grok/grok-usage.ts} +4 -4
  155. package/server/agents/{grok.ts → grok/grok.ts} +1 -1
  156. package/server/agents/machine-global-hooks.ts +2 -2
  157. package/server/agents/{gui-mcp-bridge.ts → mcp/gui-mcp-bridge.ts} +2 -2
  158. package/server/agents/{mcp-config-file.ts → mcp/mcp-config-file.ts} +3 -3
  159. package/server/agents/{muse-mcp.ts → muse/muse-mcp.ts} +7 -7
  160. package/server/agents/{muse-session.ts → muse/muse-session.ts} +2 -2
  161. package/server/agents/{muse-usage.ts → muse/muse-usage.ts} +3 -3
  162. package/server/agents/{muse.ts → muse/muse.ts} +1 -1
  163. package/server/agents/{probe-session.spec.ts → probe/probe-session.spec.ts} +1 -1
  164. package/server/agents/{probe-stall.ts → probe/probe-stall.ts} +1 -1
  165. package/server/agents/{probe-transcript.spec.ts → probe/probe-transcript.spec.ts} +2 -2
  166. package/server/agents/{probe-transcript.ts → probe/probe-transcript.ts} +4 -4
  167. package/server/agents/{account-rate-limits.ts → rate-limit/account-rate-limits.ts} +4 -4
  168. package/server/agents/{rate-limit-persist.ts → rate-limit/rate-limit-persist.ts} +4 -4
  169. package/server/agents/{rate-limit-probe.spec.ts → rate-limit/rate-limit-probe.spec.ts} +19 -4
  170. package/server/agents/{rate-limit-probe.ts → rate-limit/rate-limit-probe.ts} +13 -3
  171. package/server/agents/{rate-limit-routes.ts → rate-limit/rate-limit-routes.ts} +1 -1
  172. package/server/agents/rate-limit/rate-limit-service.spec.ts +39 -0
  173. package/server/agents/{rate-limit-service.ts → rate-limit/rate-limit-service.ts} +17 -17
  174. package/server/agents/{rate-limit-store.ts → rate-limit/rate-limit-store.ts} +2 -2
  175. package/server/agents/registry.ts +7 -7
  176. package/server/agents/{token-assignment.ts → token/token-assignment.ts} +2 -2
  177. package/server/agents/{token-choice.ts → token/token-choice.ts} +1 -1
  178. package/server/agents/{token-rotation-service.ts → token/token-rotation-service.ts} +7 -7
  179. package/server/agents/{token-secret.ts → token/token-secret.ts} +2 -2
  180. package/server/backends/boot-backends.ts +15 -15
  181. package/server/backends/{calendarPush.ts → calendar/calendarPush.ts} +2 -2
  182. package/server/backends/{calendarPushResult.ts → calendar/calendarPushResult.ts} +1 -1
  183. package/server/backends/{calendarRefresh.ts → calendar/calendarRefresh.ts} +2 -2
  184. package/server/backends/{calendarRefreshResult.ts → calendar/calendarRefreshResult.ts} +1 -1
  185. package/server/backends/{google.ts → calendar/google.ts} +3 -3
  186. package/server/backends/{collectionActionGuards.ts → collections/collectionActionGuards.ts} +1 -1
  187. package/server/backends/{collectionActionIndex.ts → collections/collectionActionIndex.ts} +1 -1
  188. package/server/backends/{collectionActionIndexRoute.ts → collections/collectionActionIndexRoute.ts} +1 -1
  189. package/server/backends/{collectionNotifierAdapter.ts → collections/collectionNotifierAdapter.ts} +2 -2
  190. package/server/backends/{collectionSelfContainment.ts → collections/collectionSelfContainment.ts} +3 -3
  191. package/server/backends/{collectionWatchers.ts → collections/collectionWatchers.ts} +2 -2
  192. package/server/backends/{collections.ts → collections/collections.ts} +10 -10
  193. package/server/backends/{customViewRoutes.ts → collections/customViewRoutes.ts} +3 -3
  194. package/server/backends/{remoteView.ts → collections/remoteView.ts} +1 -1
  195. package/server/backends/{sharedCollections.ts → collections/sharedCollections.ts} +1 -1
  196. package/server/backends/{stagedSkills.ts → collections/stagedSkills.ts} +3 -3
  197. package/server/backends/{thumbnailStore.ts → collections/thumbnailStore.ts} +3 -3
  198. package/server/backends/{viewToken.ts → collections/viewToken.ts} +2 -2
  199. package/server/backends/{feed-worker-options.ts → feeds/feed-worker-options.ts} +1 -1
  200. package/server/backends/{feeds-worker.ts → feeds/feeds-worker.ts} +5 -5
  201. package/server/backends/{feeds.ts → feeds/feeds.ts} +4 -4
  202. package/server/backends/{fileChange.ts → files/fileChange.ts} +6 -6
  203. package/server/backends/{fileOps.ts → files/fileOps.ts} +3 -3
  204. package/server/backends/{files.ts → files/files.ts} +2 -2
  205. package/server/backends/{filesPage.ts → files/filesPage.ts} +3 -3
  206. package/server/backends/{openPath.ts → files/openPath.ts} +4 -4
  207. package/server/backends/{presentPathRoot.ts → files/presentPathRoot.ts} +4 -4
  208. package/server/backends/{rawServingPlan.ts → files/rawServingPlan.ts} +1 -1
  209. package/server/backends/{sourceEditorDispatchRoute.ts → files/sourceEditorDispatchRoute.ts} +1 -1
  210. package/server/backends/{storiesRoot.ts → files/storiesRoot.ts} +1 -1
  211. package/server/backends/{translation.ts → media/translation.ts} +2 -2
  212. package/server/backends/{whisper.ts → media/whisper.ts} +3 -3
  213. package/server/backends/notifier.ts +2 -2
  214. package/server/backends/{artifacts.ts → plugins/artifacts.ts} +2 -2
  215. package/server/backends/{deckList.ts → plugins/deckList.ts} +1 -1
  216. package/server/backends/{html.ts → plugins/html.ts} +6 -6
  217. package/server/backends/{markdown.ts → plugins/markdown.ts} +7 -7
  218. package/server/backends/{mulmoscript.spec.ts → plugins/mulmoscript.spec.ts} +4 -4
  219. package/server/backends/{mulmoscript.ts → plugins/mulmoscript.ts} +6 -6
  220. package/server/backends/{shapescript.ts → plugins/shapescript.ts} +4 -4
  221. package/server/backends/{wiki.ts → plugins/wiki.ts} +1 -1
  222. package/server/backends/remoteHost/commandScope.ts +1 -1
  223. package/server/backends/remoteHost/dirIcons.ts +1 -1
  224. package/server/backends/remoteHost/getCollection.spec.ts +1 -1
  225. package/server/backends/remoteHost/getFeed.spec.ts +1 -1
  226. package/server/backends/remoteHost/handlers/getCollection.ts +1 -1
  227. package/server/backends/remoteHost/handlers/getFeed.ts +1 -1
  228. package/server/backends/remoteHost/handlers/getRemoteView.ts +1 -1
  229. package/server/backends/remoteHost/handlers/getRemoteViewItems.ts +1 -1
  230. package/server/backends/remoteHost/handlers/issueWork.ts +1 -1
  231. package/server/backends/remoteHost/handlers/listCollectionProjects.ts +1 -1
  232. package/server/backends/remoteHost/handlers/listFeeds.ts +1 -1
  233. package/server/backends/remoteHost/handlers/listSkills.ts +3 -3
  234. package/server/backends/remoteHost/handlers/mobileFiles.ts +2 -2
  235. package/server/backends/remoteHost/handlers/mutateRemoteView.ts +2 -2
  236. package/server/backends/remoteHost/handlers.spec.ts +1 -1
  237. package/server/backends/remoteHost/hostBindings.ts +5 -5
  238. package/server/backends/remoteHost/hostScreens.ts +6 -6
  239. package/server/backends/remoteHost/hostSessionList.ts +5 -5
  240. package/server/backends/remoteHost/listSkillsSession.spec.ts +1 -1
  241. package/server/backends/remoteHost/mobileFileProject.ts +1 -1
  242. package/server/backends/remoteHost/mobileFileWalk.ts +2 -2
  243. package/server/backends/remoteHost/pluginSkills.ts +1 -1
  244. package/server/backends/remoteHost/sessionActivity.ts +1 -1
  245. package/server/backends/remoteHost/skills.ts +3 -3
  246. package/server/backends/remoteHost/terminalScreen.ts +1 -1
  247. package/server/backends/{scheduled-run.ts → scheduler/scheduled-run.ts} +1 -1
  248. package/server/backends/{scheduler-adapter.ts → scheduler/scheduler-adapter.ts} +1 -1
  249. package/server/backends/{scheduler-boot.ts → scheduler/scheduler-boot.ts} +2 -2
  250. package/server/backends/{scheduler-state-seed.ts → scheduler/scheduler-state-seed.ts} +1 -1
  251. package/server/backends/{scheduler.ts → scheduler/scheduler.ts} +3 -3
  252. package/server/backends/sharedApp/ensureAid.ts +1 -1
  253. package/server/backends/sharedApp/headlessPreview.ts +1 -1
  254. package/server/backends/sharedApp/participate/registry.ts +1 -1
  255. package/server/backends/{sharedAppPreviewRoutes.ts → sharedApp/sharedAppPreviewRoutes.ts} +11 -11
  256. package/server/backends/{skillCatalog.ts → skills/skillCatalog.ts} +5 -5
  257. package/server/backends/{skillsSh.ts → skills/skillsSh.ts} +1 -1
  258. package/server/backends/workspaceSetup.ts +2 -2
  259. package/server/blueprint/wiring.ts +3 -3
  260. package/server/campaign/campaign-store.ts +1 -1
  261. package/server/campaign/claim-rules.ts +2 -2
  262. package/server/cli-google.ts +2 -2
  263. package/server/cli-init.ts +1 -1
  264. package/server/config/{agent-bins.ts → agent/agent-bins.ts} +8 -8
  265. package/server/config/{agent-entry-routes.ts → agent/agent-entry-routes.ts} +6 -6
  266. package/server/config/{agent-from-argv.ts → agent/agent-from-argv.ts} +2 -2
  267. package/server/config/app-config.ts +3 -3
  268. package/server/config/config-reload.ts +2 -2
  269. package/server/config/config-routes.ts +12 -12
  270. package/server/config/config-schema.ts +1 -1
  271. package/server/config/{cwd-presets.ts → dir/cwd-presets.ts} +8 -8
  272. package/server/config/{dir-background.ts → dir/dir-background.ts} +2 -2
  273. package/server/config/{dir-config-edit.ts → dir/dir-config-edit.ts} +2 -2
  274. package/server/config/{dir-config-write.ts → dir/dir-config-write.ts} +2 -2
  275. package/server/config/{dir-config.ts → dir/dir-config.ts} +17 -17
  276. package/server/config/{dir-file.ts → dir/dir-file.ts} +1 -1
  277. package/server/config/{dir-icon-detect.ts → dir/dir-icon-detect.ts} +4 -4
  278. package/server/config/{dir-icon.ts → dir/dir-icon.ts} +1 -1
  279. package/server/config/{repo-json.ts → dir/repo-json.ts} +4 -4
  280. package/server/config/env.ts +2 -2
  281. package/server/config/{header-button-routes.ts → header/header-button-routes.ts} +3 -3
  282. package/server/config/{header-chip-routes.ts → header/header-chip-routes.ts} +3 -3
  283. package/server/config/{header-config.ts → header/header-config.ts} +6 -6
  284. package/server/config/{header-context.ts → header/header-context.ts} +7 -7
  285. package/server/config/{header-entry-changes.ts → header/header-entry-changes.ts} +4 -4
  286. package/server/config/{header-resolve.ts → header/header-resolve.ts} +1 -1
  287. package/server/config/{header-title.ts → header/header-title.ts} +3 -3
  288. package/server/config/{keymap-binding-route.ts → keymap/keymap-binding-route.ts} +4 -4
  289. package/server/config/{keymap-check.ts → keymap/keymap-check.ts} +2 -2
  290. package/server/config/launch-options.ts +1 -1
  291. package/server/config/on-disk-entry.ts +1 -1
  292. package/server/config/port-from-argv.ts +3 -3
  293. package/server/config/system-task-settings.ts +2 -2
  294. package/server/config/theme-entry-routes.ts +1 -1
  295. package/server/config/workspace.ts +2 -2
  296. package/server/config/{worktree-dir-config.ts → worktree/worktree-dir-config.ts} +5 -5
  297. package/server/config/{worktree-env-log.ts → worktree/worktree-env-log.ts} +1 -1
  298. package/server/config/{worktree-env.ts → worktree/worktree-env.ts} +4 -4
  299. package/server/config/{worktree-task.ts → worktree/worktree-task.ts} +2 -2
  300. package/server/files/documentWatch.ts +1 -1
  301. package/server/files/files-browse.ts +1 -1
  302. package/server/files/files-git-status.ts +1 -1
  303. package/server/files/pathContainment.ts +3 -3
  304. package/server/files/project-files.ts +1 -1
  305. package/server/files/scripts.ts +1 -1
  306. package/server/files/tree-ops.ts +1 -1
  307. package/server/files/wsl.ts +1 -1
  308. package/server/git/git-parse.ts +1 -1
  309. package/server/git/git-status.ts +1 -1
  310. package/server/git/issue-work.ts +2 -2
  311. package/server/git/kill-tree.ts +33 -0
  312. package/server/git/repo-dirs.ts +1 -1
  313. package/server/git/run-tool.ts +100 -0
  314. package/server/git/spawn-collect.ts +5 -21
  315. package/server/git/work-comment.ts +1 -1
  316. package/server/git/worktree-cleanup.ts +4 -4
  317. package/server/git/worktree-diff.ts +1 -1
  318. package/server/git/worktree-routes.ts +2 -2
  319. package/server/git/worktrees.ts +21 -50
  320. package/server/index.ts +63 -63
  321. package/server/infra/{canonical-path.ts → fs/canonical-path.ts} +1 -1
  322. package/server/infra/{fs-cleanup.ts → fs/fs-cleanup.ts} +1 -1
  323. package/server/infra/{host-state-root.ts → fs/host-state-root.ts} +1 -1
  324. package/server/infra/{install-bundled-skills.ts → fs/install-bundled-skills.ts} +9 -9
  325. package/server/infra/{jsonl-file.ts → fs/jsonl-file.ts} +1 -1
  326. package/server/infra/{legacy-cleanup.ts → fs/legacy-cleanup.ts} +2 -2
  327. package/server/infra/{own-assign.ts → fs/own-assign.ts} +1 -1
  328. package/server/infra/{project-root.ts → fs/project-root.ts} +2 -2
  329. package/server/infra/{on-listening.ts → http/on-listening.ts} +10 -10
  330. package/server/infra/http/switch-token-routes.ts +45 -0
  331. package/server/infra/{web-push.ts → http/web-push.ts} +1 -1
  332. package/server/infra/{gui-mcp-registration.ts → process/gui-mcp-registration.ts} +4 -4
  333. package/server/infra/{machine-load.ts → process/machine-load.ts} +1 -1
  334. package/server/infra/{process-guards.ts → process/process-guards.ts} +1 -1
  335. package/server/infra/{server-exit.ts → process/server-exit.ts} +1 -1
  336. package/server/infra/{shutdown.ts → process/shutdown.ts} +2 -2
  337. package/server/infra/{spawnCapture.ts → process/spawnCapture.ts} +1 -1
  338. package/server/infra/{tmux-routes.ts → process/tmux-routes.ts} +4 -4
  339. package/server/infra/{tmux.ts → process/tmux.ts} +6 -6
  340. package/server/infra/{collection-tool.ts → tools/collection-tool.ts} +2 -2
  341. package/server/infra/{collectionToolAid.ts → tools/collectionToolAid.ts} +5 -5
  342. package/server/infra/{collectionToolPortability.ts → tools/collectionToolPortability.ts} +2 -2
  343. package/server/infra/{pluginRuntime.ts → tools/pluginRuntime.ts} +4 -4
  344. package/server/infra/{plugins-registry.ts → tools/plugins-registry.ts} +8 -8
  345. package/server/infra/{shapescript-manage-tool.ts → tools/shapescript-manage-tool.ts} +3 -3
  346. package/server/infra/{shapescript-render-tool.ts → tools/shapescript-render-tool.ts} +2 -2
  347. package/server/infra/{shapescript-stl-tool.ts → tools/shapescript-stl-tool.ts} +2 -2
  348. package/server/infra/{shapescript-usdz-tool.ts → tools/shapescript-usdz-tool.ts} +2 -2
  349. package/server/infra/{shared-app-tool.ts → tools/shared-app-tool.ts} +11 -11
  350. package/server/infra/{use-shared-app-tool.ts → tools/use-shared-app-tool.ts} +18 -9
  351. package/server/mcp/broker.ts +3 -3
  352. package/server/mcp/gui-call-history.ts +4 -4
  353. package/server/rooms/rooms.ts +1 -1
  354. package/server/routes/app-routes.ts +72 -46
  355. package/server/routes/decision-routes.ts +3 -3
  356. package/server/routes/dir-config-entries-route.ts +4 -4
  357. package/server/routes/dir-config-write-route.ts +3 -3
  358. package/server/routes/dir-routes.ts +5 -5
  359. package/server/routes/gui-mcp-routes.ts +3 -3
  360. package/server/routes/hook-routes.ts +15 -15
  361. package/server/routes/issue-work-routes.ts +1 -1
  362. package/server/routes/load-routes.ts +1 -1
  363. package/server/routes/mcp-routes.ts +5 -5
  364. package/server/routes/plugin-routes.ts +29 -21
  365. package/server/routes/process-routes.ts +2 -2
  366. package/server/routes/session-routes.ts +19 -19
  367. package/server/routes/shutdown-routes.ts +1 -1
  368. package/server/routes/skill-catalog-routes.ts +2 -2
  369. package/server/routes/stampCardScope.ts +1 -1
  370. package/server/routes/ws-endpoint-guard.ts +9 -2
  371. package/server/routes/ws-routes.ts +35 -40
  372. package/server/session/{account-log.ts → accounts/account-log.ts} +1 -1
  373. package/server/session/{account-mcp.ts → accounts/account-mcp.ts} +3 -3
  374. package/server/session/{account-sessions.ts → accounts/account-sessions.ts} +4 -4
  375. package/server/session/{activity-flag.ts → activity/activity-flag.ts} +1 -1
  376. package/server/session/{activity-hook.ts → activity/activity-hook.ts} +1 -1
  377. package/server/session/{activity-state.ts → activity/activity-state.ts} +1 -1
  378. package/server/session/{activity-transition.ts → activity/activity-transition.ts} +2 -2
  379. package/server/session/{agent-badges.ts → activity/agent-badges.ts} +20 -20
  380. package/server/session/{codex-activity-track.ts → activity/codex-activity-track.ts} +1 -1
  381. package/server/session/{codex-activity-watch.ts → activity/codex-activity-watch.ts} +1 -1
  382. package/server/session/{completion-hooks.ts → activity/completion-hooks.ts} +1 -1
  383. package/server/session/{header-hook.ts → activity/header-hook.ts} +1 -1
  384. package/server/session/{heat-track.ts → activity/heat-track.ts} +1 -1
  385. package/server/session/{heat-watch.ts → activity/heat-watch.ts} +3 -3
  386. package/server/session/{task-push.ts → activity/task-push.ts} +8 -8
  387. package/server/session/{taskPushRules.ts → activity/taskPushRules.ts} +1 -1
  388. package/server/session/cost.ts +2 -2
  389. package/server/session/credentials/credential-announce.ts +22 -0
  390. package/server/session/credentials/credential-frame.ts +20 -0
  391. package/server/session/{limit-rotation.ts → credentials/limit-rotation.ts} +2 -2
  392. package/server/session/{rotation-notice.ts → credentials/rotation-notice.ts} +1 -0
  393. package/server/session/{session-credential.ts → credentials/session-credential.ts} +2 -2
  394. package/server/session/credentials/switch-token.ts +19 -0
  395. package/server/session/{token-session-log.ts → credentials/token-session-log.ts} +1 -1
  396. package/server/session/{token-sessions.ts → credentials/token-sessions.ts} +4 -4
  397. package/server/session/credentials/token-switch-pins.ts +37 -0
  398. package/server/session/{worktree-session-limit.ts → credentials/worktree-session-limit.ts} +4 -4
  399. package/server/session/{decision-digest-file.ts → decisions/decision-digest-file.ts} +2 -2
  400. package/server/session/{decision-digest-schedule.ts → decisions/decision-digest-schedule.ts} +2 -2
  401. package/server/session/{decision-digest.ts → decisions/decision-digest.ts} +1 -1
  402. package/server/session/{decision-scan.ts → decisions/decision-scan.ts} +6 -6
  403. package/server/session/{decisions.ts → decisions/decisions.ts} +3 -3
  404. package/server/session/dir-session.ts +5 -5
  405. package/server/session/lifecycle.ts +9 -9
  406. package/server/session/{resumable-sessions.ts → list/resumable-sessions.ts} +4 -4
  407. package/server/session/{session-cpu.ts → list/session-cpu.ts} +1 -1
  408. package/server/session/{session-list.ts → list/session-list.ts} +1 -1
  409. package/server/session/{session-lookup.ts → list/session-lookup.ts} +4 -4
  410. package/server/session/{session-memos.ts → list/session-memos.ts} +1 -1
  411. package/server/session/{session-processes.ts → list/session-processes.ts} +2 -2
  412. package/server/session/{session-title.ts → list/session-title.ts} +8 -8
  413. package/server/session/{sessionListTitle.ts → list/sessionListTitle.ts} +1 -1
  414. package/server/session/project-dir.ts +1 -1
  415. package/server/session/{agent-pty-start.ts → pty/agent-pty-start.ts} +3 -3
  416. package/server/session/{output-relay.ts → pty/output-relay.ts} +2 -2
  417. package/server/session/{pty-connection.ts → pty/pty-connection.ts} +7 -7
  418. package/server/session/{pty-exit.ts → pty/pty-exit.ts} +2 -2
  419. package/server/session/{pty-kill.ts → pty/pty-kill.ts} +1 -1
  420. package/server/session/{pty-relay.ts → pty/pty-relay.ts} +2 -2
  421. package/server/session/{pty-spawn.ts → pty/pty-spawn.ts} +12 -12
  422. package/server/session/{terminal-mode-tracker.ts → pty/terminal-mode-tracker.ts} +2 -2
  423. package/server/session/{terminal-replay.ts → pty/terminal-replay.ts} +1 -1
  424. package/server/session/{reap-idle-sessions.ts → reaping/reap-idle-sessions.ts} +5 -5
  425. package/server/session/{reap-schedule.ts → reaping/reap-schedule.ts} +5 -5
  426. package/server/session/{surviving-sessions.ts → reaping/surviving-sessions.ts} +9 -9
  427. package/server/session/{survivor-agent-guard.ts → reaping/survivor-agent-guard.ts} +10 -10
  428. package/server/session/registry.ts +9 -9
  429. package/server/session/{background-chat.ts → scheduled/background-chat.ts} +2 -2
  430. package/server/session/{scheduled-chat.ts → scheduled/scheduled-chat.ts} +3 -3
  431. package/server/session/{scheduled-sessions-boot.ts → scheduled/scheduled-sessions-boot.ts} +5 -5
  432. package/server/session/{scheduled-sessions.ts → scheduled/scheduled-sessions.ts} +3 -3
  433. package/server/session/{translation-submit.ts → scheduled/translation-submit.ts} +1 -1
  434. package/server/session/{translation-worker.ts → scheduled/translation-worker.ts} +4 -4
  435. package/server/session/session-cwd.ts +1 -1
  436. package/server/session/session-drops.ts +1 -1
  437. package/server/session/session-home.ts +2 -2
  438. package/server/session/session-reads.ts +13 -13
  439. package/server/session/session-settings.ts +2 -2
  440. package/server/session/{claude-fullscreen-env.ts → spawn/agents/claude-fullscreen-env.ts} +1 -1
  441. package/server/session/{claude-fullscreen.ts → spawn/agents/claude-fullscreen.ts} +1 -1
  442. package/server/session/{spawn-antigravity.ts → spawn/agents/spawn-antigravity.ts} +10 -10
  443. package/server/session/{spawn-claude.ts → spawn/agents/spawn-claude.ts} +51 -51
  444. package/server/session/{spawn-codex.ts → spawn/agents/spawn-codex.ts} +19 -19
  445. package/server/session/{spawn-copilot.ts → spawn/agents/spawn-copilot.ts} +14 -14
  446. package/server/session/{spawn-cursor.ts → spawn/agents/spawn-cursor.ts} +13 -13
  447. package/server/session/{spawn-grok.ts → spawn/agents/spawn-grok.ts} +8 -8
  448. package/server/session/{spawn-muse.ts → spawn/agents/spawn-muse.ts} +14 -14
  449. package/server/session/{draft-injection.ts → spawn/draft-injection.ts} +5 -5
  450. package/server/session/{issue-session-spawn.ts → spawn/issue-session-spawn.ts} +6 -6
  451. package/server/session/{issue-spawn-options.ts → spawn/issue-spawn-options.ts} +1 -1
  452. package/server/session/{launch-choice.ts → spawn/launch-choice.ts} +2 -2
  453. package/server/session/{mcp-config.ts → spawn/setup/mcp-config.ts} +6 -6
  454. package/server/session/{provider-env.ts → spawn/setup/provider-env.ts} +1 -1
  455. package/server/session/{spawn-directory-mcp.ts → spawn/setup/spawn-directory-mcp.ts} +6 -6
  456. package/server/session/{shell-command.ts → spawn/shell-command.ts} +2 -2
  457. package/server/session/{spawn-collection.ts → spawn/spawn-collection.ts} +3 -3
  458. package/server/session/{spawn-deps.ts → spawn/spawn-deps.ts} +1 -1
  459. package/server/session/{spawn-shell.ts → spawn/spawn-shell.ts} +8 -8
  460. package/server/session/{spawn-with-full-gui-claim.ts → spawn/spawn-with-full-gui-claim.ts} +2 -2
  461. package/server/session/{spawners.ts → spawn/spawners.ts} +7 -7
  462. package/server/session/{cleared-transcripts.ts → transcript/cleared-transcripts.ts} +4 -4
  463. package/server/session/{command-summary.ts → transcript/command-summary.ts} +3 -3
  464. package/server/session/{handoff-text.ts → transcript/handoff-text.ts} +1 -1
  465. package/server/session/{last-turn.ts → transcript/last-turn.ts} +2 -2
  466. package/server/session/{prompt-history.ts → transcript/prompt-history.ts} +4 -4
  467. package/server/session/{summary-scan.ts → transcript/summary-scan.ts} +1 -1
  468. package/server/session/{transcript-fold.ts → transcript/transcript-fold.ts} +2 -2
  469. package/server/session/{transcript-sidecar.ts → transcript/transcript-sidecar.ts} +4 -4
  470. package/server/session/{transcript-view-codex.ts → transcript/transcript-view-codex.ts} +3 -3
  471. package/server/session/{transcript-view-copilot.ts → transcript/transcript-view-copilot.ts} +3 -3
  472. package/server/session/{transcript-view-cursor.ts → transcript/transcript-view-cursor.ts} +3 -3
  473. package/server/session/{transcript-view-read.ts → transcript/transcript-view-read.ts} +13 -13
  474. package/server/session/{transcript-view.ts → transcript/transcript-view.ts} +3 -3
  475. package/server/session/{transcript.ts → transcript/transcript.ts} +4 -4
  476. package/server/session/types.ts +2 -2
  477. package/server/skills/mulmoterminal-bug-report/faq.md +2 -2
  478. package/server/skills/mulmoterminal-config/SKILL.md +1 -1
  479. package/server/whatsNew/state.ts +1 -1
  480. package/dist/assets/architecture-WOLXFQ4H-C2t_BQpj.js +0 -1
  481. package/dist/assets/channel-Ew01Cakq.js +0 -1
  482. package/dist/assets/eventmodeling-K75KTNOO-B1aaayRU.js +0 -1
  483. package/dist/assets/flowDiagram-OXPTDLAJ-DstO2g2D.js +0 -1
  484. package/dist/assets/index-T11EY9yc.css +0 -1
  485. package/dist/assets/railroad-abnf-LNEFI6M7-BkDVVs2g.js +0 -1
  486. package/dist/assets/railroad-ebnf-DWYD2UWJ-BxUG_HKh.js +0 -1
  487. package/dist/assets/railroad-peg-JR7BVNR7-D1fNBCHZ.js +0 -1
  488. package/dist/assets/swimlanesDiagram-K3J5GTZL-Cy_aZEXh.js +0 -8
  489. /package/server/agents/{antigravity-args.ts → antigravity/antigravity-args.ts} +0 -0
  490. /package/server/agents/{antigravity-proto.ts → antigravity/antigravity-proto.ts} +0 -0
  491. /package/server/agents/{claude-permission-modes.ts → claude/claude-permission-modes.ts} +0 -0
  492. /package/server/agents/{codex-args.ts → codex/codex-args.ts} +0 -0
  493. /package/server/agents/{codex-rate-limits.spec.ts → codex/codex-rate-limits.spec.ts} +0 -0
  494. /package/server/agents/{codex-rollout.spec.ts → codex/codex-rollout.spec.ts} +0 -0
  495. /package/server/agents/{codex-usage.spec.ts → codex/codex-usage.spec.ts} +0 -0
  496. /package/server/agents/{copilot-args.ts → copilot/copilot-args.ts} +0 -0
  497. /package/server/agents/{cursor-args.ts → cursor/cursor-args.ts} +0 -0
  498. /package/server/agents/{grok-args.ts → grok/grok-args.ts} +0 -0
  499. /package/server/agents/{muse-args.ts → muse/muse-args.ts} +0 -0
  500. /package/server/agents/{probe-session.ts → probe/probe-session.ts} +0 -0
  501. /package/server/agents/{probe-stall.spec.ts → probe/probe-stall.spec.ts} +0 -0
  502. /package/server/agents/{rate-limit-persist.spec.ts → rate-limit/rate-limit-persist.spec.ts} +0 -0
  503. /package/server/agents/{rate-limit-store.spec.ts → rate-limit/rate-limit-store.spec.ts} +0 -0
  504. /package/server/backends/{collectionActionIndex.spec.ts → collections/collectionActionIndex.spec.ts} +0 -0
  505. /package/server/backends/{mutateStatus.ts → collections/mutateStatus.ts} +0 -0
  506. /package/server/backends/{viewDataParams.ts → collections/viewDataParams.ts} +0 -0
  507. /package/server/backends/{viewRateLimit.ts → collections/viewRateLimit.ts} +0 -0
  508. /package/server/backends/{feed-summary.ts → feeds/feed-summary.ts} +0 -0
  509. /package/server/backends/{byte-range.ts → files/byte-range.ts} +0 -0
  510. /package/server/backends/{docPath.ts → files/docPath.ts} +0 -0
  511. /package/server/backends/{servedFileName.ts → files/servedFileName.ts} +0 -0
  512. /package/server/backends/{statFileOr404.ts → files/statFileOr404.ts} +0 -0
  513. /package/server/backends/{storiesRootSet.ts → files/storiesRootSet.ts} +0 -0
  514. /package/server/backends/{streamFile.ts → files/streamFile.ts} +0 -0
  515. /package/server/backends/{audioAdmission.ts → media/audioAdmission.ts} +0 -0
  516. /package/server/backends/{image-gen.ts → media/image-gen.ts} +0 -0
  517. /package/server/backends/{imageResult.ts → media/imageResult.ts} +0 -0
  518. /package/server/backends/{accounting.ts → plugins/accounting.ts} +0 -0
  519. /package/server/backends/{system-tasks.ts → scheduler/system-tasks.ts} +0 -0
  520. /package/server/backends/{worklog.ts → scheduler/worklog.ts} +0 -0
  521. /package/server/config/{hue-rotate.ts → dir/hue-rotate.ts} +0 -0
  522. /package/server/infra/{coalesce-by-key.ts → async/coalesce-by-key.ts} +0 -0
  523. /package/server/infra/{mapConcurrent.ts → async/mapConcurrent.ts} +0 -0
  524. /package/server/infra/{pubsub.ts → async/pubsub.ts} +0 -0
  525. /package/server/infra/{serialize-per-key.ts → async/serialize-per-key.ts} +0 -0
  526. /package/server/infra/{mulmoterminal-home.ts → fs/mulmoterminal-home.ts} +0 -0
  527. /package/server/infra/{path-within.ts → fs/path-within.ts} +0 -0
  528. /package/server/infra/{read-text-file.ts → fs/read-text-file.ts} +0 -0
  529. /package/server/infra/{split-lines.ts → fs/split-lines.ts} +0 -0
  530. /package/server/infra/{symlink-guard.ts → fs/symlink-guard.ts} +0 -0
  531. /package/server/infra/{workspace-key.ts → fs/workspace-key.ts} +0 -0
  532. /package/server/infra/{allowed-origin.ts → http/allowed-origin.ts} +0 -0
  533. /package/server/infra/{announce-listening.ts → http/announce-listening.ts} +0 -0
  534. /package/server/infra/{hide-error-stacks.ts → http/hide-error-stacks.ts} +0 -0
  535. /package/server/infra/{loopback-listener.ts → http/loopback-listener.ts} +0 -0
  536. /package/server/infra/{loopback.ts → http/loopback.ts} +0 -0
  537. /package/server/infra/{spa-fallback.ts → http/spa-fallback.ts} +0 -0
  538. /package/server/infra/{cmd-escape.ts → process/cmd-escape.ts} +0 -0
  539. /package/server/infra/{has-binary.ts → process/has-binary.ts} +0 -0
  540. /package/server/infra/{process-list.ts → process/process-list.ts} +0 -0
  541. /package/server/infra/{process-tree.ts → process/process-tree.ts} +0 -0
  542. /package/server/infra/{pty-env.ts → process/pty-env.ts} +0 -0
  543. /package/server/infra/{resolve-bin.ts → process/resolve-bin.ts} +0 -0
  544. /package/server/infra/{shell-quote.ts → process/shell-quote.ts} +0 -0
  545. /package/server/infra/{spawn-cwd.ts → process/spawn-cwd.ts} +0 -0
  546. /package/server/infra/{accounting-tool.ts → tools/accounting-tool.ts} +0 -0
  547. /package/server/infra/{host-tools.ts → tools/host-tools.ts} +0 -0
  548. /package/server/infra/{server-tool-load.ts → tools/server-tool-load.ts} +0 -0
  549. /package/server/infra/{shapescript-csg.ts → tools/shapescript-csg.ts} +0 -0
  550. /package/server/infra/{tool-precedence.ts → tools/tool-precedence.ts} +0 -0
  551. /package/server/session/{session-activity-deps.ts → activity/session-activity-deps.ts} +0 -0
  552. /package/server/session/{tool-hook.ts → activity/tool-hook.ts} +0 -0
  553. /package/server/session/{work-phase-tracker.ts → activity/work-phase-tracker.ts} +0 -0
  554. /package/server/session/{workPhase.ts → activity/workPhase.ts} +0 -0
  555. /package/server/session/{agent-conversations.ts → list/agent-conversations.ts} +0 -0
  556. /package/server/session/{live-sessions.ts → list/live-sessions.ts} +0 -0
  557. /package/server/session/{session-detail-view.ts → list/session-detail-view.ts} +0 -0
  558. /package/server/session/{session-resolve.ts → list/session-resolve.ts} +0 -0
  559. /package/server/session/{early-frames.ts → pty/early-frames.ts} +0 -0
  560. /package/server/session/{headlessScreen.ts → pty/headlessScreen.ts} +0 -0
  561. /package/server/session/{pane-mode-watch.ts → pty/pane-mode-watch.ts} +0 -0
  562. /package/server/session/{pty-exit-log.ts → pty/pty-exit-log.ts} +0 -0
  563. /package/server/session/{pty-kill-plan.ts → pty/pty-kill-plan.ts} +0 -0
  564. /package/server/session/{pty-scan.ts → pty/pty-scan.ts} +0 -0
  565. /package/server/session/{pty-text.ts → pty/pty-text.ts} +0 -0
  566. /package/server/session/{screen-rows.ts → pty/screen-rows.ts} +0 -0
  567. /package/server/session/{tmux-size-sync.ts → pty/tmux-size-sync.ts} +0 -0
  568. /package/server/session/{persist-drain.ts → reaping/persist-drain.ts} +0 -0
  569. /package/server/session/{reap-policy.ts → reaping/reap-policy.ts} +0 -0
  570. /package/server/session/{translation-prompt.ts → scheduled/translation-prompt.ts} +0 -0
  571. /package/server/session/{custom-agent-command.ts → spawn/agents/custom-agent-command.ts} +0 -0
  572. /package/server/session/{custom-agent-log.ts → spawn/agents/custom-agent-log.ts} +0 -0
  573. /package/server/session/{draft-plan.ts → spawn/draft-plan.ts} +0 -0
  574. /package/server/session/{failed-spawn-claim.ts → spawn/failed-spawn-claim.ts} +0 -0
  575. /package/server/session/{hook-settings.ts → spawn/setup/hook-settings.ts} +0 -0
  576. /package/server/session/{hiddenMarker.ts → transcript/hiddenMarker.ts} +0 -0
  577. /package/server/session/{prompt-history-memo.ts → transcript/prompt-history-memo.ts} +0 -0
package/README.md CHANGED
@@ -1526,7 +1526,7 @@ one click: read the issue, cut an `issue/<number>-<slug>` worktree in your clone
1526
1526
  open Claude there as a grid cell with the issue **typed into its input box but not sent**. The
1527
1527
  **Start issues in** menu above the list picks another agent instead (and, for Claude or Codex, an
1528
1528
  account); every agent but Claude runs the issue text at once, which the view warns about. The
1529
- prompt is seeded server-side as a *draft* (`server/session/draft-injection.ts`), which waits for
1529
+ prompt is seeded server-side as a *draft* (`server/session/spawn/draft-injection.ts`), which waits for
1530
1530
  claude's input box to be ready — text pushed in before that lands in the scrollback instead. A repo
1531
1531
  with several clones asks which one the first time and remembers the answer; a repo with no clone
1532
1532
  here disables the button and says why. Backed by `POST /api/issues/start`.
@@ -1587,7 +1587,7 @@ has been prompted once — a few seconds, not the rest of the session.
1587
1587
  Antigravity's numbers are the one case read from a store with **no published format**: agy keeps
1588
1588
  its per-generation accounting as protobuf in `~/.gemini/antigravity-cli/conversations/<id>.db`,
1589
1589
  with no schema on disk, so the fields are identified by measurement (see
1590
- `server/agents/antigravity-usage.ts`). Every layer of that reader is built to answer *nothing*
1590
+ `server/agents/antigravity/antigravity-usage.ts`). Every layer of that reader is built to answer *nothing*
1591
1591
  rather than a number it is unsure of, so if a future agy release moves those fields, an
1592
1592
  Antigravity cell falls back to showing its model alone — it will not show a wrong percentage.
1593
1593
 
@@ -1633,7 +1633,7 @@ Copilot** can. **Antigravity, Grok and Cursor** cannot — they read a file in t
1633
1633
  **Muse** reads neither, which is the third route below.
1634
1634
 
1635
1635
  **Cursor is half of each**, and the half nobody would guess is the second: it reads a file in the
1636
- directory as agy does (`.cursor/mcp.json`, written by `server/agents/cursor-mcp.ts`), but it starts
1636
+ directory as agy does (`.cursor/mcp.json`, written by `server/agents/cursor/cursor-mcp.ts`), but it starts
1637
1637
  that MCP server on a CURATED ENVIRONMENT rather than its own — so the group and the port travel as
1638
1638
  ARGV, as muse's do, and the SESSION is resolved through `/api/mcp-resolve`. An agy-shaped entry (group
1639
1639
  in `env`, port inherited) was tried first and reached the bridge with no port at all. Cursor also refuses to
@@ -1674,7 +1674,7 @@ exactly as it was. Close the cell and open a new one (or `Stop` it in Settings
1674
1674
  and it comes back with the tools its directory registered.
1675
1675
 
1676
1676
  Which route a session takes is decided by `carriesFullGuiMcp()` in
1677
- `server/session/mcp-config.ts` — the single view, a cell-less chat, or anything whose cwd **is**
1677
+ `server/session/spawn/setup/mcp-config.ts` — the single view, a cell-less chat, or anything whose cwd **is**
1678
1678
  the workspace take the first; anything in a project directory takes the second.
1679
1679
 
1680
1680
  **The workspace is agent-agnostic for the agents that can RECEIVE a per-spawn config** — claude,
@@ -2016,7 +2016,7 @@ Empty output returns a `{ summary }` note rather than calling the CLI. Errors:
2016
2016
  (see [Claude hook injection](#claude-hook-injection)); **Copilot's and Cursor's arrive from a
2017
2017
  machine-global hook file** and name their agent in an `x-mt-agent: copilot|cursor` header, with the
2018
2018
  event in `x-mt-hook` — the body is translated into the Claude shape below before anything reads it
2019
- (`server/agents/{copilot,cursor}-hook.ts`), so everything downstream is written against one
2019
+ (`server/agents/{copilot/copilot,cursor/cursor}-hook.ts`), so everything downstream is written against one
2020
2020
  vocabulary. A request with no `x-mt-agent` is a Claude payload and is untouched.
2021
2021
  You normally don't call this yourself.
2022
2022
 
package/bin/agent-bins.js CHANGED
@@ -5,7 +5,7 @@
5
5
  // with no tsx. The server imports from `bin/` already (bin/instances.js), so this direction is the
6
6
  // established one.
7
7
  //
8
- // The table is duplicated knowledge by construction — `server/config/agent-bins.ts` builds the same
8
+ // The table is duplicated knowledge by construction — `server/config/agent/agent-bins.ts` builds the same
9
9
  // mapping out of the adapters — so a spec pins the two together rather than a comment asking the
10
10
  // next person to keep them in sync.
11
11
  //
package/bin/cli-args.js CHANGED
@@ -14,7 +14,7 @@ import { join } from "node:path";
14
14
  import { NODE_DOWNLOAD_URL } from "./node-install.js";
15
15
 
16
16
  // The v4 loopback every local client of this server dials by literal — `guiMcpUrlTemplate` in
17
- // server/infra/gui-mcp-registration.ts builds `http://127.0.0.1:<port>/api/mcp/...`. Duplicated
17
+ // server/infra/process/gui-mcp-registration.ts builds `http://127.0.0.1:<port>/api/mcp/...`. Duplicated
18
18
  // here because bin/ is plain JS and cannot import the server's TypeScript, and pinned by a spec
19
19
  // the same way PORT_IN_USE_EXIT_CODE is.
20
20
  const V4_LOOPBACK_CLIENTS_DIAL = "127.0.0.1";
@@ -120,7 +120,7 @@ export function probeFailureIsPortInUse(err) {
120
120
  * `localhost`, `127.1` — and a host string has no last case. The kernel has none of that problem:
121
121
  * measured, `listen(0,"0:0:0:0:0:0:0:0")` reports `::` and `listen(0,"localhost")` reports `::1`.
122
122
  * The comparisons below are exact because the kernel's OUTPUT vocabulary is finite even though
123
- * its input vocabulary is not. server/infra/loopback.ts made the same argument for its own
123
+ * its input vocabulary is not. server/infra/http/loopback.ts made the same argument for its own
124
124
  * question: "asking after the fact answers all of them".
125
125
  *
126
126
  * The probe/bind race the launcher already lives with is unchanged: this narrows the window, it
@@ -149,7 +149,7 @@ export function companionHostsFor(boundAddress) {
149
149
  *
150
150
  * The authority for a name is the kernel, not this function, and the launcher asks it the only
151
151
  * way that is exact — the child reports what `server.address()` says it bound. See
152
- * server/infra/loopback.ts, which had already written the argument down for its own question.
152
+ * server/infra/http/loopback.ts, which had already written the argument down for its own question.
153
153
  */
154
154
  export function launcherReachHost(bindHost) {
155
155
  if (bindHost === "0.0.0.0") return "127.0.0.1";
@@ -206,7 +206,7 @@ export function launcherUrl(reachHost, port) {
206
206
  * feature nothing in `bin/` mentions. Changing the URL means adding the new loopback address to
207
207
  * that authorized-domain list first.
208
208
  *
209
- * Reachability is not the reason it is safe; #1834 is. `server/infra/loopback-listener.ts` makes
209
+ * Reachability is not the reason it is safe; #1834 is. `server/infra/http/loopback-listener.ts` makes
210
210
  * this server serve `127.0.0.1` in EVERY configuration — as the primary bind, or as a second
211
211
  * listener when the operator widens it — because eight local callers write that address as a
212
212
  * literal. So `localhost` arrives here whatever `MULMOTERMINAL_HOST` says, falling back to v4
@@ -467,7 +467,7 @@ export function unsupportedNodeMessage(version, execPath, upgrade) {
467
467
  * hands its own environment to every PTY it spawns, so a port set there reaches every terminal
468
468
  * in every cell — which is how a raw `PORT` made a dev server started in a cell try to take
469
469
  * MulmoTerminal's own port (#1857). Renaming it would only move that: `MULMOTERMINAL_PORT` is
470
- * deliberately given to PTYs (server/session/mcp-config.ts) for the MCP URLs, so a server
470
+ * deliberately given to PTYs (server/session/spawn/setup/mcp-config.ts) for the MCP URLs, so a server
471
471
  * reading it as its bind port would clash with itself the moment `yarn dev` ran inside a cell.
472
472
  *
473
473
  * `--agent` rides the same channel for the same reason (#2082): it is a preference, and a
@@ -14,7 +14,7 @@
14
14
  //
15
15
  // A file lookup has neither problem: nothing is interpreted, it is just candidate names on disk.
16
16
  // WHICH candidates is the whole remaining question, and it is not this file's to invent — it is
17
- // `server/infra/has-binary.ts`'s, because "can we launch it" and "what would we launch" must not
17
+ // `server/infra/process/has-binary.ts`'s, because "can we launch it" and "what would we launch" must not
18
18
  // answer differently. `test/bin/gate-agrees-with-spawn.spec.ts` compares the two over generated
19
19
  // machines rather than trusting these comments.
20
20
  //
@@ -64,7 +64,7 @@ export const extensionsFor = (platform) => (platform === "win32" ? WINDOWS_LAUNC
64
64
 
65
65
  // A Windows PATH entry may be QUOTED — `"C:\Program Files\tools"` — which the shells strip and a
66
66
  // plain join would not, leaving a path that matches nothing. Same rule as the server's
67
- // `windowsSearchDirectories` (server/infra/resolve-bin.ts); `C:\Program Files` is the canonical
67
+ // `windowsSearchDirectories` (server/infra/process/resolve-bin.ts); `C:\Program Files` is the canonical
68
68
  // path that needs the quotes, so this is the common case rather than an exotic one.
69
69
  // The current directory is on neither platform's list. cmd.exe searches it and POSIX shells do
70
70
  // not, but what launches an agent is node-pty on both — and the directory THIS process sits in is
@@ -81,7 +81,7 @@ export const searchDirectories = (platform, env) => {
81
81
  };
82
82
 
83
83
  // Can this process enumerate everything execvp would search? Two cases where it cannot, both taken
84
- // from server/infra/has-binary.ts, which reasoned them out first:
84
+ // from server/infra/process/has-binary.ts, which reasoned them out first:
85
85
  //
86
86
  // - an UNSET PATH is not an empty one. execvp falls back to its own built-in default
87
87
  // (confstr _CS_PATH), which is not readable from here.
@@ -127,7 +127,7 @@ function readRemoteServer() {
127
127
  //
128
128
  // The override is the point rather than a detail: the gate used to look for the literal word
129
129
  // `claude` on PATH while the server ran `process.env.CLAUDE_BIN || "claude"`
130
- // (server/agents/claude.ts). A user who set CLAUDE_BIN to a real install was refused start-up by a
130
+ // (server/agents/claude/claude.ts). A user who set CLAUDE_BIN to a real install was refused start-up by a
131
131
  // check asking a different question than the thing it was gating (#2082).
132
132
  function agentInstalled(agent) {
133
133
  const bin = agentBin(agent);
@@ -546,7 +546,7 @@ function runServer({ port, probedAddress, localhostIsUnambiguous, noOpen, launch
546
546
  // The address to check is the one the CHILD REPORTS, not one derived from BIND_HOST — three
547
547
  // rounds of review found three different spellings BIND_HOST can take that a guess gets
548
548
  // wrong (`::` vs `::1`, `localhost` resolving per-platform, a printed `localhost` that a
549
- // browser re-resolves). server/infra/loopback.ts already argued this for its own question:
549
+ // browser re-resolves). server/infra/http/loopback.ts already argued this for its own question:
550
550
  // "classifying the requested string cannot be made right … asking after the fact answers all
551
551
  // of them, because the kernel has already resolved whatever was typed" (#1876).
552
552
  //
package/bin/room.js CHANGED
@@ -49,7 +49,7 @@ function splitAtTerminator(args) {
49
49
 
50
50
  /** The port to talk to: `--port`, else MULMOTERMINAL_PORT, else PORT, else the default.
51
51
  *
52
- * MULMOTERMINAL_PORT is what a terminal INSIDE MulmoTerminal is given (server/session/pty-spawn.ts),
52
+ * MULMOTERMINAL_PORT is what a terminal INSIDE MulmoTerminal is given (server/session/pty/pty-spawn.ts),
53
53
  * and it has to be preferred: `PORT` used to carry the same answer only because the launcher
54
54
  * exported it to every PTY, which is the leak #1857 is about. Without this, `room` run in a cell
55
55
  * of a server on 34601 would talk to whatever holds 34567 — or to another instance entirely.
@@ -16,7 +16,7 @@
16
16
  // otherwise. Nothing here reads a clock, a socket or a process.
17
17
 
18
18
  /** The exit code `server/index.ts` leaves with when the port was already taken at bind time.
19
- * Kept in sync with `PORT_IN_USE_EXIT_CODE` in server/infra/server-exit.ts, which a spec pins. */
19
+ * Kept in sync with `PORT_IN_USE_EXIT_CODE` in server/infra/process/server-exit.ts, which a spec pins. */
20
20
  export const PORT_IN_USE_EXIT_CODE = 75;
21
21
 
22
22
  /** How long the launcher waits before the first restart, and the ceiling the doubling stops at.
@@ -87,7 +87,7 @@ export function planAfterServerExit({ code, signal, everServed, consecutiveFailu
87
87
  // A port that is taken will still be taken next time; the caller names who has it and stops.
88
88
  if (code === PORT_IN_USE_EXIT_CODE) return { action: "port-in-use", delayMs: 0, reason: null };
89
89
  // `mulmoterminal stop` and the browser's Stop button both SIGTERM the server, whose handler
90
- // exits 0 (server/infra/shutdown.ts). Restarting that is the product's stop button not stopping.
90
+ // exits 0 (server/infra/process/shutdown.ts). Restarting that is the product's stop button not stopping.
91
91
  if (code === 0) return { action: "stop", delayMs: 0, reason: null };
92
92
  // Nothing below can be decided on a platform where a stop and a crash arrive identically, so it
93
93
  // is not guessed at: the launcher leaves with its server, exactly as it did before (see above).
@@ -62,5 +62,5 @@ export const accountsForAgent = (accounts: readonly AgentAccount[], agent: unkno
62
62
  isAccountAgent(agent) ? accounts.filter((account) => account.agent === agent) : [];
63
63
 
64
64
  /** What a cell or a list row calls an account: its label, or the bare id once the entry has left the
65
- * config (the session still runs on it — see server/session/account-log.ts). */
65
+ * config (the session still runs on it — see server/session/accounts/account-log.ts). */
66
66
  export const accountLabel = (accounts: readonly AgentAccount[], id: string): string => accounts.find((account) => account.id === id)?.label ?? id;
@@ -1,6 +1,6 @@
1
1
  // The navigate target a collection-completion bell carries, and the one narrowing
2
2
  // that reads it back. Shared because BOTH sides decide from it: the server writes
3
- // the target when it publishes a bell (server/backends/collectionNotifierAdapter.ts)
3
+ // the target when it publishes a bell (server/backends/collections/collectionNotifierAdapter.ts)
4
4
  // and the UI reads it to accent the record's card (src/utils/collectionNotified.ts).
5
5
  // A second copy of the literal in the reader is exactly how a writer/reader pair
6
6
  // drifts silently — the bell keeps arriving, only the accent stops appearing.
@@ -1,5 +1,5 @@
1
1
  // "Would this collection survive a clone?" — the wire shape, shared because BOTH sides decide
2
- // from it: the server produces the report (server/backends/collectionSelfContainment.ts) and the
2
+ // from it: the server produces the report (server/backends/collections/collectionSelfContainment.ts) and the
3
3
  // Collections pane renders it, colouring by severity and blocking on `portable`.
4
4
  //
5
5
  // In `common/` rather than mirrored, for the reason the layout rule gives: a second copy of a
@@ -29,7 +29,7 @@ import { isRecord } from "./isRecord.js";
29
29
  // appended, so it must say.
30
30
  //
31
31
  // Claude Code is the only one today. Codex and Antigravity take a different argument set
32
- // (server/agents/codex-args.ts), so adding one here means teaching the spawn to build ITS argv —
32
+ // (server/agents/codex/codex-args.ts), so adding one here means teaching the spawn to build ITS argv —
33
33
  // which is why this is a list rather than a boolean.
34
34
  export const CUSTOM_AGENT_KINDS = ["claude"] as const;
35
35
 
@@ -6,7 +6,7 @@
6
6
  // which of them survived validation, and which the app doesn't read at all.
7
7
 
8
8
  // Every key `loadDirConfig` reads. A key outside this list is a typo as far as the app is
9
- // concerned, however sensible it looks — `server/config/dir-config.spec.ts` pins the two
9
+ // concerned, however sensible it looks — `test/server/config/dir/dir-config.spec.ts` pins the two
10
10
  // together so a field added to the loader can't quietly go missing here.
11
11
  export const DIR_CONFIG_KEYS = [
12
12
  "name",
@@ -16,13 +16,13 @@
16
16
  //
17
17
  // Grok is out for exactly the same reason, and it is written down here rather than left to be
18
18
  // rediscovered: `grok` has no `--mcp-config` and no `-c key=value`, only `grok mcp add` writing
19
- // `~/.grok/config.toml` or `./.grok/config.toml` (server/agents/grok-mcp.ts). So a grok session in
19
+ // `~/.grok/config.toml` or `./.grok/config.toml` (server/agents/grok/grok-mcp.ts). So a grok session in
20
20
  // the workspace gets the groups its DIRECTORY registered, and the launcher form offers it the four
21
21
  // per-group toggles — which is the truthful answer, and the one #1423 failed to give.
22
22
  //
23
23
  // Muse is out for the same reason and reaches its tools a third way. It has no `--mcp-config` and
24
24
  // no per-directory config file either: MCP servers are declared by an installed PLUGIN, which
25
- // `muse plugins install` records per MACHINE (server/agents/muse-mcp.ts). So MulmoTerminal
25
+ // `muse plugins install` records per MACHINE (server/agents/muse/muse-mcp.ts). So MulmoTerminal
26
26
  // registers one plugin holding all four group servers, and each SESSION is narrowed back to what
27
27
  // its directory switched on — by a lookup, not by the environment: a plugin's MCP server is started
28
28
  // with a curated environment that carries nothing of ours, so the bridge resolves which session it
@@ -32,7 +32,7 @@ const usableLoad = (avg1: number, avg5: number, avg15: number, cores: number): M
32
32
  };
33
33
 
34
34
  /** The reading, or null where there is nothing to report. Pure — `node:os` is touched by the one
35
- * caller in `server/infra/machine-load.ts`, so every rule here stays testable without waiting for
35
+ * caller in `server/infra/process/machine-load.ts`, so every rule here stays testable without waiting for
36
36
  * a machine that happens to be busy. */
37
37
  export function machineLoadFrom(averages: readonly number[], cores: number, platform: string): MachineLoad | null {
38
38
  if (!keepsLoadAverage(platform)) return null;
@@ -3,7 +3,7 @@
3
3
  // Declared, never discovered: a project lists the directories and extensions in its
4
4
  // `.mulmoterminal.json` under `mobileFiles`, and nothing is visible without that. These rules are
5
5
  // pure so the containment-adjacent decisions (which extension, which name) are testable without a
6
- // filesystem; the filesystem half lives in server/config/dir-file.ts and the remote-host backend.
6
+ // filesystem; the filesystem half lives in server/config/dir/dir-file.ts and the remote-host backend.
7
7
 
8
8
  export const MOBILE_FILE_KINDS = ["markdown", "html", "pdf", "image"] as const;
9
9
  export type MobileFileKind = (typeof MOBILE_FILE_KINDS)[number];
@@ -3,7 +3,7 @@
3
3
  // the picture and draws the level.
4
4
  import { isRecord } from "./isRecord.js";
5
5
 
6
- export const HEAT_PATTERNS = ["bomb", "volcano", "kettle", "rocket", "dynamite", "balloon", "skull", "sumo"] as const;
6
+ export const HEAT_PATTERNS = ["bomb", "volcano", "kettle", "rocket", "dynamite", "balloon", "skull", "sumo", "ufo"] as const;
7
7
  export type HeatPattern = (typeof HEAT_PATTERNS)[number];
8
8
  export const isHeatPattern = (value: unknown): value is HeatPattern => HEAT_PATTERNS.some((pattern) => pattern === value);
9
9
 
@@ -1,7 +1,7 @@
1
1
  // The wire shape of GET /api/transcript/prompts — the prompts the user sent one session (#1748).
2
2
  //
3
3
  // In `common/` because both sides decide from it: the server builds the window (which log it reads
4
- // and how it caps is its own business, in server/session/prompt-history.ts), and the pane renders
4
+ // and how it caps is its own business, in server/session/transcript/prompt-history.ts), and the pane renders
5
5
  // each field. A shape kept twice is the one that drifts.
6
6
 
7
7
  import { isRecord } from "./isRecord";
@@ -1,7 +1,7 @@
1
1
  // What a browser is handed for a file, decided from its name alone.
2
2
  //
3
3
  // BOTH sides read this. The server sets it as the raw route's `Content-Type`
4
- // (server/backends/rawServingPlan.ts); the terminal's file links ask the same question to decide
4
+ // (server/backends/files/rawServingPlan.ts); the terminal's file links ask the same question to decide
5
5
  // where a click goes, because a type the browser cannot display is a type that turns a new tab
6
6
  // into a silent download (#2038). Two copies of this table would send a click to a tab the server
7
7
  // then made a download — which is the bug, arrived at from the other side.
@@ -1,7 +1,7 @@
1
1
  // What the Processes page shows: each tmux session and the process tree under its panes (#2219).
2
2
  //
3
3
  // In `common/` because both sides decide from it: the server builds it from `ps` and tmux
4
- // (server/session/session-processes.ts), and the page reads it back and highlights from it.
4
+ // (server/session/list/session-processes.ts), and the page reads it back and highlights from it.
5
5
  import { isRecord } from "./isRecord.js";
6
6
  import { isUnknownArray } from "./isUnknownArray.js";
7
7
 
@@ -4,7 +4,7 @@
4
4
  // Both sides of the file-path link decide something from this set, and the two decisions
5
5
  // are different, so this is the shared CORE rather than either side's whole answer:
6
6
  // - the server serves these as text/plain so they VIEW instead of downloading
7
- // (backends/rawServingPlan.ts, which also covers docs, markup and dotfiles), and
7
+ // (backends/files/rawServingPlan.ts, which also covers docs, markup and dotfiles), and
8
8
  // - the client opens these in the app's own Files view instead of a new tab
9
9
  // (composables/terminalFilePathLinkProvider.ts, which also covers .txt).
10
10
  // Each side adds its own extras next to its import; anything that belongs to only one of
@@ -6,7 +6,7 @@
6
6
  // visible nowhere. This is the row that makes them visible, and endable.
7
7
  //
8
8
  // In `common/` because both sides decide from it: the server fills it from tmux plus its own
9
- // registry (session/surviving-sessions.ts), and the section renders and acts on it
9
+ // registry (session/reaping/surviving-sessions.ts), and the section renders and acts on it
10
10
  // (components/settings/SurvivingSessionsSection.vue).
11
11
  import type { TerminalAgent } from "./sessionAgent.js";
12
12
 
@@ -115,6 +115,10 @@ const GROUP_BY_TOOL = new Map<string, ToolGroup>([
115
115
 
116
116
  ["generateImage", "media"],
117
117
  ["presentMulmoScript", "media"],
118
+ // manageJingleScript writes and renders short jingles and plays them in the Canvas: audio,
119
+ // so media. It renders locally (ffmpeg at most) and calls nothing external; whether it joins
120
+ // AUTO_ALLOWED_TOOLS is left to the maintainers, so for now it keeps the permission prompt.
121
+ ["manageJingleScript", "media"],
118
122
 
119
123
  // useSharedApp is the participant's half of the shared-app pair, and it is NOT beside
120
124
  // manageSharedApp in `data`. That group is the workspace's own structured data; this tool moves
@@ -166,7 +170,7 @@ export const toolGroupServerId = (group: ToolGroup): string => `mulmoterminal-${
166
170
  // `--mcp-config` (claude) or `-c mcp_servers.<id>.url=` (codex), so it is ours to name.
167
171
  //
168
172
  // Which of the two ids a session gets is decided by `carriesFullGuiMcp` in
169
- // server/session/spawn-claude.ts: the single view, a cell-less chat, and a cell whose cwd IS the
173
+ // server/session/spawn/agents/spawn-claude.ts: the single view, a cell-less chat, and a cell whose cwd IS the
170
174
  // workspace carry this one; a cell in a project directory is handed no --mcp-config at all and
171
175
  // reaches the group ids through the user's own per-folder config. Both are live, on purpose.
172
176
  //
@@ -260,7 +264,7 @@ export const AUTO_ALLOWED_TOOLS: readonly string[] = [
260
264
  * then deploy" arriving in that text is a tool call rather than a question.
261
265
  *
262
266
  * IT SAYS CLAUDE, AND THAT IS THE WHOLE OF ITS REACH. codex approves per SERVER — `guiMcpServers`
263
- * in `server/session/mcp-config.ts` marks every attached group `autoApprove: true`, by the owner's
267
+ * in `server/session/spawn/setup/mcp-config.ts` marks every attached group `autoApprove: true`, by the owner's
264
268
  * decision of 2026-07-28 — so a codex cell holding a group waves through every tool in it, this
265
269
  * list included. That is already true of `manageSharedApp` in `data` and is now equally true of
266
270
  * `useSharedApp` in `external`; adding the tool did not create it. It cannot be narrowed per tool
@@ -1,7 +1,7 @@
1
1
  // What a hosted agent's conversation looks like ON THE WIRE.
2
2
  //
3
3
  // In `common/` because both ends decide from it: the host folds an agent's JSONL (or copilot's
4
- // table) into these shapes in `server/session/transcript-view.ts`, and two clients render them —
4
+ // table) into these shapes in `server/session/transcript/transcript-view.ts`, and two clients render them —
5
5
  // the phone's terminal detail page over the remoteHost socket, and the browser's transcript pane
6
6
  // over `/api/transcript/view`. Mirroring the shape into `src/` would let one side gain a status the
7
7
  // other silently renders as nothing.
@@ -3,7 +3,7 @@
3
3
  // isolated by a worktree; these are not, so two trees running `yarn dev` race for one 3000.
4
4
  //
5
5
  // The pure half — what a slot is worth, what a slug looks like, and the shape the browser
6
- // receives. Reserving lives in server/config/worktree-env.ts, which needs the disk.
6
+ // receives. Reserving lives in server/config/worktree/worktree-env.ts, which needs the disk.
7
7
 
8
8
  /** How far apart two consecutive slots sit.
9
9
  *
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core--3w-WUbe.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-CllyRBe0.js";import"./chunk-VPRB5NB3-BsayPsyI.js";import{n as i,r as a,t as o}from"./chunk-AW2ZBBNX-CmX9OUG5.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-Dd_Uhv_d.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-D9bG0VLG.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-CllyRBe0.js";import"./chunk-VPRB5NB3-zipI-qki.js";import{n as i,r as a,t as o}from"./chunk-AW2ZBBNX-CzNEI48Y.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-xdDqFngm.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import"./chunk-NGNAAXSQ-DqoPQk1a.js";import{M as e}from"./mermaid-parser.core-D9bG0VLG.js";export{e as createArchitectureServices};