@rubytech/create-maxy-code 0.1.357 → 0.1.358

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 (232) hide show
  1. package/dist/__tests__/claude-ptys-slice.test.js +36 -1
  2. package/dist/port-resolution.js +18 -1
  3. package/package.json +1 -1
  4. package/payload/platform/package-lock.json +237 -0
  5. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js +79 -1
  6. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js.map +1 -1
  7. package/payload/platform/plugins/admin/mcp/dist/index.js +17 -3
  8. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  9. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts +16 -0
  10. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts.map +1 -1
  11. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js +52 -0
  12. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js.map +1 -1
  13. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +59 -1
  14. package/payload/platform/plugins/cloudflare/PLUGIN.md +7 -1
  15. package/payload/platform/plugins/cloudflare/bin/__tests__/cf-token.test.sh +195 -0
  16. package/payload/platform/plugins/cloudflare/bin/cf-token.sh +157 -0
  17. package/payload/platform/plugins/cloudflare/references/api.md +2 -0
  18. package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +14 -0
  19. package/payload/platform/plugins/cloudflare/skills/site-deploy/SKILL.md +10 -1
  20. package/payload/platform/plugins/docs/PLUGIN.md +2 -0
  21. package/payload/platform/plugins/docs/references/claudeai-connectors.md +45 -0
  22. package/payload/platform/plugins/docs/references/cloudflare.md +6 -0
  23. package/payload/platform/plugins/docs/references/troubleshooting.md +2 -0
  24. package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
  25. package/payload/platform/plugins/email/PLUGIN.md +7 -3
  26. package/payload/platform/plugins/email/mcp/dist/__tests__/body-extract.test.d.ts +2 -0
  27. package/payload/platform/plugins/email/mcp/dist/__tests__/body-extract.test.d.ts.map +1 -0
  28. package/payload/platform/plugins/email/mcp/dist/__tests__/body-extract.test.js +99 -0
  29. package/payload/platform/plugins/email/mcp/dist/__tests__/body-extract.test.js.map +1 -0
  30. package/payload/platform/plugins/email/mcp/dist/__tests__/compose-draft-id.test.d.ts +2 -0
  31. package/payload/platform/plugins/email/mcp/dist/__tests__/compose-draft-id.test.d.ts.map +1 -0
  32. package/payload/platform/plugins/email/mcp/dist/__tests__/compose-draft-id.test.js +32 -0
  33. package/payload/platform/plugins/email/mcp/dist/__tests__/compose-draft-id.test.js.map +1 -0
  34. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js +64 -6
  35. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js.map +1 -1
  36. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js +12 -0
  37. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js.map +1 -1
  38. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +94 -9
  39. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -1
  40. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js +4 -0
  41. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js.map +1 -1
  42. package/payload/platform/plugins/email/mcp/dist/index.js +39 -2
  43. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  44. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts +5 -0
  45. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -1
  46. package/payload/platform/plugins/email/mcp/dist/lib/compose.js +8 -1
  47. package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -1
  48. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +68 -33
  49. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  50. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +253 -97
  51. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  52. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +6 -0
  53. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -1
  54. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +4 -0
  55. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -1
  56. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts +8 -1
  57. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -1
  58. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +10 -6
  59. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -1
  60. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -1
  61. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +4 -2
  62. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -1
  63. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts +15 -0
  64. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts.map +1 -0
  65. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js +29 -0
  66. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js.map +1 -0
  67. package/payload/platform/plugins/email/mcp/package.json +2 -0
  68. package/payload/platform/plugins/email/references/email-reference.md +21 -1
  69. package/payload/platform/scripts/rss-sampler.sh +21 -0
  70. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  71. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  72. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  73. package/payload/platform/services/claude-session-manager/dist/connector-auth.d.ts +31 -0
  74. package/payload/platform/services/claude-session-manager/dist/connector-auth.d.ts.map +1 -0
  75. package/payload/platform/services/claude-session-manager/dist/connector-auth.js +49 -0
  76. package/payload/platform/services/claude-session-manager/dist/connector-auth.js.map +1 -0
  77. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +24 -0
  78. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  79. package/payload/platform/services/claude-session-manager/dist/http-server.js +214 -17
  80. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  81. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +2 -1
  82. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  83. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +24 -4
  84. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  85. package/payload/platform/services/webchat-channel/dist/instructions.d.ts +1 -0
  86. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  87. package/payload/platform/services/webchat-channel/dist/instructions.js +28 -0
  88. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  89. package/payload/platform/services/webchat-channel/dist/server.d.ts.map +1 -1
  90. package/payload/platform/services/webchat-channel/dist/server.js +75 -5
  91. package/payload/platform/services/webchat-channel/dist/server.js.map +1 -1
  92. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  93. package/payload/server/public/assets/{AdminLoginScreens-BW1UgfoI.js → AdminLoginScreens-Ro_RUTDh.js} +1 -1
  94. package/payload/server/public/assets/{AdminShell-CDQDkT1R.js → AdminShell-CmqhpAPU.js} +1 -1
  95. package/payload/server/public/assets/{Checkbox-O1qvMk_u.js → Checkbox-dYLaMEdh.js} +1 -1
  96. package/payload/server/public/assets/OperatorConversations-2zJh7qnO.css +1 -0
  97. package/payload/server/public/assets/OperatorConversations-Cei12sSK.js +9 -0
  98. package/payload/server/public/assets/{admin-BkYc54bi.js → admin-BldZQrJF.js} +1 -1
  99. package/payload/server/public/assets/{arc-DpkSQNto.js → arc-Crkz45LN.js} +1 -1
  100. package/payload/server/public/assets/architecture-YZFGNWBL-Dma4Bgha.js +1 -0
  101. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Bw7Yq8O9.js → architectureDiagram-Q4EWVU46-C9JThHgP.js} +1 -1
  102. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BBtJQFSz.js → blockDiagram-DXYQGD6D-DpsV_HXT.js} +1 -1
  103. package/payload/server/public/assets/{browser-CySvj140.js → browser-DrXZ4wpy.js} +1 -1
  104. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-JAMgxzOr.js → c4Diagram-AHTNJAMY-CTm_6aKi.js} +1 -1
  105. package/payload/server/public/assets/{calendar-DgP7lal2.js → calendar-CQ4TCbO7.js} +1 -1
  106. package/payload/server/public/assets/channel-B_-5bau1.js +1 -0
  107. package/payload/server/public/assets/chat-D7w6_NE1.js +1 -0
  108. package/payload/server/public/assets/{chunk-2KRD3SAO-eDugsc2L.js → chunk-2KRD3SAO-1KSJW1q6.js} +1 -1
  109. package/payload/server/public/assets/{chunk-336JU56O-BXfECwdC.js → chunk-336JU56O-C3t08Ip-.js} +2 -2
  110. package/payload/server/public/assets/chunk-426QAEUC-Dirxdwjh.js +1 -0
  111. package/payload/server/public/assets/{chunk-4BX2VUAB-CByVeKCY.js → chunk-4BX2VUAB-kl1ze33n.js} +1 -1
  112. package/payload/server/public/assets/{chunk-4TB4RGXK-CpY0DcUB.js → chunk-4TB4RGXK-DxpoDoHg.js} +1 -1
  113. package/payload/server/public/assets/{chunk-55IACEB6-C3YxgyIb.js → chunk-55IACEB6-WM9VJzha.js} +1 -1
  114. package/payload/server/public/assets/{chunk-5FUZZQ4R-Bc0d7j8A.js → chunk-5FUZZQ4R-CLH63ZH3.js} +1 -1
  115. package/payload/server/public/assets/{chunk-5PVQY5BW-CTUGMRIa.js → chunk-5PVQY5BW-DCTb8IAT.js} +1 -1
  116. package/payload/server/public/assets/{chunk-67CJDMHE-CbdPnpLd.js → chunk-67CJDMHE-BSYzyaoH.js} +1 -1
  117. package/payload/server/public/assets/{chunk-7N4EOEYR-Cjl2kevz.js → chunk-7N4EOEYR-CarJ7O2P.js} +1 -1
  118. package/payload/server/public/assets/{chunk-AA7GKIK3-BgozIh5p.js → chunk-AA7GKIK3-DTNLyBpH.js} +1 -1
  119. package/payload/server/public/assets/{chunk-BSJP7CBP-6Ufq45NW.js → chunk-BSJP7CBP-BFmHflHY.js} +1 -1
  120. package/payload/server/public/assets/{chunk-CIAEETIT-BhhYuMnA.js → chunk-CIAEETIT-BpjG0IzU.js} +1 -1
  121. package/payload/server/public/assets/{chunk-EDXVE4YY-BfaJ3yDD.js → chunk-EDXVE4YY-2fSowhlW.js} +1 -1
  122. package/payload/server/public/assets/{chunk-ENJZ2VHE-C7-hIGVC.js → chunk-ENJZ2VHE-ClcranGV.js} +1 -1
  123. package/payload/server/public/assets/{chunk-FMBD7UC4-BQvvyocF.js → chunk-FMBD7UC4-DLq4BItQ.js} +1 -1
  124. package/payload/server/public/assets/{chunk-FOC6F5B3-C6rBDOxH.js → chunk-FOC6F5B3-B9QI3Guz.js} +1 -1
  125. package/payload/server/public/assets/{chunk-ICPOFSXX-BjOJvkVa.js → chunk-ICPOFSXX-BAr-Mv1Z.js} +2 -2
  126. package/payload/server/public/assets/{chunk-K5T4RW27-kKowRHhn.js → chunk-K5T4RW27-8PvAHasY.js} +1 -1
  127. package/payload/server/public/assets/{chunk-KGLVRYIC-bAEV_5eH.js → chunk-KGLVRYIC--aGaDRH5.js} +1 -1
  128. package/payload/server/public/assets/{chunk-LIHQZDEY-BLvsQAfg.js → chunk-LIHQZDEY-BrWj7mw2.js} +1 -1
  129. package/payload/server/public/assets/{chunk-ORNJ4GCN-BzYZfPZ7.js → chunk-ORNJ4GCN-kYQmkMTi.js} +1 -1
  130. package/payload/server/public/assets/{chunk-OYMX7WX6-CL7WRw42.js → chunk-OYMX7WX6-CIsryCWH.js} +1 -1
  131. package/payload/server/public/assets/chunk-QZHKN3VN-Duipo1kI.js +1 -0
  132. package/payload/server/public/assets/{chunk-U2HBQHQK-BdcVGjau.js → chunk-U2HBQHQK-68X653e3.js} +1 -1
  133. package/payload/server/public/assets/{chunk-X2U36JSP-C0CL_Jin.js → chunk-X2U36JSP-v3v9soX3.js} +1 -1
  134. package/payload/server/public/assets/{chunk-XPW4576I-CsV7CUxH.js → chunk-XPW4576I-CW5DPpop.js} +1 -1
  135. package/payload/server/public/assets/{chunk-YZCP3GAM-Cj0_fLkR.js → chunk-YZCP3GAM-B1VP7Rl2.js} +1 -1
  136. package/payload/server/public/assets/{chunk-ZZ45TVLE-DLuquyoY.js → chunk-ZZ45TVLE-DiJrujNY.js} +1 -1
  137. package/payload/server/public/assets/classDiagram-6PBFFD2Q-B3kX5SuB.js +1 -0
  138. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D761c7Lr.js +1 -0
  139. package/payload/server/public/assets/clone-BrhFv6Tb.js +1 -0
  140. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-BU3EOLXX.js → cose-bilkent-S5V4N54A-BscXxLMc.js} +1 -1
  141. package/payload/server/public/assets/{dagre-KV5264BT-CoCAYhFc.js → dagre-KV5264BT-DVgGlTQ1.js} +1 -1
  142. package/payload/server/public/assets/{dagre-BRq8C9NU.js → dagre-MBv6WlCS.js} +1 -1
  143. package/payload/server/public/assets/data-Dc5XNWgF.js +1 -0
  144. package/payload/server/public/assets/{diagram-5BDNPKRD-DBy5GNaQ.js → diagram-5BDNPKRD-BmhCaO0a.js} +1 -1
  145. package/payload/server/public/assets/{diagram-G4DWMVQ6-l93MsBLv.js → diagram-G4DWMVQ6-ChU9L8vz.js} +1 -1
  146. package/payload/server/public/assets/{diagram-MMDJMWI5-BIfXkVlL.js → diagram-MMDJMWI5-Oy409Zc_.js} +1 -1
  147. package/payload/server/public/assets/{diagram-TYMM5635-BuTJLBny.js → diagram-TYMM5635-Cn1YByqk.js} +1 -1
  148. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BwPxWDbP.js → erDiagram-SMLLAGMA-e17yfLvr.js} +1 -1
  149. package/payload/server/public/assets/{flatten-DtM0XAMt.js → flatten-Cl1Bc3dR.js} +1 -1
  150. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BhPtHXMR.js → flowDiagram-DWJPFMVM-Dqt7sCVZ.js} +1 -1
  151. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BlXjprdD.js → ganttDiagram-T4ZO3ILL-B4IhwS2r.js} +1 -1
  152. package/payload/server/public/assets/gitGraph-7Q5UKJZL-BCQAqtLy.js +1 -0
  153. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BW36BDiu.js → gitGraphDiagram-UUTBAWPF-BDw-PKcI.js} +1 -1
  154. package/payload/server/public/assets/{graph-uFhGyOZR.js → graph-l_3_j3I9.js} +3 -3
  155. package/payload/server/public/assets/{graph-labels-BNnhRQqM.js → graph-labels-CJj55nHk.js} +1 -1
  156. package/payload/server/public/assets/{graphlib-Bjg3Tq-k.js → graphlib-DPIYk_sg.js} +1 -1
  157. package/payload/server/public/assets/info-OMHHGYJF-qU7hK50T.js +1 -0
  158. package/payload/server/public/assets/infoDiagram-42DDH7IO-KGdcJeTs.js +2 -0
  159. package/payload/server/public/assets/{isEmpty-D__iH1WQ.js → isEmpty-D1pGOD1J.js} +1 -1
  160. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CmB-bA_O.js → ishikawaDiagram-UXIWVN3A-BRIHsB3G.js} +1 -1
  161. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-Bt1fJKmc.js → journeyDiagram-VCZTEJTY-aKNgmoHd.js} +1 -1
  162. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DVbksz_J.js → kanban-definition-6JOO6SKY-cwBwT-nm.js} +1 -1
  163. package/payload/server/public/assets/{line-BX2Ugx3B.js → line-DVtVRzUA.js} +1 -1
  164. package/payload/server/public/assets/{linear-Bdc-QJWI.js → linear-DtoOFPO2.js} +1 -1
  165. package/payload/server/public/assets/{mermaid-parser.core-qv1e-J5x.js → mermaid-parser.core-G7YD_zO3.js} +2 -2
  166. package/payload/server/public/assets/{mermaid.core-C_d9YQX_.js → mermaid.core-DpFyndHm.js} +3 -3
  167. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-DwKGvF14.js → mindmap-definition-QFDTVHPH-CYXK_Pvz.js} +1 -1
  168. package/payload/server/public/assets/{operator-DeCk_qYw.js → operator-CKmOgXNa.js} +1 -1
  169. package/payload/server/public/assets/{ordinal-BRQ5CzZY.js → ordinal-CBZeH4Yp.js} +1 -1
  170. package/payload/server/public/assets/packet-4T2RLAQJ-DiU2yS9m.js +1 -0
  171. package/payload/server/public/assets/page-hG7xTrcO.js +32 -0
  172. package/payload/server/public/assets/pie-ZZUOXDRM-zHUKKlVv.js +1 -0
  173. package/payload/server/public/assets/{pieDiagram-DEJITSTG-dUvQC_4S.js → pieDiagram-DEJITSTG-DFo4N6WH.js} +1 -1
  174. package/payload/server/public/assets/{public-DgltXhnD.js → public-smrhkkxD.js} +1 -1
  175. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CebX_oPa.js → quadrantDiagram-34T5L4WZ-BlH5iIhl.js} +1 -1
  176. package/payload/server/public/assets/radar-PYXPWWZC-BUnVoaPg.js +1 -0
  177. package/payload/server/public/assets/{reduce-CkcXOmmJ.js → reduce-PuPlFPRX.js} +1 -1
  178. package/payload/server/public/assets/{requirementDiagram-MS252O5E-h2euIqGj.js → requirementDiagram-MS252O5E-D5WLty8A.js} +1 -1
  179. package/payload/server/public/assets/rotate-ccw-Dd8aAvU7.js +1 -0
  180. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DCii3fkF.js → sankeyDiagram-XADWPNL6-vB85IxHG.js} +1 -1
  181. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-CQSGYmlq.js → sequenceDiagram-FGHM5R23-Cxraa0Ee.js} +1 -1
  182. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CVtU0iXH.js → stateDiagram-FHFEXIEX-BBPssYBx.js} +1 -1
  183. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BWmmUwDt.js +1 -0
  184. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-ChvsBltI.js → timeline-definition-GMOUNBTQ-Bgk6PT62.js} +1 -1
  185. package/payload/server/public/assets/treeView-SZITEDCU-C3Y-Q52h.js +1 -0
  186. package/payload/server/public/assets/treemap-W4RFUUIX-Dk0qZpAg.js +1 -0
  187. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-e-EZiiba.js → vennDiagram-DHZGUBPP-B-APTs3L.js} +1 -1
  188. package/payload/server/public/assets/wardley-RL74JXVD-BAWI02OA.js +1 -0
  189. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-4JaRn1s5.js → wardleyDiagram-NUSXRM2D-CkXJSs_i.js} +1 -1
  190. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-kxwmCNuM.js → xychartDiagram-5P7HB3ND-BkyshPMV.js} +1 -1
  191. package/payload/server/public/browser.html +4 -4
  192. package/payload/server/public/calendar.html +4 -4
  193. package/payload/server/public/chat.html +7 -6
  194. package/payload/server/public/data.html +4 -4
  195. package/payload/server/public/graph.html +7 -6
  196. package/payload/server/public/index.html +6 -6
  197. package/payload/server/public/operator.html +9 -8
  198. package/payload/server/public/public.html +7 -6
  199. package/payload/server/server.js +244 -24
  200. package/payload/server/public/assets/OperatorConversations-CVH-FoJo.css +0 -1
  201. package/payload/server/public/assets/OperatorConversations-jqaPCHwB.js +0 -9
  202. package/payload/server/public/assets/architecture-YZFGNWBL-Csj53u5T.js +0 -1
  203. package/payload/server/public/assets/channel-BUQUAUts.js +0 -1
  204. package/payload/server/public/assets/chat-gls5aV50.js +0 -1
  205. package/payload/server/public/assets/chunk-426QAEUC-CdknReB2.js +0 -1
  206. package/payload/server/public/assets/chunk-QZHKN3VN-8tHoEDE9.js +0 -1
  207. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BEGZ3DLg.js +0 -1
  208. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DsLxnm5U.js +0 -1
  209. package/payload/server/public/assets/clone-uiXbH_kh.js +0 -1
  210. package/payload/server/public/assets/data-CbI8-CX3.js +0 -1
  211. package/payload/server/public/assets/gitGraph-7Q5UKJZL-D_2KrZoP.js +0 -1
  212. package/payload/server/public/assets/info-OMHHGYJF-BP2TNwQ4.js +0 -1
  213. package/payload/server/public/assets/infoDiagram-42DDH7IO-D1kDtBOY.js +0 -2
  214. package/payload/server/public/assets/packet-4T2RLAQJ-BDg8fde8.js +0 -1
  215. package/payload/server/public/assets/page-jGwq-DpW.js +0 -32
  216. package/payload/server/public/assets/pie-ZZUOXDRM-CXDyYMkZ.js +0 -1
  217. package/payload/server/public/assets/radar-PYXPWWZC-xen_zv8F.js +0 -1
  218. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BywcXjtb.js +0 -1
  219. package/payload/server/public/assets/treeView-SZITEDCU-2FBf_1It.js +0 -1
  220. package/payload/server/public/assets/treemap-W4RFUUIX-BDdb30P-.js +0 -1
  221. package/payload/server/public/assets/wardley-RL74JXVD-BLq5MxjR.js +0 -1
  222. /package/payload/server/public/assets/{_baseFor-SRtUHe7G.js → _baseFor-brRjpUOX.js} +0 -0
  223. /package/payload/server/public/assets/{array-BpsnM-Py.js → array-BGFCBI0e.js} +0 -0
  224. /package/payload/server/public/assets/{cytoscape.esm-D4Rl1H5h.js → cytoscape.esm-TvRJ2tGX.js} +0 -0
  225. /package/payload/server/public/assets/{defaultLocale-C7sQPl-O.js → defaultLocale-CRZydyG6.js} +0 -0
  226. /package/payload/server/public/assets/{dist-CtUNt3w8.js → dist-B0CkUodR.js} +0 -0
  227. /package/payload/server/public/assets/{init-BydxaDEV.js → init-B8gtcn7T.js} +0 -0
  228. /package/payload/server/public/assets/{katex-B0fVeDx4.js → katex-RxgSu_dy.js} +0 -0
  229. /package/payload/server/public/assets/{path-jlWYQ2i9.js → path-DZF-JdEe.js} +0 -0
  230. /package/payload/server/public/assets/{preload-helper-uTix4PVD.js → preload-helper-CQ36nxok.js} +0 -0
  231. /package/payload/server/public/assets/{rough.esm-c4PR5shF.js → rough.esm-6CnTHTkH.js} +0 -0
  232. /package/payload/server/public/assets/{src-48kCpScq.js → src-CR_MU8uy.js} +0 -0
@@ -6,7 +6,13 @@
6
6
  // slice un-enabled after install).
7
7
  import test from "node:test";
8
8
  import assert from "node:assert/strict";
9
- import { buildClaudePtysSliceUnitFile } from "../port-resolution.js";
9
+ import { buildClaudePtysSliceUnitFile, resolveClaudePtysSliceMemoryHigh } from "../port-resolution.js";
10
+ const GiB = 1024 ** 3;
11
+ const memHighMiB = (unit) => {
12
+ const m = unit.match(/^MemoryHigh=(\d+)M$/m);
13
+ assert.ok(m, "unit must carry a MemoryHigh=<n>M line");
14
+ return Number(m[1]);
15
+ };
10
16
  test("buildClaudePtysSliceUnitFile emits a valid systemd slice unit", () => {
11
17
  const unit = buildClaudePtysSliceUnitFile();
12
18
  assert.match(unit, /^\[Unit\]$/m);
@@ -23,3 +29,32 @@ test("buildClaudePtysSliceUnitFile output has no per-brand or per-install templa
23
29
  assert.doesNotMatch(unit, /\$\{/);
24
30
  assert.doesNotMatch(unit, /__[A-Z_]+__/);
25
31
  });
32
+ // Task 1176 — the slice carries a soft MemoryHigh sized to the host so the
33
+ // session cohort absorbs reclaim pressure (throttle/swap within the slice)
34
+ // before the box exhausts RAM and the kernel kills the brand server. The
35
+ // value is total RAM minus a ~2.7GB fixed floor (neo4j + server +
36
+ // edge/manager/chrome), clamped to a 2GiB minimum. MemoryHigh (soft), never
37
+ // MemoryMax (hard — would just relocate the OOM kill inside the slice).
38
+ test("resolveClaudePtysSliceMemoryHigh scales with host RAM and clamps tiny hosts", () => {
39
+ const low = resolveClaudePtysSliceMemoryHigh(8 * GiB);
40
+ const high = resolveClaudePtysSliceMemoryHigh(16 * GiB);
41
+ assert.match(low, /^\d+M$/);
42
+ assert.match(high, /^\d+M$/);
43
+ // 8GB host: total minus 2.7GB floor lands in the 4-6 GiB band.
44
+ const lowMiB = Number(low.replace("M", ""));
45
+ assert.ok(lowMiB > 4000 && lowMiB < 6000, `8GB MemoryHigh out of band: ${low}`);
46
+ // A 16GB host gets a strictly larger ceiling than an 8GB host.
47
+ assert.ok(Number(high.replace("M", "")) > lowMiB);
48
+ // Tiny host clamps to the 2GiB floor rather than emitting a near-zero or
49
+ // negative MemoryHigh.
50
+ assert.equal(resolveClaudePtysSliceMemoryHigh(1 * GiB), "2048M");
51
+ });
52
+ test("buildClaudePtysSliceUnitFile carries a MemoryHigh line under [Slice] that scales with RAM", () => {
53
+ const low = buildClaudePtysSliceUnitFile(8 * GiB);
54
+ const high = buildClaudePtysSliceUnitFile(16 * GiB);
55
+ // MemoryHigh appears, and after the [Slice] header.
56
+ assert.match(low, /^MemoryHigh=\d+M$/m);
57
+ assert.ok(low.indexOf("[Slice]") < low.indexOf("MemoryHigh="), "MemoryHigh must be inside [Slice]");
58
+ // The 16GB unit's ceiling exceeds the 8GB unit's.
59
+ assert.ok(memHighMiB(high) > memHighMiB(low));
60
+ });
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import os from "node:os";
3
4
  const PORT_RE = /^PORT=(\d+)/m;
4
5
  const ENV_PORT_RE = /^Environment=PORT=(\d+)/m;
5
6
  const ENV_EDGE_PORT_RE = /^Environment=EDGE_PORT=(\d+)/m;
@@ -174,13 +175,29 @@ WantedBy=default.target
174
175
  // `~/.config/systemd/user/claude-ptys.slice` and runs
175
176
  // `systemctl --user daemon-reload` so the new unit is picked up.
176
177
  // ---------------------------------------------------------------------------
177
- export function buildClaudePtysSliceUnitFile() {
178
+ // Task 1176 — the slice carries a soft MemoryHigh so the session cohort
179
+ // absorbs reclaim pressure (throttle/swap within the slice) before the box
180
+ // exhausts RAM and the kernel kills the brand server. The value is total
181
+ // RAM minus a fixed ~2.7GB floor (neo4j + brand server + edge/manager/chrome
182
+ // must stay resident), clamped to a 2GiB minimum so a small host still emits
183
+ // a valid, non-trivial ceiling. MemoryHigh is a SOFT reclaim threshold —
184
+ // never MemoryMax, which would hard-kill within the slice and just relocate
185
+ // the failure.
186
+ const SLICE_FLOOR_BYTES = Math.round(2.7 * 1024 ** 3);
187
+ const SLICE_MIN_HIGH_BYTES = 2 * 1024 ** 3;
188
+ export function resolveClaudePtysSliceMemoryHigh(totalMemBytes) {
189
+ const high = Math.max(totalMemBytes - SLICE_FLOOR_BYTES, SLICE_MIN_HIGH_BYTES);
190
+ return `${Math.round(high / 1024 ** 2)}M`;
191
+ }
192
+ export function buildClaudePtysSliceUnitFile(totalMemBytes = os.totalmem()) {
193
+ const memoryHigh = resolveClaudePtysSliceMemoryHigh(totalMemBytes);
178
194
  return `[Unit]
179
195
  Description=Claude Code PTY sessions (Task 250)
180
196
  Documentation=https://github.com/rubytech/maxy-code/blob/main/.tasks/archive/250-claude-ptys-survive-manager-restart-via-systemd-scope-per-pty.md
181
197
  Before=shutdown.target
182
198
 
183
199
  [Slice]
200
+ MemoryHigh=${memoryHigh}
184
201
 
185
202
  [Install]
186
203
  WantedBy=default.target
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.357",
3
+ "version": "0.1.358",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -780,6 +780,22 @@
780
780
  "dev": true,
781
781
  "license": "MIT"
782
782
  },
783
+ "node_modules/@selderee/plugin-htmlparser2": {
784
+ "version": "0.12.0",
785
+ "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.12.0.tgz",
786
+ "integrity": "sha512-oELmoyA6ML9jDRMV3kgcMQFKxUfBU0yFVn6yTctVaLT5ygXnxH52I3TZEgV9EhXJC68/uFvE5Daj1/25c0Xa/A==",
787
+ "license": "MIT",
788
+ "dependencies": {
789
+ "domelementtype": "~2.3.0",
790
+ "domhandler": "~5.0.3"
791
+ },
792
+ "funding": {
793
+ "url": "https://github.com/sponsors/KillyMXI"
794
+ },
795
+ "peerDependencies": {
796
+ "selderee": "~0.12.0"
797
+ }
798
+ },
783
799
  "node_modules/@standard-schema/spec": {
784
800
  "version": "1.1.0",
785
801
  "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
@@ -830,6 +846,30 @@
830
846
  "dev": true,
831
847
  "license": "MIT"
832
848
  },
849
+ "node_modules/@types/mailparser": {
850
+ "version": "3.4.6",
851
+ "resolved": "https://registry.npmjs.org/@types/mailparser/-/mailparser-3.4.6.tgz",
852
+ "integrity": "sha512-wVV3cnIKzxTffaPH8iRnddX1zahbYB1ZEoAxyhoBo3TBCBuK6nZ8M8JYO/RhsCuuBVOw/DEN/t/ENbruwlxn6Q==",
853
+ "dev": true,
854
+ "license": "MIT",
855
+ "dependencies": {
856
+ "@types/node": "*",
857
+ "iconv-lite": "^0.6.3"
858
+ }
859
+ },
860
+ "node_modules/@types/mailparser/node_modules/iconv-lite": {
861
+ "version": "0.6.3",
862
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
863
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
864
+ "dev": true,
865
+ "license": "MIT",
866
+ "dependencies": {
867
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
868
+ },
869
+ "engines": {
870
+ "node": ">=0.10.0"
871
+ }
872
+ },
833
873
  "node_modules/@types/node": {
834
874
  "version": "22.19.19",
835
875
  "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz",
@@ -1431,6 +1471,15 @@
1431
1471
  "node": ">=0.10.0"
1432
1472
  }
1433
1473
  },
1474
+ "node_modules/deepmerge-ts": {
1475
+ "version": "7.1.5",
1476
+ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz",
1477
+ "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==",
1478
+ "license": "BSD-3-Clause",
1479
+ "engines": {
1480
+ "node": ">=16.0.0"
1481
+ }
1482
+ },
1434
1483
  "node_modules/depd": {
1435
1484
  "version": "2.0.0",
1436
1485
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -1957,6 +2006,56 @@
1957
2006
  "node": ">=16.9.0"
1958
2007
  }
1959
2008
  },
2009
+ "node_modules/html-to-text": {
2010
+ "version": "10.0.0",
2011
+ "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-10.0.0.tgz",
2012
+ "integrity": "sha512-2OH59Gtprdczel+7Rxgpz9hGVJREaf8Lt1H4kZwWHpEn70VQKRuMNGsb2eDbwaTzrYzb0hheiOG1P7Dim0B4dQ==",
2013
+ "license": "MIT",
2014
+ "dependencies": {
2015
+ "@selderee/plugin-htmlparser2": "~0.12.0",
2016
+ "deepmerge-ts": "^7.1.5",
2017
+ "dom-serializer": "^2.0.0",
2018
+ "htmlparser2": "^10.1.0",
2019
+ "selderee": "~0.12.0"
2020
+ },
2021
+ "engines": {
2022
+ "node": ">=20.19.0"
2023
+ },
2024
+ "funding": {
2025
+ "url": "https://github.com/sponsors/KillyMXI"
2026
+ }
2027
+ },
2028
+ "node_modules/htmlparser2": {
2029
+ "version": "10.1.0",
2030
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
2031
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
2032
+ "funding": [
2033
+ "https://github.com/fb55/htmlparser2?sponsor=1",
2034
+ {
2035
+ "type": "github",
2036
+ "url": "https://github.com/sponsors/fb55"
2037
+ }
2038
+ ],
2039
+ "license": "MIT",
2040
+ "dependencies": {
2041
+ "domelementtype": "^2.3.0",
2042
+ "domhandler": "^5.0.3",
2043
+ "domutils": "^3.2.2",
2044
+ "entities": "^7.0.1"
2045
+ }
2046
+ },
2047
+ "node_modules/htmlparser2/node_modules/entities": {
2048
+ "version": "7.0.1",
2049
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
2050
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
2051
+ "license": "BSD-2-Clause",
2052
+ "engines": {
2053
+ "node": ">=0.12"
2054
+ },
2055
+ "funding": {
2056
+ "url": "https://github.com/fb55/entities?sponsor=1"
2057
+ }
2058
+ },
1960
2059
  "node_modules/http-errors": {
1961
2060
  "version": "2.0.1",
1962
2061
  "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
@@ -2105,6 +2204,15 @@
2105
2204
  "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
2106
2205
  "license": "BSD-2-Clause"
2107
2206
  },
2207
+ "node_modules/leac": {
2208
+ "version": "0.7.0",
2209
+ "resolved": "https://registry.npmjs.org/leac/-/leac-0.7.0.tgz",
2210
+ "integrity": "sha512-qMrZeyEekgdRQ9o6a4NAB2EQZrv827GJdn1vnapwSJ90hWRB4TzUSunvacPkxQ2TnNqHNI1/zSt0hlo0crG8Jw==",
2211
+ "license": "MIT",
2212
+ "funding": {
2213
+ "url": "https://github.com/sponsors/KillyMXI"
2214
+ }
2215
+ },
2108
2216
  "node_modules/libbase64": {
2109
2217
  "version": "1.3.0",
2110
2218
  "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.3.0.tgz",
@@ -2390,6 +2498,25 @@
2390
2498
  "url": "https://opencollective.com/parcel"
2391
2499
  }
2392
2500
  },
2501
+ "node_modules/linkify-it": {
2502
+ "version": "5.0.1",
2503
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz",
2504
+ "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==",
2505
+ "funding": [
2506
+ {
2507
+ "type": "github",
2508
+ "url": "https://github.com/sponsors/puzrin"
2509
+ },
2510
+ {
2511
+ "type": "github",
2512
+ "url": "https://github.com/sponsors/markdown-it"
2513
+ }
2514
+ ],
2515
+ "license": "MIT",
2516
+ "dependencies": {
2517
+ "uc.micro": "^2.0.0"
2518
+ }
2519
+ },
2393
2520
  "node_modules/locate-path": {
2394
2521
  "version": "5.0.0",
2395
2522
  "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -2421,6 +2548,56 @@
2421
2548
  "@jridgewell/sourcemap-codec": "^1.5.5"
2422
2549
  }
2423
2550
  },
2551
+ "node_modules/mailparser": {
2552
+ "version": "3.9.12",
2553
+ "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.9.12.tgz",
2554
+ "integrity": "sha512-kbT4xtkKEddonhDTjjWWVFJlI5axm0S9QuIAHs1ue3IEw+fNd9o4ytPKaG7p1LOE2aKifrWLjx/omOGLHz/9RQ==",
2555
+ "license": "MIT",
2556
+ "dependencies": {
2557
+ "@zone-eu/mailsplit": "5.4.13",
2558
+ "encoding-japanese": "2.2.0",
2559
+ "he": "1.2.0",
2560
+ "html-to-text": "10.0.0",
2561
+ "iconv-lite": "0.7.2",
2562
+ "libmime": "5.4.0",
2563
+ "linkify-it": "5.0.1",
2564
+ "nodemailer": "9.0.1",
2565
+ "punycode.js": "2.3.1",
2566
+ "tlds": "1.261.0"
2567
+ }
2568
+ },
2569
+ "node_modules/mailparser/node_modules/@zone-eu/mailsplit": {
2570
+ "version": "5.4.13",
2571
+ "resolved": "https://registry.npmjs.org/@zone-eu/mailsplit/-/mailsplit-5.4.13.tgz",
2572
+ "integrity": "sha512-j40NeNlSAivqnKEjzZYsGP/bKWr2zwuyb8XOYsC3i0ZlfM5UnTYTa7aCRkE8rYQvVzE1dRjVYdvZ1Epi6x+h6w==",
2573
+ "license": "(MIT OR EUPL-1.1+)",
2574
+ "dependencies": {
2575
+ "libbase64": "1.3.0",
2576
+ "libmime": "5.4.0",
2577
+ "libqp": "2.1.1"
2578
+ }
2579
+ },
2580
+ "node_modules/mailparser/node_modules/libmime": {
2581
+ "version": "5.4.0",
2582
+ "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.4.0.tgz",
2583
+ "integrity": "sha512-MAWyU2qYtCsrZ6GClgukz2jx73NQrzA6ASo9qzThuTG+A7+H3lWQuBsjoy9lls+v6q/epAeBdEMJ3T0f4b+uRw==",
2584
+ "license": "MIT",
2585
+ "dependencies": {
2586
+ "encoding-japanese": "2.2.0",
2587
+ "iconv-lite": "0.7.2",
2588
+ "libbase64": "1.3.0",
2589
+ "libqp": "2.1.1"
2590
+ }
2591
+ },
2592
+ "node_modules/mailparser/node_modules/nodemailer": {
2593
+ "version": "9.0.1",
2594
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.1.tgz",
2595
+ "integrity": "sha512-Gwv8SQewT616ZM/URn0H54b8PWo/Wum7md3EW2aWy1lO27+WZCX+Xyak3J+NlmHUjDh5ME+uesJUDRbR3Ye8Bw==",
2596
+ "license": "MIT-0",
2597
+ "engines": {
2598
+ "node": ">=6.0.0"
2599
+ }
2600
+ },
2424
2601
  "node_modules/math-intrinsics": {
2425
2602
  "version": "1.1.0",
2426
2603
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -2694,6 +2871,19 @@
2694
2871
  "node": ">=6"
2695
2872
  }
2696
2873
  },
2874
+ "node_modules/parseley": {
2875
+ "version": "0.13.1",
2876
+ "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.13.1.tgz",
2877
+ "integrity": "sha512-uNBJZzmb60l6p6VWLTmevizNAGnE0xoSf1n0B4q3ntegDNzcS68NRCcBDZTcyXHxt2XhBChsCuqj4M+nChvE/A==",
2878
+ "license": "MIT",
2879
+ "dependencies": {
2880
+ "leac": "^0.7.0",
2881
+ "peberminta": "^0.10.0"
2882
+ },
2883
+ "funding": {
2884
+ "url": "https://github.com/sponsors/KillyMXI"
2885
+ }
2886
+ },
2697
2887
  "node_modules/parseurl": {
2698
2888
  "version": "1.3.3",
2699
2889
  "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -2738,6 +2928,15 @@
2738
2928
  "dev": true,
2739
2929
  "license": "MIT"
2740
2930
  },
2931
+ "node_modules/peberminta": {
2932
+ "version": "0.10.0",
2933
+ "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.10.0.tgz",
2934
+ "integrity": "sha512-80B2AsU+I4Qdb0ZAPSfe9UwvGzwkM37IKIFEvdS3D/3Ndgv2bsuJ0bfG1+iEYO+l7Gfd4EUJmuRyq7efLgRMzQ==",
2935
+ "license": "MIT",
2936
+ "funding": {
2937
+ "url": "https://github.com/sponsors/KillyMXI"
2938
+ }
2939
+ },
2741
2940
  "node_modules/picocolors": {
2742
2941
  "version": "1.1.1",
2743
2942
  "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -2900,6 +3099,15 @@
2900
3099
  "node": ">= 0.10"
2901
3100
  }
2902
3101
  },
3102
+ "node_modules/punycode.js": {
3103
+ "version": "2.3.1",
3104
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
3105
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
3106
+ "license": "MIT",
3107
+ "engines": {
3108
+ "node": ">=6"
3109
+ }
3110
+ },
2903
3111
  "node_modules/qrcode": {
2904
3112
  "version": "1.5.4",
2905
3113
  "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz",
@@ -3121,6 +3329,18 @@
3121
3329
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3122
3330
  "license": "MIT"
3123
3331
  },
3332
+ "node_modules/selderee": {
3333
+ "version": "0.12.0",
3334
+ "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.12.0.tgz",
3335
+ "integrity": "sha512-b1YMh3+DHZp59DLna3qVwQ5iOla/nrI6mLBNW02XxU77M3046Df6VLkoaJyFz20VsGIG5kkp+FK0kg4K4HnUFw==",
3336
+ "license": "MIT",
3337
+ "dependencies": {
3338
+ "parseley": "~0.13.1"
3339
+ },
3340
+ "funding": {
3341
+ "url": "https://github.com/sponsors/KillyMXI"
3342
+ }
3343
+ },
3124
3344
  "node_modules/send": {
3125
3345
  "version": "1.2.1",
3126
3346
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
@@ -3450,6 +3670,15 @@
3450
3670
  "node": ">=14.0.0"
3451
3671
  }
3452
3672
  },
3673
+ "node_modules/tlds": {
3674
+ "version": "1.261.0",
3675
+ "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.261.0.tgz",
3676
+ "integrity": "sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==",
3677
+ "license": "MIT",
3678
+ "bin": {
3679
+ "tlds": "bin.js"
3680
+ }
3681
+ },
3453
3682
  "node_modules/toidentifier": {
3454
3683
  "version": "1.0.1",
3455
3684
  "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -3510,6 +3739,12 @@
3510
3739
  "node": ">=14.17"
3511
3740
  }
3512
3741
  },
3742
+ "node_modules/uc.micro": {
3743
+ "version": "2.1.0",
3744
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
3745
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
3746
+ "license": "MIT"
3747
+ },
3513
3748
  "node_modules/undici": {
3514
3749
  "version": "6.27.0",
3515
3750
  "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz",
@@ -3913,10 +4148,12 @@
3913
4148
  "dependencies": {
3914
4149
  "@modelcontextprotocol/sdk": "^1.12.1",
3915
4150
  "imapflow": "^1.0.171",
4151
+ "mailparser": "^3.9.12",
3916
4152
  "neo4j-driver": "^5.28.1",
3917
4153
  "nodemailer": "^6.10.1"
3918
4154
  },
3919
4155
  "devDependencies": {
4156
+ "@types/mailparser": "^3.4.6",
3920
4157
  "@types/node": "^22.0.0",
3921
4158
  "@types/nodemailer": "^6.4.17",
3922
4159
  "typescript": "^5.7.0",
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
2
  import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
- import { resolveCapabilitiesHere } from "../tools/capabilities-here.js";
5
+ import { resolveCapabilitiesHere, parseClaudeAiConnectors } from "../tools/capabilities-here.js";
6
6
  function writeFile(path, body) {
7
7
  mkdirSync(join(path, ".."), { recursive: true });
8
8
  writeFileSync(path, body);
@@ -52,6 +52,42 @@ function seedTree(root, spec) {
52
52
  },
53
53
  };
54
54
  }
55
+ describe("parseClaudeAiConnectors", () => {
56
+ it("keeps only claude.ai rows, retains the full display name, and maps status words", () => {
57
+ const raw = [
58
+ "claude.ai Google Calendar: https://calendarmcp.googleapis.com/mcp/v1 - ! Needs authentication",
59
+ "claude.ai Notion: https://mcp.notion.com/mcp - ✓ Connected",
60
+ "claude.ai Zoom for Claude: https://zoom.example/mcp - ✔ Connected",
61
+ "plugin:playwright:playwright: npx @playwright/mcp@latest - ✓ Connected",
62
+ "memory: npx -y @modelcontextprotocol/server-memory - ✓ Connected",
63
+ ].join("\n");
64
+ expect(parseClaudeAiConnectors(raw)).toEqual([
65
+ { name: "claude.ai Google Calendar", state: "needs-auth" },
66
+ { name: "claude.ai Notion", state: "connected" },
67
+ { name: "claude.ai Zoom for Claude", state: "connected" },
68
+ ]);
69
+ });
70
+ it("maps a Failed-to-connect connector to unreachable (the word 'connect' is not 'Connected')", () => {
71
+ const raw = "claude.ai Cloudflare: https://cf.example/mcp - ✗ Failed to connect";
72
+ expect(parseClaudeAiConnectors(raw)).toEqual([
73
+ { name: "claude.ai Cloudflare", state: "unreachable" },
74
+ ]);
75
+ });
76
+ it("does not read 'Disconnected' as connected (whole-word match)", () => {
77
+ const raw = "claude.ai Widget: https://widget.example/mcp - ✗ Disconnected";
78
+ expect(parseClaudeAiConnectors(raw)).toEqual([
79
+ { name: "claude.ai Widget", state: "unreachable" },
80
+ ]);
81
+ });
82
+ it("skips a malformed row whose name is only the bare claude.ai prefix", () => {
83
+ const raw = "claude.ai : https://example.com/mcp - ✓ Connected";
84
+ expect(parseClaudeAiConnectors(raw)).toEqual([]);
85
+ });
86
+ it("returns an empty array for empty or connector-free output", () => {
87
+ expect(parseClaudeAiConnectors("")).toEqual([]);
88
+ expect(parseClaudeAiConnectors("Checking MCP server health…\n\nmemory: npx - ✓ Connected")).toEqual([]);
89
+ });
90
+ });
55
91
  describe("resolveCapabilitiesHere", () => {
56
92
  let root;
57
93
  beforeEach(() => { root = mkdtempSync(join(tmpdir(), "cap-here-")); });
@@ -162,6 +198,48 @@ describe("resolveCapabilitiesHere", () => {
162
198
  { bundle: "real-agent", name: "valuer" },
163
199
  ]);
164
200
  });
201
+ it("enumerates claude.ai connectors with auth state when a provider is supplied", async () => {
202
+ const { input } = seedTree(root, {
203
+ accountId: "acct-maxy",
204
+ productName: "Maxy",
205
+ platformSpecialists: ["personal-assistant"],
206
+ });
207
+ // Real `claude mcp list` line shapes: a ✔/✓ glyph for Connected, a ! glyph
208
+ // for Needs authentication, non-claude.ai rows mixed in, and a Failed row.
209
+ const raw = [
210
+ "Checking MCP server health…",
211
+ "",
212
+ "claude.ai Zoom for Claude: https://zoom.example/mcp - ✔ Connected",
213
+ "claude.ai Dropbox: https://dropbox.example/mcp - ! Needs authentication",
214
+ "claude.ai Microsoft 365: https://m365.example/mcp - ✗ Failed to connect",
215
+ "memory: npx -y @modelcontextprotocol/server-memory - ✓ Connected",
216
+ "notion: https://mcp.notion.com/mcp (HTTP) - ! Needs authentication",
217
+ ].join("\n");
218
+ const result = await resolveCapabilitiesHere({ ...input, listConnectorsRaw: async () => raw }, "2026-06-25T07:00:00Z");
219
+ expect(result.claudeAiConnectors).toEqual([
220
+ { name: "claude.ai Dropbox", state: "needs-auth" },
221
+ { name: "claude.ai Microsoft 365", state: "unreachable" },
222
+ { name: "claude.ai Zoom for Claude", state: "connected" },
223
+ ]);
224
+ });
225
+ it("yields no connectors and spawns nothing when no provider is supplied", async () => {
226
+ const { input } = seedTree(root, {
227
+ accountId: "acct-maxy",
228
+ productName: "Maxy",
229
+ platformSpecialists: ["personal-assistant"],
230
+ });
231
+ const result = await resolveCapabilitiesHere(input, "2026-06-25T07:00:00Z");
232
+ expect(result.claudeAiConnectors).toEqual([]);
233
+ });
234
+ it("degrades to an empty connector list when the provider fails", async () => {
235
+ const { input } = seedTree(root, {
236
+ accountId: "acct-maxy",
237
+ productName: "Maxy",
238
+ platformSpecialists: ["personal-assistant"],
239
+ });
240
+ const result = await resolveCapabilitiesHere({ ...input, listConnectorsRaw: async () => { throw new Error("claude not found"); } }, "2026-06-25T07:00:00Z");
241
+ expect(result.claudeAiConnectors).toEqual([]);
242
+ });
165
243
  it("handles missing fields and missing directories gracefully", async () => {
166
244
  const accountConfigPath = join(root, "account.json");
167
245
  const brandConfigPath = join(root, "brand.json");
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities-here.test.js","sourceRoot":"","sources":["../../src/__tests__/capabilities-here.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities-here.test.js","sourceRoot":"","sources":["../../src/__tests__/capabilities-here.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
6
6
  import { z } from "zod";
7
7
  import { readFile, writeFile } from "node:fs/promises";
8
8
  import { resolve, join } from "node:path";
9
- import { execFileSync } from "node:child_process";
9
+ import { execFile, execFileSync } from "node:child_process";
10
10
  import { appendFileSync, cpSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
11
11
  import { writeAdminEntry, removeAdminFromAccount, logUsersAudit, formatAuditRowIds } from "../../../../lib/admins-write/dist/index.js";
12
12
  import { setAccessPassword as setAccessPasswordHash, clearAccessPassword as clearAccessPasswordHash, accessPasswordCollides } from "../../../../lib/admin-access-password/dist/index.js";
@@ -684,7 +684,7 @@ eagerTool(server, "account-manage", "Read the account configuration (tier, domai
684
684
  };
685
685
  }
686
686
  });
687
- eagerTool(server, "capabilities-here", "Returns the live install set on the current account as a single JSON object: enabledPlugins (account config), tier, adminModel, publicModel, installedPlatformSpecialists (disk), installedPremiumSpecialists (disk, gated by brand.shipsPremiumBundles), registeredAgentTypes (Claude Code agent registry under $CLAUDE_CONFIG_DIR/agents/), and the brand block. Call this whenever you are about to make a claim about what this account can do, what is enabled, or what specialists are dispatchable. Do not infer install state from the platform-architecture skill — that skill is the catalogue of what the platform can ship, not what is enabled here.", {}, async () => {
687
+ eagerTool(server, "capabilities-here", "Returns the live install set on the current account as a single JSON object: enabledPlugins (account config), tier, adminModel, publicModel, installedPlatformSpecialists (disk), installedPremiumSpecialists (disk, gated by brand.shipsPremiumBundles), registeredAgentTypes (Claude Code agent registry under $CLAUDE_CONFIG_DIR/agents/), claudeAiConnectors (the claude.ai account connectors loaded for this client, each with an auth state of connected, needs-auth, or unreachable), and the brand block. Call this whenever you are about to make a claim about what this account can do, what is enabled, or what specialists are dispatchable. A connector listed here exists and is usable: do not deny a connector-backed request (Zoom, Dropbox, Microsoft 365, Cloudflare, Google) just because there is no skill or plugin for it — reach the connector tool, and authenticate it if its state is needs-auth. Do not infer install state from the platform-architecture skill — that skill is the catalogue of what the platform can ship, not what is enabled here.", {}, async () => {
688
688
  if (!ACCOUNT_ID)
689
689
  return refuseNoAccount("capabilities-here");
690
690
  const requestId = randomUUID();
@@ -702,9 +702,23 @@ eagerTool(server, "capabilities-here", "Returns the live install set on the curr
702
702
  platformRoot: PLATFORM_ROOT,
703
703
  premiumPluginsRoot,
704
704
  claudeConfigDir,
705
+ // Task 1160 — enumerate the brand client's claude.ai connectors via
706
+ // `claude mcp list`. Never rejects: resolves with whatever output the CLI
707
+ // produced (empty on a missing binary, non-zero exit, or the 12s timeout
708
+ // the health check can hit), so a connector probe never fails the tool.
709
+ listConnectorsRaw: () => new Promise((resolveOut) => {
710
+ execFile("claude", ["mcp", "list"], { env: { ...process.env, CLAUDE_CONFIG_DIR: claudeConfigDir }, timeout: 12_000, encoding: "utf8" }, (_err, stdout, stderr) => resolveOut(`${stdout ?? ""}\n${stderr ?? ""}`));
711
+ }),
705
712
  }, new Date().toISOString());
706
713
  const elapsed = Date.now() - t0;
707
- process.stderr.write(`[capabilities-here] op=resolve requestId=${requestId} enabledPlugins=${result.enabledPlugins.length} platformSpecialists=${result.installedPlatformSpecialists.length} premiumSpecialists=${result.installedPremiumSpecialists.length} agentTypes=${result.registeredAgentTypes.length} elapsedMs=${elapsed}\n`);
714
+ process.stderr.write(`[capabilities-here] op=resolve requestId=${requestId} enabledPlugins=${result.enabledPlugins.length} platformSpecialists=${result.installedPlatformSpecialists.length} premiumSpecialists=${result.installedPremiumSpecialists.length} agentTypes=${result.registeredAgentTypes.length} connectors=${result.claudeAiConnectors.length} elapsedMs=${elapsed}\n`);
715
+ // Task 1160 — record each claude.ai connector surfaced to the agent. This is
716
+ // the deterministic point where the connector check runs and feeds the
717
+ // capability decision, so a later false denial (a connector existed but was
718
+ // missed) is detectable against this log rather than silent.
719
+ for (const c of result.claudeAiConnectors) {
720
+ process.stderr.write(`[capabilities-here] op=connector-surfaced requestId=${requestId} name=${JSON.stringify(c.name)} state=${c.state}\n`);
721
+ }
708
722
  const body = JSON.stringify(result, null, 2);
709
723
  process.stderr.write(`[capabilities-here] op=return requestId=${requestId} bytesOut=${body.length}\n`);
710
724
  return { content: [{ type: "text", text: body }] };