@rubytech/create-maxy-code 0.1.356 → 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 (256) 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__/credentials.test.d.ts +2 -0
  35. package/payload/platform/plugins/email/mcp/dist/__tests__/credentials.test.d.ts.map +1 -0
  36. package/payload/platform/plugins/email/mcp/dist/__tests__/credentials.test.js +109 -0
  37. package/payload/platform/plugins/email/mcp/dist/__tests__/credentials.test.js.map +1 -0
  38. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js +64 -6
  39. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-edit.test.js.map +1 -1
  40. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js +12 -0
  41. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft.test.js.map +1 -1
  42. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js +22 -0
  43. package/payload/platform/plugins/email/mcp/dist/__tests__/email-setup.test.js.map +1 -1
  44. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +94 -9
  45. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -1
  46. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js +4 -0
  47. package/payload/platform/plugins/email/mcp/dist/__tests__/mail-options.test.js.map +1 -1
  48. package/payload/platform/plugins/email/mcp/dist/index.js +39 -2
  49. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
  50. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts +5 -0
  51. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -1
  52. package/payload/platform/plugins/email/mcp/dist/lib/compose.js +8 -1
  53. package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -1
  54. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +14 -7
  55. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
  56. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +87 -31
  57. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
  58. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +68 -33
  59. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  60. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +253 -97
  61. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  62. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +6 -0
  63. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -1
  64. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +4 -0
  65. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -1
  66. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts +8 -1
  67. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -1
  68. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +10 -6
  69. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -1
  70. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -1
  71. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +4 -2
  72. package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -1
  73. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts +15 -0
  74. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts.map +1 -0
  75. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js +29 -0
  76. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js.map +1 -0
  77. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +1 -1
  78. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
  79. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
  80. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +2 -1
  81. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
  82. package/payload/platform/plugins/email/mcp/package.json +2 -0
  83. package/payload/platform/plugins/email/references/email-reference.md +21 -1
  84. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-bootstrap.test.d.ts +2 -0
  85. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-bootstrap.test.d.ts.map +1 -0
  86. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-bootstrap.test.js +60 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-bootstrap.test.js.map +1 -0
  88. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +11 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  90. package/payload/platform/scripts/rss-sampler.sh +21 -0
  91. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  92. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  93. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  94. package/payload/platform/services/claude-session-manager/dist/connector-auth.d.ts +31 -0
  95. package/payload/platform/services/claude-session-manager/dist/connector-auth.d.ts.map +1 -0
  96. package/payload/platform/services/claude-session-manager/dist/connector-auth.js +49 -0
  97. package/payload/platform/services/claude-session-manager/dist/connector-auth.js.map +1 -0
  98. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +24 -0
  99. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  100. package/payload/platform/services/claude-session-manager/dist/http-server.js +214 -17
  101. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  102. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +2 -1
  103. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  104. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +24 -4
  105. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  106. package/payload/platform/services/webchat-channel/dist/instructions.d.ts +1 -0
  107. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  108. package/payload/platform/services/webchat-channel/dist/instructions.js +28 -0
  109. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  110. package/payload/platform/services/webchat-channel/dist/server.d.ts.map +1 -1
  111. package/payload/platform/services/webchat-channel/dist/server.js +75 -5
  112. package/payload/platform/services/webchat-channel/dist/server.js.map +1 -1
  113. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  114. package/payload/server/{chunk-25UVZNFA.js → chunk-CXEC5RWB.js} +26 -3
  115. package/payload/server/maxy-edge.js +1 -1
  116. package/payload/server/public/assets/{AdminLoginScreens-4I5CdIWl.js → AdminLoginScreens-Ro_RUTDh.js} +1 -1
  117. package/payload/server/public/assets/{AdminShell-Bc9F7X_N.js → AdminShell-CmqhpAPU.js} +1 -1
  118. package/payload/server/public/assets/{Checkbox-DoQV18Ow.js → Checkbox-dYLaMEdh.js} +1 -1
  119. package/payload/server/public/assets/OperatorConversations-2zJh7qnO.css +1 -0
  120. package/payload/server/public/assets/OperatorConversations-Cei12sSK.js +9 -0
  121. package/payload/server/public/assets/{admin-DLsMA09F.js → admin-BldZQrJF.js} +1 -1
  122. package/payload/server/public/assets/{arc-DpkSQNto.js → arc-Crkz45LN.js} +1 -1
  123. package/payload/server/public/assets/architecture-YZFGNWBL-Dma4Bgha.js +1 -0
  124. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Bw7Yq8O9.js → architectureDiagram-Q4EWVU46-C9JThHgP.js} +1 -1
  125. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BBtJQFSz.js → blockDiagram-DXYQGD6D-DpsV_HXT.js} +1 -1
  126. package/payload/server/public/assets/{browser-w6rY_KAO.js → browser-DrXZ4wpy.js} +1 -1
  127. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-JAMgxzOr.js → c4Diagram-AHTNJAMY-CTm_6aKi.js} +1 -1
  128. package/payload/server/public/assets/{calendar-CvEdDFYd.js → calendar-CQ4TCbO7.js} +1 -1
  129. package/payload/server/public/assets/channel-B_-5bau1.js +1 -0
  130. package/payload/server/public/assets/chat-D7w6_NE1.js +1 -0
  131. package/payload/server/public/assets/{chunk-2KRD3SAO-eDugsc2L.js → chunk-2KRD3SAO-1KSJW1q6.js} +1 -1
  132. package/payload/server/public/assets/{chunk-336JU56O-BXfECwdC.js → chunk-336JU56O-C3t08Ip-.js} +2 -2
  133. package/payload/server/public/assets/chunk-426QAEUC-Dirxdwjh.js +1 -0
  134. package/payload/server/public/assets/{chunk-4BX2VUAB-CByVeKCY.js → chunk-4BX2VUAB-kl1ze33n.js} +1 -1
  135. package/payload/server/public/assets/{chunk-4TB4RGXK-CpY0DcUB.js → chunk-4TB4RGXK-DxpoDoHg.js} +1 -1
  136. package/payload/server/public/assets/{chunk-55IACEB6-C3YxgyIb.js → chunk-55IACEB6-WM9VJzha.js} +1 -1
  137. package/payload/server/public/assets/{chunk-5FUZZQ4R-Bc0d7j8A.js → chunk-5FUZZQ4R-CLH63ZH3.js} +1 -1
  138. package/payload/server/public/assets/{chunk-5PVQY5BW-CTUGMRIa.js → chunk-5PVQY5BW-DCTb8IAT.js} +1 -1
  139. package/payload/server/public/assets/{chunk-67CJDMHE-CbdPnpLd.js → chunk-67CJDMHE-BSYzyaoH.js} +1 -1
  140. package/payload/server/public/assets/{chunk-7N4EOEYR-Cjl2kevz.js → chunk-7N4EOEYR-CarJ7O2P.js} +1 -1
  141. package/payload/server/public/assets/{chunk-AA7GKIK3-BgozIh5p.js → chunk-AA7GKIK3-DTNLyBpH.js} +1 -1
  142. package/payload/server/public/assets/{chunk-BSJP7CBP-6Ufq45NW.js → chunk-BSJP7CBP-BFmHflHY.js} +1 -1
  143. package/payload/server/public/assets/{chunk-CIAEETIT-BhhYuMnA.js → chunk-CIAEETIT-BpjG0IzU.js} +1 -1
  144. package/payload/server/public/assets/{chunk-EDXVE4YY-BfaJ3yDD.js → chunk-EDXVE4YY-2fSowhlW.js} +1 -1
  145. package/payload/server/public/assets/{chunk-ENJZ2VHE-C7-hIGVC.js → chunk-ENJZ2VHE-ClcranGV.js} +1 -1
  146. package/payload/server/public/assets/{chunk-FMBD7UC4-BQvvyocF.js → chunk-FMBD7UC4-DLq4BItQ.js} +1 -1
  147. package/payload/server/public/assets/{chunk-FOC6F5B3-C6rBDOxH.js → chunk-FOC6F5B3-B9QI3Guz.js} +1 -1
  148. package/payload/server/public/assets/{chunk-ICPOFSXX-BjOJvkVa.js → chunk-ICPOFSXX-BAr-Mv1Z.js} +2 -2
  149. package/payload/server/public/assets/{chunk-K5T4RW27-kKowRHhn.js → chunk-K5T4RW27-8PvAHasY.js} +1 -1
  150. package/payload/server/public/assets/{chunk-KGLVRYIC-bAEV_5eH.js → chunk-KGLVRYIC--aGaDRH5.js} +1 -1
  151. package/payload/server/public/assets/{chunk-LIHQZDEY-BLvsQAfg.js → chunk-LIHQZDEY-BrWj7mw2.js} +1 -1
  152. package/payload/server/public/assets/{chunk-ORNJ4GCN-BzYZfPZ7.js → chunk-ORNJ4GCN-kYQmkMTi.js} +1 -1
  153. package/payload/server/public/assets/{chunk-OYMX7WX6-CL7WRw42.js → chunk-OYMX7WX6-CIsryCWH.js} +1 -1
  154. package/payload/server/public/assets/chunk-QZHKN3VN-Duipo1kI.js +1 -0
  155. package/payload/server/public/assets/{chunk-U2HBQHQK-BdcVGjau.js → chunk-U2HBQHQK-68X653e3.js} +1 -1
  156. package/payload/server/public/assets/{chunk-X2U36JSP-C0CL_Jin.js → chunk-X2U36JSP-v3v9soX3.js} +1 -1
  157. package/payload/server/public/assets/{chunk-XPW4576I-CsV7CUxH.js → chunk-XPW4576I-CW5DPpop.js} +1 -1
  158. package/payload/server/public/assets/{chunk-YZCP3GAM-Cj0_fLkR.js → chunk-YZCP3GAM-B1VP7Rl2.js} +1 -1
  159. package/payload/server/public/assets/{chunk-ZZ45TVLE-DLuquyoY.js → chunk-ZZ45TVLE-DiJrujNY.js} +1 -1
  160. package/payload/server/public/assets/classDiagram-6PBFFD2Q-B3kX5SuB.js +1 -0
  161. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D761c7Lr.js +1 -0
  162. package/payload/server/public/assets/clone-BrhFv6Tb.js +1 -0
  163. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-BU3EOLXX.js → cose-bilkent-S5V4N54A-BscXxLMc.js} +1 -1
  164. package/payload/server/public/assets/{dagre-KV5264BT-CoCAYhFc.js → dagre-KV5264BT-DVgGlTQ1.js} +1 -1
  165. package/payload/server/public/assets/{dagre-BRq8C9NU.js → dagre-MBv6WlCS.js} +1 -1
  166. package/payload/server/public/assets/data-Dc5XNWgF.js +1 -0
  167. package/payload/server/public/assets/{diagram-5BDNPKRD-DBy5GNaQ.js → diagram-5BDNPKRD-BmhCaO0a.js} +1 -1
  168. package/payload/server/public/assets/{diagram-G4DWMVQ6-l93MsBLv.js → diagram-G4DWMVQ6-ChU9L8vz.js} +1 -1
  169. package/payload/server/public/assets/{diagram-MMDJMWI5-BIfXkVlL.js → diagram-MMDJMWI5-Oy409Zc_.js} +1 -1
  170. package/payload/server/public/assets/{diagram-TYMM5635-BuTJLBny.js → diagram-TYMM5635-Cn1YByqk.js} +1 -1
  171. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BwPxWDbP.js → erDiagram-SMLLAGMA-e17yfLvr.js} +1 -1
  172. package/payload/server/public/assets/{flatten-DtM0XAMt.js → flatten-Cl1Bc3dR.js} +1 -1
  173. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BhPtHXMR.js → flowDiagram-DWJPFMVM-Dqt7sCVZ.js} +1 -1
  174. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BlXjprdD.js → ganttDiagram-T4ZO3ILL-B4IhwS2r.js} +1 -1
  175. package/payload/server/public/assets/gitGraph-7Q5UKJZL-BCQAqtLy.js +1 -0
  176. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BW36BDiu.js → gitGraphDiagram-UUTBAWPF-BDw-PKcI.js} +1 -1
  177. package/payload/server/public/assets/{graph-BrwfYOr3.js → graph-l_3_j3I9.js} +3 -3
  178. package/payload/server/public/assets/{graph-labels-BNZ8u8TE.js → graph-labels-CJj55nHk.js} +1 -1
  179. package/payload/server/public/assets/{graphlib-Bjg3Tq-k.js → graphlib-DPIYk_sg.js} +1 -1
  180. package/payload/server/public/assets/info-OMHHGYJF-qU7hK50T.js +1 -0
  181. package/payload/server/public/assets/infoDiagram-42DDH7IO-KGdcJeTs.js +2 -0
  182. package/payload/server/public/assets/{isEmpty-D__iH1WQ.js → isEmpty-D1pGOD1J.js} +1 -1
  183. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CmB-bA_O.js → ishikawaDiagram-UXIWVN3A-BRIHsB3G.js} +1 -1
  184. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-Bt1fJKmc.js → journeyDiagram-VCZTEJTY-aKNgmoHd.js} +1 -1
  185. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DVbksz_J.js → kanban-definition-6JOO6SKY-cwBwT-nm.js} +1 -1
  186. package/payload/server/public/assets/{line-BX2Ugx3B.js → line-DVtVRzUA.js} +1 -1
  187. package/payload/server/public/assets/{linear-Bdc-QJWI.js → linear-DtoOFPO2.js} +1 -1
  188. package/payload/server/public/assets/{mermaid-parser.core-qv1e-J5x.js → mermaid-parser.core-G7YD_zO3.js} +2 -2
  189. package/payload/server/public/assets/{mermaid.core-C_d9YQX_.js → mermaid.core-DpFyndHm.js} +3 -3
  190. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-DwKGvF14.js → mindmap-definition-QFDTVHPH-CYXK_Pvz.js} +1 -1
  191. package/payload/server/public/assets/{operator-BNY1P_mH.js → operator-CKmOgXNa.js} +1 -1
  192. package/payload/server/public/assets/{ordinal-BRQ5CzZY.js → ordinal-CBZeH4Yp.js} +1 -1
  193. package/payload/server/public/assets/packet-4T2RLAQJ-DiU2yS9m.js +1 -0
  194. package/payload/server/public/assets/page-hG7xTrcO.js +32 -0
  195. package/payload/server/public/assets/pie-ZZUOXDRM-zHUKKlVv.js +1 -0
  196. package/payload/server/public/assets/{pieDiagram-DEJITSTG-dUvQC_4S.js → pieDiagram-DEJITSTG-DFo4N6WH.js} +1 -1
  197. package/payload/server/public/assets/{public-CDzw6yjH.js → public-smrhkkxD.js} +1 -1
  198. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CebX_oPa.js → quadrantDiagram-34T5L4WZ-BlH5iIhl.js} +1 -1
  199. package/payload/server/public/assets/radar-PYXPWWZC-BUnVoaPg.js +1 -0
  200. package/payload/server/public/assets/{reduce-CkcXOmmJ.js → reduce-PuPlFPRX.js} +1 -1
  201. package/payload/server/public/assets/{requirementDiagram-MS252O5E-h2euIqGj.js → requirementDiagram-MS252O5E-D5WLty8A.js} +1 -1
  202. package/payload/server/public/assets/rotate-ccw-Dd8aAvU7.js +1 -0
  203. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DCii3fkF.js → sankeyDiagram-XADWPNL6-vB85IxHG.js} +1 -1
  204. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-CQSGYmlq.js → sequenceDiagram-FGHM5R23-Cxraa0Ee.js} +1 -1
  205. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CVtU0iXH.js → stateDiagram-FHFEXIEX-BBPssYBx.js} +1 -1
  206. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BWmmUwDt.js +1 -0
  207. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-ChvsBltI.js → timeline-definition-GMOUNBTQ-Bgk6PT62.js} +1 -1
  208. package/payload/server/public/assets/treeView-SZITEDCU-C3Y-Q52h.js +1 -0
  209. package/payload/server/public/assets/treemap-W4RFUUIX-Dk0qZpAg.js +1 -0
  210. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-e-EZiiba.js → vennDiagram-DHZGUBPP-B-APTs3L.js} +1 -1
  211. package/payload/server/public/assets/wardley-RL74JXVD-BAWI02OA.js +1 -0
  212. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-4JaRn1s5.js → wardleyDiagram-NUSXRM2D-CkXJSs_i.js} +1 -1
  213. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-kxwmCNuM.js → xychartDiagram-5P7HB3ND-BkyshPMV.js} +1 -1
  214. package/payload/server/public/browser.html +4 -4
  215. package/payload/server/public/calendar.html +4 -4
  216. package/payload/server/public/chat.html +7 -6
  217. package/payload/server/public/data.html +4 -4
  218. package/payload/server/public/graph.html +7 -6
  219. package/payload/server/public/index.html +6 -6
  220. package/payload/server/public/operator.html +9 -8
  221. package/payload/server/public/public.html +7 -6
  222. package/payload/server/server.js +255 -26
  223. package/payload/server/userprofile-reconcile-GLGKDVQQ.js +48 -0
  224. package/payload/server/public/assets/OperatorConversations-BJY9FZbr.js +0 -9
  225. package/payload/server/public/assets/OperatorConversations-C1I78hON.css +0 -1
  226. package/payload/server/public/assets/architecture-YZFGNWBL-Csj53u5T.js +0 -1
  227. package/payload/server/public/assets/channel-BUQUAUts.js +0 -1
  228. package/payload/server/public/assets/chat-BlOWMUVI.js +0 -1
  229. package/payload/server/public/assets/chunk-426QAEUC-CdknReB2.js +0 -1
  230. package/payload/server/public/assets/chunk-QZHKN3VN-8tHoEDE9.js +0 -1
  231. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BEGZ3DLg.js +0 -1
  232. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DsLxnm5U.js +0 -1
  233. package/payload/server/public/assets/clone-uiXbH_kh.js +0 -1
  234. package/payload/server/public/assets/data-p3T_EZFq.js +0 -1
  235. package/payload/server/public/assets/gitGraph-7Q5UKJZL-D_2KrZoP.js +0 -1
  236. package/payload/server/public/assets/info-OMHHGYJF-BP2TNwQ4.js +0 -1
  237. package/payload/server/public/assets/infoDiagram-42DDH7IO-D1kDtBOY.js +0 -2
  238. package/payload/server/public/assets/packet-4T2RLAQJ-BDg8fde8.js +0 -1
  239. package/payload/server/public/assets/page-CtygoIXt.js +0 -32
  240. package/payload/server/public/assets/pie-ZZUOXDRM-CXDyYMkZ.js +0 -1
  241. package/payload/server/public/assets/radar-PYXPWWZC-xen_zv8F.js +0 -1
  242. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BywcXjtb.js +0 -1
  243. package/payload/server/public/assets/treeView-SZITEDCU-2FBf_1It.js +0 -1
  244. package/payload/server/public/assets/treemap-W4RFUUIX-BDdb30P-.js +0 -1
  245. package/payload/server/public/assets/wardley-RL74JXVD-BLq5MxjR.js +0 -1
  246. /package/payload/server/public/assets/{_baseFor-SRtUHe7G.js → _baseFor-brRjpUOX.js} +0 -0
  247. /package/payload/server/public/assets/{array-BpsnM-Py.js → array-BGFCBI0e.js} +0 -0
  248. /package/payload/server/public/assets/{cytoscape.esm-D4Rl1H5h.js → cytoscape.esm-TvRJ2tGX.js} +0 -0
  249. /package/payload/server/public/assets/{defaultLocale-C7sQPl-O.js → defaultLocale-CRZydyG6.js} +0 -0
  250. /package/payload/server/public/assets/{dist-CtUNt3w8.js → dist-B0CkUodR.js} +0 -0
  251. /package/payload/server/public/assets/{init-BydxaDEV.js → init-B8gtcn7T.js} +0 -0
  252. /package/payload/server/public/assets/{katex-B0fVeDx4.js → katex-RxgSu_dy.js} +0 -0
  253. /package/payload/server/public/assets/{path-jlWYQ2i9.js → path-DZF-JdEe.js} +0 -0
  254. /package/payload/server/public/assets/{preload-helper-uTix4PVD.js → preload-helper-CQ36nxok.js} +0 -0
  255. /package/payload/server/public/assets/{rough.esm-c4PR5shF.js → rough.esm-6CnTHTkH.js} +0 -0
  256. /package/payload/server/public/assets/{src-48kCpScq.js → src-CR_MU8uy.js} +0 -0
@@ -148,8 +148,18 @@ async function profileUpdateImpl(params) {
148
148
  safeFields[k] = v;
149
149
  }
150
150
  if (Object.keys(safeFields).length > 0) {
151
+ // Task 1150 — MERGE the UserProfile off the AdminUser so setting
152
+ // profileFields bootstraps the node when absent, instead of a bare
153
+ // MATCH that silently no-ops on an account that has an AdminUser but
154
+ // no UserProfile. This is the documented self-heal
155
+ // (`profileFields: { timezone }`) for accounts predating the
156
+ // provisioning write. accountId/userId/createdAt/profileVersion are
157
+ // already stripped from `safeFields` by `restricted`, so `up += $fields`
158
+ // cannot clobber the composite key or the create-stamps.
151
159
  await session.run(`
152
- MATCH (up:UserProfile {accountId: $accountId, userId: $userId})
160
+ MATCH (au:AdminUser {userId: $userId})
161
+ MERGE (au)-[:HAS_PROFILE]->(up:UserProfile {accountId: $accountId, userId: $userId})
162
+ ON CREATE SET up.createdAt = $now, up.profileVersion = 0, up.scope = 'admin'
153
163
  SET up += $fields, up.updatedAt = $now
154
164
  `, { accountId, userId, fields: safeFields, now });
155
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile-update.js","sourceRoot":"","sources":["../../src/tools/profile-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-update.js","sourceRoot":"","sources":["../../src/tools/profile-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,eAAe;IACf,YAAY;IACZ,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;CACd,CAAC,CAAC;AAEH,mEAAmE;AACnE,4EAA4E;AAC5E,uEAAuE;AACvE,mEAAmE;AACnE,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,+DAA+D;AAC/D,oEAAoE;AACpE,sEAAsE;AACtE,uEAAuE;AACvE,kEAAkE;AAClE,uEAAuE;AACvE,yEAAyE;AACzE,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,WAAW;IACX,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,eAAe;IACf,kBAAkB;CACnB,CAAC,CAAC;AAiEH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B;IAE3B,OAAO,cAAc,CACnB,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,EACzH,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAA2B;IAE3B,MAAM,EACJ,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,GAAG,aAAa,EACtB,IAAI,GAAG,WAAW,EAClB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,GAAG,KAAK,EACrB,SAAS,GACV,GAAG,MAAM,CAAC;IAEX,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,sBAAsB,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,sBAAsB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,sEAAsE;IACtE,yEAAyE;IACzE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,8HAA8H,CAC/H,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,yDAAyD,IAAI,wEAAwE,CACtI,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,6DAA6D;IAC7D,oEAAoE;IACpE,wEAAwE;IACxE,gEAAgE;IAChE,EAAE;IACF,yCAAyC;IACzC,2EAA2E;IAC3E,qEAAqE;IACrE,sEAAsE;IACtE,oEAAoE;IACpE,+DAA+D;IAC/D,mEAAmE;IACnE,6BAA6B;IAC7B,IAAI,gBAAgB,GAAmC,IAAI,CAAC;IAC5D,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC7D,IAAI,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,iCAAiC,CAAC,iLAAiL,CACpN,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,yIAAyI,CAC1I,CAAC;YACJ,CAAC;YACD,+DAA+D;YAC/D,gEAAgE;YAChE,2DAA2D;YAC3D,6DAA6D;YAC7D,kEAAkE;YAClE,gEAAgE;YAChE,gEAAgE;YAChE,aAAa,CACX,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvD,SAAS,EACT,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;YACF,gBAAgB,GAAG,QAAQ,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QAEH,wDAAwD;QACxD,MAAM,aAAa,GAAG,GAAG,QAAQ,KAAK,GAAG,MAAM,KAAK,EAAE,CAAC;QACvD,IAAI,SAAS,GAAoB,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,oEAAoE;YACpE,yEAAyE;YACzE,0EAA0E;YAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mEAAmE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACxH,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;gBACzB,WAAW;gBACX,QAAQ;gBACR,WAAW;gBACX,WAAW;gBACX,gBAAgB;aACjB,CAAC,CAAC;YACH,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,iEAAiE;gBACjE,mEAAmE;gBACnE,qEAAqE;gBACrE,mDAAmD;gBACnD,6DAA6D;gBAC7D,oEAAoE;gBACpE,yEAAyE;gBACzE,yDAAyD;gBACzD,MAAM,OAAO,CAAC,GAAG,CACf;;;;;WAKC,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,uDAAuD;QACvD,+DAA+D;QAC/D,sEAAsE;QACtE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC;;;;SAIC,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,CACrD,CAAC;YACF,MAAM,QAAQ,GAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAsD,CAAC;YAChH,MAAM,SAAS,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,2EAA2E,MAAM,cAAc,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,SAAS,8IAA8I,CAC3R,CAAC;YACJ,CAAC;YACD,mEAAmE;YACnE,gDAAgD;YAChD,qDAAqD;YACrD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,SAAS,IAAI,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,MAAM,YAAY,CACvB,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,SAAS,EACT,cAAe,EACf,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC;;cAEQ,UAAU,CAAC,MAAM,CAAC;;OAEzB,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CACrC,CAAC;QAEF,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,mCAAmC;YACnC,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAW,CAAC;YAC3E,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC;YAEjF,IAAI,aAAqB,CAAC;YAC1B,IAAI,MAAiD,CAAC;YAEtD,4DAA4D;YAC5D,mEAAmE;YACnE,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,aAAa,GAAG,GAAG,CAAC;gBACpB,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,WAAW;wBACd,6DAA6D;wBAC7D,aAAa,GAAG,IAAI,CAAC,GAAG,CACtB,GAAG,EACH,kBAAkB,GAAG,uBAAuB,GAAG,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAC1E,CAAC;wBACF,MAAM,GAAG,YAAY,CAAC;wBACtB,MAAM;oBACR,KAAK,QAAQ;wBACX,aAAa,GAAG,kBAAkB,CAAC;wBACnC,MAAM,GAAG,SAAS,CAAC;wBACnB,MAAM;oBACR,KAAK,YAAY;wBACf,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,GAAG,uBAAuB,CAAC,CAAC;wBAC5E,MAAM,GAAG,cAAc,CAAC;wBACxB,MAAM;oBACR;wBACE,aAAa,GAAG,kBAAkB,CAAC;wBACnC,MAAM,GAAG,SAAS,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACvD,MAAM,WAAW,GAA4B;gBAC3C,SAAS;gBACT,YAAY,EAAE,UAAU;gBACxB,KAAK,EAAE,UAAU;gBACjB,MAAM;gBACN,UAAU,EAAE,aAAa;gBACzB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,GAAG;gBACd,aAAa,EAAE,aAAa,KAAK,IAAI;aACtC,CAAC;YACF,IAAI,SAAS,IAAI,aAAa,KAAK,IAAI;gBAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3E,MAAM,OAAO,CAAC,GAAG,CACf;;;;;;;;cAQM,SAAS,IAAI,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE;SAC/E,EACD,WAAW,CACZ,CAAC;YAEF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,MAAM,UAAU,QAAQ,IAAI,GAAG,IAAI,CAC3G,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,CAAC,GAAG,CACf;;;;WAIC,EACD,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,CACxC,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACzE,CAAC;QAED,uDAAuD;QACvD,4DAA4D;QAC5D,uDAAuD;QACvD,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAA4B;YAC3C,YAAY;YACZ,SAAS;YACT,MAAM;YACN,QAAQ;YACR,GAAG;YACH,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;YAC1C,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;YAC7D,MAAM;YACN,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,OAAO;YACd,aAAa,EAAE,aAAa,KAAK,IAAI;SACtC,CAAC;QACF,IAAI,SAAS,IAAI,aAAa,KAAK,IAAI;YAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3E,MAAM,OAAO,CAAC,GAAG,CACf;;;;OAIC,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAC1C,CAAC;QAEF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,MAAM,UAAU,QAAQ,IAAI,GAAG,IAAI,CAC3G,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,OAAO,CAAC,GAAG,CACf;;;;SAIC,EACD,EAAE,YAAY,EAAE,SAAS,EAAE,CAC5B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY;YACZ,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;SAC9D,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAsC,EACtC,SAAiB,EACjB,MAAc,EACd,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,MAAc,EACd,SAA0B,EAC1B,cAAwB,EACxB,GAAW;IAEX,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,yEAAyE;QACzE,oEAAoE;QACpE,uEAAuE;QACvE,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,GAAG,CACjC;;kFAE4E,UAAU,CAAC,MAAM,CAAC;wEAC5B,UAAU,CAAC,MAAM,CAAC;;;OAGnF,EACD,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CACzC,CAAC;QAEF,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,iBAAiB,OAAO,CAAC,MAAM,OAAO,cAAc,CAAC,MAAM,qGAAqG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrL,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAChD,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC,EACxD,kBAAkB,CACnB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACtC,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAa,EAAE,CAAC;gBAC9C,IAAI,EAAE;oBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAA4B;YAC3C,YAAY;YACZ,SAAS;YACT,MAAM;YACN,QAAQ;YACR,GAAG;YACH,KAAK;YACL,UAAU,EAAE,aAAa;YACzB,MAAM;YACN,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,OAAO;SACf,CAAC;QACF,IAAI,SAAS;YAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QAEjD,MAAM,GAAG,CAAC,GAAG,CACX;;;;OAIC,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAC1C,CAAC;QAEF,mDAAmD;QACnD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,GAAG,CAAC,GAAG,CACX;;;;SAIC,EACD,EAAE,YAAY,EAAE,MAAM,EAAE,CACzB,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,yDAAyD;QACzD,mEAAmE;QACnE,qEAAqE;QACrE,mDAAmD;QACnD,MAAM,GAAG,CAAC,GAAG,CACX;;;;OAIC,EACD,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CACzC,CAAC;QAEF,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QAEnB,OAAO;YACL,YAAY;YACZ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -43,6 +43,27 @@ while true; do
43
43
  line="${ts} MemTotalMB=${mem_total_mb} MemAvailableMB=${mem_available_mb} claude_count=${claude_count} aggregate_rss_mb=${aggregate_rss_mb} pids=${pid_pairs:-none}"
44
44
  echo "$line" >> "$LOG_PATH"
45
45
 
46
+ # Task 1176 — standing slice-pressure check. The OOM loop emits no
47
+ # application event until the kill, so sample the claude-ptys.slice
48
+ # cohort's live memory against its MemoryHigh ceiling each cycle. A box
49
+ # trending toward the cap is then visible BEFORE the kernel intervenes;
50
+ # the success post-condition is the brand server's NRestarts staying flat
51
+ # while this ratio may rise — proving the slice, not the server, absorbed
52
+ # the pressure. Read both values from systemd (a structured key=value
53
+ # interface, not CLI prose); skip the line on any host where systemctl is
54
+ # absent, the slice is unknown, or MemoryHigh is unset/infinity.
55
+ if command -v systemctl >/dev/null 2>&1; then
56
+ slice_props=$(systemctl --user show claude-ptys.slice -p MemoryCurrent -p MemoryHigh 2>/dev/null || true)
57
+ slice_current=$(printf '%s\n' "$slice_props" | sed -n 's/^MemoryCurrent=//p')
58
+ slice_high=$(printf '%s\n' "$slice_props" | sed -n 's/^MemoryHigh=//p')
59
+ if [[ "$slice_current" =~ ^[0-9]+$ && "$slice_high" =~ ^[0-9]+$ && "$slice_high" -gt 0 ]]; then
60
+ slice_current_mb=$(( slice_current / 1048576 ))
61
+ slice_high_mb=$(( slice_high / 1048576 ))
62
+ slice_ratio=$(( slice_current * 100 / slice_high ))
63
+ echo "[rss] op=slice-pressure slice=claude-ptys current=${slice_current_mb} high=${slice_high_mb} ratio=${slice_ratio}" >> "$LOG_PATH"
64
+ fi
65
+ fi
66
+
46
67
  # Cap log at LOG_MAX_BYTES: drop oldest half when threshold is exceeded
47
68
  if [[ -f "$LOG_PATH" ]]; then
48
69
  actual_bytes=$(wc -c < "$LOG_PATH")
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAoB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAsPtD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAoB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAuPtD,CAAA"}
@@ -101,6 +101,7 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
101
101
  "mcp__plugin_email_email__email-draft-edit",
102
102
  "mcp__plugin_email_email__email-draft-send",
103
103
  "mcp__plugin_email_email__email-fetch",
104
+ "mcp__plugin_email_email__email-fetch-body",
104
105
  "mcp__plugin_email_email__email-graph-query",
105
106
  "mcp__plugin_email_email__email-ingest",
106
107
  "mcp__plugin_email_email__email-otp-extract",
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /** Extract the `sdk-cli` consent URL from `claude mcp login` output. Returns null
2
+ * when the output carries no start-auth URL (drives the `failed` branch). */
3
+ export declare function parseStartAuthUrl(output: string): string | null;
4
+ export interface ConnectorAuthDeps {
5
+ logger: (line: string) => void;
6
+ /** Run `claude mcp login "<name>"` under the brand config dir; returns combined
7
+ * stdout+stderr and the exit code (never throws). */
8
+ runMcpLogin: (name: string) => Promise<{
9
+ output: string;
10
+ code: number;
11
+ }>;
12
+ /** Recycle the session so the operator's next inbound re-spawns with --resume. */
13
+ recycleSession: (sessionId: string) => Promise<void>;
14
+ /** Per-session connectors already resumed once this manager lifetime; keyed
15
+ * `${sessionId}::${name}`. */
16
+ resumedOnce: Set<string>;
17
+ }
18
+ export interface ConnectorAuthArgs {
19
+ sessionId: string;
20
+ name: string;
21
+ completed: boolean;
22
+ }
23
+ export type ConnectorAuthResult = {
24
+ url: string;
25
+ } | {
26
+ recycled: true;
27
+ } | {
28
+ error: string;
29
+ };
30
+ export declare function runConnectorAuthLogin(deps: ConnectorAuthDeps, args: ConnectorAuthArgs): Promise<ConnectorAuthResult>;
31
+ //# sourceMappingURL=connector-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-auth.d.ts","sourceRoot":"","sources":["../src/connector-auth.ts"],"names":[],"mappings":"AAMA;8EAC8E;AAC9E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B;0DACsD;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxE,kFAAkF;IAClF,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD;mCAC+B;IAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAO1F,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA6B9B"}
@@ -0,0 +1,49 @@
1
+ // Task 1153 — TUI-free claude.ai connector authentication for the admin webchat.
2
+ // The admin agent calls the webchat-channel `connector_authenticate` tool when a
3
+ // claude.ai connector tool result asks it to "run /mcp". That request reaches the
4
+ // manager here. Pure decision logic + a regex parser; exec and session recycle are
5
+ // injected so this unit-tests without a process or a Hono app.
6
+ /** Extract the `sdk-cli` consent URL from `claude mcp login` output. Returns null
7
+ * when the output carries no start-auth URL (drives the `failed` branch). */
8
+ export function parseStartAuthUrl(output) {
9
+ const m = output.match(/https:\/\/\S*\/mcp\/start-auth\/\S+/);
10
+ if (!m)
11
+ return null;
12
+ // Trim trailing punctuation a sentence might append.
13
+ return m[0].replace(/[).,]+$/, '');
14
+ }
15
+ function logLine(name, op, outcome) {
16
+ const base = `[admin-webchat] op=${op} name=${JSON.stringify(name)}`;
17
+ return outcome ? `${base} outcome=${outcome}` : base;
18
+ }
19
+ export async function runConnectorAuthLogin(deps, args) {
20
+ const key = `${args.sessionId}::${args.name}`;
21
+ if (args.completed) {
22
+ await deps.recycleSession(args.sessionId);
23
+ deps.resumedOnce.add(key);
24
+ deps.logger(logLine(args.name, 'connector-auth-login', 'completed'));
25
+ return { recycled: true };
26
+ }
27
+ deps.logger(logLine(args.name, 'connector-auth-needed'));
28
+ const { output, code } = await deps.runMcpLogin(args.name);
29
+ if (code !== 0) {
30
+ deps.logger(logLine(args.name, 'connector-auth-login', 'failed'));
31
+ return { error: `Could not start authentication for "${args.name}".` };
32
+ }
33
+ const url = parseStartAuthUrl(output);
34
+ if (!url) {
35
+ // `mcp login` exited 0 but issued no consent URL — the connector needs no
36
+ // authentication for this client (already authorised, or nothing to do).
37
+ // Split on exit code, not on the CLI's prose, so this stays deterministic.
38
+ deps.logger(logLine(args.name, 'connector-auth-login', 'no-url'));
39
+ return {
40
+ error: `"${args.name}" returned no authentication link, so it may already be authenticated for this client. Try using it.`,
41
+ };
42
+ }
43
+ deps.logger(logLine(args.name, 'connector-auth-login', 'url-issued'));
44
+ if (deps.resumedOnce.has(key)) {
45
+ deps.logger(logLine(args.name, 'connector-auth-login', 'still-needs-auth-after-resume'));
46
+ }
47
+ return { url };
48
+ }
49
+ //# sourceMappingURL=connector-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-auth.js","sourceRoot":"","sources":["../src/connector-auth.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,+DAA+D;AAE/D;8EAC8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAC7D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,qDAAqD;IACrD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACpC,CAAC;AAsBD,SAAS,OAAO,CAAC,IAAY,EAAE,EAAU,EAAE,OAAgB;IACzD,MAAM,IAAI,GAAG,sBAAsB,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;IACpE,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAuB,EACvB,IAAuB;IAEvB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;IAC7C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAA;QACpE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC3B,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAA;IACxD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,KAAK,EAAE,uCAAuC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;IACxE,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAA;QACjE,OAAO;YACL,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,sGAAsG;SAC3H,CAAA;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAA;IACrE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,+BAA+B,CAAC,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAA;AAChB,CAAC"}
@@ -41,6 +41,30 @@ export interface HttpDeps extends Omit<SpawnDeps, 'onSessionReady' | 'watcher'>
41
41
  * short value to exercise the bind-timeout response without a 60s wait. */
42
42
  rcSpawnUrlWaitMs?: number;
43
43
  }
44
+ /** Task 1090 Phase 2 + Task 1184 — the `tool_use` ids in the bounded tail with
45
+ * no matching `tool_result` after them: the signature of an interrupt or death
46
+ * that landed mid-tool-call, which would corrupt a later `--resume` (the API
47
+ * rejects a tool_use with no following tool_result). Bounded (last 64KB) so a
48
+ * large transcript never blocks the check; the window only needs the last
49
+ * turn's tool pairing. Returns [] on any read error (no file yet, gone) —
50
+ * absence of evidence is not a dangling use. Order-preserving. */
51
+ export declare function danglingToolUseIds(jsonlPath: string): string[];
52
+ /** Task 1184 — append one synthetic user record supplying an is_error
53
+ * tool_result for each dangling tool_use, so a `--resume` of a session whose
54
+ * child died mid-tool-call has no unmatched tool_use. Envelope fields
55
+ * (cwd/version/gitBranch/parentUuid) are copied forward from the last on-disk
56
+ * record so the synthetic record matches claude's own shape; uuid and
57
+ * timestamp are minted. Idempotent: returns false when nothing dangles or on
58
+ * any error. */
59
+ export declare function appendTurnAbortTerminator(jsonlPath: string, sessionId: string): boolean;
60
+ /** Task 1184 — the open-turn signature of a dead-child phantom. Reads the
61
+ * bounded tail (last 64KB) and reports whether the last assistant record
62
+ * carries no terminal `stop_reason` — the turn was streaming when the child
63
+ * died (no end_turn was ever written). A terminal stop (end_turn /
64
+ * stop_sequence / max_tokens) is a completed turn → false. No assistant
65
+ * record in the window, or any read error → false (absence of evidence is
66
+ * not an open turn). */
67
+ export declare function tailIsOpenTurn(jsonlPath: string): boolean;
44
68
  export declare function forkArgvSegment(fromSessionId: string, newSessionId: string, model: string): string[];
45
69
  export declare function reseatIdentityPrompt(model: string): string;
46
70
  export declare function authenticatedIdentityPrompt(name: string | null): string;
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAc3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAsBzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAgFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA2JD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAw/EpD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAe3B,OAAO,EAkBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAsBzB,OAAO,KAAK,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAA;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAgFlE,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;;6BAGyB;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC;;;sCAGkC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAsFD;;;;;;mEAMmE;AACnE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC9D;AAMD;;;;;;iBAMiB;AACjB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAmCvF;AAID;;;;;;yBAMyB;AACzB,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiCzD;AAkCD,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpG;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAUD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAER;AAkCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5F;AAwJD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AA8CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA0kFpD"}
@@ -20,7 +20,7 @@
20
20
  // manager does not know.
21
21
  import { Hono } from 'hono';
22
22
  import { stream } from 'hono/streaming';
23
- import { existsSync, statSync, createReadStream, watchFile, unwatchFile, rmSync, mkdirSync, renameSync, readFileSync, writeFileSync, openSync, readSync, closeSync } from 'node:fs';
23
+ import { existsSync, statSync, createReadStream, watchFile, unwatchFile, rmSync, mkdirSync, renameSync, readFileSync, writeFileSync, appendFileSync, openSync, readSync, closeSync } from 'node:fs';
24
24
  import { tmpdir } from 'node:os';
25
25
  import { buildWaChannelMcpServers, buildWaChannelArgv, waChannelMcpConfigPath, isDevChannelPrompt } from './wa-channel-mcp.js';
26
26
  import { buildWebchatChannelMcpServers, buildWebchatChannelArgv, webchatChannelMcpConfigPath } from './webchat-channel-mcp.js';
@@ -28,8 +28,9 @@ import { buildTelegramChannelMcpServers, buildTelegramChannelArgv, telegramChann
28
28
  import { buildChannelMcpServers, buildChannelArgv, channelMcpConfigPath } from './channel-mcp.js';
29
29
  import { mergeTarget, isMultiTarget, targetKinds } from './channel-targets.js';
30
30
  import { randomUUID } from 'node:crypto';
31
- import { execFileSync } from 'node:child_process';
31
+ import { execFile, execFileSync } from 'node:child_process';
32
32
  import { buildRcChildEnv, reapplyAdminLevers } from './rc-daemon.js';
33
+ import { runConnectorAuthLogin } from './connector-auth.js';
33
34
  import { isEffortLevel, isNewSessionEffortLevel, isPermissionMode, SONNET_MODEL } from '../../../lib/models/dist/index.js';
34
35
  import { spawnClaudeSession, stopSession, writeInterruptToPty, isLive, onPtyExit, livePtyCount, liveSessionIds, getPtyTrackerForTests, livePidForSession, classifyLiveness, priorExitedCountForSession, PERMISSION_MODES, openFdCount, registerRcSpawnPty, } from './pty-spawner.js';
35
36
  import { writeScopeRecord, removeScopeRecord } from './scope-record.js';
@@ -155,17 +156,17 @@ function finitePositive(raw, fallback) {
155
156
  const n = Number(raw);
156
157
  return Number.isFinite(n) && n > 0 ? n : fallback;
157
158
  }
158
- /** Task 1090 Phase 2 — the post-interrupt transcript-integrity check. Reads a
159
- * bounded tail of the session JSONL and reports whether a `tool_use` block in
160
- * that window has no matching `tool_result` after it the signature of an
161
- * interrupt that landed mid-tool-call, which would corrupt a later `--resume`.
162
- * Bounded (last 64KB) so a large transcript never blocks the post-check; the
163
- * window only needs the last turn's tool pairing. Returns false on any read
164
- * error (no file yet, gone) — absence of evidence is not a dangling use. */
165
- function tailHasDanglingToolUse(jsonlPath) {
159
+ /** Task 1090 Phase 2 + Task 1184 — the `tool_use` ids in the bounded tail with
160
+ * no matching `tool_result` after them: the signature of an interrupt or death
161
+ * that landed mid-tool-call, which would corrupt a later `--resume` (the API
162
+ * rejects a tool_use with no following tool_result). Bounded (last 64KB) so a
163
+ * large transcript never blocks the check; the window only needs the last
164
+ * turn's tool pairing. Returns [] on any read error (no file yet, gone) —
165
+ * absence of evidence is not a dangling use. Order-preserving. */
166
+ export function danglingToolUseIds(jsonlPath) {
166
167
  try {
167
168
  if (!existsSync(jsonlPath))
168
- return false;
169
+ return [];
169
170
  const size = statSync(jsonlPath).size;
170
171
  const window = 64 * 1024;
171
172
  const fd = openSync(jsonlPath, 'r');
@@ -175,7 +176,7 @@ function tailHasDanglingToolUse(jsonlPath) {
175
176
  const buf = Buffer.alloc(len);
176
177
  readSync(fd, buf, 0, len, start);
177
178
  const lines = buf.toString('utf8').split('\n');
178
- const used = new Set();
179
+ const used = [];
179
180
  const resulted = new Set();
180
181
  for (const line of lines) {
181
182
  if (!line)
@@ -193,15 +194,116 @@ function tailHasDanglingToolUse(jsonlPath) {
193
194
  continue;
194
195
  for (const c of content) {
195
196
  if (c.type === 'tool_use' && typeof c.id === 'string')
196
- used.add(c.id);
197
+ used.push(c.id);
197
198
  if (c.type === 'tool_result' && typeof c.tool_use_id === 'string')
198
199
  resulted.add(c.tool_use_id);
199
200
  }
200
201
  }
201
- for (const id of used)
202
- if (!resulted.has(id))
203
- return true;
202
+ return used.filter((id) => !resulted.has(id));
203
+ }
204
+ finally {
205
+ closeSync(fd);
206
+ }
207
+ }
208
+ catch {
209
+ return [];
210
+ }
211
+ }
212
+ function tailHasDanglingToolUse(jsonlPath) {
213
+ return danglingToolUseIds(jsonlPath).length > 0;
214
+ }
215
+ /** Task 1184 — append one synthetic user record supplying an is_error
216
+ * tool_result for each dangling tool_use, so a `--resume` of a session whose
217
+ * child died mid-tool-call has no unmatched tool_use. Envelope fields
218
+ * (cwd/version/gitBranch/parentUuid) are copied forward from the last on-disk
219
+ * record so the synthetic record matches claude's own shape; uuid and
220
+ * timestamp are minted. Idempotent: returns false when nothing dangles or on
221
+ * any error. */
222
+ export function appendTurnAbortTerminator(jsonlPath, sessionId) {
223
+ try {
224
+ const ids = danglingToolUseIds(jsonlPath);
225
+ if (ids.length === 0)
204
226
  return false;
227
+ const raw = readFileSync(jsonlPath, 'utf8').trimEnd().split('\n');
228
+ let envelope = {};
229
+ for (let i = raw.length - 1; i >= 0; i--) {
230
+ try {
231
+ envelope = JSON.parse(raw[i]);
232
+ break;
233
+ }
234
+ catch { /* skip non-JSON */ }
235
+ }
236
+ const record = {
237
+ parentUuid: typeof envelope.uuid === 'string' ? envelope.uuid : null,
238
+ isSidechain: false,
239
+ userType: 'external',
240
+ cwd: typeof envelope.cwd === 'string' ? envelope.cwd : undefined,
241
+ sessionId,
242
+ version: typeof envelope.version === 'string' ? envelope.version : undefined,
243
+ gitBranch: typeof envelope.gitBranch === 'string' ? envelope.gitBranch : undefined,
244
+ type: 'user',
245
+ uuid: randomUUID(),
246
+ timestamp: new Date().toISOString(),
247
+ message: {
248
+ role: 'user',
249
+ content: ids.map((id) => ({
250
+ tool_use_id: id,
251
+ type: 'tool_result',
252
+ content: 'Turn aborted: the agent process exited before this tool finished.',
253
+ is_error: true,
254
+ })),
255
+ },
256
+ };
257
+ appendFileSync(jsonlPath, JSON.stringify(record) + '\n');
258
+ return true;
259
+ }
260
+ catch {
261
+ return false;
262
+ }
263
+ }
264
+ const TERMINAL_STOP_REASONS = new Set(['end_turn', 'stop_sequence', 'max_tokens']);
265
+ /** Task 1184 — the open-turn signature of a dead-child phantom. Reads the
266
+ * bounded tail (last 64KB) and reports whether the last assistant record
267
+ * carries no terminal `stop_reason` — the turn was streaming when the child
268
+ * died (no end_turn was ever written). A terminal stop (end_turn /
269
+ * stop_sequence / max_tokens) is a completed turn → false. No assistant
270
+ * record in the window, or any read error → false (absence of evidence is
271
+ * not an open turn). */
272
+ export function tailIsOpenTurn(jsonlPath) {
273
+ try {
274
+ if (!existsSync(jsonlPath))
275
+ return false;
276
+ const size = statSync(jsonlPath).size;
277
+ const window = 64 * 1024;
278
+ const fd = openSync(jsonlPath, 'r');
279
+ try {
280
+ const start = size > window ? size - window : 0;
281
+ const len = size - start;
282
+ const buf = Buffer.alloc(len);
283
+ readSync(fd, buf, 0, len, start);
284
+ const lines = buf.toString('utf8').split('\n');
285
+ let lastAssistantStop = null;
286
+ let sawAssistant = false;
287
+ for (const line of lines) {
288
+ if (!line)
289
+ continue;
290
+ let o;
291
+ try {
292
+ o = JSON.parse(line);
293
+ }
294
+ catch {
295
+ continue;
296
+ }
297
+ const rec = o;
298
+ if (rec.type === 'assistant' || rec.message?.role === 'assistant') {
299
+ sawAssistant = true;
300
+ const sr = rec.message?.stop_reason;
301
+ lastAssistantStop = typeof sr === 'string' ? sr : null;
302
+ }
303
+ }
304
+ if (!sawAssistant)
305
+ return false;
306
+ return !(lastAssistantStop !== null && TERMINAL_STOP_REASONS.has(lastAssistantStop));
205
307
  }
206
308
  finally {
207
309
  closeSync(fd);
@@ -502,6 +604,22 @@ function detectCliVersion(claudeBin) {
502
604
  }
503
605
  return cachedCliVersion;
504
606
  }
607
+ // Task 1153 — connectors resumed once this manager lifetime, keyed
608
+ // `${sessionId}::${name}`. A second authenticate-needed for the same pair after a
609
+ // resume is the unexpected case, surfaced via `outcome=still-needs-auth-after-resume`.
610
+ const connectorResumedOnce = new Set();
611
+ // Task 1153 — run `claude mcp login "<name>"` headless under the brand config dir.
612
+ // A claude.ai connector login prints the sdk-cli consent URL and exits 0 with no
613
+ // TTY. Never throws; returns combined stdout+stderr and the exit code.
614
+ function execMcpLogin(claudeBin, claudeConfigDir, name) {
615
+ return new Promise((resolve) => {
616
+ execFile(claudeBin, ['mcp', 'login', name], { env: { ...process.env, CLAUDE_CONFIG_DIR: claudeConfigDir }, timeout: 20_000, encoding: 'utf8' }, (err, stdout, stderr) => {
617
+ const output = `${stdout ?? ''}\n${stderr ?? ''}`;
618
+ const code = err ? (typeof err.code === 'number' ? err.code : 1) : 0;
619
+ resolve({ output, code });
620
+ });
621
+ });
622
+ }
505
623
  export function buildHttpApp(deps) {
506
624
  const app = new Hono();
507
625
  // Task 702 — the dir holding pid files and rc-spawn scope records.
@@ -745,6 +863,22 @@ export function buildHttpApp(deps) {
745
863
  // post-Task-260 rows surface their specialist even if the JSONL
746
864
  // doesn't include an agent-setting record.
747
865
  const specialist = row.agent ?? row.cachedAgentSetting ?? row.sidecarSpecialist;
866
+ // Task 1184 — read-time activity reconcile. A busy stamp can outlive its
867
+ // child: an OOM SIGKILL leaves the PID file on disk, so the watcher row
868
+ // stays `busy` with no live PTY to ever flip it. Reconcile here so the
869
+ // pointer poll stops reporting an in-flight turn for a dead child — and,
870
+ // when the transcript tail is an open turn, mark it `aborted` so the UI
871
+ // shows the resume notice. This cannot persist past one read.
872
+ let activity = row.status;
873
+ let turnAborted;
874
+ if (row.status === 'busy' && !isLive(row.sessionId)) {
875
+ if (hasJsonl && tailIsOpenTurn(jsonlPath)) {
876
+ activity = 'aborted';
877
+ turnAborted = true;
878
+ }
879
+ else
880
+ activity = 'idle';
881
+ }
748
882
  return {
749
883
  sessionId: row.sessionId,
750
884
  pid: row.pid,
@@ -767,7 +901,8 @@ export function buildHttpApp(deps) {
767
901
  model,
768
902
  permissionMode: row.permissionMode,
769
903
  effectivePermissionMode: row.effectivePermissionMode,
770
- activity: row.status,
904
+ activity,
905
+ turnAborted,
771
906
  };
772
907
  }
773
908
  app.post('/public-spawn', async (c) => {
@@ -1395,6 +1530,39 @@ export function buildHttpApp(deps) {
1395
1530
  return c.json({ ok: true, sessionId, titleSource: 'user', renamedAt: entry.renamedAt }, 200);
1396
1531
  });
1397
1532
  // SIGTERM-only stop. Idempotent on already-dead PTYs. JSONL untouched.
1533
+ // Task 1153 — TUI-free claude.ai connector authentication for the admin webchat.
1534
+ // The webchat-channel `connector_authenticate` tool reaches here via the UI
1535
+ // gateway. `completed:false` runs `claude mcp login` and returns the consent URL;
1536
+ // `completed:true` recycles the session so the operator's next inbound re-spawns
1537
+ // with --resume and reads the new grant. Decision logic lives in connector-auth.ts.
1538
+ app.post('/connector-auth-login', async (c) => {
1539
+ const start = Date.now();
1540
+ const body = await c.req.json().catch(() => null);
1541
+ const sessionId = body?.sessionId;
1542
+ const name = body?.name;
1543
+ const completed = body?.completed === true;
1544
+ if (typeof sessionId !== 'string' || !SESSION_ID_PATTERN.test(sessionId) || typeof name !== 'string' || !name.trim()) {
1545
+ timed(deps.logger, 'POST', '/connector-auth-login', 400, Date.now() - start);
1546
+ return c.json({ error: 'sessionId and name required' }, 400);
1547
+ }
1548
+ const result = await runConnectorAuthLogin({
1549
+ logger: deps.logger,
1550
+ runMcpLogin: (n) => execMcpLogin(deps.claudeBin, deps.claudeConfigDir, n),
1551
+ recycleSession: async (sid) => {
1552
+ const row = resolveRow(deps.watcher, sid);
1553
+ await stopSession({
1554
+ killGraceMs: deps.killGraceMs,
1555
+ logger: deps.logger,
1556
+ runSystemctl: deps.runSystemctl,
1557
+ rowScopeUnitToken: row?.scopeUnitToken ?? null,
1558
+ rowPid: row?.pid ?? null,
1559
+ }, sid);
1560
+ },
1561
+ resumedOnce: connectorResumedOnce,
1562
+ }, { sessionId, name, completed });
1563
+ timed(deps.logger, 'POST', '/connector-auth-login', 200, Date.now() - start);
1564
+ return c.json(result, 200);
1565
+ });
1398
1566
  app.post('/:sessionId/stop', async (c) => {
1399
1567
  const start = Date.now();
1400
1568
  const id = c.req.param('sessionId');
@@ -1581,6 +1749,19 @@ export function buildHttpApp(deps) {
1581
1749
  deps.logger(`[webchat-interrupt] op=interrupt-requested intId=${intId} sessionId=${sessionId.slice(0, 8)} trigger=${trigger}`);
1582
1750
  const result = writeInterruptToPty(sessionId, byte, deps.logger);
1583
1751
  if (!result.ok) {
1752
+ if (result.error === 'not-found' || result.error === 'exited') {
1753
+ const jsonlPath = jsonlPathForSessionId(deps.spawnCwd, sessionId);
1754
+ // Task 1184 — a dead-child phantom: no live PTY and the transcript tail
1755
+ // is an open turn. Recover instead of bare-404 so the operator's stop
1756
+ // press clears the phantom and a later --resume is clean.
1757
+ if (!isLive(sessionId) && tailIsOpenTurn(jsonlPath)) {
1758
+ appendTurnAbortTerminator(jsonlPath, sessionId);
1759
+ const tailTurnClosed = !tailIsOpenTurn(jsonlPath);
1760
+ deps.logger(`[webchat-interrupt] op=dead-child-recovered intId=${intId} sessionId=${sessionId.slice(0, 8)} tailTurnClosed=${tailTurnClosed}`);
1761
+ timed(deps.logger, 'POST', `/${id}/interrupt`, 200, Date.now() - start);
1762
+ return c.json({ ok: true, deadChild: true, resumable: true }, 200);
1763
+ }
1764
+ }
1584
1765
  if (result.error === 'not-found') {
1585
1766
  timed(deps.logger, 'POST', `/${id}/interrupt`, 404, Date.now() - start);
1586
1767
  return c.json({ error: 'session-not-found' }, 404);
@@ -2741,6 +2922,22 @@ export function buildHttpApp(deps) {
2741
2922
  // 500 ms idle deadline before the child exited.
2742
2923
  if (!outputEmitted)
2743
2924
  emitChildOutput();
2925
+ // Task 1184 — self-heal a dead-child phantom. If the child exits while
2926
+ // its transcript tail is an open turn, emit the abort event and write
2927
+ // the terminator so a later --resume is clean. Only a known (resumed)
2928
+ // session has a JSONL to reconcile; a fresh spawn that dies before
2929
+ // binding has no id and no transcript. The visible turnActive flip
2930
+ // happens via the read-time activity reconcile on the next poll.
2931
+ if (sessionId) {
2932
+ try {
2933
+ const jsonlPath = jsonlPathForSessionId(deps.spawnCwd, sessionId);
2934
+ if (tailIsOpenTurn(jsonlPath)) {
2935
+ deps.logger(`[rc-life] op=turn-aborted sessionId=${sessionId.slice(0, 8)} reason=child-exit-mid-turn`);
2936
+ appendTurnAbortTerminator(jsonlPath, sessionId);
2937
+ }
2938
+ }
2939
+ catch { /* exit path must never throw */ }
2940
+ }
2744
2941
  // Task 977 — close the per-session child log on exit.
2745
2942
  childLog.close();
2746
2943
  });