@rubytech/create-maxy-code 0.1.62 → 0.1.64

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 (689) hide show
  1. package/dist/__tests__/installer-specialist-registration.test.js +112 -0
  2. package/dist/index.js +22 -0
  3. package/dist/specialist-registration.js +78 -0
  4. package/package.json +1 -1
  5. package/payload/platform/plugins/admin/PLUGIN.md +22 -0
  6. package/payload/platform/plugins/admin/hooks/__tests__/turn-completed-graph-write.test.sh +50 -13
  7. package/payload/platform/plugins/admin/hooks/turn-completed-graph-write.sh +22 -21
  8. package/payload/platform/plugins/contacts/PLUGIN.md +9 -0
  9. package/payload/platform/plugins/docs/references/admin-session.md +57 -8
  10. package/payload/platform/plugins/docs/references/platform.md +4 -0
  11. package/payload/platform/plugins/email/PLUGIN.md +9 -0
  12. package/payload/platform/plugins/memory/PLUGIN.md +37 -0
  13. package/payload/platform/plugins/memory/mcp/dist/index.js +3 -3
  14. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  15. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js +137 -75
  16. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js.map +1 -1
  17. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +0 -17
  18. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts.map +1 -1
  19. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +32 -4
  20. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js.map +1 -1
  21. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +65 -0
  22. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +182 -0
  24. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +8 -8
  26. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -1
  27. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts +2 -0
  28. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +241 -0
  30. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +9 -0
  33. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts.map +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +9 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +10 -2
  40. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js +5 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js.map +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts +1 -1
  46. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js +5 -1
  48. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +4 -0
  51. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  52. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +1 -1
  53. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +4 -0
  54. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +4 -0
  57. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
  58. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -1
  59. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +4 -0
  60. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -1
  61. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -1
  62. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +4 -0
  63. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
  64. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -1
  65. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +4 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -1
  67. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -1
  68. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +4 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -1
  70. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  71. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +5 -0
  72. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  73. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -1
  74. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +4 -0
  75. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -1
  76. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -1
  77. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +4 -0
  78. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -1
  79. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts.map +1 -1
  80. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js +4 -0
  81. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js.map +1 -1
  82. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -1
  83. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +5 -0
  84. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  85. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  86. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +6 -0
  87. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  88. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -1
  89. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +4 -0
  90. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -1
  91. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
  92. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +4 -0
  93. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  94. package/payload/platform/plugins/memory/mcp/vitest.config.ts +10 -3
  95. package/payload/platform/plugins/outlook/PLUGIN.md +7 -0
  96. package/payload/platform/plugins/replicate/PLUGIN.md +3 -0
  97. package/payload/platform/plugins/scheduling/PLUGIN.md +8 -0
  98. package/payload/platform/plugins/tasks/PLUGIN.md +14 -0
  99. package/payload/platform/plugins/telegram/PLUGIN.md +3 -0
  100. package/payload/platform/plugins/waitlist/PLUGIN.md +7 -0
  101. package/payload/platform/plugins/whatsapp/PLUGIN.md +12 -0
  102. package/payload/platform/plugins/workflows/PLUGIN.md +8 -0
  103. package/payload/platform/services/claude-session-manager/dist/index.js +43 -1
  104. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  105. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +33 -0
  106. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  107. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +214 -59
  108. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  109. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +23 -0
  110. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -0
  111. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +141 -0
  112. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -0
  113. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +13 -2
  114. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
  115. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +150 -37
  116. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
  117. package/payload/platform/services/claude-session-manager/dist/types.d.ts +5 -0
  118. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  119. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
  120. package/payload/premium-plugins/real-agent/BUNDLE.md +2 -4
  121. package/payload/premium-plugins/real-agent/agents/compliance.md +1 -1
  122. package/payload/premium-plugins/real-agent/agents/valuer.md +1 -2
  123. package/payload/premium-plugins/real-agent/plugins/epc/.claude-plugin/plugin.json +3 -3
  124. package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +1 -1
  125. package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +1 -3
  126. package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +11 -12
  127. package/payload/premium-plugins/real-agent/plugins/loop/PLUGIN.md +27 -0
  128. package/payload/premium-plugins/real-agent/plugins/preval/.claude-plugin/plugin.json +1 -1
  129. package/payload/premium-plugins/real-agent/plugins/preval/PLUGIN.md +16 -8
  130. package/payload/premium-plugins/real-agent/plugins/preval/hooks/preval-prompt-required.sh +140 -0
  131. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +92 -40
  132. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +373 -0
  133. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +299 -115
  134. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +34 -19
  135. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +88 -19
  136. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +22 -0
  137. package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +8 -12
  138. package/payload/server/{chunk-2IKQERHN.js → chunk-S6PQA6Q4.js} +43 -34
  139. package/payload/server/maxy-edge.js +1 -1
  140. package/payload/server/public/assets/{admin-DhN3G8W7.js → admin-ymReS1mN.js} +1 -1
  141. package/payload/server/public/assets/{data-B2ZVXOcE.js → data-D6U2e85B.js} +1 -1
  142. package/payload/server/public/assets/{graph-BAMGPHrK.js → graph-C274PN27.js} +1 -1
  143. package/payload/server/public/assets/{graph-labels-D9eBbvxo.js → graph-labels-DQFzd1FY.js} +1 -1
  144. package/payload/server/public/assets/{page-DjdVMWCz.js → page-D-OLjort.js} +1 -1
  145. package/payload/server/public/assets/{page-CV27Al6Z.js → page-DFFt9_Q0.js} +1 -1
  146. package/payload/server/public/data.html +3 -3
  147. package/payload/server/public/graph.html +3 -3
  148. package/payload/server/public/index.html +4 -4
  149. package/payload/server/server.js +2 -2
  150. package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +0 -8
  151. package/payload/platform/plugins/brochures/PLUGIN.md +0 -38
  152. package/payload/platform/plugins/brochures/commands/make-brochure.md +0 -11
  153. package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
  154. package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +0 -192
  155. package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +0 -354
  156. package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
  157. package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +0 -142
  158. package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +0 -270
  159. package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
  160. package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +0 -166
  161. package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
  162. package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +0 -1288
  163. package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
  164. package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +0 -47
  165. package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
  166. package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
  167. package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +0 -2370
  168. package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +0 -372
  169. package/payload/platform/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
  170. package/payload/platform/plugins/brochures/skills/property-market-report/references/render.py +0 -267
  171. package/payload/platform/plugins/brochures/skills/property-market-report/references/template.html +0 -266
  172. package/payload/platform/plugins/brochures/skills/property-socials/SKILL.md +0 -141
  173. package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +0 -8
  174. package/payload/platform/plugins/buyers/PLUGIN.md +0 -34
  175. package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
  176. package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
  177. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
  178. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
  179. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
  180. package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
  181. package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
  182. package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
  183. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
  184. package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
  185. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
  186. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
  187. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
  188. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
  189. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
  190. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
  191. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
  192. package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
  193. package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
  194. package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
  195. package/payload/platform/plugins/epc/.claude-plugin/plugin.json +0 -17
  196. package/payload/platform/plugins/epc/PLUGIN.md +0 -85
  197. package/payload/platform/plugins/epc/mcp/dist/index.d.ts +0 -2
  198. package/payload/platform/plugins/epc/mcp/dist/index.d.ts.map +0 -1
  199. package/payload/platform/plugins/epc/mcp/dist/index.js +0 -117
  200. package/payload/platform/plugins/epc/mcp/dist/index.js.map +0 -1
  201. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts +0 -3
  202. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.d.ts.map +0 -1
  203. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js +0 -72
  204. package/payload/platform/plugins/epc/mcp/dist/lib/crypto.js.map +0 -1
  205. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts +0 -60
  206. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.d.ts.map +0 -1
  207. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js +0 -181
  208. package/payload/platform/plugins/epc/mcp/dist/lib/epc-api.js.map +0 -1
  209. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts +0 -3
  210. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  211. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js +0 -49
  212. package/payload/platform/plugins/epc/mcp/dist/lib/file-crypto.js.map +0 -1
  213. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts +0 -15
  214. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.d.ts.map +0 -1
  215. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js +0 -130
  216. package/payload/platform/plugins/epc/mcp/dist/lib/key-store.js.map +0 -1
  217. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts +0 -5
  218. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.d.ts.map +0 -1
  219. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js +0 -38
  220. package/payload/platform/plugins/epc/mcp/dist/lib/neo4j.js.map +0 -1
  221. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts +0 -4
  222. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  223. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js +0 -9
  224. package/payload/platform/plugins/epc/mcp/dist/tools/key-deregister.js.map +0 -1
  225. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts +0 -4
  226. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.d.ts.map +0 -1
  227. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js +0 -10
  228. package/payload/platform/plugins/epc/mcp/dist/tools/key-list.js.map +0 -1
  229. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts +0 -5
  230. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.d.ts.map +0 -1
  231. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js +0 -36
  232. package/payload/platform/plugins/epc/mcp/dist/tools/key-register.js.map +0 -1
  233. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts +0 -10
  234. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.d.ts.map +0 -1
  235. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js +0 -30
  236. package/payload/platform/plugins/epc/mcp/dist/tools/lookup.js.map +0 -1
  237. package/payload/platform/plugins/epc/mcp/package-lock.json +0 -2566
  238. package/payload/platform/plugins/epc/mcp/package.json +0 -21
  239. package/payload/platform/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  240. package/payload/platform/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  241. package/payload/platform/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  242. package/payload/platform/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  243. package/payload/platform/plugins/epc/mcp/src/index.ts +0 -156
  244. package/payload/platform/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  245. package/payload/platform/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  246. package/payload/platform/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  247. package/payload/platform/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  248. package/payload/platform/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  249. package/payload/platform/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  250. package/payload/platform/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  251. package/payload/platform/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  252. package/payload/platform/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  253. package/payload/platform/plugins/epc/mcp/tsconfig.json +0 -20
  254. package/payload/platform/plugins/epc/mcp/vitest.config.ts +0 -8
  255. package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +0 -8
  256. package/payload/platform/plugins/estate-business/PLUGIN.md +0 -64
  257. package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
  258. package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
  259. package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
  260. package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
  261. package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
  262. package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
  263. package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
  264. package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
  265. package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
  266. package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
  267. package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
  268. package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
  269. package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
  270. package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
  271. package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
  272. package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
  273. package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
  274. package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
  275. package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
  276. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
  277. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
  278. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
  279. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
  280. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
  281. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
  282. package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
  283. package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
  284. package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
  285. package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
  286. package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
  287. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
  288. package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
  289. package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
  290. package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
  291. package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
  292. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
  293. package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
  294. package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
  295. package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
  296. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
  297. package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
  298. package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
  299. package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
  300. package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
  301. package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
  302. package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
  303. package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
  304. package/payload/platform/plugins/estate-coaching/PLUGIN.md +0 -54
  305. package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
  306. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
  307. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
  308. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
  309. package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
  310. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
  311. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
  312. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
  313. package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
  314. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
  315. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
  316. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
  317. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
  318. package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
  319. package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
  320. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
  321. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
  322. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
  323. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
  324. package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
  325. package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
  326. package/payload/platform/plugins/estate-sales/PLUGIN.md +0 -52
  327. package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
  328. package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
  329. package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
  330. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
  331. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
  332. package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
  333. package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
  334. package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
  335. package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
  336. package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
  337. package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
  338. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
  339. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
  340. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
  341. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
  342. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
  343. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
  344. package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
  345. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
  346. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
  347. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
  348. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
  349. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
  350. package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
  351. package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
  352. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
  353. package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
  354. package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
  355. package/payload/platform/plugins/estate-teaching/PLUGIN.md +0 -30
  356. package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
  357. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
  358. package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
  359. package/payload/platform/plugins/leads/.claude-plugin/plugin.json +0 -8
  360. package/payload/platform/plugins/leads/PLUGIN.md +0 -61
  361. package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
  362. package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +0 -38
  363. package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
  364. package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
  365. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
  366. package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
  367. package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
  368. package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
  369. package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
  370. package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
  371. package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
  372. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
  373. package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
  374. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
  375. package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
  376. package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
  377. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
  378. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
  379. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
  380. package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
  381. package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
  382. package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +0 -72
  383. package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +0 -33
  384. package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
  385. package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +0 -53
  386. package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
  387. package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
  388. package/payload/platform/plugins/listings/.claude-plugin/plugin.json +0 -8
  389. package/payload/platform/plugins/listings/PLUGIN.md +0 -102
  390. package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
  391. package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +0 -38
  392. package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +0 -28
  393. package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
  394. package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
  395. package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
  396. package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
  397. package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
  398. package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
  399. package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
  400. package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
  401. package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
  402. package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
  403. package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
  404. package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
  405. package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
  406. package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +0 -78
  407. package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
  408. package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
  409. package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
  410. package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +0 -337
  411. package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
  412. package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
  413. package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
  414. package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
  415. package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
  416. package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
  417. package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
  418. package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
  419. package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
  420. package/payload/platform/plugins/loop/.claude-plugin/plugin.json +0 -17
  421. package/payload/platform/plugins/loop/PLUGIN.md +0 -233
  422. package/payload/platform/plugins/loop/mcp/dist/index.d.ts +0 -2
  423. package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +0 -1
  424. package/payload/platform/plugins/loop/mcp/dist/index.js +0 -320
  425. package/payload/platform/plugins/loop/mcp/dist/index.js.map +0 -1
  426. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
  427. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  428. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +0 -88
  429. package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
  430. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
  431. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  432. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
  433. package/payload/platform/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
  434. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
  435. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
  436. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js +0 -165
  437. package/payload/platform/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
  438. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
  439. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  440. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
  441. package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
  442. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
  443. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  444. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
  445. package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
  446. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
  447. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
  448. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
  449. package/payload/platform/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
  450. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  451. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  452. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
  453. package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  454. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
  455. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  456. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +0 -35
  457. package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
  458. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  459. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  460. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
  461. package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
  462. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
  463. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  464. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +0 -14
  465. package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
  466. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
  467. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  468. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +0 -43
  469. package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
  470. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
  471. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  472. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
  473. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  474. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  475. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  476. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  477. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  478. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  479. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  480. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
  481. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  482. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  483. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  484. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
  485. package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
  486. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
  487. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  488. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
  489. package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
  490. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
  491. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  492. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +0 -87
  493. package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
  494. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
  495. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  496. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
  497. package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
  498. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
  499. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
  500. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
  501. package/payload/platform/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
  502. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
  503. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  504. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
  505. package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
  506. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
  507. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  508. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +0 -11
  509. package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
  510. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
  511. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  512. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +0 -41
  513. package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
  514. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
  515. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
  516. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
  517. package/payload/platform/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
  518. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
  519. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  520. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +0 -49
  521. package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
  522. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
  523. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  524. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
  525. package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
  526. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
  527. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  528. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +0 -32
  529. package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
  530. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  531. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  532. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
  533. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
  534. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  535. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  536. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
  537. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  538. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  539. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  540. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
  541. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
  542. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  543. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  544. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
  545. package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
  546. package/payload/platform/plugins/loop/mcp/package-lock.json +0 -2549
  547. package/payload/platform/plugins/loop/mcp/package.json +0 -21
  548. package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
  549. package/payload/platform/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
  550. package/payload/platform/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
  551. package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
  552. package/payload/platform/plugins/loop/mcp/src/index.ts +0 -498
  553. package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +0 -105
  554. package/payload/platform/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
  555. package/payload/platform/plugins/loop/mcp/src/lib/key-store.ts +0 -221
  556. package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
  557. package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
  558. package/payload/platform/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
  559. package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
  560. package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +0 -86
  561. package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
  562. package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +0 -19
  563. package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +0 -70
  564. package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
  565. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
  566. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
  567. package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
  568. package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
  569. package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +0 -180
  570. package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
  571. package/payload/platform/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
  572. package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
  573. package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +0 -92
  574. package/payload/platform/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
  575. package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +0 -129
  576. package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
  577. package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +0 -95
  578. package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
  579. package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
  580. package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
  581. package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
  582. package/payload/platform/plugins/loop/mcp/tsconfig.json +0 -20
  583. package/payload/platform/plugins/loop/mcp/vitest.config.ts +0 -9
  584. package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
  585. package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
  586. package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
  587. package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
  588. package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +0 -54
  589. package/payload/platform/plugins/preval/.claude-plugin/plugin.json +0 -8
  590. package/payload/platform/plugins/preval/PLUGIN.md +0 -47
  591. package/payload/platform/plugins/preval/skills/property-preval/SKILL.md +0 -146
  592. package/payload/platform/plugins/preval/skills/property-preval/references/render.py +0 -630
  593. package/payload/platform/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -189
  594. package/payload/platform/plugins/preval/skills/property-preval/references/template.html +0 -312
  595. package/payload/platform/plugins/property-data/.claude-plugin/plugin.json +0 -17
  596. package/payload/platform/plugins/property-data/PLUGIN.md +0 -158
  597. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts +0 -2
  598. package/payload/platform/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
  599. package/payload/platform/plugins/property-data/mcp/dist/index.js +0 -236
  600. package/payload/platform/plugins/property-data/mcp/dist/index.js.map +0 -1
  601. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
  602. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
  603. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
  604. package/payload/platform/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
  605. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
  606. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  607. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
  608. package/payload/platform/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
  609. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
  610. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
  611. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
  612. package/payload/platform/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
  613. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
  614. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
  615. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
  616. package/payload/platform/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
  617. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
  618. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
  619. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
  620. package/payload/platform/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
  621. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
  622. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
  623. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
  624. package/payload/platform/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
  625. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
  626. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  627. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
  628. package/payload/platform/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
  629. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
  630. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
  631. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
  632. package/payload/platform/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
  633. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
  634. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
  635. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
  636. package/payload/platform/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
  637. package/payload/platform/plugins/property-data/mcp/package-lock.json +0 -2566
  638. package/payload/platform/plugins/property-data/mcp/package.json +0 -21
  639. package/payload/platform/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
  640. package/payload/platform/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
  641. package/payload/platform/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
  642. package/payload/platform/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
  643. package/payload/platform/plugins/property-data/mcp/src/index.ts +0 -409
  644. package/payload/platform/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
  645. package/payload/platform/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
  646. package/payload/platform/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
  647. package/payload/platform/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
  648. package/payload/platform/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
  649. package/payload/platform/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
  650. package/payload/platform/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
  651. package/payload/platform/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
  652. package/payload/platform/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
  653. package/payload/platform/plugins/property-data/mcp/tsconfig.json +0 -20
  654. package/payload/platform/plugins/property-data/mcp/vitest.config.ts +0 -8
  655. package/payload/platform/plugins/property-data/skills/property-data/SKILL.md +0 -77
  656. package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +0 -8
  657. package/payload/platform/plugins/vendors/PLUGIN.md +0 -33
  658. package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
  659. package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
  660. package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
  661. package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
  662. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
  663. package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
  664. package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
  665. package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
  666. package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
  667. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
  668. package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
  669. package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
  670. package/payload/premium-plugins/real-agent/plugins/epc/PLUGIN.md +0 -85
  671. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package-lock.json +0 -2566
  672. package/payload/premium-plugins/real-agent/plugins/epc/mcp/package.json +0 -21
  673. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/epc-api.test.ts +0 -251
  674. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/key-roundtrip.test.ts +0 -113
  675. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/lookup.test.ts +0 -181
  676. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/__tests__/schema-parity.test.ts +0 -54
  677. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/index.ts +0 -156
  678. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/crypto.ts +0 -79
  679. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/epc-api.ts +0 -241
  680. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/file-crypto.ts +0 -55
  681. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/key-store.ts +0 -172
  682. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/lib/neo4j.ts +0 -47
  683. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-deregister.ts +0 -9
  684. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-list.ts +0 -10
  685. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/key-register.ts +0 -44
  686. package/payload/premium-plugins/real-agent/plugins/epc/mcp/src/tools/lookup.ts +0 -43
  687. package/payload/premium-plugins/real-agent/plugins/epc/mcp/tsconfig.json +0 -20
  688. package/payload/premium-plugins/real-agent/plugins/epc/mcp/vitest.config.ts +0 -8
  689. package/payload/premium-plugins/real-agent/plugins/listings/skills/epc-checker/SKILL.md +0 -38
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "property-preval inputs",
4
- "description": "Single-source contract for render.py. Mirrors the 12 property-data MCP responses + 1 EPC MCP response for one full UK address, plus operator-supplied brand, subject, market_summary, and agent_listings.",
4
+ "description": "Single-source contract for render.py. Mirrors the 12 property-data MCP responses for one full UK address, plus operator-supplied brand, subject (including the three EPC certificate fields pasted before invocation), and agent_listings. `subject.narrative` and `market_summary` are composed by the agent from the fan-out — not operator-supplied.",
5
5
  "type": "object",
6
6
  "required": [
7
7
  "out_dir", "filename_stem", "address", "postcode", "generated",
8
8
  "brand", "subject", "valuation", "area", "demand_trend",
9
- "market_summary", "agent_listings"
9
+ "market_summary", "agent_listings", "agent_overrides"
10
10
  ],
11
11
  "properties": {
12
12
  "out_dir": { "type": "string", "description": "Absolute path to the output directory (created if missing)." },
@@ -14,6 +14,7 @@
14
14
  "address": { "type": "string", "description": "Full UK address as the operator gave it." },
15
15
  "postcode": { "type": "string", "description": "Postcode derived from the address, e.g. 'CM23 2UJ'." },
16
16
  "generated": { "type": "string", "description": "Human date, e.g. '19 May 2026'." },
17
+ "variant": { "type": "string", "enum": ["premium", "on-brand"], "description": "Render variant. 'premium' (default) keeps the editorial Cormorant/Lora/Inter typography lock and only applies the brand's colours + logo. 'on-brand' overrides the type system with brand.font_display + brand.font_body — the pack follows the agent's identity end-to-end. Decision rule: if the operator says 'premium' use premium; if brand.font_display + brand.font_body are both set and the operator did not say premium, default to 'on-brand'; otherwise premium." },
17
18
 
18
19
  "brand": {
19
20
  "type": "object",
@@ -28,25 +29,26 @@
28
29
  "paper_banded": { "type": "string" },
29
30
  "rule": { "type": "string" },
30
31
  "logo_light": { "type": "string", "description": "Optional filesystem path to white-on-transparent logo for the cover." },
31
- "logo_dark": { "type": "string", "description": "Optional filesystem path to full-colour logo for body-page headers." }
32
+ "logo_dark": { "type": "string", "description": "Optional filesystem path to full-colour logo for body-page headers." },
33
+ "agent_name": { "type": "string", "description": "Optional. Name of the individual agent preparing the pitch — printed in the cover's 'Prepared by' meta cell. Falls back to brand.name when omitted." },
34
+ "font_display": { "type": "string", "description": "Optional. CSS font-family value for the display typeface (h1/h2/h4/eyebrows). Only honoured when variant='on-brand'. e.g. '\"Azo Sans\", system-ui, sans-serif'." },
35
+ "font_body": { "type": "string", "description": "Optional. CSS font-family value for body typography (paragraphs, lists). Only honoured when variant='on-brand'. e.g. 'Poppins, sans-serif'." }
32
36
  }
33
37
  },
34
38
 
35
39
  "subject": {
36
40
  "type": "object",
37
- "required": ["cover_hero", "sqft", "sqft_m2"],
41
+ "required": ["cover_hero", "total_floor_area_m2", "current_energy_rating", "lodgement_date"],
38
42
  "properties": {
39
- "cover_hero": { "type": "string", "description": "Filesystem path or URL to a photo of the subject property — required for the cover. Renderer asserts the file exists, is ≥ 1200×800, and is not symlinked to another property's folder." },
40
- "beds": { "type": ["integer", "null"] },
41
- "type": { "type": ["string", "null"], "description": "e.g. 'Semi-detached', 'Terraced', 'Flat'." },
42
- "tenure": { "type": ["string", "null"], "description": "e.g. 'Freehold', 'Leasehold'." },
43
- "condition": { "type": ["string", "null"], "description": "'well' | 'average' | 'needs work'." },
44
- "sqft": { "type": "integer", "description": "Total internal area in square feet. Required. Pulled from EPC (m² × 10.7639, rounded) when available; operator paste-in is the only override. Null aborts the run." },
45
- "sqft_m2": { "type": "number", "description": "Total internal area in square metres from the EPC register. Required alongside sqft." },
46
- "epc_current": { "type": ["string", "null"], "description": "Current energy rating, e.g. 'C'." },
47
- "epc_potential": { "type": ["string", "null"], "description": "Potential energy rating, e.g. 'B'." },
48
- "epc_lodgement": { "type": ["string", "null"], "description": "ISO date of the EPC lodgement." },
49
- "narrative": { "type": ["string", "null"], "description": "One short paragraph the operator writes about the subject — shown under the valuation panel." },
43
+ "cover_hero": { "type": "string", "description": "Filesystem path or URL to a photo of the subject property — required for the cover. Renderer asserts the file exists, is ≥ 1200×800, and is not symlinked to another property's folder." },
44
+ "beds": { "type": ["integer", "null"] },
45
+ "type": { "type": ["string", "null"], "description": "e.g. 'Semi-detached', 'Terraced', 'Flat'." },
46
+ "tenure": { "type": ["string", "null"], "description": "e.g. 'Freehold', 'Leasehold'." },
47
+ "condition": { "type": ["string", "null"], "description": "'well' | 'average' | 'needs work'." },
48
+ "total_floor_area_m2": { "type": "number", "description": "Total internal area in square metres, copied verbatim from the EPC certificate. Operator pastes this into inputs.json before invocation. Null aborts with epc-certificate-not-supplied." },
49
+ "current_energy_rating": { "type": "string", "description": "Current energy rating from the EPC certificate, e.g. 'C'. Operator paste-in. Null aborts with epc-certificate-not-supplied." },
50
+ "lodgement_date": { "type": "string", "description": "ISO date of the EPC certificate's lodgement, e.g. '2018-04-21'. Operator paste-in. Null aborts with epc-certificate-not-supplied." },
51
+ "narrative": { "type": ["string", "null"], "description": "One short paragraph (1–3 sentences) under the valuation panel. Composed by the agent from EPC + council-tax records + adjustments — not operator-supplied." },
50
52
  "adjustments": {
51
53
  "type": "array",
52
54
  "description": "Operator-curated esoteric factors that shift the headline range. Deltas sum linearly into the final factor (1 + Σ delta_pct/100).",
@@ -83,6 +85,7 @@
83
85
  "date": { "type": "string" },
84
86
  "address": { "type": "string" },
85
87
  "type": { "type": "string" },
88
+ "beds": { "type": ["integer", "null"], "description": "Bedroom count from the Land Registry transaction; some rows are null in the source." },
86
89
  "price": { "type": "integer" }
87
90
  }
88
91
  }
@@ -155,10 +158,11 @@
155
158
 
156
159
  "market_summary": {
157
160
  "type": "object",
161
+ "description": "Composed by the agent from the 12-call PropertyData fan-out — not operator-supplied. See SKILL.md \"Composed by the agent from the fan-out\" for the field-by-field mapping.",
158
162
  "required": ["headline", "paragraphs", "demand_gauge_position", "price_growth_note", "demand_note"],
159
163
  "properties": {
160
164
  "headline": { "type": "string", "description": "One-line display-italic h2 for the market context page." },
161
- "paragraphs": { "type": "array", "minItems": 2, "items": { "type": "string" }, "description": "2–3 short paragraphs. First gets a drop cap. Fewer than 2 aborts the run." },
165
+ "paragraphs": { "type": "array", "minItems": 2, "items": { "type": "string" }, "description": "2–3 short paragraphs. First gets a drop cap. Fewer than 2 aborts the run with `market-summary-too-thin`." },
162
166
  "demand_gauge_position": { "type": "string", "description": "Percentage string for the gauge marker position, e.g. '62%'." },
163
167
  "price_growth_note": { "type": "string" },
164
168
  "demand_note": { "type": "string" }
@@ -172,7 +176,7 @@
172
176
  "description": "Agent's own recent listings to feature on the closing page. Operator paste-in (not the PropertyData sample). Empty array aborts the run.",
173
177
  "items": {
174
178
  "type": "object",
175
- "required": ["address", "price", "status", "slug"],
179
+ "required": ["address", "price", "status", "slug", "origin"],
176
180
  "properties": {
177
181
  "url": { "type": ["string", "null"], "description": "Source URL — listing card becomes an <a> when present." },
178
182
  "address": { "type": "string" },
@@ -180,10 +184,21 @@
180
184
  "beds": { "type": ["integer", "null"] },
181
185
  "type": { "type": ["string", "null"] },
182
186
  "image": { "type": ["string", "null"], "description": "Path or URL to a tile photo for the card." },
183
- "status": { "type": "string", "description": "'Sold' | 'Under offer' | 'For sale'." },
184
- "slug": { "type": "string", "description": "Used to name the copied image file under img/." }
187
+ "status": { "type": "string", "enum": ["Sold", "Under offer", "For sale"], "description": "Operator picks; no default. The gate aborts if status was set when the source property.json had status:null without agent_overrides.listings_status_curated." },
188
+ "slug": { "type": "string", "description": "Used to name the copied image file under img/." },
189
+ "origin": { "type": "string", "description": "'operator' when the operator typed the row by hand, or the filesystem path of the source property.json the row was copied from." }
185
190
  }
186
191
  }
192
+ },
193
+
194
+ "agent_overrides": {
195
+ "type": "object",
196
+ "description": "Explicit operator confirmations that authorise bypass of adherence gates. Each override is a named boolean that lands next to the disputed value in inputs.json — auditable post-hoc.",
197
+ "required": ["brand_selected_by_operator", "listings_status_curated"],
198
+ "properties": {
199
+ "brand_selected_by_operator": { "type": "boolean", "description": "True only when the operator told the agent which estate agent is pitching. Inferring brand from on-disk DESIGN.md files is invention." },
200
+ "listings_status_curated": { "type": "boolean", "description": "True only when the operator explicitly signed off on each agent_listings[].status value." }
201
+ }
187
202
  }
188
203
  }
189
204
  }
@@ -139,7 +139,7 @@
139
139
  .gauge-ends{display:flex;justify-content:space-between;font-family:var(--sans);font-weight:500;font-size:7.5pt;letter-spacing:1.5pt;text-transform:uppercase;color:var(--text-muted);margin-top:2mm}
140
140
 
141
141
  /* --- SPARKLINE --- */
142
- .spark{width:100%;height:36mm;display:block;background:var(--surface-card);border:1px solid var(--rule-300);border-radius:var(--radius-md)}
142
+ .spark{width:100%;height:48mm;display:block;background:var(--surface-card);border:1px solid var(--rule-300);border-radius:var(--radius-md)}
143
143
  .spark .pl{fill:none;stroke:var(--teal-900);stroke-width:1.4}
144
144
  .spark .pl-psf{fill:none;stroke:var(--gold-500);stroke-width:1.4;stroke-dasharray:2 1.5}
145
145
  .spark .pt{fill:var(--teal-900)}
@@ -179,6 +179,7 @@
179
179
  .wm.small .wm-name{font-size:20pt}
180
180
  .wm.small .wm-sub{margin-top:.8mm;font-size:5.5pt;letter-spacing:1.8pt}
181
181
  </style>
182
+ <!-- REPLACE: variant_css -->
182
183
  </head>
183
184
  <body>
184
185
 
@@ -193,11 +194,11 @@
193
194
  <div class="cover-rule"></div>
194
195
  <h4 style="color:var(--gold-500);margin:6mm 0 4mm"><!-- REPLACE: brand_name --> · Pre-valuation</h4>
195
196
  <h1><!-- REPLACE: address --></h1>
196
- <p class="lede">A view of what this property is worth — <!-- REPLACE: generated -->.</p>
197
+ <p class="lede">Market context and comparable evidence prepared <!-- REPLACE: generated -->.</p>
197
198
  <div style="margin-top:8mm"><span class="pc-chip"><!-- REPLACE: postcode --></span></div>
198
199
  </div>
199
200
  <dl class="cover-meta">
200
- <div><dt>Report</dt><dd>Pre-valuation</dd></div>
201
+ <div><dt>Prepared by</dt><dd style="font-size:13pt;line-height:1.2"><!-- REPLACE: prepared_by --></dd></div>
201
202
  <div><dt>Address</dt><dd style="font-size:11pt;line-height:1.2"><!-- REPLACE: address_short --></dd></div>
202
203
  <div><dt>Postcode</dt><dd><!-- REPLACE: postcode --></dd></div>
203
204
  <div><dt>Generated</dt><dd><!-- REPLACE: generated --></dd></div>
@@ -206,22 +207,22 @@
206
207
  <div class="doc-foot" style="z-index:2"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>01</span></div>
207
208
  </section>
208
209
 
209
- <!-- PAGE 2 — SUBJECT VALUATION -->
210
+ <!-- PAGE 2 — ABOUT THE PROPERTY -->
210
211
  <section class="page">
211
212
  <header class="doc-head">
212
213
  <!-- REPLACE: wordmark_dark -->
213
- <div class="breadcrumb">Subject valuation · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
214
+ <div class="breadcrumb">About the property · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
214
215
  </header>
215
216
  <div class="eyebrow">Subject property</div>
216
- <h2 style="margin-top:3mm">What this property is worth.</h2>
217
+ <h2 style="margin-top:3mm">About the property.</h2>
217
218
  <div class="kpis">
218
219
  <div class="kpi subject"><div class="label">Floor area</div><div class="value"><!-- REPLACE: kpi_subject_sqft --></div><div class="sub"><!-- REPLACE: kpi_subject_sqft_sub --></div></div>
219
220
  <div class="kpi subject"><div class="label">Bedrooms</div><div class="value"><!-- REPLACE: kpi_subject_beds --></div><div class="sub">As recorded</div></div>
220
221
  <div class="kpi subject"><div class="label">EPC rating</div><div class="value"><!-- REPLACE: kpi_subject_epc --></div><div class="sub"><!-- REPLACE: kpi_subject_epc_sub --></div></div>
221
222
  <div class="kpi subject"><div class="label">Type</div><div class="value" style="font-size:16pt"><!-- REPLACE: kpi_subject_type --></div><div class="sub"><!-- REPLACE: kpi_subject_tenure --></div></div>
222
223
  </div>
223
- <!-- REPLACE: valuation_block -->
224
224
  <p class="muted" style="margin-top:6mm;max-width:170mm"><!-- REPLACE: subject_narrative --></p>
225
+ <!-- REPLACE: notable_features -->
225
226
  <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>02</span></div>
226
227
  </section>
227
228
 
@@ -234,7 +235,7 @@
234
235
  <div class="eyebrow">Market summary</div>
235
236
  <h2 style="margin-top:3mm"><!-- REPLACE: summary_headline --></h2>
236
237
  <div class="summary" style="max-width:170mm"><!-- REPLACE: summary_paragraphs --></div>
237
- <div style="height:5mm"></div>
238
+ <div style="height:3mm"></div>
238
239
  <div class="kpis three">
239
240
  <div class="kpi gold"><div class="label">Average asking £</div><div class="value"><!-- REPLACE: kpi_avg_asking --></div><div class="sub">Current listings · <!-- REPLACE: postcode --></div></div>
240
241
  <div class="kpi"><div class="label">Average sold £</div><div class="value"><!-- REPLACE: kpi_avg_sold --></div><div class="sub">Completed transactions</div></div>
@@ -257,26 +258,94 @@
257
258
  <p class="muted" style="margin-top:4mm"><!-- REPLACE: demand_note --></p>
258
259
  </div>
259
260
  </div>
260
- <div class="panel" style="margin-top:5mm">
261
- <h4>7-year price trend · £ and £/sqft</h4>
261
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>03</span></div>
262
+ </section>
263
+
264
+ <!-- PAGE 4 — MARKET DEPTH (chart + stock mix + rental pillar) -->
265
+ <section class="page">
266
+ <header class="doc-head">
267
+ <!-- REPLACE: wordmark_dark -->
268
+ <div class="breadcrumb">Market depth · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
269
+ </header>
270
+ <div class="eyebrow">Price trajectory</div>
271
+ <h2 style="margin-top:3mm;margin-bottom:5mm">Seven years of CM23 pricing.</h2>
272
+ <div class="panel" style="padding:5mm">
273
+ <div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:3mm">
274
+ <h4 style="margin-bottom:0">£ headline vs achieved £/sqft</h4>
275
+ <div class="legend" style="margin-top:0"><span><span class="sw"></span>Average £</span><span><span class="sw gold"></span>£/sqft</span></div>
276
+ </div>
262
277
  <!-- REPLACE: spark_svg -->
263
- <div class="legend"><span><span class="sw"></span>Average £</span><span><span class="sw gold"></span>£/sqft</span></div>
264
278
  </div>
265
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>03</span></div>
279
+ <div style="height:8mm"></div>
280
+ <div class="eyebrow">Output area &amp; rental pillar</div>
281
+ <div class="two-col" style="align-items:stretch;margin-top:3mm">
282
+ <div class="panel banded" style="display:flex;flex-direction:column">
283
+ <h4>Output-area stock mix</h4>
284
+ <div style="margin-top:3mm;display:flex;flex-direction:column;gap:2mm"><!-- REPLACE: type_dist_rows --></div>
285
+ <p class="muted" style="margin-top:auto;padding-top:3mm">Detached stock is the scarce type in this output area.</p>
286
+ </div>
287
+ <div class="panel" style="display:flex;flex-direction:column">
288
+ <h4>Rental pillar</h4>
289
+ <div style="margin-top:3mm"><span class="pill"><!-- REPLACE: rental_rating --></span></div>
290
+ <div class="kpis" style="grid-template-columns:repeat(3,1fr);margin-top:4mm;margin-bottom:0">
291
+ <div class="kpi"><div class="label">For rent</div><div class="value"><!-- REPLACE: rental_for_rent --></div><div class="sub">homes</div></div>
292
+ <div class="kpi"><div class="label">DoM</div><div class="value"><!-- REPLACE: rental_dom --></div><div class="sub">days · avg</div></div>
293
+ <div class="kpi"><div class="label">Take-up</div><div class="value"><!-- REPLACE: rental_turnover --></div><div class="sub">of stock · mo</div></div>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>04</span></div>
298
+ </section>
299
+
300
+ <!-- PAGE 5 — SELLER PREP (what gets the best price) -->
301
+ <section class="page">
302
+ <header class="doc-head">
303
+ <!-- REPLACE: wordmark_dark -->
304
+ <div class="breadcrumb">What gets the best price · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
305
+ </header>
306
+ <div class="eyebrow">Quick wins for the vendor</div>
307
+ <h2 style="margin-top:3mm;margin-bottom:3mm">What gets the best price.</h2>
308
+ <p class="muted" style="max-width:170mm;margin-bottom:6mm">Photography and the first viewings carry more weight than any other moment in the campaign. These are the highest-impact prep moves — none are expensive, all are noticed by buyers.</p>
309
+
310
+ <div class="two-col" style="align-items:start;gap:8mm">
311
+ <div class="panel banded" style="padding:6mm">
312
+ <h4 style="margin-bottom:4mm">Five high-impact moves</h4>
313
+ <ol style="margin:0;padding-left:5mm;font-family:var(--body);font-size:10.5pt;line-height:1.55">
314
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Declutter ruthlessly.</strong> Surfaces should carry roughly half what they normally do. Buyers need space to project themselves into the home, not your life on display.</li>
315
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Deep-clean before any staging.</strong> Especially: oven, grout, windows, garden edges. Staging on top of dirt doesn't read.</li>
316
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Open up the light.</strong> Curtains fully open, lamps on even in daytime, mirrors to bounce light. Most homes photograph noticeably better with every light on.</li>
317
+ <li style="margin-bottom:3.5mm"><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Fix the small things.</strong> Dripping taps, chipped paint, loose handles, squeaky doors. Buyers register every defect — and discount for each one.</li>
318
+ <li><strong style="font-family:var(--display);font-style:italic;font-weight:500;font-size:12pt">Define each room.</strong> A study-in-a-bedroom shows as a study. Return rooms to their named purpose for photos and viewings.</li>
319
+ </ol>
320
+ </div>
321
+ <div class="panel" style="padding:6mm">
322
+ <h4 style="margin-bottom:4mm">Common mistakes</h4>
323
+ <ul style="margin:0;padding-left:5mm;font-family:var(--body);font-size:10.5pt;line-height:1.55">
324
+ <li style="margin-bottom:3mm">Strong air fresheners — they signal you're hiding something.</li>
325
+ <li style="margin-bottom:3mm">Personal photos, religious items, children's artwork — the buyer can't project on top.</li>
326
+ <li style="margin-bottom:3mm">A cold house in winter — no one buys a cold home enthusiastically.</li>
327
+ <li style="margin-bottom:3mm">Overgrown garden or untidy front — the first ten seconds are kerb appeal.</li>
328
+ <li>Wardrobes left untouched — buyers do open them. Reduce by half.</li>
329
+ </ul>
330
+ <p class="muted" style="margin-top:6mm;font-size:9pt;font-style:italic"><!-- REPLACE: prepared_by --> can walk you through this room-by-room ahead of photo day.</p>
331
+ </div>
332
+ </div>
333
+
334
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>05</span></div>
266
335
  </section>
267
336
 
268
- <!-- PAGE 4 — COMPARABLES (FULL-WIDTH, STACKED) -->
337
+ <!-- PAGE 6 — COMPARABLES (FULL-WIDTH, STACKED) -->
269
338
  <section class="page">
270
339
  <header class="doc-head">
271
340
  <!-- REPLACE: wordmark_dark -->
272
341
  <div class="breadcrumb">Comparables · <!-- REPLACE: postcode --> · <!-- REPLACE: generated --></div>
273
342
  </header>
274
343
  <div class="eyebrow">Evidence</div>
275
- <h2 style="margin-top:3mm;margin-bottom:5mm">The comparables behind the range.</h2>
344
+ <h2 style="margin-top:3mm;margin-bottom:5mm">Comparable transactions and live listings.</h2>
276
345
  <div class="panel banded">
277
346
  <h4>Nearest sold transactions · Land Registry</h4>
278
347
  <table class="cmp" style="margin-top:3mm">
279
- <tr><th>Date</th><th>Address</th><th>Type</th><th style="text-align:right">Price</th></tr>
348
+ <tr><th>Date</th><th>Address</th><th>Type</th><th>Beds</th><th style="text-align:right">Price</th></tr>
280
349
  <!-- REPLACE: sold_comps_rows -->
281
350
  </table>
282
351
  </div>
@@ -286,10 +355,10 @@
286
355
  <!-- REPLACE: asking_comps_tiles -->
287
356
  </div>
288
357
  </div>
289
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>04</span></div>
358
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Property Intelligence</span><span>06</span></div>
290
359
  </section>
291
360
 
292
- <!-- PAGE 5 — AGENT LISTINGS + SOURCES -->
361
+ <!-- PAGE 7 — AGENT LISTINGS + SOURCES -->
293
362
  <section class="page">
294
363
  <header class="doc-head">
295
364
  <!-- REPLACE: wordmark_dark -->
@@ -302,10 +371,10 @@
302
371
  <div class="sources">
303
372
  <h4>Sources &amp; methodology</h4>
304
373
  <p><strong>Sources.</strong> PropertyData (asking, sold, demand, growth, crime, flood, council tax, property-type mix). HM Land Registry (sold transactions). Home Office (recorded crime). Environment Agency (flood risk). Valuation Office Agency (council-tax bands). Department for Levelling Up, Housing &amp; Communities — EPC register (subject floor area &amp; energy rating).</p>
305
- <p><strong>Method.</strong> Twelve PropertyData endpoints called on the postcode derived from the address, plus one EPC lookup on the subject address. Valuation range = subject floor area × the Land Registry 70-percent £/sqft band, with operator-supplied adjustments applied linearly. Live and recent listings shown on the previous page were picked by <!-- REPLACE: brand_name -->.</p>
374
+ <p><strong>Method.</strong> Twelve PropertyData endpoints called on the postcode derived from the address, plus the EPC certificate fields for the subject. This pack does <em>not</em> quote a numeric valuation — the human agent values the property in person, drawing on the Land Registry sold £/sqft band, the live asking £/sqft, and the comparables on this page. Live and recent listings shown on the next page were picked by <!-- REPLACE: brand_name -->.</p>
306
375
  <p><strong>Accuracy.</strong> Property data can change rapidly. Figures are estimates — obtain independent professional advice for specific decisions. This pack is not financial or investment advice.</p>
307
376
  </div>
308
- <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Generated <!-- REPLACE: generated --> · <!-- REPLACE: postcode --></span><span>05</span></div>
377
+ <div class="doc-foot"><span><!-- REPLACE: brand_name --> · Generated <!-- REPLACE: generated --> · <!-- REPLACE: postcode --></span><span>07</span></div>
309
378
  </section>
310
379
 
311
380
  </body>
@@ -4,48 +4,70 @@ description: "PropertyData UK market analytics — postcode-keyed valuation, ask
4
4
  tools:
5
5
  - name: property-data-key-register
6
6
  publicAllowlist: false
7
+ adminAllowlist: false
7
8
  - name: property-data-key-deregister
8
9
  publicAllowlist: false
10
+ adminAllowlist: false
9
11
  - name: property-data-key-list
10
12
  publicAllowlist: false
13
+ adminAllowlist: false
11
14
  - name: property-data-valuation-sale
12
15
  publicAllowlist: false
16
+ adminAllowlist: false
13
17
  - name: property-data-valuation-rent
14
18
  publicAllowlist: false
19
+ adminAllowlist: false
15
20
  - name: property-data-prices
16
21
  publicAllowlist: false
22
+ adminAllowlist: false
17
23
  - name: property-data-prices-rent
18
24
  publicAllowlist: false
25
+ adminAllowlist: false
19
26
  - name: property-data-sold-prices
20
27
  publicAllowlist: false
28
+ adminAllowlist: false
21
29
  - name: property-data-demand
22
30
  publicAllowlist: false
31
+ adminAllowlist: false
23
32
  - name: property-data-yields
24
33
  publicAllowlist: false
34
+ adminAllowlist: false
25
35
  - name: property-data-growth
26
36
  publicAllowlist: false
37
+ adminAllowlist: false
27
38
  - name: property-data-national-hpi
28
39
  publicAllowlist: false
40
+ adminAllowlist: false
29
41
  - name: property-data-prices-per-sqf
30
42
  publicAllowlist: false
43
+ adminAllowlist: false
31
44
  - name: property-data-sold-prices-per-sqf
32
45
  publicAllowlist: false
46
+ adminAllowlist: false
33
47
  - name: property-data-crime
34
48
  publicAllowlist: false
49
+ adminAllowlist: false
35
50
  - name: property-data-flood-risk
36
51
  publicAllowlist: false
52
+ adminAllowlist: false
37
53
  - name: property-data-council-tax
38
54
  publicAllowlist: false
55
+ adminAllowlist: false
39
56
  - name: property-data-planning-applications
40
57
  publicAllowlist: false
58
+ adminAllowlist: false
41
59
  - name: property-data-address-match-uprn
42
60
  publicAllowlist: false
61
+ adminAllowlist: false
43
62
  - name: property-data-growth-psf
44
63
  publicAllowlist: false
64
+ adminAllowlist: false
45
65
  - name: property-data-demand-rent
46
66
  publicAllowlist: false
67
+ adminAllowlist: false
47
68
  - name: property-data-property-types
48
69
  publicAllowlist: false
70
+ adminAllowlist: false
49
71
  skills:
50
72
  - skills/property-data/SKILL.md
51
73
  always: false
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## 1. Purpose
11
11
 
12
- Compress what is normally a half-day of admin — terms of business signed, EPC ordered, photographer booked, floorplan commissioned, listing copy written, particulars produced, portal launches scheduled — into a guided sequence the agent reviews and approves in fifteen minutes.
12
+ Compress what is normally a half-day of admin — terms of business signed, photographer booked, floorplan commissioned, listing copy written, particulars produced, portal launches scheduled — into a guided sequence the agent reviews and approves in fifteen minutes.
13
13
 
14
14
  This workflow is the second-highest-value moment in the agent's week (after winning the instruction itself). Done well, the property is on the portals within 72 hours of the appointment rather than 7–10 days. That speed compounds: faster on-market means more viewings in the first weekend, which is when offers happen.
15
15
 
@@ -31,8 +31,6 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
31
31
 
32
32
  **Terms of business.** Drafted from agency template, populated with property, vendor, fee structure, sole/multi agency, marketing period, withdrawal fee. Staged in DocuSign with vendor as recipient. *Gate: approve before send.*
33
33
 
34
- **EPC.** If the property does not have a current EPC (checked via EPC register), an order is staged with the agent's preferred supplier (from profile). If a current EPC exists, the workflow records the expiry date and moves on. *Gate: approve order before send if no current EPC.*
35
-
36
34
  **Photography.** A booking request is drafted to the agent's preferred photographer (from profile), with the property address, vendor contact, and the agent's standard brief. *Gate: approve before send.*
37
35
 
38
36
  **Floorplan.** As photography. Combined into a single booking request if the same supplier handles both. *Gate: approve before send.*
@@ -50,7 +48,6 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
50
48
  | Skill | Purpose |
51
49
  |---|---|
52
50
  | `terms-of-business-drafter` | Populates the agency's template with deal specifics |
53
- | `epc-checker` | Looks up the EPC register, computes order need |
54
51
  | `supplier-booker` | Drafts and stages booking requests to photographer, EPC supplier, floorplan supplier |
55
52
  | `listing-copy-writer` | Generates portal-optimised property descriptions |
56
53
  | `particulars-builder` | Composes the PDF brochure |
@@ -60,7 +57,7 @@ A sequenced checklist where each item is either auto-prepared (the workflow does
60
57
 
61
58
  ## 5. Connectors read and written
62
59
 
63
- Read: CRM, EPC register, calendar, profile.
60
+ Read: CRM, calendar, profile.
64
61
  Write: DocuSign (terms), email (vendor welcome, supplier bookings), portal upload APIs (Rightmove, Zoopla, OnTheMarket — staged only).
65
62
 
66
63
  ## 6. Approval gates
@@ -68,13 +65,12 @@ Write: DocuSign (terms), email (vendor welcome, supplier bookings), portal uploa
68
65
  This workflow has the most write actions of any in the set. Each one is individually gated:
69
66
 
70
67
  1. Terms of business send
71
- 2. EPC order (if applicable)
72
- 3. Photographer booking
73
- 4. Floorplan booking
74
- 5. Listing copy use (final version before portal upload)
75
- 6. Particulars distribution
76
- 7. Portal launch schedule confirmation
77
- 8. Vendor welcome email send
68
+ 2. Photographer booking
69
+ 3. Floorplan booking
70
+ 4. Listing copy use (final version before portal upload)
71
+ 5. Particulars distribution
72
+ 6. Portal launch schedule confirmation
73
+ 7. Vendor welcome email send
78
74
 
79
75
  The workflow presents these in sequence and respects the operator's pace. The agent can approve them all in one go ("ship everything") or one at a time, or pause the workflow and return later. State is preserved.
80
76
 
@@ -3582,8 +3582,10 @@ import {
3582
3582
  readdirSync as readdirSync2,
3583
3583
  existsSync as existsSync5,
3584
3584
  statSync as statSync2,
3585
- cpSync
3585
+ cpSync,
3586
+ rmSync
3586
3587
  } from "fs";
3588
+ import { createHash as createHash2 } from "crypto";
3587
3589
  function isMissingPluginDir(pluginDir) {
3588
3590
  const pluginRoot = resolve4(PLATFORM_ROOT2, "plugins", pluginDir);
3589
3591
  if (existsSync5(resolve4(pluginRoot, "PLUGIN.md"))) return false;
@@ -3642,49 +3644,52 @@ function walkPremiumBundles() {
3642
3644
  }
3643
3645
  return result;
3644
3646
  }
3647
+ function reapDuplicateFlatPremiumSubs(bundles, stagingRoot, pluginsDir) {
3648
+ const TAG = "[premium-auto-deliver]";
3649
+ for (const { bundle, subs } of bundles) {
3650
+ for (const sub of subs) {
3651
+ const premiumManifest = resolve4(stagingRoot, bundle, "plugins", sub, "PLUGIN.md");
3652
+ const flatDir = resolve4(pluginsDir, sub);
3653
+ const flatManifest = resolve4(flatDir, "PLUGIN.md");
3654
+ if (!existsSync5(premiumManifest) || !existsSync5(flatManifest)) continue;
3655
+ const premiumSha = createHash2("sha256").update(readFileSync5(premiumManifest)).digest("hex");
3656
+ const flatSha = createHash2("sha256").update(readFileSync5(flatManifest)).digest("hex");
3657
+ if (premiumSha === flatSha) {
3658
+ try {
3659
+ rmSync(flatDir, { recursive: true });
3660
+ console.log(`${TAG} reaped sub=${sub} reason=duplicate-of-premium-tree`);
3661
+ } catch (err) {
3662
+ console.log(`${TAG} reap-failed sub=${sub} err=${err instanceof Error ? err.message : String(err)}`);
3663
+ }
3664
+ } else {
3665
+ console.log(`${TAG} flat-copy-divergent sub=${sub} action=skip-keep`);
3666
+ }
3667
+ }
3668
+ }
3669
+ }
3645
3670
  function autoDeliverPremiumPlugins() {
3646
3671
  const TAG = "[premium-auto-deliver]";
3647
3672
  const bundles = walkPremiumBundles();
3648
3673
  if (bundles.length === 0) return;
3649
3674
  const stagingRoot = resolve4(PLATFORM_ROOT2, "../premium-plugins");
3650
3675
  const pluginsDir = resolve4(PLATFORM_ROOT2, "plugins");
3651
- for (const { bundle, subs } of bundles) {
3676
+ reapDuplicateFlatPremiumSubs(bundles, stagingRoot, pluginsDir);
3677
+ for (const { bundle, subs: _subs } of bundles) {
3652
3678
  const stagingDir = resolve4(stagingRoot, bundle);
3653
3679
  const bundlePath = join3(stagingDir, "BUNDLE.md");
3654
3680
  const isBundle = existsSync5(bundlePath);
3655
3681
  if (isBundle) {
3656
- let delivered = 0;
3657
- let skipped = 0;
3658
- for (const sub of subs) {
3659
- const target = resolve4(pluginsDir, sub);
3660
- if (existsSync5(resolve4(target, "PLUGIN.md"))) {
3661
- skipped++;
3662
- continue;
3663
- }
3664
- const source = resolve4(stagingDir, "plugins", sub);
3665
- if (!existsSync5(source)) {
3666
- console.log(`${TAG} ${bundle}/${sub}: source missing in staging, skipping`);
3667
- continue;
3668
- }
3669
- try {
3670
- cpSync(source, target, { recursive: true });
3671
- delivered++;
3672
- } catch (err) {
3673
- console.log(`${TAG} ${bundle}/${sub}: copy failed: ${err instanceof Error ? err.message : String(err)}`);
3674
- }
3675
- }
3676
- console.log(`${TAG} ${bundle} (bundle): ${delivered} delivered, ${skipped} already present`);
3682
+ continue;
3683
+ }
3684
+ const target = resolve4(pluginsDir, bundle);
3685
+ if (existsSync5(resolve4(target, "PLUGIN.md"))) {
3686
+ console.log(`${TAG} ${bundle}: already present, skipping`);
3677
3687
  } else {
3678
- const target = resolve4(pluginsDir, bundle);
3679
- if (existsSync5(resolve4(target, "PLUGIN.md"))) {
3680
- console.log(`${TAG} ${bundle}: already present, skipping`);
3681
- } else {
3682
- try {
3683
- cpSync(stagingDir, target, { recursive: true });
3684
- console.log(`${TAG} ${bundle} (standalone): delivered`);
3685
- } catch (err) {
3686
- console.log(`${TAG} ${bundle}: copy failed: ${err instanceof Error ? err.message : String(err)}`);
3687
- }
3688
+ try {
3689
+ cpSync(stagingDir, target, { recursive: true });
3690
+ console.log(`${TAG} ${bundle} (standalone): delivered`);
3691
+ } catch (err) {
3692
+ console.log(`${TAG} ${bundle}: copy failed: ${err instanceof Error ? err.message : String(err)}`);
3688
3693
  }
3689
3694
  }
3690
3695
  }
@@ -3693,13 +3698,17 @@ function reconcileEnabledPlugins(accountDir, config) {
3693
3698
  const TAG = "[premium-auto-deliver]";
3694
3699
  if (!accountDir || !config) return;
3695
3700
  const bundles = walkPremiumBundles();
3701
+ const stagingRoot = resolve4(PLATFORM_ROOT2, "../premium-plugins");
3696
3702
  const pluginsDir = resolve4(PLATFORM_ROOT2, "plugins");
3697
3703
  const bundleNames = [];
3698
3704
  const allSubs = [];
3699
3705
  for (const { bundle, subs } of bundles) {
3700
3706
  bundleNames.push(bundle);
3707
+ const bundlePath = join3(stagingRoot, bundle, "BUNDLE.md");
3708
+ const isBundle = existsSync5(bundlePath);
3701
3709
  for (const sub of subs) {
3702
- if (!existsSync5(resolve4(pluginsDir, sub, "PLUGIN.md"))) continue;
3710
+ const subManifest = isBundle ? resolve4(stagingRoot, bundle, "plugins", sub, "PLUGIN.md") : resolve4(pluginsDir, sub, "PLUGIN.md");
3711
+ if (!existsSync5(subManifest)) continue;
3703
3712
  allSubs.push(sub);
3704
3713
  }
3705
3714
  }
@@ -19,7 +19,7 @@ import {
19
19
  streamActionEvents,
20
20
  vncLog,
21
21
  websockifyLog
22
- } from "./chunk-2IKQERHN.js";
22
+ } from "./chunk-S6PQA6Q4.js";
23
23
  import "./chunk-X3Y6ENKA.js";
24
24
  import "./chunk-JSBRDJBE.js";
25
25