@rubytech/create-realagent-code 0.1.255 → 0.1.257

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 (217) hide show
  1. package/dist/__tests__/plugin-install.test.js +58 -40
  2. package/dist/index.js +77 -26
  3. package/dist/lib/plugin-install.js +31 -29
  4. package/package.json +1 -1
  5. package/payload/platform/config/brand-registry.json +8 -0
  6. package/payload/platform/config/brand.json +2 -2
  7. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +12 -0
  8. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  9. package/payload/platform/lib/graph-write/dist/index.js +2 -0
  10. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  11. package/payload/platform/lib/graph-write/src/index.ts +2 -0
  12. package/payload/platform/neo4j/schema.cypher +126 -0
  13. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  14. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  15. package/payload/platform/plugins/admin/PLUGIN.md +3 -6
  16. package/payload/platform/plugins/admin/mcp/dist/index.js +0 -60
  17. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/admin/skills/insight/SKILL.md +24 -0
  19. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +63 -10
  20. package/payload/platform/plugins/business-assistant/PLUGIN.md +1 -1
  21. package/payload/platform/plugins/business-assistant/references/document-management.md +1 -1
  22. package/payload/platform/plugins/business-assistant/references/invoicing.md +2 -2
  23. package/payload/platform/plugins/business-assistant/references/quoting.md +1 -1
  24. package/payload/platform/plugins/docs/PLUGIN.md +1 -0
  25. package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
  26. package/payload/platform/plugins/docs/references/deployment.md +18 -5
  27. package/payload/platform/plugins/docs/references/memory-guide.md +4 -0
  28. package/payload/platform/plugins/docs/references/platform.md +1 -1
  29. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  30. package/payload/platform/plugins/docs/references/slides.md +31 -0
  31. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +1 -1
  32. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  33. package/payload/platform/plugins/memory/mcp/dist/index.js +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +10 -0
  39. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  40. package/payload/platform/plugins/memory/references/schema-construction.md +72 -0
  41. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  42. package/payload/platform/plugins/slides/LICENSE +21 -0
  43. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  44. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  45. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  46. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  47. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  48. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  49. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  50. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  51. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  52. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  53. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +607 -0
  54. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  55. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  56. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  57. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  58. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  59. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  60. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  61. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  62. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  63. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  64. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +1 -1
  65. package/payload/platform/plugins/url-get/PLUGIN.md +26 -21
  66. package/payload/platform/plugins/url-get/mcp/dist/index.js +3 -3
  67. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -1
  68. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +1 -2
  69. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -1
  70. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +20 -40
  71. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -1
  72. package/payload/platform/scripts/setup-account.sh +1 -10
  73. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  74. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +0 -1
  75. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +5 -0
  77. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/http-server.js +32 -2
  79. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +2 -2
  81. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  82. package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
  83. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +1 -1
  84. package/payload/server/public/assets/AdminShell-T-YknnBn.js +1 -0
  85. package/payload/server/public/assets/Checkbox-DmDxpqVv.js +1 -0
  86. package/payload/server/public/assets/admin-COUV-jgt.js +1 -0
  87. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-B2CweJq3.js} +1 -1
  88. package/payload/server/public/assets/architecture-YZFGNWBL-Dnn6Hc65.js +1 -0
  89. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-c09loTER.js → architectureDiagram-Q4EWVU46-DP2o-MFV.js} +1 -1
  90. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Cjdeyoq1.js → blockDiagram-DXYQGD6D-DO4mcYDJ.js} +1 -1
  91. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-NY6Wlzo2.js → c4Diagram-AHTNJAMY-Sy1giHbj.js} +1 -1
  92. package/payload/server/public/assets/channel-CEpR_0rE.js +1 -0
  93. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-CKsCYCsN.js} +1 -1
  94. package/payload/server/public/assets/chunk-336JU56O-C0-P-aUF.js +2 -0
  95. package/payload/server/public/assets/chunk-426QAEUC-DFjEt3Zb.js +1 -0
  96. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-B8bqAmBa.js} +1 -1
  97. package/payload/server/public/assets/{chunk-4TB4RGXK-BXpto3yW.js → chunk-4TB4RGXK-D1k0VSlW.js} +1 -1
  98. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-B-p_QNqz.js} +1 -1
  99. package/payload/server/public/assets/{chunk-5FUZZQ4R-C403gCUk.js → chunk-5FUZZQ4R-D6U6tV_j.js} +1 -1
  100. package/payload/server/public/assets/{chunk-5PVQY5BW-CjVzXQEp.js → chunk-5PVQY5BW-CYK76xfs.js} +1 -1
  101. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BC9js-lf.js} +1 -1
  102. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-4j2OqKkv.js} +1 -1
  103. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-Coen-fXN.js} +1 -1
  104. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-CAiOBvec.js} +1 -1
  105. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-AJzzpZVb.js} +1 -1
  106. package/payload/server/public/assets/{chunk-EDXVE4YY-DJcJAsAg.js → chunk-EDXVE4YY-BL4BKozX.js} +1 -1
  107. package/payload/server/public/assets/{chunk-ENJZ2VHE-CFDNvYu1.js → chunk-ENJZ2VHE-mhAFG8UD.js} +1 -1
  108. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-H231gZA_.js} +1 -1
  109. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-Cl3ZZjYG.js} +1 -1
  110. package/payload/server/public/assets/{chunk-ICPOFSXX-ecLOxGhL.js → chunk-ICPOFSXX-DOEzvzJa.js} +2 -2
  111. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-C_ipbUDD.js} +1 -1
  112. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CTsDNSCU.js} +1 -1
  113. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-DvSXhkGf.js} +1 -1
  114. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-p574NOI7.js} +1 -1
  115. package/payload/server/public/assets/{chunk-OYMX7WX6-B7MW66KB.js → chunk-OYMX7WX6-BlEgFM6U.js} +1 -1
  116. package/payload/server/public/assets/chunk-QZHKN3VN-DpF06ZZQ.js +1 -0
  117. package/payload/server/public/assets/{chunk-U2HBQHQK-BMawmsyk.js → chunk-U2HBQHQK-B2bDK0jv.js} +1 -1
  118. package/payload/server/public/assets/{chunk-X2U36JSP-CT6g7pno.js → chunk-X2U36JSP-D69BxKFw.js} +1 -1
  119. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-Dm-PcyUi.js} +1 -1
  120. package/payload/server/public/assets/{chunk-YZCP3GAM-xeAluiAH.js → chunk-YZCP3GAM-Be8RnXgx.js} +1 -1
  121. package/payload/server/public/assets/{chunk-ZZ45TVLE-BRN9qUC5.js → chunk-ZZ45TVLE-Ck8PCTa4.js} +1 -1
  122. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CYbXvKLI.js +1 -0
  123. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DEyHzRhq.js +1 -0
  124. package/payload/server/public/assets/clone-y8gexbBy.js +1 -0
  125. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-CmkW2Eaj.js} +1 -1
  126. package/payload/server/public/assets/{dagre-DTjePoco.js → dagre-Dqp-ns8F.js} +1 -1
  127. package/payload/server/public/assets/{dagre-KV5264BT-DHBkRke4.js → dagre-KV5264BT-ZgWWXPLc.js} +1 -1
  128. package/payload/server/public/assets/data-gy6QH9c1.js +1 -0
  129. package/payload/server/public/assets/{diagram-5BDNPKRD-BIq1-idL.js → diagram-5BDNPKRD-CTX5-ScM.js} +1 -1
  130. package/payload/server/public/assets/{diagram-G4DWMVQ6-BsIUDzV6.js → diagram-G4DWMVQ6-BovIsO6H.js} +1 -1
  131. package/payload/server/public/assets/{diagram-MMDJMWI5-CgHSri2i.js → diagram-MMDJMWI5-DcETsQy-.js} +1 -1
  132. package/payload/server/public/assets/{diagram-TYMM5635-Ce2Wh9ZX.js → diagram-TYMM5635-yyq6peoZ.js} +1 -1
  133. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BU0Kh6OQ.js → erDiagram-SMLLAGMA-CiNToftB.js} +1 -1
  134. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BtFI066E.js} +1 -1
  135. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-B0N06MF7.js → flowDiagram-DWJPFMVM-Xnl3SpIM.js} +1 -1
  136. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BVbx4ARZ.js → ganttDiagram-T4ZO3ILL-C1iyWe0f.js} +1 -1
  137. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CNs-LD5i.js +1 -0
  138. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C-xRJ94t.js → gitGraphDiagram-UUTBAWPF-D97pbMQb.js} +1 -1
  139. package/payload/server/public/assets/graph-labels-cZu4pK16.js +1 -0
  140. package/payload/server/public/assets/{graph-g48ZcA5M.js → graph-qz5tFKqU.js} +3 -3
  141. package/payload/server/public/assets/{graphlib-YmNcoMjY.js → graphlib-Lq8ijgON.js} +1 -1
  142. package/payload/server/public/assets/info-OMHHGYJF-DsTNigSS.js +1 -0
  143. package/payload/server/public/assets/infoDiagram-42DDH7IO-C_OarRTA.js +2 -0
  144. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-D6QovjYR.js} +1 -1
  145. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DTrq54yC.js → ishikawaDiagram-UXIWVN3A-B8XBdjJn.js} +1 -1
  146. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-OZZZMrFX.js → journeyDiagram-VCZTEJTY-CZYbiOaQ.js} +1 -1
  147. package/payload/server/public/assets/{kanban-definition-6JOO6SKY--w-IP9pN.js → kanban-definition-6JOO6SKY-B1PybFoh.js} +1 -1
  148. package/payload/server/public/assets/{line-Ckeulv5T.js → line-D-tw3hHp.js} +1 -1
  149. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-BHhXD3cd.js} +1 -1
  150. package/payload/server/public/assets/{mermaid-parser.core-CVRAxYRD.js → mermaid-parser.core-C9RAnysF.js} +2 -2
  151. package/payload/server/public/assets/{mermaid.core-B-mE18I1.js → mermaid.core-B532LT1r.js} +3 -3
  152. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Bm8mDicL.js → mindmap-definition-QFDTVHPH-DGlgeeTV.js} +1 -1
  153. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-Bl-aM5b9.js} +1 -1
  154. package/payload/server/public/assets/packet-4T2RLAQJ-DGES22b-.js +1 -0
  155. package/payload/server/public/assets/pie-ZZUOXDRM-ChKeDbzt.js +1 -0
  156. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BCmRLgGO.js → pieDiagram-DEJITSTG-DV9FIWko.js} +1 -1
  157. package/payload/server/public/assets/{public-DknO-g9S.js → public-Bu2_Xi0a.js} +5 -5
  158. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CniTIUTm.js → quadrantDiagram-34T5L4WZ-Betwya4l.js} +1 -1
  159. package/payload/server/public/assets/radar-PYXPWWZC-FGG5Fs7N.js +1 -0
  160. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-BD4xUd2c.js} +1 -1
  161. package/payload/server/public/assets/{requirementDiagram-MS252O5E-CoxBSj9M.js → requirementDiagram-MS252O5E-Cq3vODdg.js} +1 -1
  162. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BjS-4jzq.js → sankeyDiagram-XADWPNL6-x8krXWcS.js} +1 -1
  163. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B9jVOnPR.js → sequenceDiagram-FGHM5R23-i-_uH-Yl.js} +1 -1
  164. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BvOQPzP8.js → stateDiagram-FHFEXIEX-il4KqSgI.js} +1 -1
  165. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B6zNJ6Tv.js +1 -0
  166. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CdfgWLo1.js → timeline-definition-GMOUNBTQ-DATdZkA5.js} +1 -1
  167. package/payload/server/public/assets/treeView-SZITEDCU-VAQQdbtf.js +1 -0
  168. package/payload/server/public/assets/treemap-W4RFUUIX-DKchO3zI.js +1 -0
  169. package/payload/server/public/assets/useSelectionMode-A5KItZ2T.js +13 -0
  170. package/payload/server/public/assets/{brand-D0gNihp7.css → useSelectionMode-C-Ojh7W9.css} +1 -1
  171. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-JCgpIbj-.js → vennDiagram-DHZGUBPP-BJh9tJTt.js} +1 -1
  172. package/payload/server/public/assets/wardley-RL74JXVD-CBGtx0bS.js +1 -0
  173. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Dei3VqHo.js → wardleyDiagram-NUSXRM2D-EMN1Hdfg.js} +1 -1
  174. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DUtIyoIb.js → xychartDiagram-5P7HB3ND-DbUWXa7T.js} +1 -1
  175. package/payload/server/public/data.html +5 -5
  176. package/payload/server/public/graph.html +6 -6
  177. package/payload/server/public/index.html +5 -6
  178. package/payload/server/public/public.html +4 -5
  179. package/payload/server/server.js +65 -23
  180. package/payload/platform/plugins/admin/hooks/__tests__/insight.test.sh +0 -395
  181. package/payload/platform/plugins/admin/hooks/insight.sh +0 -219
  182. package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +0 -239
  183. package/payload/server/public/assets/AdminShell-892Jy_rs.js +0 -1
  184. package/payload/server/public/assets/Checkbox-Bc2QzX9b.js +0 -1
  185. package/payload/server/public/assets/admin-D3K13ndi.js +0 -1
  186. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  187. package/payload/server/public/assets/brand-CcN3dELF.js +0 -9
  188. package/payload/server/public/assets/channel-B1IT7to2.js +0 -1
  189. package/payload/server/public/assets/chunk-336JU56O-CdKRCIeE.js +0 -2
  190. package/payload/server/public/assets/chunk-426QAEUC-BybuQ3Ve.js +0 -1
  191. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  192. package/payload/server/public/assets/classDiagram-6PBFFD2Q-rjCize6i.js +0 -1
  193. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BORWOUt0.js +0 -1
  194. package/payload/server/public/assets/clone-Csqv5U6T.js +0 -1
  195. package/payload/server/public/assets/data-Br-pdljK.js +0 -1
  196. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  197. package/payload/server/public/assets/graph-labels-BYH-IPCb.js +0 -1
  198. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  199. package/payload/server/public/assets/infoDiagram-42DDH7IO-Di6oPQ_-.js +0 -2
  200. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  201. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  202. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  203. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-v4ND10uR.js +0 -1
  204. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  205. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  206. package/payload/server/public/assets/useSelectionMode-DwsyptOw.js +0 -5
  207. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  208. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-Cs8Y-rGh.js} +0 -0
  209. /package/payload/server/public/assets/{array-DYRGGQae.js → array-iHZP4KWJ.js} +0 -0
  210. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-BR2GOQ8_.js} +0 -0
  211. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-B9aLeOTg.js} +0 -0
  212. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-DB-VPj_8.js} +0 -0
  213. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-BNFRgqHM.js} +0 -0
  214. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-B-EfS3nw.js} +0 -0
  215. /package/payload/server/public/assets/{path-CNO468J-.js → path-DmWWdwp7.js} +0 -0
  216. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-Ci7Kjt46.js} +0 -0
  217. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-C1jfwBq0.js} +0 -0
@@ -451,6 +451,7 @@ DROP INDEX entity_search_public IF EXISTS;
451
451
  CREATE FULLTEXT INDEX entity_search_admin IF NOT EXISTS
452
452
  FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
453
453
  |Listing|Property|Viewing|Offer|PostalAddress
454
+ |Job|LineItem|Valuation|Milestone|QuoteDocument|VariationNote|InboundInvoice|SubContractor|TimeLog|SubInvoice|WhatsAppGroup
454
455
  |Person|UserProfile|Preference|AdminUser|AccessGrant
455
456
  |KnowledgeDocument|ConversationArchive|Section|Chunk|DigitalDocument|CreativeWork|Question|FAQPage|DefinedTerm|Review|ImageObject
456
457
  |Conversation|AdminConversation|PublicConversation|Message|UserMessage|AssistantMessage|ToolCall
@@ -467,11 +468,13 @@ ON EACH [n.name, n.firstName, n.lastName, n.givenName, n.familyName,
467
468
  n.subject, n.bodyPreview, n.fromName, n.fromAddress, n.agentAddress, n.screeningReason,
468
469
  n.authority, n.contactValue, n.toolName,
469
470
  n.displayName, n.slug, n.role,
471
+ n.client, n.address, n.supplier, n.clientName,
470
472
  n.compiledTruth];
471
473
 
472
474
  CREATE FULLTEXT INDEX entity_search_public IF NOT EXISTS
473
475
  FOR (n:LocalBusiness|Service|PriceSpecification|OpeningHoursSpecification|Organization
474
476
  |Listing|Property|Viewing|Offer|PostalAddress
477
+ |Job|LineItem|Valuation|Milestone|QuoteDocument|VariationNote|InboundInvoice|SubContractor|TimeLog|SubInvoice|WhatsAppGroup
475
478
  |Person|UserProfile|Preference|AdminUser|AccessGrant
476
479
  |KnowledgeDocument|ConversationArchive|Section|Chunk|DigitalDocument|CreativeWork|Question|FAQPage|DefinedTerm|Review|ImageObject
477
480
  |Conversation|AdminConversation|PublicConversation|Message|UserMessage|AssistantMessage|ToolCall
@@ -1310,6 +1313,129 @@ FOR (i:ImageObject) ON (i.accountId);
1310
1313
  CREATE INDEX postal_address_postcode IF NOT EXISTS
1311
1314
  FOR (a:PostalAddress) ON (a.postalCode);
1312
1315
 
1316
+ // ----------------------------------------------------------
1317
+ // Construction ontology (Task 650) — Job-centric model for the
1318
+ // siteoffice-code brand, documented at
1319
+ // platform/plugins/memory/references/schema-construction.md.
1320
+ //
1321
+ // Active vertical: brand.json#vertical = "schema-construction". Declared
1322
+ // here so a fresh deploy registers each label before its first write
1323
+ // (same fresh-install bootstrap contract as the estate-agent block above).
1324
+ //
1325
+ // Uniqueness constraints where a clean natural key exists; accountId-index-
1326
+ // only for child nodes whose uniqueness is a write-time MERGE (LineItem,
1327
+ // Milestone, TimeLog) — mirrors :ImageObject.
1328
+ //
1329
+ // Search quality (Task 652). The four text-bearing labels — :Job (client +
1330
+ // address), :LineItem (trade + description), :QuoteDocument, :VariationNote
1331
+ // (description) — carry a vector index on `.embedding` (below), so the
1332
+ // graph-write chokepoint auto-embeds them on write and they rank in the
1333
+ // vector half of memory-search. The four are mirrored in
1334
+ // graph-write's VECTOR_INDEXED_LABELS (pinned by the memory-plugin
1335
+ // vector-indexed-labels-drift test). The distinctive back-office text fields
1336
+ // (Job.client, Job.address, InboundInvoice.supplier, WhatsAppGroup.clientName)
1337
+ // are added to the entity_search_admin ON EACH list ONLY — they are operator
1338
+ // data, deliberately kept out of the public-agent BM25 surface. The
1339
+ // construction labels remain in the public union, so a public read still
1340
+ // matches them on generic name/description.
1341
+ // ----------------------------------------------------------
1342
+
1343
+ CREATE CONSTRAINT job_account_jobid_unique IF NOT EXISTS
1344
+ FOR (j:Job) REQUIRE (j.accountId, j.jobId) IS UNIQUE;
1345
+
1346
+ CREATE INDEX job_account IF NOT EXISTS
1347
+ FOR (j:Job) ON (j.accountId);
1348
+
1349
+ CREATE INDEX job_status IF NOT EXISTS
1350
+ FOR (j:Job) ON (j.status);
1351
+
1352
+ CREATE VECTOR INDEX job_embedding IF NOT EXISTS
1353
+ FOR (j:Job) ON (j.embedding)
1354
+ OPTIONS {
1355
+ indexConfig: {
1356
+ `vector.dimensions`: 768,
1357
+ `vector.similarity_function`: 'cosine'
1358
+ }
1359
+ };
1360
+
1361
+ CREATE INDEX line_item_account IF NOT EXISTS
1362
+ FOR (li:LineItem) ON (li.accountId);
1363
+
1364
+ CREATE VECTOR INDEX line_item_embedding IF NOT EXISTS
1365
+ FOR (li:LineItem) ON (li.embedding)
1366
+ OPTIONS {
1367
+ indexConfig: {
1368
+ `vector.dimensions`: 768,
1369
+ `vector.similarity_function`: 'cosine'
1370
+ }
1371
+ };
1372
+
1373
+ CREATE CONSTRAINT valuation_account_job_num_unique IF NOT EXISTS
1374
+ FOR (v:Valuation) REQUIRE (v.accountId, v.jobId, v.valuationNumber) IS UNIQUE;
1375
+
1376
+ CREATE INDEX valuation_account IF NOT EXISTS
1377
+ FOR (v:Valuation) ON (v.accountId);
1378
+
1379
+ CREATE INDEX milestone_account IF NOT EXISTS
1380
+ FOR (m:Milestone) ON (m.accountId);
1381
+
1382
+ CREATE CONSTRAINT quote_document_account_ref_unique IF NOT EXISTS
1383
+ FOR (q:QuoteDocument) REQUIRE (q.accountId, q.ref) IS UNIQUE;
1384
+
1385
+ CREATE INDEX quote_document_account IF NOT EXISTS
1386
+ FOR (q:QuoteDocument) ON (q.accountId);
1387
+
1388
+ CREATE VECTOR INDEX quote_document_embedding IF NOT EXISTS
1389
+ FOR (q:QuoteDocument) ON (q.embedding)
1390
+ OPTIONS {
1391
+ indexConfig: {
1392
+ `vector.dimensions`: 768,
1393
+ `vector.similarity_function`: 'cosine'
1394
+ }
1395
+ };
1396
+
1397
+ CREATE CONSTRAINT variation_note_account_job_num_unique IF NOT EXISTS
1398
+ FOR (vn:VariationNote) REQUIRE (vn.accountId, vn.jobId, vn.variationNumber) IS UNIQUE;
1399
+
1400
+ CREATE INDEX variation_note_account IF NOT EXISTS
1401
+ FOR (vn:VariationNote) ON (vn.accountId);
1402
+
1403
+ CREATE VECTOR INDEX variation_note_embedding IF NOT EXISTS
1404
+ FOR (vn:VariationNote) ON (vn.embedding)
1405
+ OPTIONS {
1406
+ indexConfig: {
1407
+ `vector.dimensions`: 768,
1408
+ `vector.similarity_function`: 'cosine'
1409
+ }
1410
+ };
1411
+
1412
+ CREATE CONSTRAINT inbound_invoice_account_supplier_num_unique IF NOT EXISTS
1413
+ FOR (ii:InboundInvoice) REQUIRE (ii.accountId, ii.supplier, ii.invoiceNumber) IS UNIQUE;
1414
+
1415
+ CREATE INDEX inbound_invoice_account IF NOT EXISTS
1416
+ FOR (ii:InboundInvoice) ON (ii.accountId);
1417
+
1418
+ CREATE CONSTRAINT subcontractor_account_whatsapp_unique IF NOT EXISTS
1419
+ FOR (sc:SubContractor) REQUIRE (sc.accountId, sc.whatsappNumber) IS UNIQUE;
1420
+
1421
+ CREATE INDEX subcontractor_account IF NOT EXISTS
1422
+ FOR (sc:SubContractor) ON (sc.accountId);
1423
+
1424
+ CREATE INDEX time_log_account IF NOT EXISTS
1425
+ FOR (tl:TimeLog) ON (tl.accountId);
1426
+
1427
+ CREATE CONSTRAINT sub_invoice_account_sub_period_unique IF NOT EXISTS
1428
+ FOR (si:SubInvoice) REQUIRE (si.accountId, si.subContractorId, si.period) IS UNIQUE;
1429
+
1430
+ CREATE INDEX sub_invoice_account IF NOT EXISTS
1431
+ FOR (si:SubInvoice) ON (si.accountId);
1432
+
1433
+ CREATE CONSTRAINT whatsapp_group_account_groupid_unique IF NOT EXISTS
1434
+ FOR (wg:WhatsAppGroup) REQUIRE (wg.accountId, wg.groupId) IS UNIQUE;
1435
+
1436
+ CREATE INDEX whatsapp_group_account IF NOT EXISTS
1437
+ FOR (wg:WhatsAppGroup) ON (wg.accountId);
1438
+
1313
1439
  // ----------------------------------------------------------
1314
1440
  // Voice Mirror (Task 356 + Task 462) — authorial-voice capture + application
1315
1441
  // ----------------------------------------------------------
@@ -114,6 +114,11 @@
114
114
  "source": "./scheduling",
115
115
  "version": "0.1.0"
116
116
  },
117
+ {
118
+ "name": "slides",
119
+ "source": "./slides",
120
+ "version": "0.1.0"
121
+ },
117
122
  {
118
123
  "name": "substack-import",
119
124
  "source": "./substack-import",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "admin",
3
- "description": "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), publish-site (move an extracted static-site tree under <accountDir>/sites/<slug>/, emit one canonical path slug, and refresh llms.txt at the site root — typed refusal taxonomy replaces the prior skill-prose contract), brand-settings, account-manage, capabilities-here (deterministic install-introspection — returns enabledPlugins, tier, models, installed platform + premium specialists, registered Claude Code agent types, and the brand block as a single JSON object; the canonical tool for grounding any claim about what is enabled on the current account), account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, wifi, action-approval tools (action-pending, action-approve, action-reject, action-edit), session-retrospective-mark-complete (the deterministic sentinel admin calls once it has run an on-demand `/insight` pass — it records that the four passes completed and does not block or end the session), and admin-identity-authenticate (native-CC PIN identity gate — the operator submits their PIN as the first action of every session to bind their authenticated userId; the PreToolUse pin-identity-gate hook blocks all other tools until this succeeds) for managing the Maxy platform.",
3
+ "description": "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), publish-site (move an extracted static-site tree under <accountDir>/sites/<slug>/, emit one canonical path slug, and refresh llms.txt at the site root — typed refusal taxonomy replaces the prior skill-prose contract), brand-settings, account-manage, capabilities-here (deterministic install-introspection — returns enabledPlugins, tier, models, installed platform + premium specialists, registered Claude Code agent types, and the brand block as a single JSON object; the canonical tool for grounding any claim about what is enabled on the current account), account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, wifi, action-approval tools (action-pending, action-approve, action-reject, action-edit), and admin-identity-authenticate (native-CC PIN identity gate — the operator submits their PIN as the first action of every session to bind their authenticated userId; the PreToolUse pin-identity-gate hook blocks all other tools until this succeeds) for managing the Maxy platform.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: admin
3
3
  surface: platform
4
- description: "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), publish-site (move an extracted static-site tree under <accountDir>/sites/<slug>/, emit one canonical path slug, and refresh llms.txt at the site root — typed refusal taxonomy replaces the prior skill-prose contract), brand-settings, account-manage, capabilities-here (deterministic install-introspection — returns enabledPlugins, tier, models, installed platform + premium specialists, registered Claude Code agent types, and the brand block as a single JSON object; the canonical tool for grounding any claim about what is enabled on the current account), account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, wifi, action-approval tools (action-pending, action-approve, action-reject, action-edit), session-retrospective-mark-complete (the deterministic sentinel admin calls once it has run an on-demand `/insight` pass — it records that the four passes completed and does not block or end the session), and admin-identity-authenticate (native-CC PIN identity gate — the operator submits their PIN as the first action of every session to bind their authenticated userId; the PreToolUse pin-identity-gate hook blocks all other tools until this succeeds) for managing the Maxy platform."
4
+ description: "Platform administration plugin. Provides system-status, public-hostname (deterministic Cloudflare public-URL resolver, single call returning the operator's canonical hostname so agents never guess property names on :CloudflareHostname nodes), publish-site (move an extracted static-site tree under <accountDir>/sites/<slug>/, emit one canonical path slug, and refresh llms.txt at the site root — typed refusal taxonomy replaces the prior skill-prose contract), brand-settings, account-manage, capabilities-here (deterministic install-introspection — returns enabledPlugins, tier, models, installed platform + premium specialists, registered Claude Code agent types, and the brand block as a single JSON object; the canonical tool for grounding any claim about what is enabled on the current account), account-update, admin-add, admin-remove, admin-list, admin-update-pin, agent-list, agent-config-read, logs-read, plugin-read, skill-load (one-call resolve+read for SKILL.md by skill name, the canonical primitive for loading a named skill; plugin-read remains the reader for references/* and PLUGIN.md), store-skill (deterministic write counterpart to plugin-read; persists operator-authored skills as plugin files under the active account), session-reset, session-resume, wifi, action-approval tools (action-pending, action-approve, action-reject, action-edit), and admin-identity-authenticate (native-CC PIN identity gate — the operator submits their PIN as the first action of every session to bind their authenticated userId; the PreToolUse pin-identity-gate hook blocks all other tools until this succeeds) for managing the Maxy platform."
5
5
  tools:
6
6
  - name: system-status
7
7
  publicAllowlist: false
@@ -72,9 +72,6 @@ tools:
72
72
  - name: action-edit
73
73
  publicAllowlist: false
74
74
  adminAllowlist: true
75
- - name: session-retrospective-mark-complete
76
- publicAllowlist: false
77
- adminAllowlist: true
78
75
  - name: admin-identity-authenticate
79
76
  publicAllowlist: false
80
77
  adminAllowlist: true
@@ -139,16 +136,16 @@ Tools are available via the `admin` MCP server.
139
136
  | Run a structured sprint without `gstack` | User asks to run a sprint, execute a `.tasks/NNN-*.md`, or invokes "superpowers sprint" / "sprint without gstack" | `skills/superpowers-sprint/SKILL.md` |
140
137
  | Investigate a bug or unexpected behaviour | User asks to debug, fix a bug, find the root cause, or investigate an error | `skills/investigate/SKILL.md` |
141
138
  | Capture work as a task before implementing | User asks to "task it", create a task, or describes work that should be a task file before a sprint | `skills/task/SKILL.md` |
139
+ | Run an insight pass on this session | Operator asks to run an insight pass, review this session, capture what we learned, or do a retrospective on the conversation | `skills/insight/SKILL.md` |
142
140
 
143
141
  ## Hooks
144
142
 
145
143
  - `hooks/webfetch-preflight.mjs` — short-circuits WebFetch on JS-SPA shells with a structured `WEBFETCH_CANNOT_READ_JS_SPA` error so the agent surfaces a loud failure to the owner instead of paying the 60s extraction timeout. Fail-open on any internal error.
146
144
  - `hooks/askuserquestion-investigate-gate.sh` — PreToolUse matcher=`AskUserQuestion`. Blocks the question (exit 2) when no read-only investigation tool has fired since the latest real user turn in the session JSONL. The structural fix for the failure class where the agent fabricates a menu before evidence-gathering (session `c085ec2c-46fb-4b73-8865-68cf85866ea8` 2026-05-22 — "change remote access password" → invented options "Admin PIN / Cloudflare tunnel / WiFi password" with zero prior tool_use; post-correction the agent immediately fired `remote-auth-status` → `ToolSearch` → `remote-auth-set-password`, proving it knew the moves). **Allowlist** (exact, with trailing `__<tool>` suffix-match for namespaced `mcp__plugin_<plugin>_<server>__<tool>` aliases): `ToolSearch`, `Grep`, `Glob`, `Read`, `LS`, `NotebookRead`, `Bash`, `WebFetch`, `WebSearch`, plus the read-only admin / memory MCP tools (`*-status`, `*-list`, `*-read`, `skill-find`, `memory-find-candidates`, `profile-read`, `conversation-list`, `memory-list-attachments`, `memory-read-attachment`). **Block message:** `Blocked: AskUserQuestion requires at least one investigation tool (ToolSearch, Grep, Read, *-list, *-status, *-read, skill-find, ...) earlier in this turn. Search the operator's literal phrase first.` **Log line** (stderr, one per call): `[ask-gate] decision=<allow|block> sessionId=<id8> seen=<csv|-> reason=<allowlist-hit|no-investigation|fail-open-no-transcript|fail-open-parse-error>`. **Fail-open** on missing transcript or parse error — nudges, never bricks the UI.
147
- - `hooks/insight.sh` — **UserPromptSubmit hook.** Fires on every prompt but exits 0 with `trigger-skipped reason=<role-not-admin|is-specialist|empty-stdin|missing-transcript|no-insight-token>` on every path EXCEPT when the operator's `prompt` field carries the literal `/insight` token (case-insensitive, must match the whole message or a standalone line — not embedded in prose). On that path it emits `[insight] trigger sessionId=<id> token=/insight`, prints the four-pass instruction to **stdout** (UserPromptSubmit stdout is injected as turn context), and exits 0 — the turn is never blocked, and the agent runs the four passes over the session so far then keeps working. There is no exit-2 path, no stderr instruction, and no gate. Standing reconciliation: on every invocation the hook scans the transcript (`transcript_path`) for the latest real-user `/insight` turn that has no subsequent `session-retrospective-mark-complete` tool_use and emits `[insight] prior-incomplete sessionId=<id> triggered-turn=<idx>` — the no-event detector for an `/insight` that was triggered but never completed ([[feedback_no_stdout_parsing_for_control_flow]], [[feedback_doctrine_paragraph_is_not_a_gate]]). Recursion guard: any session whose `MAXY_SPECIALIST` env is set (specialist subagent dispatched via Task tool) skips. All structured emits go through `POST /api/admin/log-ingest`; stdout carries only the instruction block. The passes run as one or more additional turns inside the operator's existing admin session — Task-tool delegation to `database-operator` is the existing IDENTITY.md "Recording" route, not a parallel admin session ([[feedback_deterministic_means_remove_llm]]).
148
145
  - `hooks/mcp-tool-missing.sh` — **PostToolUse hook on `mcp__.*` (Task 502, directive 3).** Defence-in-depth for the `No such tool available: mcp__…` failure class that the Task 502 name-binding is built to eliminate. Fires on any MCP tool call; no-op unless the `tool_response` carries `No such tool available` AND the qualified name resolves to a maxy plugin (read from the generated `hooks/lib/maxy-mcp-plugins.txt`). On a maxy match it logs one deterministic `[mcp-tool-missing] server=<server> tool=<tool>` line and exits 2 with a fixed envelope on stderr, so the agent relays a named server-unavailable failure instead of narrating "warming up" or blind-retrying. A missing non-maxy bridge tool (Playwright etc., upstream-owned) passes through (exit 0). The maxy-plugin list is regenerated and gate-diffed by `platform/scripts/check-canonical-tool-names.mjs`.
149
146
  - `hooks/post-tool-use-agent.sh` — **PostToolUse hook on `Agent` (Task 560).** Drains any subagent hook-decision buffers under `~/.maxy-code/logs/hook-decisions/` modified since this parent's previous PostToolUse-Agent fire (cursor file keyed by parent session id), prints one `[hook-propagate]` line per record to stdout — Claude Code attaches the stdout as a `hook_success` attachment on the parent JSONL, making the records grep-queryable from the parent session alone (Task 559 motivating case). Rotates consumed buffers to `consumed/`. Emits one `[hook-propagate-census] parentSession=<…> subagentHooksObserved=<N> attachmentsEmitted=<M>` line per fire to stdout and server.log; `N != M` is the propagation regression signal. The companion emitter library `hooks/lib/hook-emit.sh` is sourced by `post-tool-use-agent.sh` and any other hook that records a block decision (4 KB stderr truncation, `truncated=true` set on the record).
150
147
  - `hooks/admin-authoring-observer.sh` — **PostToolUse hook on Write and Edit (Task 486).** Observation only — never blocks; exits 0 on every path. Fires when the admin agent (not a specialist subagent — gated by `MAXY_SPECIALIST` env) writes or edits a file under `<accountDir>/output/`. Walks the session transcript from the latest real-user turn forward to detect any prior `Task` `tool_use` whose `subagent_type` starts with `specialists:`. Emits one stderr line `[admin-authoring] inline-write path=<rel> priorSpecialistSpawnInTurn=<true|false|unknown>`. A `false` value on a long-form prose file is the regression signal Task 486 was designed to make visible — the BioSymm proposal session (admin authored a customer-facing proposal inline despite content-producer being installed) is the failure mode this surfaces mechanically. Mechanical enforcement (refuse the write, force a re-spawn) is deferred per the task spec.
151
- - **Turn recorder — removed entirely (Task 626).** The `turn-completed-graph-write.sh` Stop hook, the `/api/admin/claude-sessions` loopback bypass it relied on, the `[turn-recorder]` emitters, the envelope walker, and the recorder-auto-archive subscriber are deleted. It had been dormant since Task 214 (never re-registered in settings.json); the admin now writes to the graph by delegating to `database-operator` via the Task tool inside the live session, and the on-demand `/insight` pass (`insight.sh`) is the per-session review. There is no per-turn spawn.
148
+ - **Turn recorder — removed entirely (Task 626).** The `turn-completed-graph-write.sh` Stop hook, the `/api/admin/claude-sessions` loopback bypass it relied on, the `[turn-recorder]` emitters, the envelope walker, and the recorder-auto-archive subscriber are deleted. It had been dormant since Task 214 (never re-registered in settings.json); the admin now writes to the graph by delegating to `database-operator` via the Task tool inside the live session, and the on-demand `/insight` pass (`skills/insight/SKILL.md`, a registered admin skill — Task 641) is the per-session review. There is no per-turn spawn.
152
149
 
153
150
  ## Session identifiers (Task 135)
154
151
 
@@ -3101,66 +3101,6 @@ eagerTool(server, "action-edit", "Edit a pending action's input and then execute
3101
3101
  };
3102
3102
  }
3103
3103
  });
3104
- // ===================================================================
3105
- // Insight-pass completion sentinel (Task 282, retriggered on-demand by Task 634)
3106
- // ===================================================================
3107
- //
3108
- // Deterministic completion signal for the on-demand `/insight` pass
3109
- // (`platform/plugins/admin/hooks/insight.sh`, a UserPromptSubmit hook). The
3110
- // hook injects the four-pass instruction when the operator types `/insight`;
3111
- // this tool_use is the agent's record that all four passes ran. Calling it
3112
- // does not block, release, or end anything — the session continues. Its
3113
- // absence after an `/insight` turn is what the hook's standing reconciliation
3114
- // surfaces as `[insight] prior-incomplete`
3115
- // ([[feedback_doctrine_paragraph_is_not_a_gate]]).
3116
- //
3117
- // The tool's only side-effect is one structured log line through
3118
- // /api/admin/log-ingest so server.log carries the full chain
3119
- // trigger → complete (and, on failure, trigger with no following complete)
3120
- // against one operator sessionId.
3121
- server.tool("session-retrospective-mark-complete", "Marks an on-demand insight pass complete. Call this AFTER walking the session for technical learnings, operator-relationship updates, missing graph writes, and the typed-edge auto-extraction pass — and persisting each one (Task-tool delegations to database-operator for graph writes and the typed-edge pass, Write to SOUL.md for tonal updates). The counts you pass are the number of items you actually persisted in each pass. Calling it records that the insight pass ran; it does not block or end the session — keep working afterward.", {
3122
- learningsCount: z.number().int().nonnegative().describe("Technical-learning / correction nodes you delegated to database-operator in this insight pass."),
3123
- preferencesCount: z.number().int().nonnegative().describe("SOUL.md writes you made for tonal / working-style observations in this insight pass."),
3124
- graphWriteCount: z.number().int().nonnegative().describe("Graph nodes/edges/commitments you delegated to database-operator for content that surfaced in the session but was not written in-flight."),
3125
- typedEdgesCount: z.number().int().nonnegative().describe("Typed edges accepted (MERGEd) by the typed-edge auto-extraction pass that database-operator ran in this insight pass. 0 is valid (no prose nodes touched or none yielded edges)."),
3126
- nodesProcessed: z.number().int().nonnegative().describe("Prose-bearing nodes the typed-edge pass enumerated and scanned in this insight pass. 0 is valid (no prose nodes since the session started)."),
3127
- }, async ({ learningsCount, preferencesCount, graphWriteCount, typedEdgesCount, nodesProcessed }) => {
3128
- const sessionId = process.env.SESSION_ID || "unknown";
3129
- const line = `complete sessionId=${sessionId} learningsCount=${learningsCount} preferencesCount=${preferencesCount} graphWriteCount=${graphWriteCount} typedEdgesCount=${typedEdgesCount} nodesProcessed=${nodesProcessed}`;
3130
- if (!PLATFORM_PORT) {
3131
- // Module-init deliberately tolerates a missing PLATFORM_PORT
3132
- // (lines ~62-71) so the MCP server does not loud-fail on plugin-
3133
- // system spawn enumeration. The hook's release decision is the
3134
- // JSONL tool_use entry, not this POST — so we still return success
3135
- // to the caller and emit the line on stderr so it lands in the
3136
- // MCP server's stderr log instead of disappearing into a NaN URL.
3137
- console.error(`[insight] log-ingest-skipped sessionId=${sessionId} reason=missing-env env=PLATFORM_PORT line=${JSON.stringify(line)}`);
3138
- }
3139
- else {
3140
- try {
3141
- const port = parseInt(PLATFORM_PORT, 10);
3142
- await fetch(`http://127.0.0.1:${port}/api/admin/log-ingest`, {
3143
- method: "POST",
3144
- headers: { "Content-Type": "application/json" },
3145
- body: JSON.stringify({ tag: "insight", level: "info", line }),
3146
- signal: AbortSignal.timeout(2000),
3147
- });
3148
- }
3149
- catch (err) {
3150
- // Falling back to stderr keeps the event in the MCP server's
3151
- // stderr log even when the loopback POST fails. The hook's
3152
- // release decision is JSONL-based and does not depend on this
3153
- // POST succeeding.
3154
- console.error(`[insight] log-ingest-failed sessionId=${sessionId} err=${err instanceof Error ? err.message : String(err)}`);
3155
- }
3156
- }
3157
- return {
3158
- content: [{
3159
- type: "text",
3160
- text: `Insight pass marked complete (learnings=${learningsCount} preferences=${preferencesCount} graphWrites=${graphWriteCount} typedEdges=${typedEdgesCount} nodesProcessed=${nodesProcessed}). The session continues — carry on with the operator's work.`,
3161
- }],
3162
- };
3163
- });
3164
3104
  // Task 619 — native-CC admin PIN identity gate. Eager-loaded so it is visible
3165
3105
  // from the first turn: the operator must authenticate before any other tool is
3166
3106
  // reachable (the PreToolUse pin-identity-gate hook enforces that; this tool is