@rubytech/create-realagent-code 0.1.255 → 0.1.256

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 (213) 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/docs/PLUGIN.md +1 -0
  21. package/payload/platform/plugins/docs/references/admin-ui.md +1 -1
  22. package/payload/platform/plugins/docs/references/deployment.md +18 -5
  23. package/payload/platform/plugins/docs/references/memory-guide.md +4 -0
  24. package/payload/platform/plugins/docs/references/platform.md +1 -1
  25. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
  26. package/payload/platform/plugins/docs/references/slides.md +31 -0
  27. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +1 -1
  28. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  29. package/payload/platform/plugins/memory/mcp/dist/index.js +1 -1
  30. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  31. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +1 -1
  33. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +10 -0
  35. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  36. package/payload/platform/plugins/memory/references/schema-construction.md +72 -0
  37. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  38. package/payload/platform/plugins/slides/LICENSE +21 -0
  39. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  40. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  41. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  42. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  43. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  44. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  45. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  46. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  47. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  48. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  49. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +607 -0
  50. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  51. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  52. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  53. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  54. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  55. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  56. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  57. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  58. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  59. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  60. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +1 -1
  61. package/payload/platform/plugins/url-get/PLUGIN.md +26 -21
  62. package/payload/platform/plugins/url-get/mcp/dist/index.js +3 -3
  63. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -1
  64. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +1 -2
  65. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -1
  66. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +20 -40
  67. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -1
  68. package/payload/platform/scripts/setup-account.sh +1 -10
  69. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  70. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +0 -1
  71. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  72. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +5 -0
  73. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  74. package/payload/platform/services/claude-session-manager/dist/http-server.js +32 -2
  75. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +2 -2
  77. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  78. package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
  79. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +1 -1
  80. package/payload/server/public/assets/AdminShell-T-YknnBn.js +1 -0
  81. package/payload/server/public/assets/Checkbox-DmDxpqVv.js +1 -0
  82. package/payload/server/public/assets/admin-COUV-jgt.js +1 -0
  83. package/payload/server/public/assets/{arc-aUiRP9AS.js → arc-B2CweJq3.js} +1 -1
  84. package/payload/server/public/assets/architecture-YZFGNWBL-Dnn6Hc65.js +1 -0
  85. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-c09loTER.js → architectureDiagram-Q4EWVU46-DP2o-MFV.js} +1 -1
  86. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Cjdeyoq1.js → blockDiagram-DXYQGD6D-DO4mcYDJ.js} +1 -1
  87. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-NY6Wlzo2.js → c4Diagram-AHTNJAMY-Sy1giHbj.js} +1 -1
  88. package/payload/server/public/assets/channel-CEpR_0rE.js +1 -0
  89. package/payload/server/public/assets/{chunk-2KRD3SAO-BK3470lx.js → chunk-2KRD3SAO-CKsCYCsN.js} +1 -1
  90. package/payload/server/public/assets/chunk-336JU56O-C0-P-aUF.js +2 -0
  91. package/payload/server/public/assets/chunk-426QAEUC-DFjEt3Zb.js +1 -0
  92. package/payload/server/public/assets/{chunk-4BX2VUAB-BOvVdJLf.js → chunk-4BX2VUAB-B8bqAmBa.js} +1 -1
  93. package/payload/server/public/assets/{chunk-4TB4RGXK-BXpto3yW.js → chunk-4TB4RGXK-D1k0VSlW.js} +1 -1
  94. package/payload/server/public/assets/{chunk-55IACEB6-BwZyF7vR.js → chunk-55IACEB6-B-p_QNqz.js} +1 -1
  95. package/payload/server/public/assets/{chunk-5FUZZQ4R-C403gCUk.js → chunk-5FUZZQ4R-D6U6tV_j.js} +1 -1
  96. package/payload/server/public/assets/{chunk-5PVQY5BW-CjVzXQEp.js → chunk-5PVQY5BW-CYK76xfs.js} +1 -1
  97. package/payload/server/public/assets/{chunk-67CJDMHE-D5bhMrtY.js → chunk-67CJDMHE-BC9js-lf.js} +1 -1
  98. package/payload/server/public/assets/{chunk-7N4EOEYR-Si7Lgrwc.js → chunk-7N4EOEYR-4j2OqKkv.js} +1 -1
  99. package/payload/server/public/assets/{chunk-AA7GKIK3-DMuHtDqO.js → chunk-AA7GKIK3-Coen-fXN.js} +1 -1
  100. package/payload/server/public/assets/{chunk-BSJP7CBP-L79XKVcb.js → chunk-BSJP7CBP-CAiOBvec.js} +1 -1
  101. package/payload/server/public/assets/{chunk-CIAEETIT-C0O7Upmg.js → chunk-CIAEETIT-AJzzpZVb.js} +1 -1
  102. package/payload/server/public/assets/{chunk-EDXVE4YY-DJcJAsAg.js → chunk-EDXVE4YY-BL4BKozX.js} +1 -1
  103. package/payload/server/public/assets/{chunk-ENJZ2VHE-CFDNvYu1.js → chunk-ENJZ2VHE-mhAFG8UD.js} +1 -1
  104. package/payload/server/public/assets/{chunk-FMBD7UC4-C_E43NFJ.js → chunk-FMBD7UC4-H231gZA_.js} +1 -1
  105. package/payload/server/public/assets/{chunk-FOC6F5B3-D9lWWHAu.js → chunk-FOC6F5B3-Cl3ZZjYG.js} +1 -1
  106. package/payload/server/public/assets/{chunk-ICPOFSXX-ecLOxGhL.js → chunk-ICPOFSXX-DOEzvzJa.js} +2 -2
  107. package/payload/server/public/assets/{chunk-K5T4RW27-DuhsNH4c.js → chunk-K5T4RW27-C_ipbUDD.js} +1 -1
  108. package/payload/server/public/assets/{chunk-KGLVRYIC-B4-A1Abi.js → chunk-KGLVRYIC-CTsDNSCU.js} +1 -1
  109. package/payload/server/public/assets/{chunk-LIHQZDEY-BxqgHRgT.js → chunk-LIHQZDEY-DvSXhkGf.js} +1 -1
  110. package/payload/server/public/assets/{chunk-ORNJ4GCN-DEYQ5WaJ.js → chunk-ORNJ4GCN-p574NOI7.js} +1 -1
  111. package/payload/server/public/assets/{chunk-OYMX7WX6-B7MW66KB.js → chunk-OYMX7WX6-BlEgFM6U.js} +1 -1
  112. package/payload/server/public/assets/chunk-QZHKN3VN-DpF06ZZQ.js +1 -0
  113. package/payload/server/public/assets/{chunk-U2HBQHQK-BMawmsyk.js → chunk-U2HBQHQK-B2bDK0jv.js} +1 -1
  114. package/payload/server/public/assets/{chunk-X2U36JSP-CT6g7pno.js → chunk-X2U36JSP-D69BxKFw.js} +1 -1
  115. package/payload/server/public/assets/{chunk-XPW4576I-CBfZXZDB.js → chunk-XPW4576I-Dm-PcyUi.js} +1 -1
  116. package/payload/server/public/assets/{chunk-YZCP3GAM-xeAluiAH.js → chunk-YZCP3GAM-Be8RnXgx.js} +1 -1
  117. package/payload/server/public/assets/{chunk-ZZ45TVLE-BRN9qUC5.js → chunk-ZZ45TVLE-Ck8PCTa4.js} +1 -1
  118. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CYbXvKLI.js +1 -0
  119. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DEyHzRhq.js +1 -0
  120. package/payload/server/public/assets/clone-y8gexbBy.js +1 -0
  121. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-Br2gjtEO.js → cose-bilkent-S5V4N54A-CmkW2Eaj.js} +1 -1
  122. package/payload/server/public/assets/{dagre-DTjePoco.js → dagre-Dqp-ns8F.js} +1 -1
  123. package/payload/server/public/assets/{dagre-KV5264BT-DHBkRke4.js → dagre-KV5264BT-ZgWWXPLc.js} +1 -1
  124. package/payload/server/public/assets/data-gy6QH9c1.js +1 -0
  125. package/payload/server/public/assets/{diagram-5BDNPKRD-BIq1-idL.js → diagram-5BDNPKRD-CTX5-ScM.js} +1 -1
  126. package/payload/server/public/assets/{diagram-G4DWMVQ6-BsIUDzV6.js → diagram-G4DWMVQ6-BovIsO6H.js} +1 -1
  127. package/payload/server/public/assets/{diagram-MMDJMWI5-CgHSri2i.js → diagram-MMDJMWI5-DcETsQy-.js} +1 -1
  128. package/payload/server/public/assets/{diagram-TYMM5635-Ce2Wh9ZX.js → diagram-TYMM5635-yyq6peoZ.js} +1 -1
  129. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BU0Kh6OQ.js → erDiagram-SMLLAGMA-CiNToftB.js} +1 -1
  130. package/payload/server/public/assets/{flatten-Bo6YRmWl.js → flatten-BtFI066E.js} +1 -1
  131. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-B0N06MF7.js → flowDiagram-DWJPFMVM-Xnl3SpIM.js} +1 -1
  132. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-BVbx4ARZ.js → ganttDiagram-T4ZO3ILL-C1iyWe0f.js} +1 -1
  133. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CNs-LD5i.js +1 -0
  134. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C-xRJ94t.js → gitGraphDiagram-UUTBAWPF-D97pbMQb.js} +1 -1
  135. package/payload/server/public/assets/graph-labels-cZu4pK16.js +1 -0
  136. package/payload/server/public/assets/{graph-g48ZcA5M.js → graph-qz5tFKqU.js} +3 -3
  137. package/payload/server/public/assets/{graphlib-YmNcoMjY.js → graphlib-Lq8ijgON.js} +1 -1
  138. package/payload/server/public/assets/info-OMHHGYJF-DsTNigSS.js +1 -0
  139. package/payload/server/public/assets/infoDiagram-42DDH7IO-C_OarRTA.js +2 -0
  140. package/payload/server/public/assets/{isEmpty-D6Kr-M1M.js → isEmpty-D6QovjYR.js} +1 -1
  141. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DTrq54yC.js → ishikawaDiagram-UXIWVN3A-B8XBdjJn.js} +1 -1
  142. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-OZZZMrFX.js → journeyDiagram-VCZTEJTY-CZYbiOaQ.js} +1 -1
  143. package/payload/server/public/assets/{kanban-definition-6JOO6SKY--w-IP9pN.js → kanban-definition-6JOO6SKY-B1PybFoh.js} +1 -1
  144. package/payload/server/public/assets/{line-Ckeulv5T.js → line-D-tw3hHp.js} +1 -1
  145. package/payload/server/public/assets/{linear-DOh_6k2k.js → linear-BHhXD3cd.js} +1 -1
  146. package/payload/server/public/assets/{mermaid-parser.core-CVRAxYRD.js → mermaid-parser.core-C9RAnysF.js} +2 -2
  147. package/payload/server/public/assets/{mermaid.core-B-mE18I1.js → mermaid.core-B532LT1r.js} +3 -3
  148. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Bm8mDicL.js → mindmap-definition-QFDTVHPH-DGlgeeTV.js} +1 -1
  149. package/payload/server/public/assets/{ordinal-BDi6f4xk.js → ordinal-Bl-aM5b9.js} +1 -1
  150. package/payload/server/public/assets/packet-4T2RLAQJ-DGES22b-.js +1 -0
  151. package/payload/server/public/assets/pie-ZZUOXDRM-ChKeDbzt.js +1 -0
  152. package/payload/server/public/assets/{pieDiagram-DEJITSTG-BCmRLgGO.js → pieDiagram-DEJITSTG-DV9FIWko.js} +1 -1
  153. package/payload/server/public/assets/{public-DknO-g9S.js → public-Bu2_Xi0a.js} +5 -5
  154. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CniTIUTm.js → quadrantDiagram-34T5L4WZ-Betwya4l.js} +1 -1
  155. package/payload/server/public/assets/radar-PYXPWWZC-FGG5Fs7N.js +1 -0
  156. package/payload/server/public/assets/{reduce-CGi9ik8i.js → reduce-BD4xUd2c.js} +1 -1
  157. package/payload/server/public/assets/{requirementDiagram-MS252O5E-CoxBSj9M.js → requirementDiagram-MS252O5E-Cq3vODdg.js} +1 -1
  158. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BjS-4jzq.js → sankeyDiagram-XADWPNL6-x8krXWcS.js} +1 -1
  159. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-B9jVOnPR.js → sequenceDiagram-FGHM5R23-i-_uH-Yl.js} +1 -1
  160. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BvOQPzP8.js → stateDiagram-FHFEXIEX-il4KqSgI.js} +1 -1
  161. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B6zNJ6Tv.js +1 -0
  162. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CdfgWLo1.js → timeline-definition-GMOUNBTQ-DATdZkA5.js} +1 -1
  163. package/payload/server/public/assets/treeView-SZITEDCU-VAQQdbtf.js +1 -0
  164. package/payload/server/public/assets/treemap-W4RFUUIX-DKchO3zI.js +1 -0
  165. package/payload/server/public/assets/useSelectionMode-A5KItZ2T.js +13 -0
  166. package/payload/server/public/assets/{brand-D0gNihp7.css → useSelectionMode-C-Ojh7W9.css} +1 -1
  167. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-JCgpIbj-.js → vennDiagram-DHZGUBPP-BJh9tJTt.js} +1 -1
  168. package/payload/server/public/assets/wardley-RL74JXVD-CBGtx0bS.js +1 -0
  169. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Dei3VqHo.js → wardleyDiagram-NUSXRM2D-EMN1Hdfg.js} +1 -1
  170. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DUtIyoIb.js → xychartDiagram-5P7HB3ND-DbUWXa7T.js} +1 -1
  171. package/payload/server/public/data.html +5 -5
  172. package/payload/server/public/graph.html +6 -6
  173. package/payload/server/public/index.html +5 -6
  174. package/payload/server/public/public.html +4 -5
  175. package/payload/server/server.js +53 -12
  176. package/payload/platform/plugins/admin/hooks/__tests__/insight.test.sh +0 -395
  177. package/payload/platform/plugins/admin/hooks/insight.sh +0 -219
  178. package/payload/platform/plugins/admin/hooks/lib/admin-graph-pass-common.sh +0 -239
  179. package/payload/server/public/assets/AdminShell-892Jy_rs.js +0 -1
  180. package/payload/server/public/assets/Checkbox-Bc2QzX9b.js +0 -1
  181. package/payload/server/public/assets/admin-D3K13ndi.js +0 -1
  182. package/payload/server/public/assets/architecture-YZFGNWBL--v-pJPNp.js +0 -1
  183. package/payload/server/public/assets/brand-CcN3dELF.js +0 -9
  184. package/payload/server/public/assets/channel-B1IT7to2.js +0 -1
  185. package/payload/server/public/assets/chunk-336JU56O-CdKRCIeE.js +0 -2
  186. package/payload/server/public/assets/chunk-426QAEUC-BybuQ3Ve.js +0 -1
  187. package/payload/server/public/assets/chunk-QZHKN3VN-Bd-GrQM6.js +0 -1
  188. package/payload/server/public/assets/classDiagram-6PBFFD2Q-rjCize6i.js +0 -1
  189. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BORWOUt0.js +0 -1
  190. package/payload/server/public/assets/clone-Csqv5U6T.js +0 -1
  191. package/payload/server/public/assets/data-Br-pdljK.js +0 -1
  192. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CI0s_tqn.js +0 -1
  193. package/payload/server/public/assets/graph-labels-BYH-IPCb.js +0 -1
  194. package/payload/server/public/assets/info-OMHHGYJF-g3gYW7Qm.js +0 -1
  195. package/payload/server/public/assets/infoDiagram-42DDH7IO-Di6oPQ_-.js +0 -2
  196. package/payload/server/public/assets/packet-4T2RLAQJ-CT0TB9HI.js +0 -1
  197. package/payload/server/public/assets/pie-ZZUOXDRM-CXLe7TFF.js +0 -1
  198. package/payload/server/public/assets/radar-PYXPWWZC-DnPLBl-D.js +0 -1
  199. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-v4ND10uR.js +0 -1
  200. package/payload/server/public/assets/treeView-SZITEDCU-C3cb7Xwe.js +0 -1
  201. package/payload/server/public/assets/treemap-W4RFUUIX-Dc7G3Bgm.js +0 -1
  202. package/payload/server/public/assets/useSelectionMode-DwsyptOw.js +0 -5
  203. package/payload/server/public/assets/wardley-RL74JXVD-DtgibWAt.js +0 -1
  204. /package/payload/server/public/assets/{_baseFor-Cam2PbSt.js → _baseFor-Cs8Y-rGh.js} +0 -0
  205. /package/payload/server/public/assets/{array-DYRGGQae.js → array-iHZP4KWJ.js} +0 -0
  206. /package/payload/server/public/assets/{cytoscape.esm-nWsJMTNI.js → cytoscape.esm-BR2GOQ8_.js} +0 -0
  207. /package/payload/server/public/assets/{defaultLocale-Du1XY3Dp.js → defaultLocale-B9aLeOTg.js} +0 -0
  208. /package/payload/server/public/assets/{dist-BzAsli7o.js → dist-DB-VPj_8.js} +0 -0
  209. /package/payload/server/public/assets/{init-B5BXBRcm.js → init-BNFRgqHM.js} +0 -0
  210. /package/payload/server/public/assets/{katex-HOUACuRw.js → katex-B-EfS3nw.js} +0 -0
  211. /package/payload/server/public/assets/{path-CNO468J-.js → path-DmWWdwp7.js} +0 -0
  212. /package/payload/server/public/assets/{rough.esm-DRO6hWPh.js → rough.esm-Ci7Kjt46.js} +0 -0
  213. /package/payload/server/public/assets/{src-CWiyyVfn.js → src-C1jfwBq0.js} +0 -0
@@ -4,7 +4,7 @@
4
4
  // permanent verification artifact.
5
5
  import test from "node:test";
6
6
  import assert from "node:assert/strict";
7
- import { parsePluginList, computeInstallActions, computeConfigureActions, parseExternalPlugins, } from "../lib/plugin-install.js";
7
+ import { parsePluginList, computeInstallActions, parseExternalPlugins, } from "../lib/plugin-install.js";
8
8
  test("parsePluginList extracts name@marketplace tuples", () => {
9
9
  const stdout = `
10
10
  ❯ work@maxy-platform
@@ -24,63 +24,81 @@ test("parsePluginList returns empty array for empty stdout", () => {
24
24
  assert.deepEqual(parsePluginList(""), []);
25
25
  assert.deepEqual(parsePluginList("No plugins installed.\n"), []);
26
26
  });
27
+ // `dirSrc` is the directory-source-marketplace discriminator passed as the
28
+ // third argument. maxy-platform is directory-source; claude-plugins-official
29
+ // is a remote (GitHub) marketplace that keeps version-pinned idempotence.
30
+ const dirSrc = new Set(["maxy-platform"]);
27
31
  test("computeInstallActions: every desired plugin needs installing when none present", () => {
28
32
  const desired = [
29
33
  { name: "admin", marketplace: "maxy-platform" },
30
34
  { name: "telegram", marketplace: "claude-plugins-official" },
31
35
  ];
32
- const { toInstall, alreadyInstalled } = computeInstallActions(desired, []);
36
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, [], dirSrc);
33
37
  assert.equal(toInstall.length, 2);
38
+ assert.equal(toResync.length, 0);
34
39
  assert.equal(alreadyInstalled.length, 0);
35
40
  });
36
- test("computeInstallActions: idempotent skip for exact name@marketplace match", () => {
41
+ test("computeInstallActions: directory-source plugin already installed goes to resync, not skip", () => {
37
42
  const desired = [
38
43
  { name: "admin", marketplace: "maxy-platform" },
39
44
  { name: "telegram", marketplace: "claude-plugins-official" },
40
45
  ];
41
46
  const installed = [
42
47
  { name: "admin", marketplace: "maxy-platform" },
48
+ { name: "telegram", marketplace: "claude-plugins-official" },
43
49
  ];
44
- const { toInstall, alreadyInstalled } = computeInstallActions(desired, installed);
45
- assert.deepEqual(toInstall.map(p => p.name), ["telegram"]);
46
- assert.deepEqual(alreadyInstalled.map(p => p.name), ["admin"]);
50
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, dirSrc);
51
+ // admin's directory source changes in place with no version bump, so it must
52
+ // be re-synced even though it is already in `plugin list`. The remote
53
+ // telegram stays idempotent-skipped.
54
+ assert.deepEqual(toInstall.map(p => p.name), []);
55
+ assert.deepEqual(toResync.map(p => p.name), ["admin"]);
56
+ assert.deepEqual(alreadyInstalled.map(p => p.name), ["telegram"]);
47
57
  });
48
- test("computeInstallActions: name-only match skips install (legacy install state)", () => {
49
- const desired = [{ name: "admin", marketplace: "maxy-platform" }];
50
- const installed = [{ name: "admin", marketplace: "" }];
51
- const { toInstall, alreadyInstalled } = computeInstallActions(desired, installed);
58
+ test("computeInstallActions: full directory-marketplace set resyncs when every plugin already installed", () => {
59
+ const desired = [
60
+ { name: "admin", marketplace: "maxy-platform" },
61
+ { name: "work", marketplace: "maxy-platform" },
62
+ ];
63
+ const installed = [
64
+ { name: "admin", marketplace: "maxy-platform" },
65
+ { name: "work", marketplace: "maxy-platform" },
66
+ ];
67
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, dirSrc);
68
+ assert.deepEqual(toResync.map(p => p.name), ["admin", "work"]);
52
69
  assert.equal(toInstall.length, 0);
53
- assert.equal(alreadyInstalled.length, 1);
70
+ assert.equal(alreadyInstalled.length, 0);
54
71
  });
55
- test("computeConfigureActions: skip when no configureSecret declared", () => {
56
- const installed = [{ name: "admin", marketplace: "maxy-platform" }];
57
- const actions = computeConfigureActions(installed, {});
58
- assert.equal(actions.length, 1);
59
- assert.equal(actions[0].kind, "skip-no-secret-name");
72
+ test("computeInstallActions: remote plugin already installed stays idempotent-skipped", () => {
73
+ const desired = [{ name: "telegram", marketplace: "claude-plugins-official" }];
74
+ const installed = [{ name: "telegram", marketplace: "claude-plugins-official" }];
75
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, dirSrc);
76
+ assert.equal(toInstall.length, 0);
77
+ assert.equal(toResync.length, 0);
78
+ assert.deepEqual(alreadyInstalled.map(p => p.name), ["telegram"]);
60
79
  });
61
- test("computeConfigureActions: skip when env var absent", () => {
62
- const installed = [{
63
- name: "telegram",
64
- marketplace: "claude-plugins-official",
65
- configureSecret: "TELEGRAM_BOT_TOKEN",
66
- }];
67
- const actions = computeConfigureActions(installed, {});
68
- assert.equal(actions.length, 1);
69
- assert.equal(actions[0].kind, "skip-no-secret-value");
80
+ test("computeInstallActions: directory-source plugin not yet installed goes to install (fresh build is clean)", () => {
81
+ const desired = [{ name: "admin", marketplace: "maxy-platform" }];
82
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, [], dirSrc);
83
+ assert.deepEqual(toInstall.map(p => p.name), ["admin"]);
84
+ assert.equal(toResync.length, 0);
85
+ assert.equal(alreadyInstalled.length, 0);
70
86
  });
71
- test("computeConfigureActions: configure when env var present", () => {
72
- const installed = [{
73
- name: "telegram",
74
- marketplace: "claude-plugins-official",
75
- configureSecret: "TELEGRAM_BOT_TOKEN",
76
- }];
77
- const actions = computeConfigureActions(installed, { TELEGRAM_BOT_TOKEN: "abc123" });
78
- assert.equal(actions.length, 1);
79
- assert.equal(actions[0].kind, "configure");
80
- if (actions[0].kind === "configure") {
81
- assert.equal(actions[0].secretValue, "abc123");
82
- assert.equal(actions[0].plugin.name, "telegram");
83
- }
87
+ test("computeInstallActions: name-only match on a remote marketplace skips install (legacy install state)", () => {
88
+ const desired = [{ name: "telegram", marketplace: "claude-plugins-official" }];
89
+ const installed = [{ name: "telegram", marketplace: "" }];
90
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, dirSrc);
91
+ assert.equal(toInstall.length, 0);
92
+ assert.equal(toResync.length, 0);
93
+ assert.equal(alreadyInstalled.length, 1);
94
+ });
95
+ test("computeInstallActions: name-only legacy match on a directory marketplace still resyncs", () => {
96
+ const desired = [{ name: "admin", marketplace: "maxy-platform" }];
97
+ const installed = [{ name: "admin", marketplace: "" }];
98
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, dirSrc);
99
+ assert.equal(toInstall.length, 0);
100
+ assert.deepEqual(toResync.map(p => p.name), ["admin"]);
101
+ assert.equal(alreadyInstalled.length, 0);
84
102
  });
85
103
  test("parseExternalPlugins: undefined returns []", () => {
86
104
  assert.deepEqual(parseExternalPlugins(undefined), []);
@@ -88,12 +106,12 @@ test("parseExternalPlugins: undefined returns []", () => {
88
106
  });
89
107
  test("parseExternalPlugins: well-formed array round-trips", () => {
90
108
  const raw = [
91
- { name: "telegram", marketplace: "claude-plugins-official", configureSecret: "TELEGRAM_BOT_TOKEN", channelPlugin: true },
109
+ { name: "telegram", marketplace: "claude-plugins-official", channelPlugin: true },
92
110
  { name: "discord", marketplace: "claude-plugins-official" },
93
111
  ];
94
112
  const out = parseExternalPlugins(raw);
95
113
  assert.deepEqual(out, [
96
- { name: "telegram", marketplace: "claude-plugins-official", configureSecret: "TELEGRAM_BOT_TOKEN", channelPlugin: true },
114
+ { name: "telegram", marketplace: "claude-plugins-official", channelPlugin: true },
97
115
  { name: "discord", marketplace: "claude-plugins-official" },
98
116
  ]);
99
117
  });
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ import { installAllBrewPackages } from "./brew-install.js";
16
16
  import { parseSwVers, isSupportedMacosVersion } from "./macos-version.js";
17
17
  import { decideChromiumAction, isSnapConfinedPath } from "./snap-chromium.js";
18
18
  import { classifyPortHolder } from "./preflight-port-classifier.js";
19
- import { parsePluginList, computeInstallActions, computeConfigureActions, parseExternalPlugins, } from "./lib/plugin-install.js";
19
+ import { parsePluginList, computeInstallActions, parseExternalPlugins, } from "./lib/plugin-install.js";
20
20
  import { findPremiumMcpDirs } from "./lib/premium-mcp-discover.js";
21
21
  import { pickLanInterface, mergeSmbConf, formatSambaMarker, } from "./samba-provision.js";
22
22
  import { networkInterfaces, userInfo } from "node:os";
@@ -1997,15 +1997,45 @@ function registerLocalAndExternalPlugins() {
1997
1997
  logFile(`[plugin-install] ERROR brand.externalPlugins parse error=${JSON.stringify(msg.slice(0, 200))}`);
1998
1998
  }
1999
1999
  desired.push(...externals);
2000
+ // The directory-source marketplaces are exactly the local trees discovered
2001
+ // from on-disk marketplace.json above. Remote marketplaces (the Anthropic
2002
+ // ones, GitHub externals) are never in this set, so they keep version-pinned
2003
+ // idempotence. (Task 643.)
2004
+ const directorySourceMarketplaces = new Set(localTrees.map(t => t.name));
2000
2005
  // Snapshot what's installed to compute the install set.
2001
2006
  const pluginList = spawnSync("claude", ["plugin", "list"], { stdio: "pipe", encoding: "utf-8", env: claudePluginEnv() });
2002
2007
  const installed = parsePluginList(pluginList.stdout ?? "");
2003
- const { toInstall, alreadyInstalled } = computeInstallActions(desired, installed);
2008
+ const { toInstall, toResync, alreadyInstalled } = computeInstallActions(desired, installed, directorySourceMarketplaces);
2004
2009
  for (const ref of alreadyInstalled) {
2005
2010
  logFile(`[plugin-install] ${ref.name}@${ref.marketplace} idempotent=true`);
2006
2011
  }
2012
+ // Single source of truth for the install invocation, shared by the resync
2013
+ // and fresh-install loops so a future flag/timeout/scope change cannot drift
2014
+ // between them.
2015
+ const pluginInstall = (ref) => spawnSync("claude", ["plugin", "install", `${ref.name}@${ref.marketplace}`, "--scope", "user"], { stdio: "pipe", encoding: "utf-8", timeout: 120_000, env: claudePluginEnv() });
2016
+ // Resync directory-source plugins (Task 643). A directory marketplace
2017
+ // overwrites its tree in place on upgrade with no version bump, so the
2018
+ // runtime cache snapshot the session loads from (installed_plugins.json
2019
+ // `installPath`) freezes at first-install time — `plugin install` and
2020
+ // `plugin update` both short-circuit on the pinned version and never
2021
+ // re-copy. Uninstall then install is the only sequence that rebuilds the
2022
+ // snapshot from the live tree; `install` reads the directory source live.
2023
+ // The uninstall+install pair is not atomic: a failed reinstall leaves the
2024
+ // plugin deregistered, surfaced by the ERROR line below — hardening tracked
2025
+ // in Task 645.
2026
+ for (const ref of toResync) {
2027
+ spawnSync("claude", ["plugin", "uninstall", `${ref.name}@${ref.marketplace}`, "--scope", "user"], { stdio: "pipe", encoding: "utf-8", timeout: 120_000, env: claudePluginEnv() });
2028
+ const install = pluginInstall(ref);
2029
+ if (install.status === 0) {
2030
+ logFile(`[plugin-install] recache ${ref.name}@${ref.marketplace}`);
2031
+ }
2032
+ else {
2033
+ const stderrShort = (install.stderr ?? "").split("\n")[0]?.slice(0, 200) ?? "";
2034
+ logFile(`[plugin-install] ERROR recache ${ref.name}@${ref.marketplace} exit=${install.status} stderr=${JSON.stringify(stderrShort)}`);
2035
+ }
2036
+ }
2007
2037
  for (const ref of toInstall) {
2008
- const install = spawnSync("claude", ["plugin", "install", `${ref.name}@${ref.marketplace}`, "--scope", "user"], { stdio: "pipe", encoding: "utf-8", timeout: 120_000, env: claudePluginEnv() });
2038
+ const install = pluginInstall(ref);
2009
2039
  if (install.status === 0) {
2010
2040
  logFile(`[plugin-install] ${ref.name}@${ref.marketplace} idempotent=false`);
2011
2041
  }
@@ -2014,30 +2044,51 @@ function registerLocalAndExternalPlugins() {
2014
2044
  logFile(`[plugin-install] ERROR ${ref.name}@${ref.marketplace} exit=${install.status} stderr=${JSON.stringify(stderrShort)}`);
2015
2045
  }
2016
2046
  }
2017
- // Configure-token pass only the externals carry configureSecret. For
2018
- // each, pipe `/<name>:configure <secret>` into a one-shot `claude`
2019
- // invocation. Missing env vars log SKIP and continue pairing is a
2020
- // manual per-operator step per the channels-reference docs.
2021
- const configureActions = computeConfigureActions(externals, process.env);
2022
- for (const action of configureActions) {
2023
- if (action.kind === "skip-no-secret-name") {
2024
- // Local plugins and externals without configureSecret — nothing to do.
2025
- continue;
2026
- }
2027
- if (action.kind === "skip-no-secret-value") {
2028
- logFile(`[plugin-configure] SKIP ${action.plugin.name} reason=no-secret-in-env env-var=${action.plugin.configureSecret}`);
2047
+ // Cache-vs-live audit (Task 643). Prove the per-plugin cache snapshot the
2048
+ // runtime loads from now matches the live tree, so drift is a logged
2049
+ // post-condition rather than a "no such skill" surprise in a later session.
2050
+ // Read the authoritative load path from installed_plugins.json
2051
+ // (`installPath`) rather than reconstructing the cache path from a pinned
2052
+ // version string. Warn-only: a count mismatch is surfaced, not fatal — a
2053
+ // benign skill directory without a SKILL.md must not abort the install.
2054
+ const countSkills = (skillsDir) => {
2055
+ if (!existsSync(skillsDir))
2056
+ return 0;
2057
+ let n = 0;
2058
+ for (const entry of readdirSync(skillsDir)) {
2059
+ if (existsSync(join(skillsDir, entry, "SKILL.md")))
2060
+ n++;
2061
+ }
2062
+ return n;
2063
+ };
2064
+ let installedPluginsMap = {};
2065
+ try {
2066
+ const ipPath = join(CLAUDE_CONFIG_DIR, "plugins", "installed_plugins.json");
2067
+ const parsed = JSON.parse(readFileSync(ipPath, "utf-8"));
2068
+ installedPluginsMap = parsed.plugins ?? {};
2069
+ }
2070
+ catch {
2071
+ // No readable installed_plugins.json — audit reports cache-skills=0; any
2072
+ // failed install above already logged a recache/install ERROR line.
2073
+ }
2074
+ // `treeDirByMarketplace` is keyed on the directory-source marketplace names
2075
+ // (= `directorySourceMarketplaces`), so a present tree dir is itself the
2076
+ // directory-source test — no separate Set lookup needed.
2077
+ const treeDirByMarketplace = new Map(localTrees.map(t => [t.name, t.dir]));
2078
+ for (const ref of desired) {
2079
+ const treeDir = treeDirByMarketplace.get(ref.marketplace);
2080
+ if (!treeDir)
2029
2081
  continue;
2030
- }
2031
- // The piped-stdin form: `echo '/<name>:configure <secret>' | claude --print`
2032
- // is the documented one-shot configure path. We do not log the secret value.
2033
- const cmd = `/${action.plugin.name}:configure ${action.secretValue}`;
2034
- const configure = spawnSync("claude", ["--print", "--input-format", "text"], { input: cmd, stdio: ["pipe", "pipe", "pipe"], encoding: "utf-8", timeout: 60_000, env: claudePluginEnv() });
2035
- if (configure.status === 0) {
2036
- logFile(`[plugin-configure] ${action.plugin.name} ok env-var=${action.plugin.configureSecret}`);
2037
- }
2038
- else {
2039
- const stderrShort = (configure.stderr ?? "").split("\n")[0]?.slice(0, 200) ?? "";
2040
- logFile(`[plugin-configure] ERROR ${action.plugin.name} exit=${configure.status} stderr=${JSON.stringify(stderrShort)}`);
2082
+ const liveSkills = countSkills(join(treeDir, ref.name, "skills"));
2083
+ // The resync installs at `--scope user`, so audit that scope's snapshot
2084
+ // not whichever entry happens to be first, since a host may also carry a
2085
+ // stale project-scope entry for the same plugin.
2086
+ const entries = installedPluginsMap[`${ref.name}@${ref.marketplace}`] ?? [];
2087
+ const installPath = (entries.find(e => e.scope === "user") ?? entries[0])?.installPath;
2088
+ const cacheSkills = installPath ? countSkills(join(installPath, "skills")) : 0;
2089
+ logFile(`[plugin-install] audit ${ref.name}@${ref.marketplace} live-skills=${liveSkills} cache-skills=${cacheSkills}`);
2090
+ if (liveSkills !== cacheSkills) {
2091
+ logFile(`[plugin-install] WARN cache-drift ${ref.name}@${ref.marketplace} live-skills=${liveSkills} cache-skills=${cacheSkills}`);
2041
2092
  }
2042
2093
  }
2043
2094
  // post-install assertion. The per-brand CLAUDE_CONFIG_DIR is the
@@ -28,15 +28,30 @@ export function parsePluginList(stdout) {
28
28
  return out;
29
29
  }
30
30
  /**
31
- * Given the desired plugins and what's already installed, return the
32
- * subset that still needs `claude plugin install <name>@<marketplace>`.
33
- * Idempotence rule: a plugin is "already installed" if either its
34
- * exact `<name>@<marketplace>` is in the installed set, OR a row exists
35
- * with the same name and any marketplace (the spawn would re-attach in
36
- * the operator's chosen scope). This mirrors the marketplace-add
37
- * idempotence used in src/index.ts:1012.
31
+ * Given the desired plugins, what's already installed, and which marketplaces
32
+ * are directory sources, classify each desired plugin into one of three
33
+ * buckets:
34
+ *
35
+ * - `toResync` — already installed AND from a directory-source
36
+ * marketplace. Directory marketplaces change content
37
+ * in place with no version bump, so `claude plugin
38
+ * install`/`update` short-circuit on the pinned
39
+ * version and never refresh the runtime cache snapshot
40
+ * (Task 643). These must be uninstalled then installed
41
+ * to rebuild the snapshot from the live tree.
42
+ * - `alreadyInstalled` — already installed AND from a remote (version-pinned)
43
+ * marketplace. Keeps the original idempotent skip.
44
+ * - `toInstall` — not installed yet. A fresh install builds a correct
45
+ * cache snapshot, so directory-source and remote
46
+ * plugins are handled identically here.
47
+ *
48
+ * "Already installed" matches either the exact `<name>@<marketplace>` tuple OR
49
+ * a row with the same name and any marketplace (legacy install state). The
50
+ * directory-source decision is keyed on the marketplace name regardless of
51
+ * which form matched, so a legacy name-only row for a directory plugin still
52
+ * resyncs.
38
53
  */
39
- export function computeInstallActions(desired, installed) {
54
+ export function computeInstallActions(desired, installed, directorySourceMarketplaces) {
40
55
  const byName = new Map();
41
56
  for (const i of installed) {
42
57
  if (!byName.has(i.name))
@@ -44,33 +59,23 @@ export function computeInstallActions(desired, installed) {
44
59
  byName.get(i.name).add(i.marketplace);
45
60
  }
46
61
  const toInstall = [];
62
+ const toResync = [];
47
63
  const alreadyInstalled = [];
48
64
  for (const d of desired) {
49
65
  const marketplaces = byName.get(d.name);
50
- if (marketplaces && (marketplaces.has(d.marketplace) || marketplaces.has(""))) {
66
+ const isInstalled = !!marketplaces && (marketplaces.has(d.marketplace) || marketplaces.has(""));
67
+ const isDirectorySource = directorySourceMarketplaces.has(d.marketplace);
68
+ if (isInstalled && isDirectorySource) {
69
+ toResync.push(d);
70
+ }
71
+ else if (isInstalled) {
51
72
  alreadyInstalled.push(d);
52
73
  }
53
74
  else {
54
75
  toInstall.push(d);
55
76
  }
56
77
  }
57
- return { toInstall, alreadyInstalled };
58
- }
59
- export function computeConfigureActions(installed, env) {
60
- const out = [];
61
- for (const p of installed) {
62
- if (!p.configureSecret) {
63
- out.push({ kind: "skip-no-secret-name", plugin: p });
64
- continue;
65
- }
66
- const value = env[p.configureSecret];
67
- if (typeof value !== "string" || value.length === 0) {
68
- out.push({ kind: "skip-no-secret-value", plugin: p });
69
- continue;
70
- }
71
- out.push({ kind: "configure", plugin: p, secretValue: value });
72
- }
73
- return out;
78
+ return { toInstall, toResync, alreadyInstalled };
74
79
  }
75
80
  /** Brand-config validator. brand.json#externalPlugins is optional; when
76
81
  * present, each entry must declare name + marketplace as non-empty
@@ -96,9 +101,6 @@ export function parseExternalPlugins(raw) {
96
101
  throw new Error(`brand.json#externalPlugins[${e.name}] missing 'marketplace'`);
97
102
  }
98
103
  const ref = { name: e.name, marketplace: e.marketplace };
99
- if (typeof e.configureSecret === "string" && e.configureSecret.length > 0) {
100
- ref.configureSecret = e.configureSecret;
101
- }
102
104
  if (e.channelPlugin === true) {
103
105
  ref.channelPlugin = true;
104
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-realagent-code",
3
- "version": "0.1.255",
3
+ "version": "0.1.256",
4
4
  "description": "Install Real Agent — Built for agents. By agents.",
5
5
  "bin": {
6
6
  "create-realagent-code": "./dist/index.js"
@@ -15,6 +15,14 @@
15
15
  "rfbPort": 5901,
16
16
  "websockifyPort": 6081,
17
17
  "cdpPort": 9223
18
+ },
19
+ {
20
+ "hostname": "siteoffice-code",
21
+ "configDir": ".siteoffice-code",
22
+ "vncDisplay": 101,
23
+ "rfbPort": 5902,
24
+ "websockifyPort": 6082,
25
+ "cdpPort": 9224
18
26
  }
19
27
  ]
20
28
  }
@@ -68,12 +68,12 @@
68
68
  "plugins": {
69
69
  "core": ["admin", "memory", "docs", "cloudflare", "anthropic", "workflows", "work", "business-assistant", "contacts", "scheduling", "email", "prompt-optimiser", "browser"],
70
70
  "defaultEnabled": ["sales"],
71
- "available": ["deep-research", "projects", "whatsapp", "replicate", "linkedin-import", "notion-import", "obsidian-import", "x-import"],
71
+ "available": ["deep-research", "projects", "whatsapp", "replicate", "linkedin-import", "notion-import", "obsidian-import", "x-import", "slides"],
72
72
  "excluded": ["telegram"]
73
73
  },
74
74
 
75
75
  "externalPlugins": [
76
- { "name": "discord", "marketplace": "claude-plugins-official", "configureSecret": "DISCORD_BOT_TOKEN", "channelPlugin": true },
76
+ { "name": "discord", "marketplace": "claude-plugins-official", "channelPlugin": true },
77
77
  { "name": "imessage", "marketplace": "claude-plugins-official", "channelPlugin": true },
78
78
  { "name": "superpowers", "marketplace": "claude-plugins-official" },
79
79
  { "name": "code-review", "marketplace": "claude-plugins-official" }
@@ -86,6 +86,16 @@ const EXCLUDED_FROM_INDEX = new Set([
86
86
  "CloudflareHostname",
87
87
  ]);
88
88
 
89
+ // Labels that carry searchable text but are required in the ADMIN index only,
90
+ // never the PUBLIC one. Distinct from EXCLUDED_FROM_INDEX (no searchable text
91
+ // at all): these DO hold text and stay enforced in the admin union, but their
92
+ // content must not be fulltext-matchable through the public-scope index.
93
+ // - FileArtifact (Task 514): physical files on disk, surfaced through the
94
+ // admin `/data` search box. Indexed in entity_search_admin; deliberately
95
+ // absent from entity_search_public so a public-scope read never ranks on
96
+ // an admin's on-disk file contents.
97
+ const ADMIN_ONLY_LABELS = new Set(["FileArtifact"]);
98
+
89
99
  /**
90
100
  * Canonical text-property list — every property the platform's writers
91
101
  * assign that the operator might search for. Extending the canon in a new
@@ -291,6 +301,7 @@ describe("entity_search fulltext indexes — universal-coverage + Task 416 field
291
301
  it("labels ⊇ Object.keys(GRAPH_LABEL_COLOURS) − {excluded} (Task 421)", () => {
292
302
  const missing = [...colourLabels]
293
303
  .filter((l) => !EXCLUDED_FROM_INDEX.has(l))
304
+ .filter((l) => (label === "public" ? !ADMIN_ONLY_LABELS.has(l) : true))
294
305
  .filter((l) => !decl.labels.has(l));
295
306
  expect(missing).toEqual([]);
296
307
  });
@@ -298,6 +309,7 @@ describe("entity_search fulltext indexes — universal-coverage + Task 416 field
298
309
  it("labels ⊇ every schema-declared label − {excluded} (Task 421)", () => {
299
310
  const missing = [...schemaDeclaredLabels]
300
311
  .filter((l) => !EXCLUDED_FROM_INDEX.has(l))
312
+ .filter((l) => (label === "public" ? !ADMIN_ONLY_LABELS.has(l) : true))
301
313
  .filter((l) => !decl.labels.has(l));
302
314
  expect(missing).toEqual([]);
303
315
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAK3B,cAAc,8BAA8B,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAQvD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAIvD,CAAC;AASH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAMpD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAEtD,CAAC;AAuCH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAoP1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAK3B,cAAc,8BAA8B,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAQvD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAIvD,CAAC;AASH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAQpD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAEtD,CAAC;AAuCH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAoP1B"}
@@ -132,6 +132,8 @@ exports.VECTOR_INDEXED_LABELS = new Set([
132
132
  "KnowledgeDocument", "ConversationArchive", "Section", "Chunk", "Project",
133
133
  "Position", "Conversation", "Message", "Event", "Workflow", "Preference",
134
134
  "Listing", "Idea", "TimelineEvent", "Report", "FileArtifact",
135
+ // Construction vertical (Task 652) — the four text-bearing labels.
136
+ "Job", "LineItem", "QuoteDocument", "VariationNote",
135
137
  ]);
136
138
  /**
137
139
  * Document/archive labels whose primary content is a long body. The safety-net
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -118,6 +118,8 @@ export const VECTOR_INDEXED_LABELS: ReadonlySet<string> = new Set([
118
118
  "KnowledgeDocument", "ConversationArchive", "Section", "Chunk", "Project",
119
119
  "Position", "Conversation", "Message", "Event", "Workflow", "Preference",
120
120
  "Listing", "Idea", "TimelineEvent", "Report", "FileArtifact",
121
+ // Construction vertical (Task 652) — the four text-bearing labels.
122
+ "Job", "LineItem", "QuoteDocument", "VariationNote",
121
123
  ]);
122
124
 
123
125
  /**