mulmoterminal 4.22.0 → 4.23.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 (145) hide show
  1. package/README.md +22 -15
  2. package/common/guiMcpAgents.ts +2 -28
  3. package/dist/assets/{AllPackages-CF2GkZ5g-BcuVXmcX.js → AllPackages-CF2GkZ5g-Dcf5cDN0.js} +1 -1
  4. package/dist/assets/{BaseConfiguration-CAwZOAki-D9nXz-eP.js → BaseConfiguration-CAwZOAki-DUdHJKsk.js} +1 -1
  5. package/dist/assets/{Element-BMI7Nj5w-9E1MzusH.js → Element-BMI7Nj5w-hV6e9MWX.js} +1 -1
  6. package/dist/assets/{Entities-C8p_0jCn-aaXtUOdq.js → Entities-C8p_0jCn-B8iGcgdn.js} +1 -1
  7. package/dist/assets/{FunctionList-YWk54TCy-XBYAozMP.js → FunctionList-YWk54TCy-BirKP0I_.js} +1 -1
  8. package/dist/assets/{InputJax-C5dj-ntL-DkjYd-Hz.js → InputJax-C5dj-ntL-Darzu8r-.js} +1 -1
  9. package/dist/assets/{MathItem-YJvQL-XJ-RKdhqGjF.js → MathItem-YJvQL-XJ-BelhLvBn.js} +1 -1
  10. package/dist/assets/{MmlFactory-DuXYIgx8-Cs82jkFU.js → MmlFactory-DuXYIgx8-djfJFX6f.js} +1 -1
  11. package/dist/assets/{Options-oARQeeuT-DT1Tx-Lf.js → Options-oARQeeuT-J_ILSCvw.js} +1 -1
  12. package/dist/assets/{OutputJax-DfUZNNCu-C6-qqEPU.js → OutputJax-DfUZNNCu-DtuXVd03.js} +1 -1
  13. package/dist/assets/{PrioritizedList-6lun1Xqd-CbjBO_Oc.js → PrioritizedList-6lun1Xqd-BilCpUSB.js} +1 -1
  14. package/dist/assets/{Styles-BPXeoqzi-CrUDQm_T.js → Styles-BPXeoqzi-CdLkCiVG.js} +1 -1
  15. package/dist/assets/{TeXAtom-LHT3KFWH-CAgE6z_w.js → TeXAtom-LHT3KFWH-BXMHOoT3.js} +1 -1
  16. package/dist/assets/{abnfDiagram-VCTEODGH-DoYNjdBB-CYzeMhfw.js → abnfDiagram-VCTEODGH-DoYNjdBB-B7ZIBaJ6.js} +1 -1
  17. package/dist/assets/{arc-CqByPKkF-CiGsCTiw.js → arc-CqByPKkF-FwfFFIr8.js} +1 -1
  18. package/dist/assets/architecture-7GRP2DOG-CRS69XmP-DpDCM-7V.js +1 -0
  19. package/dist/assets/{architectureDiagram-5GKGNRK7-BhcT6qS5-CxYCYh4L.js → architectureDiagram-5GKGNRK7-BhcT6qS5-Baq_JrpW.js} +1 -1
  20. package/dist/assets/{assistive-mml-DXJXho4o-Rb2wPxtZ.js → assistive-mml-DXJXho4o-rl36c5mB.js} +1 -1
  21. package/dist/assets/{blockDiagram-I7D4REHJ-1Cng0Q4K-Cs0cTz0Q.js → blockDiagram-I7D4REHJ-1Cng0Q4K-_Juv9OUQ.js} +1 -1
  22. package/dist/assets/{c4Diagram-7LVT6UL2-CAb9c8nc-BUsnyqmK.js → c4Diagram-7LVT6UL2-CAb9c8nc-Bd9Kox9w.js} +1 -1
  23. package/dist/assets/channel-BjESmYnj-Dr25JeaW.js +1 -0
  24. package/dist/assets/{chunk-4HAMMTFA-ChwfIAnF-BHjtPDde.js → chunk-4HAMMTFA-ChwfIAnF-BDdeq7BI.js} +1 -1
  25. package/dist/assets/{chunk-75Z2AOVW-CbPA0Zt_-CdgguGGU.js → chunk-75Z2AOVW-CbPA0Zt_-DVkb-raF.js} +1 -1
  26. package/dist/assets/{chunk-DU6HZSFF-DuOx2LFX--8Aqhl9J.js → chunk-DU6HZSFF-DuOx2LFX-DQp1Pge9.js} +1 -1
  27. package/dist/assets/{chunk-F27PBJKO-CgBMw9yN-DAXe7Kw9.js → chunk-F27PBJKO-CgBMw9yN-D7wnwed7.js} +1 -1
  28. package/dist/assets/{chunk-GMAD6QVW-JTqlimUX-B9fBYVVw.js → chunk-GMAD6QVW-JTqlimUX-wV8tTz7w.js} +1 -1
  29. package/dist/assets/{chunk-GVQU2GXP-D6ccB4DO-C9ciWebQ.js → chunk-GVQU2GXP-D6ccB4DO-DSqETOAb.js} +1 -1
  30. package/dist/assets/{chunk-IMKFNOWR-ij1DSzMb-siJmTc1J.js → chunk-IMKFNOWR-ij1DSzMb-dYKuj_-S.js} +1 -1
  31. package/dist/assets/{chunk-L3NEJ4N5-CUoAQVG2-D2PIgA5u.js → chunk-L3NEJ4N5-CUoAQVG2-CznTknVk.js} +1 -1
  32. package/dist/assets/{chunk-OSK3NFVY-_VNbXQSu-D6uNmbP7.js → chunk-OSK3NFVY-_VNbXQSu-BOPlkrah.js} +1 -1
  33. package/dist/assets/{chunk-P2QGCYS3-B8lzOn3Y-B0rhisRg.js → chunk-P2QGCYS3-B8lzOn3Y-GBonRamd.js} +1 -1
  34. package/dist/assets/{chunk-POPQ4Y6H-Bh_uOTmp-F2MZHALw.js → chunk-POPQ4Y6H-Bh_uOTmp-YP4Y0H7o.js} +1 -1
  35. package/dist/assets/{chunk-PWAF6VOD-DzjnfYSw-BAEg9ICR.js → chunk-PWAF6VOD-DzjnfYSw-DlHoeX2q.js} +1 -1
  36. package/dist/assets/{chunk-SHT3W25Y-B8dQLS5w-JocijxSR.js → chunk-SHT3W25Y-B8dQLS5w-BYPNRBhs.js} +1 -1
  37. package/dist/assets/{chunk-SVP7TREG-B6A-T8Th-DGod9RQf.js → chunk-SVP7TREG-B6A-T8Th-BYSVtNuZ.js} +1 -1
  38. package/dist/assets/{chunk-TICWLB2K-C1kwD29l-D-fcAtmN.js → chunk-TICWLB2K-C1kwD29l-Br0bNia0.js} +1 -1
  39. package/dist/assets/{chunk-XXDRQBXY-vg0kfC73-BHJD87yL.js → chunk-XXDRQBXY-vg0kfC73-CPErv3MQ.js} +1 -1
  40. package/dist/assets/classDiagram-ZZMXUADV-C7gP-pUH-CPvsl0Ux.js +1 -0
  41. package/dist/assets/classDiagram-v2-VYDZK3BY-CUwV5k1F-CPvsl0Ux.js +1 -0
  42. package/dist/assets/{cose-bilkent-JH36ORCC-NuHCtE3P-BEFDutcR.js → cose-bilkent-JH36ORCC-NuHCtE3P-h2_ltbMI.js} +1 -1
  43. package/dist/assets/cynefin-OW5HDTMX-C4iKivN4-DdU3BeU3.js +1 -0
  44. package/dist/assets/{cynefinDiagram-5FMLGOSQ-CA7sro34-hf-uq6uW.js → cynefinDiagram-5FMLGOSQ-CA7sro34-DEmjN8U0.js} +1 -1
  45. package/dist/assets/{dagre-GXQ25YYZ-DOztjUR_-DYJC88Cb.js → dagre-GXQ25YYZ-DOztjUR_-v1g1_N9e.js} +1 -1
  46. package/dist/assets/{diagram-S7CK7UJ4-D_nsLfRT-DaDGeJUx.js → diagram-S7CK7UJ4-D_nsLfRT-CG7iqcK9.js} +1 -1
  47. package/dist/assets/{diagram-UQ7AKVKN-DNN-YX9a-D8JdyLBv.js → diagram-UQ7AKVKN-DNN-YX9a-DPhn9r3f.js} +1 -1
  48. package/dist/assets/{diagram-VSXAHHWV--HENzo-l-CqoOnNdh.js → diagram-VSXAHHWV--HENzo-l-DiD97poT.js} +1 -1
  49. package/dist/assets/{diagram-VX7I27RA-m2m9dROj-CsT-aVOB.js → diagram-VX7I27RA-m2m9dROj-BKDeFJgq.js} +1 -1
  50. package/dist/assets/{diagram-Z3DM3KII-D4qpv4-B-DCgIzms7.js → diagram-Z3DM3KII-D4qpv4-B-D0DcEN8W.js} +1 -1
  51. package/dist/assets/{dist-C1y0E8Di.js → dist-CyJfj5nA.js} +1 -1
  52. package/dist/assets/{dist-CrvZQbzA.js → dist-D1NuNlw7.js} +1 -1
  53. package/dist/assets/{dist-DeiyD9Ki-HmcgckNS.js → dist-DeiyD9Ki-CsdnEslR.js} +1 -1
  54. package/dist/assets/{dist-DjAUC6Df.js → dist-csgyobRf.js} +1 -1
  55. package/dist/assets/{dist-D0m3HNDL.js → dist-iwCSUG0R.js} +1 -1
  56. package/dist/assets/{ebnfDiagram-PWID7BFC-CAbv3sZg-D_wgwK21.js → ebnfDiagram-PWID7BFC-CAbv3sZg-zYV7b2Vy.js} +1 -1
  57. package/dist/assets/{erDiagram-RLTQ6QDP-a10Ryh0--Bujk3q7n.js → erDiagram-RLTQ6QDP-a10Ryh0--Dq--2XRb.js} +1 -1
  58. package/dist/assets/eventmodeling-NTZA5JFV-DhqtNS8R-C9p-sqyF.js +1 -0
  59. package/dist/assets/flowDiagram-HODETNUW-CAW_8mwY-C7N_B32G.js +1 -0
  60. package/dist/assets/{ganttDiagram-EL5Y4UJY-Cb7leeOC-BM1XnrTx.js → ganttDiagram-EL5Y4UJY-Cb7leeOC-BZul1n-G.js} +1 -1
  61. package/dist/assets/gitGraph-4MIJSDKK-S_Zs6Nxs-DY1iSFH4.js +1 -0
  62. package/dist/assets/{gitGraphDiagram-WWUBYQGX-BCSbUpXG-wz9LJhjS.js → gitGraphDiagram-WWUBYQGX-BCSbUpXG-Cd562rpn.js} +1 -1
  63. package/dist/assets/{html-DdQiKDqM-_EHD0DY0.js → html-DdQiKDqM-BsuwriGq.js} +1 -1
  64. package/dist/assets/{index-IfilW1QZ.js → index-CDUg8mhn.js} +330 -330
  65. package/dist/assets/info-A6RAGUB7-4sGJh1is-C7ujB-Ie.js +1 -0
  66. package/dist/assets/{infoDiagram-27XIBGKW-BJRaZItN-DUn6Imd4.js → infoDiagram-27XIBGKW-BJRaZItN-Cm4T5Wwv.js} +1 -1
  67. package/dist/assets/{ishikawaDiagram-5VMMS53U-DHlFe__S-QEXazEAW.js → ishikawaDiagram-5VMMS53U-DHlFe__S-DGs6xnNx.js} +1 -1
  68. package/dist/assets/{journeyDiagram-3NMN7TZE-BOIo3JM--BuXFu263.js → journeyDiagram-3NMN7TZE-BOIo3JM--Bzc0IZn6.js} +1 -1
  69. package/dist/assets/{kanban-definition-UXKFOSKX-yrQdG683-DOReg6eb.js → kanban-definition-UXKFOSKX-yrQdG683-Cct0Djrh.js} +1 -1
  70. package/dist/assets/{lengths-CvmPfBid-BCQFXUKI.js → lengths-CvmPfBid-CzTSmCcr.js} +1 -1
  71. package/dist/assets/{line-DUb1TjJS-BuJA9mg4.js → line-DUb1TjJS-3fYWqbSc.js} +1 -1
  72. package/dist/assets/{linear-xsuGWu5q-n7S60vDq.js → linear-xsuGWu5q-CfNm2yv7.js} +1 -1
  73. package/dist/assets/{liteAdaptor-C0FQiOEx-Cq4--uCe.js → liteAdaptor-C0FQiOEx-CTVB31Rv.js} +1 -1
  74. package/dist/assets/{mathjax-DVEo4UYj-CQVW99gS.js → mathjax-DVEo4UYj-Bp47CElr.js} +1 -1
  75. package/dist/assets/{mermaid-parser.core-fkjeiYO7-BB0BoGpH.js → mermaid-parser.core-fkjeiYO7-P9xXkjhl.js} +2 -2
  76. package/dist/assets/{mermaid.core-CZDx2Cyn-BgLyvZEv.js → mermaid.core-CZDx2Cyn-C08TJAFj.js} +4 -4
  77. package/dist/assets/{mindmap-definition-YA3MSWOX-BpKAVyqs-C-qd-rAQ.js → mindmap-definition-YA3MSWOX-BpKAVyqs-d4jTnjxk.js} +1 -1
  78. package/dist/assets/{mo-CrlNnGXX-ZonVrraQ.js → mo-CrlNnGXX-DC4IkWbc.js} +1 -1
  79. package/dist/assets/packet-AYTQ26CC-MQQyx8fI-2fyYIiyC.js +1 -0
  80. package/dist/assets/{pegDiagram-XKGWAZYB-C7eG_Ohl-qsj3QzrM.js → pegDiagram-XKGWAZYB-C7eG_Ohl-Bq1D--Oy.js} +1 -1
  81. package/dist/assets/pie-WAS4IAKB-CyaL5i_d-Cx6D4r8D.js +1 -0
  82. package/dist/assets/{pieDiagram-E7YTZNPT-5f9wSfDR-BtYdsTu0.js → pieDiagram-E7YTZNPT-5f9wSfDR-DSt7pK7-.js} +1 -1
  83. package/dist/assets/{quadrantDiagram-AXDQQJYC-mWeaOj5S-K6fu4j7h.js → quadrantDiagram-AXDQQJYC-mWeaOj5S-C-jM9gYY.js} +1 -1
  84. package/dist/assets/radar-RG4KPBEZ-DR-SsHDJ-DvcjCpIE.js +1 -0
  85. package/dist/assets/railroad-74A4TZTK-C2gqsOGX-CZDIxK_E.js +1 -0
  86. package/dist/assets/railroad-abnf-HS5TGJTU-Dpzw6P5u-C1DLl3Zi.js +1 -0
  87. package/dist/assets/railroad-ebnf-LZEXJU2U-J_BuIrPo-CIwsP1_7.js +1 -0
  88. package/dist/assets/railroad-peg-WCYAUIDC-DzMStOR--svRhPIKR.js +1 -0
  89. package/dist/assets/{railroadDiagram-O6MQD6OU-DJskhE7u-Db2jf6Vu.js → railroadDiagram-O6MQD6OU-DJskhE7u-myONQWUy.js} +1 -1
  90. package/dist/assets/{requirementDiagram-BXWQKSXE-B5E0bU4h-Bu5DE1z8.js → requirementDiagram-BXWQKSXE-B5E0bU4h-D9fqLodu.js} +1 -1
  91. package/dist/assets/{sankeyDiagram-P5KCCOFB-DS3AOTai-CnB0Boj3.js → sankeyDiagram-P5KCCOFB-DS3AOTai-BthgK6rY.js} +1 -1
  92. package/dist/assets/{sequenceDiagram-WJ2MYXX4-Bn2L9osv-CnvxSlmR.js → sequenceDiagram-WJ2MYXX4-Bn2L9osv-DS7EWkDd.js} +1 -1
  93. package/dist/assets/{src-CLC0ddSd-ShceZCNY.js → src-CLC0ddSd-BdwptT7W.js} +1 -1
  94. package/dist/assets/{stateDiagram-D77RDMKH-DbtoW7HL-CpFvDXBl.js → stateDiagram-D77RDMKH-DbtoW7HL-4vaZ49Do.js} +1 -1
  95. package/dist/assets/stateDiagram-v2-MP3YSRHH-CX6RalKY-R5jhdX-f.js +1 -0
  96. package/dist/assets/{svg-CaHU_sxA-BO3d_6Ky.js → svg-CaHU_sxA-Z3rOtT_R.js} +1 -1
  97. package/dist/assets/{swimlanes-42K2YHIH-90h8w_3B-Cb8CFT1b.js → swimlanes-42K2YHIH-90h8w_3B-MickVn2k.js} +1 -1
  98. package/dist/assets/swimlanesDiagram-VR7AAH4N-49XH_TMr-DC1vETI3.js +8 -0
  99. package/dist/assets/{tex-B1cONMvb-BfsG0Rte.js → tex-B1cONMvb-DcRnJGdj.js} +1 -1
  100. package/dist/assets/{timeline-definition-24CTP7MA-Bx3KcICO-BwXqR_3e.js → timeline-definition-24CTP7MA-Bx3KcICO-DL8QwA1A.js} +1 -1
  101. package/dist/assets/treeView-Q6P3EWNA-gFs854Sn-Dye9sPOg.js +1 -0
  102. package/dist/assets/treemap-WGGIJYW6-DGh_szUA-CiKg4aQq.js +1 -0
  103. package/dist/assets/{vennDiagram-4TSXK5OY-DSexNe_H-gzw6hGhi.js → vennDiagram-4TSXK5OY-DSexNe_H-BJy1ZzMN.js} +1 -1
  104. package/dist/assets/wardley-WFR3VGLG-BVLYL3gB-BdfK_sE2.js +1 -0
  105. package/dist/assets/{wardleyDiagram-VM6X3IG4-DesYYyZW--gQrXHHZ.js → wardleyDiagram-VM6X3IG4-DesYYyZW-CzErQ6vX.js} +1 -1
  106. package/dist/assets/{xychartDiagram-S5SC5T6Z-dIt6pHWV-DoBDFiMo.js → xychartDiagram-S5SC5T6Z-dIt6pHWV-B9Deu8_-.js} +1 -1
  107. package/dist/index.html +1 -1
  108. package/package.json +1 -1
  109. package/server/agents/antigravity-mcp.ts +7 -2
  110. package/server/agents/cursor-last-turn.ts +105 -0
  111. package/server/agents/cursor-mcp.ts +177 -0
  112. package/server/agents/cursor-sessions.ts +26 -4
  113. package/server/agents/cursor-usage.ts +123 -0
  114. package/server/infra/own-assign.ts +15 -0
  115. package/server/routes/hook-routes.ts +18 -1
  116. package/server/routes/mcp-routes.ts +2 -2
  117. package/server/routes/plugin-routes.ts +14 -12
  118. package/server/routes/ws-routes.ts +13 -2
  119. package/server/session/agent-badges.ts +10 -0
  120. package/server/session/bridge-session.ts +34 -14
  121. package/server/session/lifecycle.ts +2 -0
  122. package/server/session/session-reads.ts +18 -0
  123. package/server/session/spawn-cursor.ts +25 -9
  124. package/server/session/spawn-directory-mcp.ts +14 -0
  125. package/dist/assets/architecture-7GRP2DOG-CRS69XmP-D0hwkUSe.js +0 -1
  126. package/dist/assets/channel-BjESmYnj-CSH8it0a.js +0 -1
  127. package/dist/assets/classDiagram-ZZMXUADV-C7gP-pUH-DfPjXaJw.js +0 -1
  128. package/dist/assets/classDiagram-v2-VYDZK3BY-CUwV5k1F-DfPjXaJw.js +0 -1
  129. package/dist/assets/cynefin-OW5HDTMX-C4iKivN4-DO_vgD-g.js +0 -1
  130. package/dist/assets/eventmodeling-NTZA5JFV-DhqtNS8R-CO3LnOLR.js +0 -1
  131. package/dist/assets/flowDiagram-HODETNUW-CAW_8mwY-BAZr48OD.js +0 -1
  132. package/dist/assets/gitGraph-4MIJSDKK-S_Zs6Nxs-9qkMMsLJ.js +0 -1
  133. package/dist/assets/info-A6RAGUB7-4sGJh1is-B5MTNXpw.js +0 -1
  134. package/dist/assets/packet-AYTQ26CC-MQQyx8fI-DNzukwFF.js +0 -1
  135. package/dist/assets/pie-WAS4IAKB-CyaL5i_d-BvgAS1Ii.js +0 -1
  136. package/dist/assets/radar-RG4KPBEZ-DR-SsHDJ-BKmGFUW2.js +0 -1
  137. package/dist/assets/railroad-74A4TZTK-C2gqsOGX-CtqPBulg.js +0 -1
  138. package/dist/assets/railroad-abnf-HS5TGJTU-Dpzw6P5u-Uce82Efu.js +0 -1
  139. package/dist/assets/railroad-ebnf-LZEXJU2U-J_BuIrPo-b31ZUSUp.js +0 -1
  140. package/dist/assets/railroad-peg-WCYAUIDC-DzMStOR--Debzjp3V.js +0 -1
  141. package/dist/assets/stateDiagram-v2-MP3YSRHH-CX6RalKY-B6UpeGWr.js +0 -1
  142. package/dist/assets/swimlanesDiagram-VR7AAH4N-49XH_TMr-DlAxKIKI.js +0 -8
  143. package/dist/assets/treeView-Q6P3EWNA-gFs854Sn-BwdxVCvS.js +0 -1
  144. package/dist/assets/treemap-WGGIJYW6-DGh_szUA-BLuORwku.js +0 -1
  145. package/dist/assets/wardley-WFR3VGLG-BVLYL3gB-BlIA2tmL.js +0 -1
package/README.md CHANGED
@@ -1446,9 +1446,13 @@ question: can this CLI be handed a session-scoped payload on a per-spawn flag? *
1446
1446
  Copilot** can. **Antigravity, Grok and Cursor** cannot — they read a file in the directory — and
1447
1447
  **Muse** reads neither, which is the third route below.
1448
1448
 
1449
- **Cursor is the one entry with a gap rather than a mechanism**: it reads `.cursor/mcp.json`, and
1450
- nothing writes that file for you yet ([#2066](https://github.com/receptron/mulmoterminal/issues/2066)),
1451
- so a cursor cell today reaches whatever MCP you configured yourself.
1449
+ **Cursor is half of each**, and the half nobody would guess is the second: it reads a file in the
1450
+ directory as agy does (`.cursor/mcp.json`, written by `server/agents/cursor-mcp.ts`), but it starts
1451
+ that MCP server on a CURATED ENVIRONMENT rather than its own — so the group and the port travel as
1452
+ ARGV, as muse's do, and the SESSION is resolved through `/api/mcp-resolve`. An agy-shaped entry (group
1453
+ in `env`, port inherited) was tried first and reached the bridge with no port at all. Cursor also refuses to
1454
+ load a server it has not APPROVED and says nothing when it skips one, so each entry is approved with
1455
+ `cursor-agent mcp enable` as the cell starts.
1452
1456
 
1453
1457
 
1454
1458
  | | Workspace cell / single view | Project-directory grid cell |
@@ -1487,34 +1491,37 @@ Which route a session takes is decided by `carriesFullGuiMcp()` in
1487
1491
  `server/session/mcp-config.ts` — the single view, a cell-less chat, or anything whose cwd **is**
1488
1492
  the workspace take the first; anything in a project directory takes the second.
1489
1493
 
1490
- **The workspace is agent-agnostic for the agents that can RECEIVE a per-spawn config** — claude and
1491
- codex ask the same predicate, so two terminals in the workspace reach the same tools no matter which
1492
- of the two started them. **Antigravity, Grok and Muse cannot, and that is the exception you will
1493
- meet first:**
1494
+ **The workspace is agent-agnostic for the agents that can RECEIVE a per-spawn config** — claude,
1495
+ codex and copilot ask the same predicate, so two terminals in the workspace reach the same tools no
1496
+ matter which of the three started them. **Antigravity, Grok, Muse and Cursor cannot, and that is the
1497
+ exception you will meet first:**
1494
1498
 
1495
1499
  | Started as | In the workspace | In a project directory |
1496
1500
  |---|---|---|
1497
1501
  | claude cell (including `?gui=0`) | `mt`, every tool | the directory's registered groups |
1498
1502
  | codex cell | `mt`, every tool | the directory's registered groups |
1503
+ | copilot cell | `mt`, every tool | the directory's registered groups |
1504
+ | cursor cell | **the directory's registered groups** — nothing registered means **no GUI tools at all** | the directory's registered groups |
1499
1505
  | antigravity cell | **the directory's registered groups** — nothing registered means **no GUI tools at all** | the directory's registered groups |
1500
1506
  | grok cell | **the directory's registered groups** — nothing registered means **no GUI tools at all** | the directory's registered groups |
1501
1507
  | muse cell | **the directory's registered groups** — nothing registered means **no GUI tools at all** | the directory's registered groups |
1502
1508
  | any launcher chip | untouched | untouched |
1503
1509
 
1504
- None of the three takes an MCP flag: `agy` reads `.agents/mcp_config.json`, `grok` reads
1505
- `.grok/config.toml` in the working directory, and `muse` reads a plugin installed for the whole
1506
- machine — and neither a file shared by every session in a directory nor a machine-wide plugin can be
1507
- handed to one session and not another — so there is nothing for "this cwd is the workspace" to change. The
1510
+ None of those four takes an MCP flag: `agy` reads `.agents/mcp_config.json`, `grok` reads
1511
+ `.grok/config.toml` and `cursor` reads `.cursor/mcp.json` in the working directory, and `muse` reads a
1512
+ plugin installed for the whole machine — and neither a file shared by every session in a directory nor
1513
+ a machine-wide plugin can be handed to one session and not another — so there is nothing for "this cwd
1514
+ is the workspace" to change. The
1508
1515
  membership is `FULL_GUI_MCP_AGENTS` in `common/guiMcpAgents.ts`, in `common/` precisely so the
1509
1516
  launcher form and the spawn cannot disagree about it
1510
1517
  ([#1423](https://github.com/receptron/mulmoterminal/issues/1423)).
1511
1518
 
1512
1519
  The consequence is easy to hit and hard to guess: `presentDocument` works in a project you once
1513
1520
  flipped **Canvas** on for, and is missing in the workspace where everything else is automatic. Fix it
1514
- the same way anywhere — pick **Antigravity** or **Grok**, point WORKING DIRECTORY at that directory,
1515
- flip the **Canvas** switch (it stays visible for both), and start a **new** session; the switch
1516
- registers the directory, never a session already running. Full procedure:
1517
- [Antigravity and Grok register everywhere](https://receptron.github.io/mulmoterminal/guide/en/basics.html#antigravity-gui-tools)
1521
+ the same way anywhere — pick **Antigravity**, **Grok**, **Muse** or **Cursor**, point WORKING
1522
+ DIRECTORY at that directory, flip the **Canvas** switch (it stays visible for all four), and start a
1523
+ **new** session; the switch registers the directory, never a session already running. Full procedure:
1524
+ [Antigravity, Grok, Muse and Cursor register everywhere](https://receptron.github.io/mulmoterminal/guide/en/basics.html#antigravity-gui-tools)
1518
1525
  · [日本語](https://receptron.github.io/mulmoterminal/guide/ja/basics.html#antigravity-gui-tools).
1519
1526
 
1520
1527
  **A launcher chip is not an agent session — it is a command.** Whatever the command line names,
@@ -1,7 +1,6 @@
1
1
  // Which agents are handed the WHOLE GUI MCP — every tool on one generated `mt` URL — when their
2
- // session runs in the workspace, which reach GUI tools only through what their directory
3
- // registered, and — a third answer since cursor landed — which reach NEITHER because the file
4
- // they read is one nothing here writes yet.
2
+ // session runs in the workspace, and which reach GUI tools only through what their directory
3
+ // registered.
5
4
  //
6
5
  // In `common/` because BOTH sides decide from it and neither can derive it: the server decides it
7
6
  // by which spawn path consults `carriesFullGuiMcp`, and the launcher form decides from it whether
@@ -58,28 +57,3 @@ export const pickCarriesFullGuiMcp = (pick: AgentPick, customAgents: readonly Cu
58
57
  if (custom) return agentCarriesFullGuiMcp(custom.agent);
59
58
  return isLaunchAgent(pick) && agentCarriesFullGuiMcp(pick);
60
59
  };
61
-
62
- /**
63
- * Agents that reach NEITHER route — not the per-spawn flag above, and not the directory's
64
- * registration either.
65
- *
66
- * Cursor alone, and that is a GAP rather than a mechanism: it reads `.cursor/mcp.json` (or
67
- * `~/.cursor/mcp.json`) and nothing in this repo writes either file yet (#2066). Until one does,
68
- * the launcher's four per-group switches cannot affect a cursor session — they register servers
69
- * that Antigravity and Grok read — so showing them under a cursor cell's "GUI tools" is a control
70
- * that does nothing, which is #1423's lesson from the other side: that issue was about HIDING the
71
- * only control that could have helped, and this is about SHOWING one that cannot.
72
- *
73
- * Delete this the day #2066 lands. It is a list of one because the condition is a missing writer,
74
- * not a property of the CLI.
75
- */
76
- export const DIRECTORY_MCP_BLIND_AGENTS = ["cursor"] as const;
77
-
78
- export const agentReachesNoGuiMcp = (agent: SessionAgent): boolean => DIRECTORY_MCP_BLIND_AGENTS.some((candidate) => candidate === agent);
79
-
80
- /** The same question asked of an Agent Picker choice. A custom agent runs Claude Code, which is on
81
- * the per-spawn route, so it is never blind. */
82
- export const pickReachesNoGuiMcp = (pick: AgentPick, customAgents: readonly CustomAgent[]): boolean => {
83
- if (customAgentFor(pick, customAgents)) return false;
84
- return isLaunchAgent(pick) && agentReachesNoGuiMcp(pick);
85
- };