@rubytech/create-maxy-code 0.1.82 → 0.1.84

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 (156) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  3. package/payload/platform/plugins/admin/hooks/__tests__/pre-tool-use-memory-write-revoke.test.sh +142 -24
  4. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +131 -218
  5. package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +85 -17
  6. package/payload/platform/plugins/cloudflare/PLUGIN.md +2 -11
  7. package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +9 -7
  8. package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +20 -10
  9. package/payload/platform/plugins/docs/references/cloudflare.md +10 -9
  10. package/payload/platform/scripts/seed-neo4j.sh +20 -14
  11. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts +6 -0
  12. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts.map +1 -1
  13. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js +21 -0
  14. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js.map +1 -1
  15. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +47 -0
  16. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  17. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +265 -44
  18. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  19. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  20. package/payload/platform/templates/specialists/agents/database-operator.md +8 -10
  21. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +3 -0
  22. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/template.html +18 -8
  23. package/payload/server/{chunk-TFEIFU7F.js → chunk-BDFOTLPW.js} +1 -1
  24. package/payload/server/{chunk-W33UUYYR.js → chunk-BVDLDM6O.js} +1 -1
  25. package/payload/server/{chunk-VGMVEYX7.js → chunk-JRBCOVA4.js} +64 -5
  26. package/payload/server/{cloudflare-task-tracker-7P355PSD.js → cloudflare-task-tracker-M5ONAGUT.js} +2 -2
  27. package/payload/server/maxy-edge.js +2 -2
  28. package/payload/server/public/assets/Checkbox-B34vplI7.js +1 -0
  29. package/payload/server/public/assets/{admin-Dl273yTS.js → admin-BkTlPuP0.js} +5 -5
  30. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-DMDAZHAN.js} +1 -1
  31. package/payload/server/public/assets/architecture-YZFGNWBL-COhEvUpo.js +1 -0
  32. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Iyf6H93s.js → architectureDiagram-Q4EWVU46-DQMCKDU2.js} +1 -1
  33. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-e7l5Mhun.js → blockDiagram-DXYQGD6D-CqJNtiQY.js} +1 -1
  34. package/payload/server/public/assets/{brand-CTMGYFDd.css → brand-C_iHnsbT.css} +1 -1
  35. package/payload/server/public/assets/{brand-dPgPNs7n.js → brand-HqTMr1bV.js} +1 -1
  36. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-bDICnX2_.js → c4Diagram-AHTNJAMY-BVAa1YL3.js} +1 -1
  37. package/payload/server/public/assets/channel-CZG4mVkt.js +1 -0
  38. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-Di4bO8ir.js} +1 -1
  39. package/payload/server/public/assets/chunk-336JU56O-XIsdqKyD.js +2 -0
  40. package/payload/server/public/assets/chunk-426QAEUC-Dw4mcMYK.js +1 -0
  41. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-DyEhFk-Z.js} +1 -1
  42. package/payload/server/public/assets/{chunk-4TB4RGXK-CzvvHuMJ.js → chunk-4TB4RGXK-BvrlG2FS.js} +1 -1
  43. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-BRJOZLpU.js} +1 -1
  44. package/payload/server/public/assets/{chunk-5FUZZQ4R-DxqHPDro.js → chunk-5FUZZQ4R-3-UZ9191.js} +1 -1
  45. package/payload/server/public/assets/{chunk-5PVQY5BW-BA6nMu9F.js → chunk-5PVQY5BW-DOeY60Lp.js} +1 -1
  46. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BG6-9r6c.js} +1 -1
  47. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-BvMbitX7.js} +1 -1
  48. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-CE8mGBD5.js} +1 -1
  49. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-DP7LTBll.js} +1 -1
  50. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-VfnIdN-h.js} +1 -1
  51. package/payload/server/public/assets/{chunk-EDXVE4YY-gUSTktie.js → chunk-EDXVE4YY-BSbGSOxN.js} +1 -1
  52. package/payload/server/public/assets/{chunk-ENJZ2VHE-C-wW17kd.js → chunk-ENJZ2VHE-CszgAcWZ.js} +1 -1
  53. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-w-yBZsN2.js} +1 -1
  54. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-f9cFywhd.js} +1 -1
  55. package/payload/server/public/assets/{chunk-ICPOFSXX-zLc9NsO5.js → chunk-ICPOFSXX-rgw1I6pt.js} +2 -2
  56. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-B_ZUrFUq.js} +1 -1
  57. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CcWTvRlI.js} +1 -1
  58. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-D-5-peQw.js} +1 -1
  59. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-B4Z5L25I.js} +1 -1
  60. package/payload/server/public/assets/{chunk-OYMX7WX6-Bt9RJ_rb.js → chunk-OYMX7WX6-DL4v2Nx4.js} +1 -1
  61. package/payload/server/public/assets/chunk-QZHKN3VN-CWh_0JsP.js +1 -0
  62. package/payload/server/public/assets/{chunk-U2HBQHQK-BAM6MO6g.js → chunk-U2HBQHQK-CwMCwyfq.js} +1 -1
  63. package/payload/server/public/assets/{chunk-X2U36JSP-DbOwgg1R.js → chunk-X2U36JSP-CvKfDVvq.js} +1 -1
  64. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-m1Y_r88I.js} +1 -1
  65. package/payload/server/public/assets/{chunk-YZCP3GAM-BXUfYLeM.js → chunk-YZCP3GAM-D7vju2_U.js} +1 -1
  66. package/payload/server/public/assets/{chunk-ZZ45TVLE-BBIHnMjI.js → chunk-ZZ45TVLE-sANOwJKn.js} +1 -1
  67. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BoqQ3pHg.js +1 -0
  68. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-FoKuBK7n.js +1 -0
  69. package/payload/server/public/assets/clone-CT8AM-bU.js +1 -0
  70. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-BhtgY3T7.js} +1 -1
  71. package/payload/server/public/assets/{dagre-Bv8aHCaJ.js → dagre-CplqWwSs.js} +1 -1
  72. package/payload/server/public/assets/{dagre-KV5264BT-BZ0q7dDA.js → dagre-KV5264BT-DNbl5g9o.js} +1 -1
  73. package/payload/server/public/assets/data-BIDM6J5V.js +1 -0
  74. package/payload/server/public/assets/{device-url-actions-CK6x8-FQ.js → device-url-actions-nxh9PmIH.js} +1 -1
  75. package/payload/server/public/assets/{diagram-5BDNPKRD-Bbzy2KoW.js → diagram-5BDNPKRD-BCdMaYnY.js} +1 -1
  76. package/payload/server/public/assets/{diagram-G4DWMVQ6-CadVHWrV.js → diagram-G4DWMVQ6-8XhDBU0o.js} +1 -1
  77. package/payload/server/public/assets/{diagram-MMDJMWI5-DwJ6fVMv.js → diagram-MMDJMWI5-M-RMQgtx.js} +1 -1
  78. package/payload/server/public/assets/{diagram-TYMM5635-Bh8d1vg-.js → diagram-TYMM5635-BBHPIBvQ.js} +1 -1
  79. package/payload/server/public/assets/{erDiagram-SMLLAGMA-B1oTY2ob.js → erDiagram-SMLLAGMA-D6jOL-9s.js} +1 -1
  80. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BsWEYbBB.js} +1 -1
  81. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BZU76iLs.js → flowDiagram-DWJPFMVM-CiyTYRlU.js} +1 -1
  82. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-PjhJx62i.js → ganttDiagram-T4ZO3ILL-DHSIpjfS.js} +1 -1
  83. package/payload/server/public/assets/gitGraph-7Q5UKJZL-DeTNsAO0.js +1 -0
  84. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DLrxzJYi.js → gitGraphDiagram-UUTBAWPF-CEneVF3o.js} +1 -1
  85. package/payload/server/public/assets/graph-Cm-iWFqy.js +1 -0
  86. package/payload/server/public/assets/graph-labels-CFX6KkCz.js +1 -0
  87. package/payload/server/public/assets/{graphlib-D2ExKXiT.js → graphlib-CuF7rLfE.js} +1 -1
  88. package/payload/server/public/assets/info-OMHHGYJF-DJJ9GlS6.js +1 -0
  89. package/payload/server/public/assets/infoDiagram-42DDH7IO-wGl-JoP7.js +2 -0
  90. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-BWl67LAZ.js} +1 -1
  91. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Ed8ANWEq.js → ishikawaDiagram-UXIWVN3A-B3TxFNi_.js} +1 -1
  92. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DF1gG775.js → journeyDiagram-VCZTEJTY-B5n8No7p.js} +1 -1
  93. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-D8VcaKAp.js → kanban-definition-6JOO6SKY-ByGF39_h.js} +1 -1
  94. package/payload/server/public/assets/{line-CgMZIaVM.js → line-Br0FyyFW.js} +1 -1
  95. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-0O14Y6uf.js} +1 -1
  96. package/payload/server/public/assets/{mermaid-parser.core-ez9lChuL.js → mermaid-parser.core-BUcTjodx.js} +2 -2
  97. package/payload/server/public/assets/{mermaid.core-BiVW_Lka.js → mermaid.core-BKzdtZgG.js} +3 -3
  98. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-C-BlLBbo.js → mindmap-definition-QFDTVHPH-CobGMF9l.js} +1 -1
  99. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-krseTxxN.js} +1 -1
  100. package/payload/server/public/assets/packet-4T2RLAQJ-CGbvGkvF.js +1 -0
  101. package/payload/server/public/assets/{page-BQCQwUG5.js → page-B5NRnW0t.js} +1 -1
  102. package/payload/server/public/assets/{page-DStDaJgc.js → page-Ba0BAfpu.js} +2 -2
  103. package/payload/server/public/assets/pie-ZZUOXDRM-BZy8rjFn.js +1 -0
  104. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BK0-LxVl.js → pieDiagram-DEJITSTG-DXFmGcNR.js} +1 -1
  105. package/payload/server/public/assets/{public-DMk9cZKl.js → public-DWfBzf83.js} +5 -5
  106. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-vKAQHu-t.js → quadrantDiagram-34T5L4WZ-BnChStlO.js} +1 -1
  107. package/payload/server/public/assets/radar-PYXPWWZC-DcfWIVXr.js +1 -0
  108. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-tk-xY6Fv.js} +1 -1
  109. package/payload/server/public/assets/{requirementDiagram-MS252O5E-Df9sXR35.js → requirementDiagram-MS252O5E-DdiBKsyO.js} +1 -1
  110. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DG6xirA4.js → sankeyDiagram-XADWPNL6-16-np_56.js} +1 -1
  111. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B1a38KHX.js → sequenceDiagram-FGHM5R23-D67SCRpA.js} +1 -1
  112. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CRiIDR4O.js → stateDiagram-FHFEXIEX-CvNJX0YC.js} +1 -1
  113. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CFw2U4iL.js +1 -0
  114. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CkBOE7Y8.js → timeline-definition-GMOUNBTQ-BJE5YoBa.js} +1 -1
  115. package/payload/server/public/assets/treeView-SZITEDCU-3WugwVdj.js +1 -0
  116. package/payload/server/public/assets/treemap-W4RFUUIX-Cf5mDLlu.js +1 -0
  117. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CwKBydYc.js → vennDiagram-DHZGUBPP-DF17ddXt.js} +1 -1
  118. package/payload/server/public/assets/wardley-RL74JXVD-Bv4md4b3.js +1 -0
  119. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BWXYfzIr.js → wardleyDiagram-NUSXRM2D-xn_2XUOo.js} +1 -1
  120. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-D-4v5Dy_.js → xychartDiagram-5P7HB3ND-DVF8zf3f.js} +1 -1
  121. package/payload/server/public/data.html +5 -5
  122. package/payload/server/public/graph.html +6 -5
  123. package/payload/server/public/index.html +8 -7
  124. package/payload/server/public/public.html +5 -4
  125. package/payload/server/server.js +229 -22
  126. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  127. package/payload/server/public/assets/channel-CkgyfA91.js +0 -1
  128. package/payload/server/public/assets/chunk-336JU56O-CbnUj19H.js +0 -2
  129. package/payload/server/public/assets/chunk-426QAEUC-DxGLqjw5.js +0 -1
  130. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  131. package/payload/server/public/assets/classDiagram-6PBFFD2Q-PyvJekA9.js +0 -1
  132. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-6hFNhiTb.js +0 -1
  133. package/payload/server/public/assets/clone-CFIJrRLl.js +0 -1
  134. package/payload/server/public/assets/data-BgADjmk1.js +0 -1
  135. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  136. package/payload/server/public/assets/graph-B1_erzSo.js +0 -1
  137. package/payload/server/public/assets/graph-labels-CpFvcba2.js +0 -1
  138. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  139. package/payload/server/public/assets/infoDiagram-42DDH7IO-Cn0r9nCK.js +0 -2
  140. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  141. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  142. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  143. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C8cVmi_o.js +0 -1
  144. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  145. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  146. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  147. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-BHtDrjIo.js} +0 -0
  148. /package/payload/server/public/assets/{array-DYRGGQae.js → array-DetWRiSa.js} +0 -0
  149. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-C9yNhe1u.js} +0 -0
  150. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-_WRwicXn.js} +0 -0
  151. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-Bd4S37oi.js} +0 -0
  152. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-sTEcj9YX.js} +0 -0
  153. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-s61Rgv6l.js} +0 -0
  154. /package/payload/server/public/assets/{path-CNO468J-.js → path-B0Ik7Tu9.js} +0 -0
  155. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-DKRO8IF-.js} +0 -0
  156. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-B6XdH6xq.js} +0 -0
@@ -30,7 +30,7 @@ The plugin registers no agent-facing MCP tools. Every Cloudflare operation is dr
30
30
 
31
31
  | Script | Purpose |
32
32
  |---|---|
33
- | [`scripts/setup-tunnel.sh`](scripts/setup-tunnel.sh) | Autonomous end-to-end setup: OAuth login, tunnel resolve (operator-supplied identity), DNS route, config + state, service restart, post-restart verification. Invocation: `~/setup-tunnel.sh <brand> <port> <admin-hostname> [<public-hostname>] [<apex-hostname>]`. Required env: `STREAM_LOG_PATH`, `ACCOUNT_DIR`, AND exactly one of `TUNNEL_ID` (operator selected an existing tunnel from `/api/admin/cloudflare/tunnels`) or `TUNNEL_NAME` (operator typed a name to create) per the operator-selected-tunnel fix. The pre-fix derivation `${BRAND}-$(hostname -s)` is removed — the operator's logged-in Cloudflare account is the source of truth for which tunnel exists. Apex hostnames print an `ACTION REQUIRED` block for the dashboard record the CLI cannot create. Step 1 (wrappers faithfully relay third-party CLI) spawns `cloudflared tunnel login`, extracts the argotunnel URL from its stdout, mechanically opens it on the brand's VNC chromium using the install-time-resolved binary (`DISPLAY=${DISPLAY:-${BRAND_VNC_DISPLAY}} "${SETUP_TUNNEL_CHROMIUM_BIN}" <url> &` — `SETUP_TUNNEL_CHROMIUM_BIN` is read from `${MAXY_PLATFORM_ROOT}/config/chromium-binary.path` at script start so Ubuntu Noble laptop's snap-replaced Google Chrome is honoured by the install-time chromium resolver), then polls for `~/.cloudflared/cert.pem` while the operator clicks the zone row + Authorize on the VNC. 180 s budget with a 2-second `step=oauth-login result=awaiting-cert` heartbeat. No CDP auto-click, no DOM matcher. |
33
+ | [`scripts/setup-tunnel.sh`](scripts/setup-tunnel.sh) | Autonomous end-to-end setup: OAuth login, tunnel resolve (operator-supplied identity), DNS route, config + state, service restart, post-restart verification. Invocation: `~/setup-tunnel.sh <brand> <port> <admin-hostname> [<public-hostname>] [<apex-hostname>]`. Required env: `STREAM_LOG_PATH`, `ACCOUNT_DIR`, AND exactly one of `TUNNEL_ID` (operator selected an existing tunnel the agent enumerates them via `cloudflared tunnel list --output json` and presents the list in chat) or `TUNNEL_NAME` (operator typed a name to create) per the operator-selected-tunnel fix. The pre-fix derivation `${BRAND}-$(hostname -s)` is removed — the operator's logged-in Cloudflare account is the source of truth for which tunnel exists. Apex hostnames print an `ACTION REQUIRED` block for the dashboard record the CLI cannot create. Step 1 (wrappers faithfully relay third-party CLI) spawns `cloudflared tunnel login`, extracts the argotunnel URL from its stdout, mechanically opens it on the brand's VNC chromium using the install-time-resolved binary (`DISPLAY=${DISPLAY:-${BRAND_VNC_DISPLAY}} "${SETUP_TUNNEL_CHROMIUM_BIN}" <url> &` — `SETUP_TUNNEL_CHROMIUM_BIN` is read from `${MAXY_PLATFORM_ROOT}/config/chromium-binary.path` at script start so Ubuntu Noble laptop's snap-replaced Google Chrome is honoured by the install-time chromium resolver), then polls for `~/.cloudflared/cert.pem` while the operator clicks the zone row + Authorize on the VNC. 180 s budget with a 2-second `step=oauth-login result=awaiting-cert` heartbeat. No CDP auto-click, no DOM matcher. |
34
34
  | [`scripts/reset-tunnel.sh`](scripts/reset-tunnel.sh) | Deletes every tunnel on the brand's CF account and wipes `${CFG_DIR}`. Does not touch the platform service, stray CNAMEs, or token-mode connectors — those require dashboard cleanup or `pkill`. Invocation: `~/reset-tunnel.sh <brand>`. No polling blocks — every long-wait is bounded by `cloudflared`'s network round-trip, so no heartbeat contract applies. |
35
35
 
36
36
  ### Skills
@@ -49,18 +49,9 @@ The plugin registers no agent-facing MCP tools. Every Cloudflare operation is dr
49
49
 
50
50
  The agent loads these references on demand via `plugin-read` as the conversation requires. They are not auto-injected into the system prompt.
51
51
 
52
- ### UI contract
53
-
54
- VNC surfacing is post-navigation, never on form submit. Two sites call `useDeviceUrlActions().onShowVnc()` and both fire only after a successful CDP nav: `DeviceUrlBlock` (tool-output URL clicks) and `ActionLogPanel.handleOauthRespawn` (the "Re-open on Pi browser" button rendered when an OAuth URL appears in the action log). The form (`cloudflare-setup-form`) must NOT call `onShowVnc()` on POST resolve — pre-warming the fullscreen overlay before the OAuth URL is on the brand chromium hides the form, the ActionLogPanel, and the very button operators must click. The `[browser-viewer] event=mount surface="overlay"` line must appear within 5 s of `[device-url:click] navigateResult=ok`, never before.
55
-
56
52
  ### Error envelope contract
57
53
 
58
- Every `POST /api/admin/cloudflare/setup` failure returns a `CloudflareSetupError` carrying in addition to `field`, `message`, `output`, `correlationId`, `streamLogPath` two structured fields the form relays into the chat as a fenced JSON block:
59
-
60
- - `inputsAlreadyHeld: { admin?: string; public?: string; apex?: string }` — the FQDNs the route composed from the submit body before `err()` fired. Pre-validation failures emit `{}` so absence is itself deterministic.
61
- - `discoveryResults: { tunnels: { id; name }[]; domains: string[] }` — the last-known snapshot from the process-lifetime `discoveryCache` Map that `GET /tunnels` and `GET /domains` write to on success.
62
-
63
- The chat relay appends both as a fenced ```` ```json ```` block under "Held by deterministic tools (do not re-solicit)". The admin agent's reply restates those values verbatim, names the literal error, and stops — re-soliciting is a doctrine violation. The retry-on-redeployment decision is owned by the route (2026-05-13 doctrine fix): `POST /api/admin/cloudflare/setup` looks up the most recent terminal `:Task {kind:"cloudflare-tunnel-login"}` on the conversation via `findMostRecentTerminalCloudflareTask`, and when the running bundle's mtime post-dates that Task's `completedAt` the respawn proceeds; otherwise the route returns the prior Task's `errorMessage` verbatim as the new envelope. The agent does not branch on `bundleMtime` and never narrates it (`[admin-reply-scrub]` records any leakage under `llm-narrates-internal-state`). The rule lives in IDENTITY.md § "Post-deterministic-error reply contract" and `.docs/agents.md` § "Intent Gate — post-deterministic-error reply contract". The shared `TunnelEntry` shape lives in [`platform/ui/app/lib/cloudflare-setup-types.ts`](../../ui/app/lib/cloudflare-setup-types.ts).
54
+ `setup-tunnel.sh` emits structured `[tunnel-install] step=… result=… …` phase lines on stdout throughout its run and exits non-zero on failure. The agent streams stdout into chat verbatim as it arrives, names the literal exit code on failure, and cites `references/reset-guide.md` for the next action. The agent never paraphrases the script's output, never summarises an `ACTION REQUIRED` block, and never re-solicits values the operator already provided re-soliciting is a doctrine violation. The general form of the post-deterministic-error reply contract (literal-error + held-values restatement) lives in IDENTITY.md § "Post-deterministic-error reply contract" and `.docs/agents.md` § "Intent Gate — post-deterministic-error reply contract"; admin-reply token scrub at `platform/ui/app/lib/admin-reply-scrub.ts` catches narration leakage under `llm-narrates-internal-state`.
64
55
 
65
56
  ## Identity model
66
57
 
@@ -462,12 +462,13 @@ fi
462
462
  # tunnel when the device is renamed while existing CNAMEs continue to
463
463
  # point at the old one.
464
464
  #
465
- # Contract: the form (rendered via /api/admin/cloudflare/tunnels list) is
466
- # the source of truth. The endpoint passes exactly one of:
465
+ # Contract: the operator's logged-in Cloudflare account is the source of
466
+ # truth. The agent enumerates existing tunnels via `cloudflared tunnel list
467
+ # --output json` (presented in chat as a numbered list) and then invokes
468
+ # this script with exactly one of:
467
469
  # TUNNEL_ID — operator selected an existing tunnel from the list
468
470
  # TUNNEL_NAME — operator typed a name to create a new tunnel
469
- # The endpoint validates the exactly-one constraint; the script enforces it
470
- # again here as defence in depth. Setting both, or neither, is a misuse.
471
+ # Setting both, or neither, is a misuse.
471
472
  # --------------------------------------------------------------------------
472
473
 
473
474
  if [ -n "${TUNNEL_ID:-}" ] && [ -n "${TUNNEL_NAME:-}" ]; then
@@ -478,9 +479,10 @@ fi
478
479
  if [ -z "${TUNNEL_ID:-}" ] && [ -z "${TUNNEL_NAME:-}" ]; then
479
480
  phase_line setup-tunnel step=tunnel-resolve result=error reason=neither-set
480
481
  echo "ERROR: TUNNEL_ID (selected) or TUNNEL_NAME (explicit-create) is required." >&2
481
- echo " The form derives one of these from operator input via" >&2
482
- echo " /api/admin/cloudflare/tunnels re-run the form, do not" >&2
483
- echo " invoke this script directly without one of the env vars." >&2
482
+ echo " The agent enumerates existing tunnels via" >&2
483
+ echo " 'cloudflared tunnel list --output json' and passes one of" >&2
484
+ echo " these env vars on invocation. Do not invoke this script" >&2
485
+ echo " directly without one of them set." >&2
484
486
  exit 1
485
487
  fi
486
488
 
@@ -26,13 +26,23 @@ Step 1's OAuth flow is a state machine over two observable variables: the brand-
26
26
 
27
27
  ### How inputs reach the script
28
28
 
29
- Inputs arrive through the `cloudflare-setup-form` component, not agent Q&A. The onboarding skill renders the form, the user submits admin/public/apex labels and the admin password in one action, and the `/api/admin/cloudflare/setup` endpoint runs (in this order):
29
+ The agent collects inputs in plain chat, then invokes the script via Bash. Four inputs are needed: admin FQDN, optional public FQDN, optional apex FQDN, and the admin password. Ask in a single combined message when all four are already known; ask one question at a time when anything is ambiguous.
30
30
 
31
- 1. `setRemotePassword(password)` — writes the hashed password.
32
- 2. `~/setup-tunnel.sh <brand> <port> <admin-fqdn> [<public-fqdn>] [<apex-fqdn>]` — brand and port are resolved server-side from `brand.json` and `process.env.PORT`, never form inputs.
33
- 3. For each submitted hostname that is not the admin FQDN and does not start with `public.`, writes it to `~/{configDir}/alias-domains.json` so `isPublicHost()` classifies it as public.
31
+ Sequence:
34
32
 
35
- The script itself is unchanged; only its invocation path moved from "agent collects Q&A then Bash" to "form submits, endpoint spawns".
33
+ 1. **Set the admin password** before invoking the script. Use the same endpoint onboarding uses `curl -X POST http://127.0.0.1:${PORT}/api/remote-auth/set-password -H 'Content-Type: application/json' -d '{"password":"…"}'` where `${PORT}` is read from `brand.json`.
34
+ 2. **(Optional) enumerate existing tunnels** when the operator wants to pick from the logged-in account rather than create a new one. Invoke `cloudflared tunnel list --output json` via Bash, present the result as a numbered list, and let the operator type the number (use that tunnel's `id`) or a fresh name.
35
+ 3. **Invoke the script** with `~/setup-tunnel.sh <brand> <port> <admin-fqdn> [<public-fqdn>] [<apex-fqdn>]`. Pass either `TUNNEL_ID=<uuid>` (operator selected) or `TUNNEL_NAME=<name>` (operator named a new one) in env — exactly one. `STREAM_LOG_PATH` and `ACCOUNT_DIR` are resolved from `brand.json` and the `${HOME}/.${BRAND}/` layout.
36
+ 4. **Alias-domain classification.** For each non-admin hostname that does not start with `public.`, append it to `~/{configDir}/alias-domains.json` so `isPublicHost()` treats it as public. The platform server watches that file (`watchFile`, ~2 s pickup) — no restart needed. Use this idempotent Bash command per hostname (HOST is the FQDN, FILE is `~/.${BRAND}/alias-domains.json`):
37
+
38
+ ```bash
39
+ FILE=~/.${BRAND}/alias-domains.json
40
+ mkdir -p "$(dirname "$FILE")"
41
+ [ -s "$FILE" ] || echo '[]' > "$FILE"
42
+ jq --arg h "$HOST" '. + [$h] | unique' "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE"
43
+ ```
44
+
45
+ Repeated calls with the same hostname are a no-op (the `| unique` filter dedupes). Mirrors the in-process `addAliasDomain()` helper at `platform/ui/app/lib/alias-domains.ts`.
36
46
 
37
47
  ### Invocation shape (reference)
38
48
 
@@ -88,13 +98,13 @@ The YAML and JSON rendering live in a pure Node helper at
88
98
  `scripts/__tests__/tunnel-ingress.test.ts` and invoked from the shell via
89
99
  `node --experimental-strip-types`.
90
100
 
91
- The agent does not invoke the script directly during onboarding — the endpoint does. The agent's responsibility is to render the form and relay the endpoint's script output verbatim when `_componentDone` arrives. If an `ACTION REQUIRED` block appears, quote it exactly — the operator needs the specific dashboard instructions it contains.
101
+ The agent invokes the script directly via the Bash tool there is no form, no endpoint relay. Stream the script's stdout into chat verbatim as it arrives; if an `ACTION REQUIRED` block appears, quote it exactly — the operator needs the specific dashboard instructions it contains.
92
102
 
93
103
  ### When the script exits non-zero
94
104
 
95
- The endpoint returns `{ ok: false, field: "script", message, output }` and the form surfaces the error inline. Relay the output to the user, name the exit code, and cite `references/reset-guide.md` for the next action. Offer to re-render the form after any manual steps the script's error output named. Do not attempt a second invocation outside the form, a Playwright-driven dashboard inspection, or an alternative `cloudflared` command sequence. The discipline rule below applies.
105
+ Relay the script's stdout to the operator verbatim, name the literal exit code, and cite `references/reset-guide.md` for the next action. Do not attempt a second invocation under a different flag combination, a Playwright-driven dashboard inspection, or an alternative `cloudflared` command sequence. The discipline rule below applies.
96
106
 
97
- When the failure reason is `timeout-waiting-cert` (operator did not click Authorize within the 180 s budget), the form surfaces the timeout and the operator can re-submit. The page is still on the Pi VNC; the operator can click Authorize there and the next form submit will complete via the cert-promotion pre-flight (the cert lands in `~/.cloudflared/cert.pem` after consent, and the wrapper's `mv` runs on the next invocation). Do not suggest `~/reset-tunnel.sh` — the cert path is intact and a fresh attempt is the only remediation needed.
107
+ When the failure reason is `timeout-waiting-cert` (operator did not click Authorize within the 180 s budget), the page is still on the Pi VNC; the operator can click Authorize there and a fresh `~/setup-tunnel.sh` invocation will complete via the cert-promotion pre-flight (the cert lands in `~/.cloudflared/cert.pem` after consent, and the wrapper's `mv` runs on the next invocation). Do not suggest `~/reset-tunnel.sh` — the cert path is intact and a fresh attempt is the only remediation needed.
98
108
 
99
109
  ---
100
110
 
@@ -132,7 +142,7 @@ Example:
132
142
 
133
143
  Use this when the operator needs to do something only the Cloudflare dashboard can do: sign in, switch accounts, add a site, edit an apex CNAME, verify zone nameservers, delete a tunnel after stopping its replicas. The guide has one numbered click-path per operation. Quote the relevant click-path verbatim — the operator follows it in the browser. The agent does not drive dashboard mutations via Playwright or Chrome DevTools.
134
144
 
135
- The single exception is `list-cf-domains.sh`, which reads the domains attached to the logged-in account to populate the `cloudflare-setup-form` dropdowns. That script is deterministic (bash + raw CDP, no LLM in the decision path), invoked only by the `/api/admin/cloudflare/domains` route, and produces only a JSON `string[]` on stdout; no dashboard state is changed. Any dashboard scrape that is not this exact script is forbidden — the agent does not extend this carve-out to new scripts it writes, hypothesises, or finds. Adding a new sanctioned scrape surface requires a code change reviewed as a doctrine change, not an inline agent decision.
145
+ The single exception is `list-cf-domains.sh`, which reads the domains attached to the logged-in account so the agent can present them in chat (e.g. when the operator needs to pick which domain to route a hostname under). The agent invokes the script directly via Bash with `list-cf-domains.sh <brand>` — no route wrapper. The script is deterministic (bash + raw CDP, no LLM in the decision path) and produces only a JSON `string[]` on stdout; no dashboard state is changed. Any dashboard scrape that is not this exact script is forbidden — the agent does not extend this carve-out to new scripts it writes, hypothesises, or finds. Adding a new sanctioned scrape surface requires a code change reviewed as a doctrine change, not an inline agent decision.
136
146
 
137
147
  ---
138
148
 
@@ -144,6 +154,6 @@ When the operator's request touches Cloudflare, the agent's permitted actions ar
144
154
  - Quote `references/manual-setup.md`, `references/reset-guide.md`, or `references/dashboard-guide.md`.
145
155
  - Verify reachability via plain HTTP (`curl -I https://<hostname>`).
146
156
 
147
- The agent does not drive Cloudflare dashboard mutations via Playwright or Chrome DevTools. The single sanctioned read-only scrape is `list-cf-domains.sh`, invoked only by the `/api/admin/cloudflare/domains` route — the LLM is not in its decision path. No other dashboard-automation surface is permitted; the agent does not generalise this exception to new scripts. The agent does not synthesise `cloudflared` flag combinations from web search or prior training. The agent does not call Cloudflare API or SDK from any language. The agent does not write or mutate `cert.pem`, `tunnel.state`, `config.yml`, or `alias-domains.json` directly — `setup-tunnel.sh` and the operator manage those files.
157
+ The agent does not drive Cloudflare dashboard mutations via Playwright or Chrome DevTools. The single sanctioned read-only scrape is `list-cf-domains.sh`, invoked directly via Bash — the LLM is not in its decision path. No other dashboard-automation surface is permitted; the agent does not generalise this exception to new scripts. The agent does not synthesise `cloudflared` flag combinations from web search or prior training. The agent does not call Cloudflare API or SDK from any language. The agent does not write or mutate `cert.pem`, `tunnel.state`, `config.yml`, or `alias-domains.json` directly — `setup-tunnel.sh` and the operator manage those files.
148
158
 
149
159
  When a sanctioned surface fails, the agent reports the failure with the exact output, cites the recovery step from `references/reset-guide.md`, and stops. Improvisation — "let me try a different flag" or "let me check the dashboard myself" — is the behaviour this rule exists to prevent. See IDENTITY.md § Cloudflare operations for the unconditional form.
@@ -8,33 +8,34 @@ Each installation has its own Cloudflare account. Sign-in is OAuth in the device
8
8
  |------|--------|
9
9
  | **Product identity** (Maxy vs Real Agent) | `brand.json` (`productName`, `configDir`) — known at install. |
10
10
  | **Cloudflare account identity** | `cert.pem` from OAuth. One account per brand per device. |
11
- | **Domain scope** (which zones the operator can route) | Live Cloudflare dashboard at form-render time via `list-cf-domains.sh`, not `brand.json`. Brand identity has no authority over which domains the operator's CF account holds. When the scrape returns an unexpected count (e.g. 1 on a two-zone account), the stream log's per-poll `phase=dom-scrape-poll n=<k> count=<n> domains=[…]` trajectory + the on-disk HTML dump at `~/{configDir}/logs/list-cf-domains-<ts>-count<n>-<mode>-pid<pid>.html` (earlier platform fixes — written on every scrape outcome, not just empty ones) give the operator everything they need to triage the cause without re-running. |
12
- | **CDP port the scrape attaches to** | `brand.json` (`cdpPort`, stamped at install time) — the same brand-scoped port `vnc.sh` binds Chromium to. `list-cf-domains.sh <brand>` requires the brand arg; the helper reads `${MAXY_PLATFORM_ROOT}/config/brand.json` (no silent default). Missing brand arg, missing brand.json, or missing `cdpPort` field each exit 1 with one of three named reasons (`brand-arg-missing`, `brand-config-missing`, `cdp-port-unresolved`); the route maps all three to `field=config` so the form renders a config card naming the brand instead of a Retry button — retrying would re-fire the same wrongly-resolved spawn. |
11
+ | **Domain scope** (which zones the operator can route) | Live Cloudflare dashboard at script-invocation time via `list-cf-domains.sh`, not `brand.json`. Brand identity has no authority over which domains the operator's CF account holds. When the scrape returns an unexpected count (e.g. 1 on a two-zone account), the stream log's per-poll `phase=dom-scrape-poll n=<k> count=<n> domains=[…]` trajectory + the on-disk HTML dump at `~/{configDir}/logs/list-cf-domains-<ts>-count<n>-<mode>-pid<pid>.html` (earlier platform fixes — written on every scrape outcome, not just empty ones) give the operator everything they need to triage the cause without re-running. |
12
+ | **CDP port the scrape attaches to** | `brand.json` (`cdpPort`, stamped at install time) — the same brand-scoped port `vnc.sh` binds Chromium to. `list-cf-domains.sh <brand>` requires the brand arg; the helper reads `${MAXY_PLATFORM_ROOT}/config/brand.json` (no silent default). Missing brand arg, missing brand.json, or missing `cdpPort` field each exit 1 with one of three named reasons (`brand-arg-missing`, `brand-config-missing`, `cdp-port-unresolved`); the agent reads the exit-code reason from stderr, names the brand, and stops — retrying would re-fire the same wrongly-resolved spawn. |
13
13
  | **Local tunnel state** | `~/{configDir}/cloudflared/` — `cert.pem`, `<UUID>.json`, `config.yml`, `tunnel.state`, `alias-domains.json`. |
14
14
 
15
15
  There is no token-based auth for the operator-owned path (Mode A). To switch Cloudflare accounts, run `reset-tunnel.sh` (which deletes the cert and every tunnel on the current account), then run `setup-tunnel.sh` again — `cloudflared tunnel login` inside the setup script will pick a fresh account when you sign in.
16
16
 
17
17
  ## Setup flow
18
18
 
19
- Ask the agent to set up Cloudflare. The agent first confirms the domain is already on your Cloudflare account (if not, it quotes the dashboard click-path — see below) and then renders a single form in chat. The form collects everything in one submission:
19
+ Ask the agent to set up Cloudflare. The agent confirms the domain is already on your Cloudflare account (if not, it quotes the dashboard click-path — see below) and then collects the inputs in plain chat:
20
20
 
21
21
  - **Admin address** — the hostname that will serve the admin chat (e.g. `admin.yourdomain.com`).
22
22
  - **Public address** — optional hostname for the public agent (e.g. `public.yourdomain.com` or `chat.yourdomain.com`).
23
23
  - **Proxy apex** — optional bare-domain hostname (e.g. `yourdomain.com`) that should also serve the public agent.
24
24
  - **Admin password** — the password used to gate remote access to the admin surface.
25
25
 
26
- When you submit, the `/api/admin/cloudflare/setup` endpoint runs in strict order `setRemotePassword`, launches a `cloudflare-setup` action (earlier platform fixes: `systemd-run --user` transient unit wrapping `setup-tunnel.sh <brand> <port> <hostname...>`), and registers a post-exit handler that writes alias-domains for every non-`public.*` public or apex hostname (so e.g. `chat.yourdomain.com` is classified as public by `isPublicHost`) and closes the audit Task. When the post-exit handler observes the systemd-run unit gone before its terminal status was sampled (a known systemd-run cgroup race), it consults `tunnel.state` on disk and verifies the tunnel identity matches the form you submitted; if so, the audit Task closes `completed` despite the missed observation. Otherwise it closes `failed` with `endpoint-died-pre-reconcile` and the boot reconciler may still recover the Task at next restart. The script runs end-to-end:
26
+ Once the agent has the four inputs, it sets the admin password via `curl -X POST http://127.0.0.1:${PORT}/api/remote-auth/set-password` (the same endpoint onboarding uses), optionally enumerates existing tunnels via `cloudflared tunnel list --output json` so you can pick from the logged-in account, and then invokes `~/setup-tunnel.sh <brand> <port> <admin-hostname> [<public-hostname>] [<apex-hostname>]` via the Bash tool with either `TUNNEL_ID=<uuid>` (selected) or `TUNNEL_NAME=<name>` (new) in env. After the script returns, the agent appends each non-`public.*` public or apex hostname to `~/{configDir}/alias-domains.json` so `isPublicHost()` classifies it as public.
27
27
 
28
- - `cloudflared tunnel login` — OAuth browser sign-in. The VNC browser opens the Cloudflare authorize page; pick the account that owns your domain, click Authorize. `cert.pem` lands.
29
- - Tunnel resolution from operator-supplied identity (operator-selected-tunnel fix). The form populates a tunnel-select dropdown from `GET /api/admin/cloudflare/tunnels` (which calls `cloudflared tunnel list --output json` on your logged-in account). You either pick an existing tunnel from the list or type a name to create a new one. The form posts EXACTLY ONE of `{tunnelId, tunnelName}`; the script enforces the same constraint as defence in depth. Pre-fix the script derived `${BRAND}-$(hostname -s)` locally; that broke the operator-state-is-authoritative doctrine and silently created orphan tunnels whenever the device hostname changed. Stream log emits `step=tunnel-resolve source=operator-selected|operator-created tunnel_id=… tunnel_name=…` once the UUID is known.
28
+ The script runs end-to-end:
29
+
30
+ - `cloudflared tunnel login` — OAuth browser sign-in. The script spawns the brand's VNC chromium pointed at the Cloudflare authorize page; pick the account that owns your domain, click Authorize. `cert.pem` lands.
31
+ - Tunnel resolution from operator-supplied identity (operator-selected-tunnel fix). The script requires EXACTLY ONE of `TUNNEL_ID` or `TUNNEL_NAME` in env and exits 1 with a literal error on either-both-set or neither-set. Pre-fix the script derived `${BRAND}-$(hostname -s)` locally; that broke the operator-state-is-authoritative doctrine and silently created orphan tunnels whenever the device hostname changed. Stream log emits `step=tunnel-resolve source=operator-selected|operator-created tunnel_id=… tunnel_name=…` once the UUID is known.
30
32
  - **Zone pre-flight** — for every non-apex hostname the script queries `1.1.1.1` for the registrable parent's NS records and refuses the whole run if they don't point at Cloudflare. Stream log: `step=zone-preflight result=ok|error zones_on_account=… missing_parent_for=…`. Catches "domain not on Cloudflare"; does not catch "domain on a different Cloudflare account than `cert.pem` is bound to" — that case surfaces later via `tunnel-status`.
31
33
  - `cloudflared tunnel route dns` for each subdomain hostname. Apex hostnames cannot be routed this way — the script prints an **ACTION REQUIRED** block naming the exact dashboard record to add or edit. Stream log emits `step=route-dns hostname=… tunnel_id=…` before the call and `step=route-dns hostname=… result=ok|apex-skip|error` after; on error the bounded cloudflared stderr (≤400 chars) rides in the same phase line. **The script does not parse cloudflared's stdout** — exit code is the sole decision signal, so all three legitimate cloudflared output shapes (new record, overwrite, idempotent "already configured") are treated as success.
32
34
  - `config.yml` and `tunnel.state` written under `${CFG_DIR}`.
33
- - **Post-restart resume contract** when the script exits cleanly, the form fires a client-side resume event. The chat hook ([useAdminChat.ts](../../../../platform/ui/app/useAdminChat.ts)) waits for the brand-service to come back via `/api/health` (down-then-up), re-binds the conversation to the new server process, and sends the "Cloudflare setup completed" marker as a normal hidden chat POST that re-invokes the agent in a fresh session. No relay queue, no boot-drain, no banner. Diagnostic: `grep '\[admin-resume\] reason=post-restart' ~/{configDir}/logs/server.log` (expect one line per restart cycle), `grep '\[client-event\] kind=post-restart-resume' ~/{configDir}/logs/server.log` for the operator-visible client trace. See `.docs/web-chat.md` "Post-restart resume contract" for the full client/server contract.
34
- - `systemctl --user restart ${BRAND}.service` — restarts the platform service so the new tunnel spawns via the service's `ExecStartPre=resume-tunnel.sh`.
35
+ - `systemctl --user restart ${BRAND}.service`restarts the platform service so the new tunnel spawns via the service's `ExecStartPre=resume-tunnel.sh`. The restart fires a few seconds after the script exits so the script does not kill its own cgroup when invoked via the Bash tool; the chat UI receives a `server_shutdown` SSE frame and reconnects automatically.
35
36
  - Post-restart verification — `ps -ef | grep '[c]loudflared'` confirms the connector is alive, then `curl -I https://<hostname>` against each subdomain (up to 60 s per host) confirms a non-530 response.
36
37
 
37
- When the endpoint returns, the form surfaces the script's output and the agent relays it verbatim in chat, including any `ACTION REQUIRED` block. If something fails along the way, the form stays open with a field-scoped error (admin label, public label, password, or script exit) so you can correct and retry without re-entering everything.
38
+ The agent streams the script's stdout into chat verbatim as it arrives, including any `ACTION REQUIRED` block. If the script exits non-zero, the agent names the literal exit code and cites `reset-guide.md` for the next action no retry under a different flag, no Playwright-driven dashboard inspection.
38
39
 
39
40
  ## Getting a domain on Cloudflare
40
41
 
@@ -123,13 +123,14 @@ fi
123
123
  # and a PostToolUse regex matcher for parse tools.
124
124
  # UserPromptSubmit — archive-ingest-surface-gate.sh clears the
125
125
  # parse-error flag when the operator's next prompt arrives.
126
- # Stop — turn-completed-graph-write.sh fires once per admin foreground
127
- # turn and POSTs a hidden /spawn against the
128
- # database-operator specialist with the transcript tail
129
- # as stdin. The hook gates on MAXY_SESSION_ROLE=admin and
130
- # MAXY_HIDDEN_SPAWN=0 so public PTYs and the hidden
131
- # recorder PTY itself are no-ops. Per-turn graph writes
132
- # happen there, not in the admin agent's reply path.
126
+ #
127
+ # Task 214 the Stop-hook registration that fired
128
+ # turn-completed-graph-write.sh once per admin turn is no longer written.
129
+ # The script, envelope walker, loopback /api/admin/claude-sessions 127.0.0.1
130
+ # bypass, [turn-recorder] emitters, recorder-auto-archive subscriber, and
131
+ # initialMessage envelope spec are preserved as dormant infrastructure for
132
+ # any future autonomous post-turn flow. Admin now delegates graph writes
133
+ # to database-operator via the Task tool inside its own session.
133
134
  HOOKS_PATH="\$PLATFORM_ROOT/plugins/admin/hooks"
134
135
  cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
135
136
  {
@@ -165,6 +166,18 @@ cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
165
166
  { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
166
167
  ]
167
168
  },
169
+ {
170
+ "matcher": "mcp__plugin_memory_memory__memory-write",
171
+ "hooks": [
172
+ { "type": "command", "command": "bash $HOOKS_PATH/pre-tool-use.sh admin" }
173
+ ]
174
+ },
175
+ {
176
+ "matcher": "mcp__plugin_memory_memory__memory-update",
177
+ "hooks": [
178
+ { "type": "command", "command": "bash $HOOKS_PATH/pre-tool-use.sh admin" }
179
+ ]
180
+ },
168
181
  {
169
182
  "hooks": [
170
183
  { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
@@ -197,13 +210,6 @@ cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
197
210
  { "type": "command", "command": "bash $HOOKS_PATH/archive-ingest-surface-gate.sh" }
198
211
  ]
199
212
  }
200
- ],
201
- "Stop": [
202
- {
203
- "hooks": [
204
- { "type": "command", "command": "bash $HOOKS_PATH/turn-completed-graph-write.sh" }
205
- ]
206
- }
207
213
  ]
208
214
  }
209
215
  }
@@ -11,6 +11,12 @@ export interface JsonlTailDeps {
11
11
  export interface JsonlTailRegisterArgs {
12
12
  specialist: string;
13
13
  argvTools: readonly string[];
14
+ /** Task 215 — fires once when the FIRST non-thinking `assistant` record
15
+ * emits a `[recorder-turn]` line. pty-spawner attaches this to fire
16
+ * the `[pty-spawn-tool-inventory-final]` snapshot. The tail invokes it
17
+ * fire-and-forget and clears the reference after the first call so
18
+ * multi-turn sessions don't re-trigger the snapshot. */
19
+ onFirstTurn?: () => void;
14
20
  }
15
21
  export interface JsonlTail {
16
22
  /** Called by pty-spawner at spawn time for the database-operator
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-tail.d.ts","sourceRoot":"","sources":["../src/jsonl-tail.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAWxC;;;uDAGuD;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAEjG,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,aAAa,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB;;qDAEiD;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC9D;;;8CAG0C;IAC1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACzD,iDAAiD;IACjD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,0EAA0E;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACxG;AAkBD;;oDAEoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAY3F;AA4GD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAkL9D"}
1
+ {"version":3,"file":"jsonl-tail.d.ts","sourceRoot":"","sources":["../src/jsonl-tail.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAWxC;;;uDAGuD;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAEjG,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,aAAa,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B;;;;6DAIyD;IACzD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB;;qDAEiD;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC9D;;;8CAG0C;IAC1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACzD,iDAAiD;IACjD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,0EAA0E;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACxG;AA0BD;;oDAEoD;AACpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAY3F;AA4GD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAoM9D"}
@@ -222,6 +222,25 @@ export function createJsonlTail(deps) {
222
222
  ` toolUseNames=${namesField}` +
223
223
  ` containsToolCallText=${containsToolCallText}`;
224
224
  deps.postLogLine('recorder-turn', 'info', line);
225
+ // Task 215 — fire the first-turn callback exactly once. The flag
226
+ // flip and reference clear happen BEFORE invoking the callback so a
227
+ // thrown callback can't leave `firstTurnEmitted=false` and re-fire
228
+ // on the next record. Errors from the callback are caught and
229
+ // logged but never propagate — the `recorder-turn` line above is
230
+ // the contract, and the callback is a downstream observer.
231
+ if (!state.firstTurnEmitted) {
232
+ state.firstTurnEmitted = true;
233
+ const cb = state.onFirstTurn;
234
+ state.onFirstTurn = null;
235
+ if (cb !== null) {
236
+ try {
237
+ cb();
238
+ }
239
+ catch (err) {
240
+ deps.logger(`[jsonl-tail] first-turn-callback-threw sessionId=${state.sessionId} err=${err instanceof Error ? err.message : String(err)}`);
241
+ }
242
+ }
243
+ }
225
244
  }
226
245
  function processRecord(state, rec) {
227
246
  // Probe init candidates against EVERY record until init emits — the
@@ -329,6 +348,8 @@ export function createJsonlTail(deps) {
329
348
  initEmitted: false,
330
349
  emittedMsgIds: new Set(),
331
350
  nextTurnIndex: 0,
351
+ onFirstTurn: args.onFirstTurn ?? null,
352
+ firstTurnEmitted: false,
332
353
  });
333
354
  deps.logger(`[jsonl-tail] register sessionId=${sessionId} specialist=${args.specialist} argvTools=${argvTools.size}`);
334
355
  },
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-tail.js","sourceRoot":"","sources":["../src/jsonl-tail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonl-tail.js","sourceRoot":"","sources":["../src/jsonl-tail.ts"],"names":[],"mappings":"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"}
@@ -204,10 +204,57 @@ interface McpConfigWriteParams {
204
204
  * names in the order they were declared (the caller sorts before
205
205
  * emitting argv). */
206
206
  export declare function readSpecialistTools(claudeConfigDir: string, specialist: string): string[];
207
+ /** Task 215 — pull the `<server>` segment out of a qualified MCP tool name
208
+ * the way Claude Code's plugin-tool registry surfaces it. Two shapes
209
+ * exist in the wild:
210
+ *
211
+ * - Long prefix: `mcp__plugin_<plugin>_<server>__<tool>` — emitted by
212
+ * Claude Code when an MCP server is registered via plugin manifest
213
+ * (post-Task-209 native plugin-system path; what `--agent <name>`
214
+ * specialist spawns receive in Registry #1).
215
+ * - Short prefix: `mcp__<server>__<tool>` — emitted by Claude Code when
216
+ * an MCP server is registered via `--mcp-config <path>` (admin operator
217
+ * spawns; what Registry #2 produces directly).
218
+ *
219
+ * Both must resolve to the same `<server>` slug so the probe can match
220
+ * the qualified name against `toolSurface.mcpServers` keys, which the
221
+ * manager populates from PLUGIN.md basenames in `tool-surface.ts`. The
222
+ * pre-Task-215 inline regex `/^mcp__(.+?)__/` extracted `plugin_<plugin>_<server>`
223
+ * from the long-prefix shape (lazy match stops at the first `__`),
224
+ * which never matched any tool-surface key — the failure mode this
225
+ * helper closes.
226
+ *
227
+ * Returns `null` for any name that matches neither shape. The caller
228
+ * surfaces those names through the inventory line's `unparseable-tools=`
229
+ * field so a malformed agent-frontmatter entry can't masquerade as a
230
+ * missing server. */
231
+ export declare function extractServerNameFromQualifiedTool(qualified: string): string | null;
232
+ /** Task 215 — classify the agent's frontmatter `tools:` list against the
233
+ * manager's tool-surface registry. Used by both the per-spawn `.mcp.json`
234
+ * writer (admin) and the tool-inventory probe (specialist). Returns the
235
+ * set of server names to spawn AND the two diagnostic sets the inventory
236
+ * line surfaces when non-empty: tokens that didn't parse at all
237
+ * (`unparseableTools`) and parseable tokens whose server isn't in the
238
+ * registry (`missingServers`). Both diagnostic sets are empty in the
239
+ * healthy case, so the existing log line shape stays unchanged for
240
+ * passing spawns. */
241
+ export declare function classifySpecialistTools(tools: readonly string[], toolSurfaceServers: ReadonlyMap<string, unknown>): {
242
+ matchedServers: ReadonlySet<string>;
243
+ unparseableTools: readonly string[];
244
+ missingServers: readonly string[];
245
+ };
207
246
  /** Builds the placeholder map for per-spawn `mcp.json` env substitution.
208
247
  * Exported for Task 142 unit coverage that asserts `PLATFORM_PORT` and
209
248
  * `MAXY_BRAND_PORT` resolve from the manager process env. */
210
249
  export declare function buildMcpPlaceholders(p: Pick<McpConfigWriteParams, 'platformRoot' | 'accountId' | 'userId' | 'bridgeSuffixHint' | 'logDir'>, env?: NodeJS.ProcessEnv): Record<string, string>;
250
+ /** Test seam. Production never calls this; the `__` prefix matches the
251
+ * in-repo convention for non-API helpers. */
252
+ export declare function __setFirstTurnTimeoutMsForTests(ms: number): void;
253
+ export declare function __resetFirstTurnTimeoutMsForTests(): void;
254
+ /** Test seam — clear any leftover per-spawn state between tests so a
255
+ * failing test doesn't pollute the next one's Map. Production never
256
+ * invokes this; the only legitimate eviction path is PTY exit. */
257
+ export declare function __clearFinalSnapshotStateForTests(): void;
211
258
  export declare function spawnClaudeSession(deps: SpawnDeps, args: SpawnArgs): Promise<SpawnResult>;
212
259
  export interface StopDeps {
213
260
  store: SessionStore;
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}