@rubytech/create-realagent-code 0.1.316 → 0.1.320

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 (304) hide show
  1. package/dist/__tests__/base-toolchain-deps.test.js +67 -0
  2. package/dist/index.js +7 -1
  3. package/package.json +2 -2
  4. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  5. package/payload/platform/lib/graph-style/dist/index.js +15 -0
  6. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  7. package/payload/platform/lib/graph-style/src/index.ts +16 -0
  8. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  9. package/payload/platform/lib/graph-write/dist/index.js +3 -0
  10. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  11. package/payload/platform/lib/graph-write/src/index.ts +3 -0
  12. package/payload/platform/lib/mcp-eager/dist/index.d.ts +0 -20
  13. package/payload/platform/lib/mcp-eager/dist/index.d.ts.map +1 -1
  14. package/payload/platform/lib/mcp-eager/dist/index.js +2 -1
  15. package/payload/platform/lib/mcp-eager/dist/index.js.map +1 -1
  16. package/payload/platform/lib/mcp-eager/src/index.ts +3 -1
  17. package/payload/platform/lib/mcp-lifeline/dist/index.d.ts +8 -0
  18. package/payload/platform/lib/mcp-lifeline/dist/index.d.ts.map +1 -0
  19. package/payload/platform/lib/mcp-lifeline/dist/index.js +71 -0
  20. package/payload/platform/lib/mcp-lifeline/dist/index.js.map +1 -0
  21. package/payload/platform/lib/mcp-lifeline/package.json +7 -0
  22. package/payload/platform/lib/mcp-lifeline/src/__tests__/lifeline.test.ts +146 -0
  23. package/payload/platform/lib/mcp-lifeline/src/index.ts +78 -0
  24. package/payload/platform/lib/mcp-lifeline/tsconfig.json +9 -0
  25. package/payload/platform/lib/mcp-lifeline/vitest.config.ts +9 -0
  26. package/payload/platform/lib/models/dist/index.d.ts +16 -0
  27. package/payload/platform/lib/models/dist/index.d.ts.map +1 -1
  28. package/payload/platform/lib/models/dist/index.js +32 -1
  29. package/payload/platform/lib/models/dist/index.js.map +1 -1
  30. package/payload/platform/lib/models/src/index.ts +39 -0
  31. package/payload/platform/neo4j/schema.cypher +103 -0
  32. package/payload/platform/package.json +5 -2
  33. package/payload/platform/plugins/admin/mcp/dist/index.js +11 -10
  34. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  35. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +50 -12
  36. package/payload/platform/plugins/docs/references/admin-ui.md +24 -2
  37. package/payload/platform/plugins/docs/references/internals.md +14 -7
  38. package/payload/platform/plugins/docs/references/neo4j.md +9 -0
  39. package/payload/platform/plugins/docs/references/plugins-guide.md +2 -2
  40. package/payload/platform/plugins/memory/mcp/dist/index.js +32 -31
  41. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +28 -0
  43. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +7 -1
  45. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -1
  46. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +19 -1
  48. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -1
  49. package/payload/platform/plugins/memory/references/schema-knowledge-work.md +80 -0
  50. package/payload/platform/plugins/outlook/mcp/dist/index.js +8 -7
  51. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
  52. package/payload/platform/plugins/projects/PLUGIN.md +11 -0
  53. package/payload/platform/plugins/projects/references/meeting-to-tasks.md +34 -0
  54. package/payload/platform/plugins/projects/references/prioritization.md +43 -0
  55. package/payload/platform/plugins/projects/references/risk-premortem.md +34 -0
  56. package/payload/platform/plugins/projects/references/sprint.md +5 -1
  57. package/payload/platform/plugins/projects/references/stakeholder-map.md +43 -0
  58. package/payload/platform/plugins/quickbooks/mcp/dist/index.js +12 -11
  59. package/payload/platform/plugins/quickbooks/mcp/dist/index.js.map +1 -1
  60. package/payload/platform/plugins/replicate/mcp/dist/index.js +4 -3
  61. package/payload/platform/plugins/replicate/mcp/dist/index.js.map +1 -1
  62. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +11 -10
  63. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  64. package/payload/platform/scripts/__tests__/check-no-raw-mcp-registrations.test.sh +57 -0
  65. package/payload/platform/scripts/check-no-raw-mcp-registrations.mjs +70 -0
  66. package/payload/platform/scripts/installer-device-verify.sh +38 -0
  67. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  68. package/payload/platform/services/claude-session-manager/dist/http-server.js +57 -9
  69. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  70. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts +3 -1
  71. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts.map +1 -1
  72. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.js.map +1 -1
  73. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +7 -1
  74. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  75. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +9 -1
  76. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  77. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +3 -12
  79. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +8 -0
  81. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
  82. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +9 -0
  83. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
  84. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +5 -0
  85. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  86. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +15 -0
  87. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  88. package/payload/premium-plugins/real-agent/lib/mcp-lifeline/dist/index.d.ts +8 -0
  89. package/payload/premium-plugins/real-agent/lib/mcp-lifeline/dist/index.d.ts.map +1 -0
  90. package/payload/premium-plugins/real-agent/lib/mcp-lifeline/dist/index.js +71 -0
  91. package/payload/premium-plugins/real-agent/lib/mcp-lifeline/dist/index.js.map +1 -0
  92. package/payload/premium-plugins/real-agent/lib/mcp-lifeline/package.json +7 -0
  93. package/payload/premium-plugins/real-agent/plugins/buyers/mcp/dist/index.js +9 -8
  94. package/payload/premium-plugins/real-agent/plugins/buyers/mcp/dist/index.js.map +1 -1
  95. package/payload/premium-plugins/real-agent/plugins/buyers/mcp/src/index.ts +9 -8
  96. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.js +28 -27
  97. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.js.map +1 -1
  98. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/index.ts +28 -27
  99. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js +23 -22
  100. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js.map +1 -1
  101. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/index.ts +23 -22
  102. package/payload/server/{chunk-Q7EWROVN.js → chunk-GRKG3KNN.js} +0 -101
  103. package/payload/server/maxy-edge.js +1 -1
  104. package/payload/server/public/assets/AdminLoginScreens-D_e5PYXv.js +1 -0
  105. package/payload/server/public/assets/AdminShell-Dc23yALw.js +1 -0
  106. package/payload/server/public/assets/Checkbox-BHxSr_cA.js +1 -0
  107. package/payload/server/public/assets/OperatorConversations-BqNOXEu8.js +9 -0
  108. package/payload/server/public/assets/OperatorConversations-pu50BU11.css +1 -0
  109. package/payload/server/public/assets/admin-DE55chV9.js +1 -0
  110. package/payload/server/public/assets/{arc-J2g2u5Xv.js → arc-CxLB9WCE.js} +1 -1
  111. package/payload/server/public/assets/architecture-YZFGNWBL-DN-MYxff.js +1 -0
  112. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CN0BXxpE.js → architectureDiagram-Q4EWVU46-D-EdJPSY.js} +1 -1
  113. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-HX-8wF2p.js → blockDiagram-DXYQGD6D-CXx9RgCm.js} +1 -1
  114. package/payload/server/public/assets/browser-C1Dp1UxB.js +1 -0
  115. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-wIuarKF5.js → c4Diagram-AHTNJAMY-RFBXEe0B.js} +1 -1
  116. package/payload/server/public/assets/channel-y27xl53N.js +1 -0
  117. package/payload/server/public/assets/chat-BLQDFyDL.js +1 -0
  118. package/payload/server/public/assets/{chunk-2KRD3SAO-Buz7egJZ.js → chunk-2KRD3SAO-DBqAFwK9.js} +1 -1
  119. package/payload/server/public/assets/{chunk-336JU56O-_JcFXJqc.js → chunk-336JU56O-DdnFEz6R.js} +2 -2
  120. package/payload/server/public/assets/chunk-426QAEUC-D8Iwaegm.js +1 -0
  121. package/payload/server/public/assets/{chunk-4BX2VUAB-DUR5Dg3M.js → chunk-4BX2VUAB-cnw-3Gbs.js} +1 -1
  122. package/payload/server/public/assets/{chunk-4TB4RGXK-BRIqQ9st.js → chunk-4TB4RGXK-BnqJ0bDc.js} +1 -1
  123. package/payload/server/public/assets/{chunk-55IACEB6-CezTHWXL.js → chunk-55IACEB6-BwyHvvzo.js} +1 -1
  124. package/payload/server/public/assets/{chunk-5FUZZQ4R-DHYUPzF1.js → chunk-5FUZZQ4R-DXA9U02I.js} +1 -1
  125. package/payload/server/public/assets/{chunk-5PVQY5BW-BVn4_fI5.js → chunk-5PVQY5BW-D78bZ_8D.js} +1 -1
  126. package/payload/server/public/assets/{chunk-67CJDMHE-BBLA8Mbi.js → chunk-67CJDMHE-CtE_Mgv7.js} +1 -1
  127. package/payload/server/public/assets/{chunk-7N4EOEYR-CdWfEI5c.js → chunk-7N4EOEYR-CUZDaySl.js} +1 -1
  128. package/payload/server/public/assets/{chunk-AA7GKIK3-tS11knCR.js → chunk-AA7GKIK3-CYQ3jO4X.js} +1 -1
  129. package/payload/server/public/assets/{chunk-BSJP7CBP-GEu1OOZ6.js → chunk-BSJP7CBP-BbA_HyTR.js} +1 -1
  130. package/payload/server/public/assets/{chunk-CIAEETIT-DKrNbbp_.js → chunk-CIAEETIT-D7_YqRhG.js} +1 -1
  131. package/payload/server/public/assets/{chunk-EDXVE4YY-B0InXNyr.js → chunk-EDXVE4YY-B23LrtSw.js} +1 -1
  132. package/payload/server/public/assets/{chunk-ENJZ2VHE-CO7lkHdm.js → chunk-ENJZ2VHE-D3fTHYKN.js} +1 -1
  133. package/payload/server/public/assets/{chunk-FMBD7UC4-CMj74lWo.js → chunk-FMBD7UC4-DFAA2tyh.js} +1 -1
  134. package/payload/server/public/assets/{chunk-FOC6F5B3-CLnKQoXw.js → chunk-FOC6F5B3-BF4IHvlI.js} +1 -1
  135. package/payload/server/public/assets/{chunk-ICPOFSXX-CdiEKIaz.js → chunk-ICPOFSXX-DBUGemHy.js} +2 -2
  136. package/payload/server/public/assets/{chunk-K5T4RW27-B6LA3fiv.js → chunk-K5T4RW27-rMMs08Eh.js} +1 -1
  137. package/payload/server/public/assets/{chunk-KGLVRYIC-DrhRrb8Q.js → chunk-KGLVRYIC-BD2r8R2G.js} +1 -1
  138. package/payload/server/public/assets/{chunk-LIHQZDEY-DVQukevB.js → chunk-LIHQZDEY-D4sYTTwM.js} +1 -1
  139. package/payload/server/public/assets/{chunk-ORNJ4GCN-ZMLkoDhP.js → chunk-ORNJ4GCN-CAs_uFzb.js} +1 -1
  140. package/payload/server/public/assets/{chunk-OYMX7WX6-C0dJkynG.js → chunk-OYMX7WX6-Fkp-2ORc.js} +1 -1
  141. package/payload/server/public/assets/chunk-QZHKN3VN-qHqDpwz3.js +1 -0
  142. package/payload/server/public/assets/{chunk-U2HBQHQK-BQ9BPIFZ.js → chunk-U2HBQHQK-D_pxZh25.js} +1 -1
  143. package/payload/server/public/assets/{chunk-X2U36JSP-CAonGMOd.js → chunk-X2U36JSP-CeVmvvRf.js} +1 -1
  144. package/payload/server/public/assets/{chunk-XPW4576I-D5C_WNlk.js → chunk-XPW4576I-iWP54fKp.js} +1 -1
  145. package/payload/server/public/assets/{chunk-YZCP3GAM-Ecdvzekb.js → chunk-YZCP3GAM-CNtbWJNN.js} +1 -1
  146. package/payload/server/public/assets/{chunk-ZZ45TVLE-BsFZd1cN.js → chunk-ZZ45TVLE-BmlFjU_9.js} +1 -1
  147. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DgVoYWhO.js +1 -0
  148. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-C0WNP3uN.js +1 -0
  149. package/payload/server/public/assets/clone-D50F_pvg.js +1 -0
  150. package/payload/server/public/assets/{cose-bilkent-S5V4N54A-DBWHaIwm.js → cose-bilkent-S5V4N54A-C7YmF1Pg.js} +1 -1
  151. package/payload/server/public/assets/{dagre-Dr7ZJYeS.js → dagre-BAmiDDtR.js} +1 -1
  152. package/payload/server/public/assets/{dagre-KV5264BT-oIJddk7m.js → dagre-KV5264BT-Ca3ESJhc.js} +1 -1
  153. package/payload/server/public/assets/data-D_L6g-L_.js +1 -0
  154. package/payload/server/public/assets/{diagram-5BDNPKRD-CEVxqOZ4.js → diagram-5BDNPKRD-BgT1ORf2.js} +1 -1
  155. package/payload/server/public/assets/{diagram-G4DWMVQ6-BovF7Rjx.js → diagram-G4DWMVQ6-BTaUIiem.js} +1 -1
  156. package/payload/server/public/assets/{diagram-MMDJMWI5-BhrF8zoF.js → diagram-MMDJMWI5-Bdb2g6Uo.js} +1 -1
  157. package/payload/server/public/assets/{diagram-TYMM5635-DCUYwxtR.js → diagram-TYMM5635-CkLGC0zZ.js} +1 -1
  158. package/payload/server/public/assets/{dist-DSsFp0Qd.js → dist-Bkbhs3jw.js} +1 -1
  159. package/payload/server/public/assets/{erDiagram-SMLLAGMA-BS2-HdCg.js → erDiagram-SMLLAGMA-D_sj4DMg.js} +1 -1
  160. package/payload/server/public/assets/{flatten-BZMXCpLh.js → flatten-E2Sr0FeD.js} +1 -1
  161. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BzSFLoea.js → flowDiagram-DWJPFMVM-iLERoZTe.js} +1 -1
  162. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-1-3QU7mT.js → ganttDiagram-T4ZO3ILL-D60hjMBy.js} +1 -1
  163. package/payload/server/public/assets/gitGraph-7Q5UKJZL-D-L2yzYf.js +1 -0
  164. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-fTrJ35Wk.js → gitGraphDiagram-UUTBAWPF-Di0XM6fi.js} +1 -1
  165. package/payload/server/public/assets/graph-labels-C2r7zl8O.js +1 -0
  166. package/payload/server/public/assets/{graph-BZNc3EXa.js → graph-ticN9QbK.js} +3 -3
  167. package/payload/server/public/assets/{graphlib-rlEzI2qD.js → graphlib-C8fUP7uV.js} +1 -1
  168. package/payload/server/public/assets/info-OMHHGYJF-BQn6jndO.js +1 -0
  169. package/payload/server/public/assets/infoDiagram-42DDH7IO-BwMdbiXg.js +2 -0
  170. package/payload/server/public/assets/{isEmpty-DaYIrHay.js → isEmpty-CLz-UprQ.js} +1 -1
  171. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-0eU_UtlT.js → ishikawaDiagram-UXIWVN3A-CwgI4B5Z.js} +1 -1
  172. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-BKLeZohp.js → journeyDiagram-VCZTEJTY-CxBu-tze.js} +1 -1
  173. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Dq72xyaN.js → kanban-definition-6JOO6SKY-D2qlheA5.js} +1 -1
  174. package/payload/server/public/assets/{line-LQhmDT8k.js → line-Bdod7uzQ.js} +1 -1
  175. package/payload/server/public/assets/{linear-BGotDbGs.js → linear-BiVe6QzC.js} +1 -1
  176. package/payload/server/public/assets/{mermaid-parser.core-DoLdho1V.js → mermaid-parser.core-xZN7hC6M.js} +2 -2
  177. package/payload/server/public/assets/{mermaid.core-C1RRyHGm.js → mermaid.core-D0IylAac.js} +3 -3
  178. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-vUVVVyV1.js → mindmap-definition-QFDTVHPH-J_Szhwf1.js} +1 -1
  179. package/payload/server/public/assets/operator-COIYJFG7.js +1 -0
  180. package/payload/server/public/assets/{ordinal-BqEhkPyh.js → ordinal-5RtyPJVt.js} +1 -1
  181. package/payload/server/public/assets/packet-4T2RLAQJ-DmkQBx4h.js +1 -0
  182. package/payload/server/public/assets/page-CsOGSSSb.js +30 -0
  183. package/payload/server/public/assets/pie-ZZUOXDRM-DDnxYUBm.js +1 -0
  184. package/payload/server/public/assets/{pieDiagram-DEJITSTG-B9Pl6Qhc.js → pieDiagram-DEJITSTG-CV5DxUVx.js} +1 -1
  185. package/payload/server/public/assets/public-CjT_WNkz.js +1 -0
  186. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-Drn9T81A.js → quadrantDiagram-34T5L4WZ-BsFMVizF.js} +1 -1
  187. package/payload/server/public/assets/radar-PYXPWWZC-7H4k0ChM.js +1 -0
  188. package/payload/server/public/assets/{reduce-T2IuntYP.js → reduce-B3Mw_0s1.js} +1 -1
  189. package/payload/server/public/assets/{requirementDiagram-MS252O5E-C0PAItJm.js → requirementDiagram-MS252O5E-C5eRRvGc.js} +1 -1
  190. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BR42Mtwd.js → sankeyDiagram-XADWPNL6-CJYv5gpw.js} +1 -1
  191. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-c2lR9UOS.js → sequenceDiagram-FGHM5R23-B25563_2.js} +1 -1
  192. package/payload/server/public/assets/{src-DXUM2BJo.js → src-BKOAoFQc.js} +1 -1
  193. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BcHhtqsZ.js → stateDiagram-FHFEXIEX-BLyNJYOA.js} +1 -1
  194. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BSVuxZxz.js +1 -0
  195. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-Ax32c10H.js → timeline-definition-GMOUNBTQ-D-HgOM6Q.js} +1 -1
  196. package/payload/server/public/assets/treeView-SZITEDCU-BLXWTQtW.js +1 -0
  197. package/payload/server/public/assets/treemap-W4RFUUIX-DiePDF5d.js +1 -0
  198. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BxePewPq.js → vennDiagram-DHZGUBPP-Cw1JElYp.js} +1 -1
  199. package/payload/server/public/assets/wardley-RL74JXVD-OSUWK5LN.js +1 -0
  200. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DmJwZ2f5.js → wardleyDiagram-NUSXRM2D-BqMWzEko.js} +1 -1
  201. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-YjHomudv.js → xychartDiagram-5P7HB3ND-DBp71TLT.js} +1 -1
  202. package/payload/server/public/browser.html +5 -8
  203. package/payload/server/public/chat.html +8 -12
  204. package/payload/server/public/data.html +5 -7
  205. package/payload/server/public/graph.html +7 -10
  206. package/payload/server/public/index.html +8 -11
  207. package/payload/server/public/operator.html +10 -14
  208. package/payload/server/public/public.html +8 -10
  209. package/payload/server/server.js +330 -195
  210. package/payload/server/public/assets/AccessGate-bu988Xo-.js +0 -1
  211. package/payload/server/public/assets/AdminLoginScreens-BCYaOOuk.js +0 -1
  212. package/payload/server/public/assets/AdminShell-DSjJ4Biu.js +0 -1
  213. package/payload/server/public/assets/Checkbox-B4Dbvjls.js +0 -1
  214. package/payload/server/public/assets/OperatorConversations-XsXP7-P-.js +0 -1
  215. package/payload/server/public/assets/OperatorConversations-qc_xy7Az.css +0 -1
  216. package/payload/server/public/assets/admin-m0797WGA.js +0 -1
  217. package/payload/server/public/assets/architecture-YZFGNWBL-C6nkAxzW.js +0 -1
  218. package/payload/server/public/assets/audio-attachment-mime-Jm4KJ4YC.js +0 -30
  219. package/payload/server/public/assets/brand-D8LClgr_.js +0 -9
  220. package/payload/server/public/assets/brand-DvttVeGB.css +0 -1
  221. package/payload/server/public/assets/browser-CBjNMPsz.js +0 -1
  222. package/payload/server/public/assets/channel-Q39xIXyT.js +0 -1
  223. package/payload/server/public/assets/chat-Sg-RGuV6.js +0 -1
  224. package/payload/server/public/assets/chunk-426QAEUC-CCYjp9C2.js +0 -1
  225. package/payload/server/public/assets/chunk-QZHKN3VN-BNBxnHZh.js +0 -1
  226. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BShusfby.js +0 -1
  227. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-D4ivPLFF.js +0 -1
  228. package/payload/server/public/assets/clone-CjEM8LwB.js +0 -1
  229. package/payload/server/public/assets/data-CEqE4BDw.js +0 -1
  230. package/payload/server/public/assets/gitGraph-7Q5UKJZL-Btp3PwZh.js +0 -1
  231. package/payload/server/public/assets/graph-labels-Bj5yM9bI.js +0 -1
  232. package/payload/server/public/assets/info-OMHHGYJF-CPt2y6_L.js +0 -1
  233. package/payload/server/public/assets/infoDiagram-42DDH7IO-CpXNTMgd.js +0 -2
  234. package/payload/server/public/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  235. package/payload/server/public/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  236. package/payload/server/public/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  237. package/payload/server/public/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  238. package/payload/server/public/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  239. package/payload/server/public/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  240. package/payload/server/public/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  241. package/payload/server/public/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  242. package/payload/server/public/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  243. package/payload/server/public/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  244. package/payload/server/public/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  245. package/payload/server/public/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  246. package/payload/server/public/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  247. package/payload/server/public/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  248. package/payload/server/public/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  249. package/payload/server/public/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  250. package/payload/server/public/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  251. package/payload/server/public/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  252. package/payload/server/public/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  253. package/payload/server/public/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  254. package/payload/server/public/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  255. package/payload/server/public/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  256. package/payload/server/public/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  257. package/payload/server/public/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  258. package/payload/server/public/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  259. package/payload/server/public/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  260. package/payload/server/public/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  261. package/payload/server/public/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  262. package/payload/server/public/assets/newsreader-latin-300-normal-AOSWdb_s.woff +0 -0
  263. package/payload/server/public/assets/newsreader-latin-300-normal-FGBQ0wlI.woff2 +0 -0
  264. package/payload/server/public/assets/newsreader-latin-400-normal-BFBkh4jY.woff2 +0 -0
  265. package/payload/server/public/assets/newsreader-latin-400-normal-gRTjlS2D.woff +0 -0
  266. package/payload/server/public/assets/newsreader-latin-500-normal-B66TYsaK.woff2 +0 -0
  267. package/payload/server/public/assets/newsreader-latin-500-normal-DFwuUcdu.woff +0 -0
  268. package/payload/server/public/assets/newsreader-latin-ext-300-normal-CFtw49Zd.woff +0 -0
  269. package/payload/server/public/assets/newsreader-latin-ext-300-normal-DRMzurxT.woff2 +0 -0
  270. package/payload/server/public/assets/newsreader-latin-ext-400-normal-DYA1XoQK.woff +0 -0
  271. package/payload/server/public/assets/newsreader-latin-ext-400-normal-svq1FPys.woff2 +0 -0
  272. package/payload/server/public/assets/newsreader-latin-ext-500-normal-BNHmvKvI.woff2 +0 -0
  273. package/payload/server/public/assets/newsreader-latin-ext-500-normal-CZruMFou.woff +0 -0
  274. package/payload/server/public/assets/newsreader-vietnamese-300-normal-CsrIkm-V.woff +0 -0
  275. package/payload/server/public/assets/newsreader-vietnamese-300-normal-D3VHEe81.woff2 +0 -0
  276. package/payload/server/public/assets/newsreader-vietnamese-400-normal-BekUZro8.woff +0 -0
  277. package/payload/server/public/assets/newsreader-vietnamese-400-normal-DdKr49mV.woff2 +0 -0
  278. package/payload/server/public/assets/newsreader-vietnamese-500-normal-BEAbKU8A.woff +0 -0
  279. package/payload/server/public/assets/newsreader-vietnamese-500-normal-CL6a8tp2.woff2 +0 -0
  280. package/payload/server/public/assets/operator-Bph7mx87.js +0 -1
  281. package/payload/server/public/assets/packet-4T2RLAQJ-Cwc-j_AI.js +0 -1
  282. package/payload/server/public/assets/page-CtWCeXdg.js +0 -1
  283. package/payload/server/public/assets/pie-ZZUOXDRM-BZ9fjD1_.js +0 -1
  284. package/payload/server/public/assets/public-gxHCJCs3.js +0 -6
  285. package/payload/server/public/assets/public-next-C3clISGQ.js +0 -1
  286. package/payload/server/public/assets/public-vnj7OhQj.css +0 -1
  287. package/payload/server/public/assets/radar-PYXPWWZC-BNz5Rt9V.js +0 -1
  288. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BUQ_F4eP.js +0 -1
  289. package/payload/server/public/assets/treeView-SZITEDCU-DcVCQgp1.js +0 -1
  290. package/payload/server/public/assets/treemap-W4RFUUIX-Bm12mwGd.js +0 -1
  291. package/payload/server/public/assets/useSelectionMode-BMn70cch.js +0 -5
  292. package/payload/server/public/assets/wardley-RL74JXVD-47Z3ymtK.js +0 -1
  293. package/payload/server/public/public-next.html +0 -25
  294. /package/payload/server/public/assets/{_baseFor-Y5mTRiRv.js → _baseFor-DVaNaTfF.js} +0 -0
  295. /package/payload/server/public/assets/{admin-types-D2qTXuCg.js → admin-types-CJrGd46U.js} +0 -0
  296. /package/payload/server/public/assets/{array-BwJyW1Dp.js → array-8_H1156C.js} +0 -0
  297. /package/payload/server/public/assets/{chunk-CAM3fms7.js → chunk-Pqm5yXtL.js} +0 -0
  298. /package/payload/server/public/assets/{cytoscape.esm-D95TtHqz.js → cytoscape.esm-h10p_6j-.js} +0 -0
  299. /package/payload/server/public/assets/{defaultLocale-kiwRz9Au.js → defaultLocale-pD7tFa1r.js} +0 -0
  300. /package/payload/server/public/assets/{init-CKZirZ49.js → init-CwJ4b81e.js} +0 -0
  301. /package/payload/server/public/assets/{katex-8mXVa4k3.js → katex-DJPjIBAI.js} +0 -0
  302. /package/payload/server/public/assets/{path-B0d9ncVi.js → path-CK8wrAxY.js} +0 -0
  303. /package/payload/server/public/assets/{preload-helper-C5gCWwwF.js → preload-helper-Bf_JiD2A.js} +0 -0
  304. /package/payload/server/public/assets/{rough.esm-BWqoIFNR.js → rough.esm-Dwml_la6.js} +0 -0
@@ -27,6 +27,7 @@ import { marketingEnquiry } from "./tools/marketing-enquiry.js";
27
27
  import { autoResponder } from "./tools/auto-responder.js";
28
28
  import { customerPreferences } from "./tools/customer-preferences.js";
29
29
  import { supplier } from "./tools/supplier.js";
30
+ import { lifelineTool } from "../../../../lib/mcp-lifeline/dist/index.js";
30
31
  import { closeDriver } from "./lib/neo4j.js";
31
32
  import { selectLoopKeyStore } from "./lib/key-store.js";
32
33
  // ACCOUNT_ID is the platform's tenant id; "local" is the single-tenant
@@ -63,7 +64,7 @@ function toolHandler(fn) {
63
64
  // ─────────────────────────────────────────────────────────────────
64
65
  // Key Management Tools (3)
65
66
  // ─────────────────────────────────────────────────────────────────
66
- server.tool("loop-key-register", "Register a Loop CRM API key for a team. Validates the key against Loop's API, encrypts it, and stores it in the graph. Each key maps to one team.", {
67
+ lifelineTool(server, "loop-key-register", "Register a Loop CRM API key for a team. Validates the key against Loop's API, encrypts it, and stores it in the graph. Each key maps to one team.", {
67
68
  teamName: z.string().min(1).describe("Human-readable name for this team (e.g. 'Muvin Main Office')"),
68
69
  apiKey: z.string().min(10).describe("Loop API key (X-Api-Key header value)"),
69
70
  permissions: z
@@ -88,7 +89,7 @@ server.tool("loop-key-register", "Register a Loop CRM API key for a team. Valida
88
89
  };
89
90
  }
90
91
  });
91
- server.tool("loop-key-deregister", "Remove a registered Loop CRM team key. The key is permanently deleted from the graph.", { teamName: z.string().min(1).describe("Name of the team to remove") }, async ({ teamName }) => {
92
+ lifelineTool(server, "loop-key-deregister", "Remove a registered Loop CRM team key. The key is permanently deleted from the graph.", { teamName: z.string().min(1).describe("Name of the team to remove") }, async ({ teamName }) => {
92
93
  try {
93
94
  await keyDeregister({ teamName, accountId });
94
95
  return { content: [{ type: "text", text: `Team "${teamName}" deregistered.` }] };
@@ -103,11 +104,11 @@ server.tool("loop-key-deregister", "Remove a registered Loop CRM team key. The k
103
104
  };
104
105
  }
105
106
  });
106
- server.tool("loop-key-list", "List all registered Loop CRM teams for this account. Shows team names, addresses, and permissions. Never reveals API key values.", {}, toolHandler(async (p) => keyList({ accountId: p.accountId })));
107
+ lifelineTool(server, "loop-key-list", "List all registered Loop CRM teams for this account. Shows team names, addresses, and permissions. Never reveals API key values.", {}, toolHandler(async (p) => keyList({ accountId: p.accountId })));
107
108
  // ─────────────────────────────────────────────────────────────────
108
109
  // People Tools (2) — permission: people
109
110
  // ─────────────────────────────────────────────────────────────────
110
- server.tool("loop-people-search", "Search people in Loop CRM. Without a role, searches all contacts. With a role (buyers/sellers/renters/landlords), returns role-specific results with rich filters.", {
111
+ lifelineTool(server, "loop-people-search", "Search people in Loop CRM. Without a role, searches all contacts. With a role (buyers/sellers/renters/landlords), returns role-specific results with rich filters.", {
111
112
  role: z.enum(["buyers", "sellers", "renters", "landlords"]).optional().describe("Role to search (omit for all people)"),
112
113
  searchTerm: z.string().optional().describe("Name or contact search"),
113
114
  maxPrice: z.number().optional().describe("Max price (buyers) or max price filter (sellers)"),
@@ -121,7 +122,7 @@ server.tool("loop-people-search", "Search people in Loop CRM. Without a role, se
121
122
  teamName: z.string().optional().describe("Query a specific team only"),
122
123
  limit: z.number().int().optional().describe("Max results (default 200)"),
123
124
  }, toolHandler(async (p) => peopleSearch(p)));
124
- server.tool("loop-people-detail", "Get full details for a specific person by ID. Optionally specify a role (buyers/sellers/renters/landlords) for role-specific detail.", {
125
+ lifelineTool(server, "loop-people-detail", "Get full details for a specific person by ID. Optionally specify a role (buyers/sellers/renters/landlords) for role-specific detail.", {
125
126
  personId: z.number().int().describe("Person ID"),
126
127
  role: z.enum(["buyers", "sellers", "renters", "landlords"]).optional().describe("Role for role-specific detail view"),
127
128
  teamName: z.string().optional().describe("Query a specific team only"),
@@ -129,7 +130,7 @@ server.tool("loop-people-detail", "Get full details for a specific person by ID.
129
130
  // ─────────────────────────────────────────────────────────────────
130
131
  // Property Tools (4) — permission: properties
131
132
  // ─────────────────────────────────────────────────────────────────
132
- server.tool("loop-property-search", "Search properties in Loop CRM. Queries /property/residential/sales and /property/residential/lettings. Use department to narrow to one type.", {
133
+ lifelineTool(server, "loop-property-search", "Search properties in Loop CRM. Queries /property/residential/sales and /property/residential/lettings. Use department to narrow to one type.", {
133
134
  department: z.enum(["sales", "lettings", "both"]).optional().describe("Department (default: both)"),
134
135
  searchTerm: z.string().optional().describe("Address or keyword search"),
135
136
  minPrice: z.number().optional().describe("Minimum price"),
@@ -141,19 +142,19 @@ server.tool("loop-property-search", "Search properties in Loop CRM. Queries /pro
141
142
  teamName: z.string().optional().describe("Query a specific team only"),
142
143
  limit: z.number().int().optional().describe("Max results (default 200)"),
143
144
  }, toolHandler(async (p) => propertySearch(p)));
144
- server.tool("loop-property-detail", "Get full details for a specific property by ID and department. Optionally include a preview hash for the public preview.", {
145
+ lifelineTool(server, "loop-property-detail", "Get full details for a specific property by ID and department. Optionally include a preview hash for the public preview.", {
145
146
  propertyId: z.number().int().describe("Property ID"),
146
147
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
147
148
  previewHash: z.number().int().optional().describe("Preview hash for public preview URL"),
148
149
  teamName: z.string().optional().describe("Query a specific team only"),
149
150
  }, toolHandler(async (p) => propertyDetail(p)));
150
- server.tool("loop-property-listed", "Get properties currently listed on a specific channel (Rightmove, Zoopla, OnTheMarket, website). For exchanged/completed properties use loop-property-sold.", {
151
+ lifelineTool(server, "loop-property-listed", "Get properties currently listed on a specific channel (Rightmove, Zoopla, OnTheMarket, website). For exchanged/completed properties use loop-property-sold.", {
151
152
  channel: z.enum(["rightmove", "onTheMarket", "zoopla", "website"]).describe("Listing channel"),
152
153
  department: z.enum(["sales", "lettings", "both"]).optional().describe("Department (default: both)"),
153
154
  teamName: z.string().optional().describe("Query a specific team only"),
154
155
  limit: z.number().int().optional().describe("Max results (default 200)"),
155
156
  }, toolHandler(async (p) => propertyListed(p)));
156
- server.tool("loop-property-sold", "Get exchanged or completed properties on a specific channel. Powers canvassing from recent sales and sold-gallery rendering.", {
157
+ lifelineTool(server, "loop-property-sold", "Get exchanged or completed properties on a specific channel. Powers canvassing from recent sales and sold-gallery rendering.", {
157
158
  channel: z.enum(["rightmove", "onTheMarket", "zoopla", "website"]).describe("Listing channel"),
158
159
  teamName: z.string().optional().describe("Query a specific team only"),
159
160
  limit: z.number().int().optional().describe("Max results (default 200)"),
@@ -161,7 +162,7 @@ server.tool("loop-property-sold", "Get exchanged or completed properties on a sp
161
162
  // Property-level intent tools (Task 103 split — replaces loop-property-request).
162
163
  // Each intent is a distinct operator action so the agent's tool surface
163
164
  // preserves intent fidelity.
164
- server.tool("loop-property-viewing", "Request a viewing for a property. Use when the operator says 'book a viewing', 'arrange a viewing', or 'ask to see the property'.", {
165
+ lifelineTool(server, "loop-property-viewing", "Request a viewing for a property. Use when the operator says 'book a viewing', 'arrange a viewing', or 'ask to see the property'.", {
165
166
  teamName: z.string().min(1).describe("Team to submit the request through"),
166
167
  propertyId: z.number().int().describe("Property ID"),
167
168
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -170,7 +171,7 @@ server.tool("loop-property-viewing", "Request a viewing for a property. Use when
170
171
  phone: z.string().optional().describe("Requester phone"),
171
172
  message: z.string().optional().describe("Additional message"),
172
173
  }, toolHandler(async (p) => propertyViewing(p)));
173
- server.tool("loop-property-callback", "Request a callback about a property. Use when the operator says 'ask them to call', 'request a callback', or 'have someone ring back'.", {
174
+ lifelineTool(server, "loop-property-callback", "Request a callback about a property. Use when the operator says 'ask them to call', 'request a callback', or 'have someone ring back'.", {
174
175
  teamName: z.string().min(1).describe("Team to submit the request through"),
175
176
  propertyId: z.number().int().describe("Property ID"),
176
177
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -179,7 +180,7 @@ server.tool("loop-property-callback", "Request a callback about a property. Use
179
180
  phone: z.string().optional().describe("Requester phone"),
180
181
  message: z.string().optional().describe("Additional message"),
181
182
  }, toolHandler(async (p) => propertyCallback(p)));
182
- server.tool("loop-property-information", "Request more information about a property. Use when the operator says 'ask for details', 'request the brochure', or 'find out more'.", {
183
+ lifelineTool(server, "loop-property-information", "Request more information about a property. Use when the operator says 'ask for details', 'request the brochure', or 'find out more'.", {
183
184
  teamName: z.string().min(1).describe("Team to submit the request through"),
184
185
  propertyId: z.number().int().describe("Property ID"),
185
186
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -191,7 +192,7 @@ server.tool("loop-property-information", "Request more information about a prope
191
192
  // ─────────────────────────────────────────────────────────────────
192
193
  // Viewing Tools (4) — permission: viewings
193
194
  // ─────────────────────────────────────────────────────────────────
194
- server.tool("loop-viewing-search", "Search viewings in Loop CRM. Queries /residential/sales/viewings and /residential/lettings/viewings.", {
195
+ lifelineTool(server, "loop-viewing-search", "Search viewings in Loop CRM. Queries /residential/sales/viewings and /residential/lettings/viewings.", {
195
196
  department: z.enum(["sales", "lettings", "both"]).optional().describe("Department (default: both)"),
196
197
  searchTerm: z.string().optional().describe("Search viewings"),
197
198
  appointmentStartDate: z.string().optional().describe("Filter from date (ISO format)"),
@@ -200,12 +201,12 @@ server.tool("loop-viewing-search", "Search viewings in Loop CRM. Queries /reside
200
201
  teamName: z.string().optional().describe("Query a specific team only"),
201
202
  limit: z.number().int().optional().describe("Max results (default 200)"),
202
203
  }, toolHandler(async (p) => viewingSearch(p)));
203
- server.tool("loop-viewing-detail", "Get full details for a specific viewing by ID and department.", {
204
+ lifelineTool(server, "loop-viewing-detail", "Get full details for a specific viewing by ID and department.", {
204
205
  viewingId: z.number().int().describe("Viewing ID"),
205
206
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
206
207
  teamName: z.string().optional().describe("Query a specific team only"),
207
208
  }, toolHandler(async (p) => viewingDetail(p)));
208
- server.tool("loop-viewing-create", "Create a new viewing in Loop CRM. Creates the viewing and associated buyer/renter record.", {
209
+ lifelineTool(server, "loop-viewing-create", "Create a new viewing in Loop CRM. Creates the viewing and associated buyer/renter record.", {
209
210
  teamName: z.string().min(1).describe("Team to create the viewing for"),
210
211
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
211
212
  propertyId: z.number().int().describe("Property ID"),
@@ -215,7 +216,7 @@ server.tool("loop-viewing-create", "Create a new viewing in Loop CRM. Creates th
215
216
  attendeeEmail: z.string().optional().describe("Attendee email"),
216
217
  attendeePhone: z.string().optional().describe("Attendee phone"),
217
218
  }, toolHandler(async (p) => viewingCreate(p)));
218
- server.tool("loop-viewing-update", "Add a note or record feedback for a viewing. For feedback, specify the party: buyer/seller (sales) or renter/landlord (lettings).", {
219
+ lifelineTool(server, "loop-viewing-update", "Add a note or record feedback for a viewing. For feedback, specify the party: buyer/seller (sales) or renter/landlord (lettings).", {
219
220
  teamName: z.string().min(1).describe("Team that owns the viewing"),
220
221
  viewingId: z.number().int().describe("Viewing ID"),
221
222
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -226,12 +227,12 @@ server.tool("loop-viewing-update", "Add a note or record feedback for a viewing.
226
227
  // ─────────────────────────────────────────────────────────────────
227
228
  // Feedback Tools (2) — permission: feedback
228
229
  // ─────────────────────────────────────────────────────────────────
229
- server.tool("loop-feedback-get", "Get feedback for a specific viewing. Reads from /feedback/residential/{department}/viewings/{id}.", {
230
+ lifelineTool(server, "loop-feedback-get", "Get feedback for a specific viewing. Reads from /feedback/residential/{department}/viewings/{id}.", {
230
231
  teamName: z.string().min(1).describe("Team that owns the viewing"),
231
232
  viewingId: z.number().int().describe("Viewing ID"),
232
233
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
233
234
  }, toolHandler(async (p) => feedbackGet(p)));
234
- server.tool("loop-feedback-submit", "Submit feedback for a viewing. Writes to /feedback/residential/{department}/viewings/{id}/feedback.", {
235
+ lifelineTool(server, "loop-feedback-submit", "Submit feedback for a viewing. Writes to /feedback/residential/{department}/viewings/{id}/feedback.", {
235
236
  teamName: z.string().min(1).describe("Team that owns the viewing"),
236
237
  viewingId: z.number().int().describe("Viewing ID"),
237
238
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -240,10 +241,10 @@ server.tool("loop-feedback-submit", "Submit feedback for a viewing. Writes to /f
240
241
  // ─────────────────────────────────────────────────────────────────
241
242
  // Team Tools (2) — permission: team
242
243
  // ─────────────────────────────────────────────────────────────────
243
- server.tool("loop-team-info", "Get team details from Loop CRM. Returns team name, address, phone, and email.", {
244
+ lifelineTool(server, "loop-team-info", "Get team details from Loop CRM. Returns team name, address, phone, and email.", {
244
245
  teamName: z.string().optional().describe("Query a specific team only (omit for all teams)"),
245
246
  }, toolHandler(async (p) => teamInfo(p)));
246
- server.tool("loop-team-availability", "Get available time slots for a specific agent on a given date.", {
247
+ lifelineTool(server, "loop-team-availability", "Get available time slots for a specific agent on a given date.", {
247
248
  agentId: z.string().describe("Agent GUID identifier"),
248
249
  searchDate: z.string().describe("Date to check availability (YYYY-MM-DD)"),
249
250
  teamName: z.string().optional().describe("Query a specific team only"),
@@ -251,18 +252,18 @@ server.tool("loop-team-availability", "Get available time slots for a specific a
251
252
  // ─────────────────────────────────────────────────────────────────
252
253
  // Marketing Tools (4) — permission: marketing
253
254
  // ─────────────────────────────────────────────────────────────────
254
- server.tool("loop-marketing-match", "Get matching property detail and optionally the team profile for that match.", {
255
+ lifelineTool(server, "loop-marketing-match", "Get matching property detail and optionally the team profile for that match.", {
255
256
  propertyId: z.number().int().describe("Property ID"),
256
257
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
257
258
  includeTeamProfile: z.boolean().optional().describe("Include the team profile for this match (default: false)"),
258
259
  teamName: z.string().optional().describe("Query a specific team only"),
259
260
  }, toolHandler(async (p) => marketingMatchDetail(p)));
260
- server.tool("loop-marketing-match-batch", "Get batch matching results for multiple property IDs.", {
261
+ lifelineTool(server, "loop-marketing-match-batch", "Get batch matching results for multiple property IDs.", {
261
262
  propertyIds: z.array(z.number().int()).describe("Array of property IDs to match"),
262
263
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
263
264
  teamName: z.string().optional().describe("Query a specific team only"),
264
265
  }, toolHandler(async (p) => marketingMatchBatch(p)));
265
- server.tool("loop-marketing-match-request", "Submit a viewing, information, or callback request for a matching property.", {
266
+ lifelineTool(server, "loop-marketing-match-request", "Submit a viewing, information, or callback request for a matching property.", {
266
267
  teamName: z.string().min(1).describe("Team to submit the request through"),
267
268
  propertyId: z.number().int().describe("Matching property ID"),
268
269
  department: z.enum(["sales", "lettings"]).describe("sales or lettings"),
@@ -272,11 +273,11 @@ server.tool("loop-marketing-match-request", "Submit a viewing, information, or c
272
273
  phone: z.string().optional().describe("Requester phone"),
273
274
  message: z.string().optional().describe("Additional message"),
274
275
  }, toolHandler(async (p) => marketingMatchRequest(p)));
275
- server.tool("loop-marketing-enquiry", "Submit a seller-side marketing enquiry to Loop. For inbound applicant auto-responder workflows use loop-auto-responder.", {
276
+ lifelineTool(server, "loop-marketing-enquiry", "Submit a seller-side marketing enquiry to Loop. For inbound applicant auto-responder workflows use loop-auto-responder.", {
276
277
  teamName: z.string().min(1).describe("Team to submit through"),
277
278
  sellerEnquiryData: z.record(z.string(), z.unknown()).optional().describe("Seller enquiry request body"),
278
279
  }, toolHandler(async (p) => marketingEnquiry(p)));
279
- server.tool("loop-auto-responder", "Read or progress an inbound enquiry through Loop's auto-responder (the surface behind Loop's 40% enquiry-efficiency claim). action=get reads questions+details; answers submits applicant replies; details updates the enquiry record; refer hands it to another team.", {
280
+ lifelineTool(server, "loop-auto-responder", "Read or progress an inbound enquiry through Loop's auto-responder (the surface behind Loop's 40% enquiry-efficiency claim). action=get reads questions+details; answers submits applicant replies; details updates the enquiry record; refer hands it to another team.", {
280
281
  teamName: z.string().min(1).describe("Team for this operation"),
281
282
  action: z.enum(["get", "answers", "details", "refer"]).describe("Auto-responder action"),
282
283
  autoResponderId: z.number().int().describe("Auto-responder enquiry ID"),
@@ -287,7 +288,7 @@ server.tool("loop-auto-responder", "Read or progress an inbound enquiry through
287
288
  // ─────────────────────────────────────────────────────────────────
288
289
  // Customer Tools (1) — permission: customer
289
290
  // ─────────────────────────────────────────────────────────────────
290
- server.tool("loop-customer-preferences", "Read or write customer preferences for a person. Action 'read' returns current preferences, 'write' updates them.", {
291
+ lifelineTool(server, "loop-customer-preferences", "Read or write customer preferences for a person. Action 'read' returns current preferences, 'write' updates them.", {
291
292
  teamName: z.string().min(1).describe("Team for this operation"),
292
293
  personCode: z.number().int().describe("Person code (ID)"),
293
294
  action: z.enum(["read", "write"]).describe("read or write"),
@@ -296,7 +297,7 @@ server.tool("loop-customer-preferences", "Read or write customer preferences for
296
297
  // ─────────────────────────────────────────────────────────────────
297
298
  // Supplier Tools (1) — permission: supplier
298
299
  // ─────────────────────────────────────────────────────────────────
299
- server.tool("loop-supplier", "Supplier operations: maintenance jobs, quotes, board contractor jobs. Supports listing, completing, and quoting.", {
300
+ lifelineTool(server, "loop-supplier", "Supplier operations: maintenance jobs, quotes, board contractor jobs. Supports listing, completing, and quoting.", {
300
301
  teamName: z.string().min(1).describe("Team for this operation"),
301
302
  action: z.enum([
302
303
  "maintenance-jobs", "maintenance-complete", "maintenance-quotes",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oEAAoE;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,uEAAuE;AACvE,4DAA4D;AAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7B,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;IACtD,WAAW,EAAE,UAAU,EAAE,UAAU;CACpC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;AACnC,OAAO,CAAC,KAAK,CACX,kCAAkC,SAAS,YAAY,KAAK,CAAC,WAAW,SAAS,KAAK,CAAC,WAAW,EAAE,CACrG,CAAC;AAEF,0DAA0D;AAC1D,SAAS,WAAW,CAAC,EAAmD;IACtE,OAAO,KAAK,EAAE,MAA+B,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACnE,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,2BAA2B;AAC3B,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,mJAAmJ,EACnJ;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IACpG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC5E,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,eAAe,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;CAC3E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,GAAG,SAAS,MAAM,CAAC,QAAQ,4BAA4B,CAAC;QAChE,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,IAAI,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBACpF,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,uFAAuF,EACvF,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,EACtE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,QAAQ,iBAAiB,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAClF,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,kIAAkI,EAClI,EAAE,EACF,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAmB,EAAE,CAAC,CAAC,CACxE,CAAC;AAEF,oEAAoE;AACpE,wCAAwC;AACxC,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,oKAAoK,EACpK;IACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACvH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC5F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IACxG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAChG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAClF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAuC,CAAC,CAAC,CAChF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,sIAAsI,EACtI;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACrH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAuC,CAAC,CAAC,CAChF,CAAC;AAEF,oEAAoE;AACpE,8CAA8C;AAC9C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8IAA8I,EAC9I;IACE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACrE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACrE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACxG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAyC,CAAC,CAAC,CACpF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,0HAA0H,EAC1H;IACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAyC,CAAC,CAAC,CACpF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,6JAA6J,EAC7J;IACE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC9F,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAyC,CAAC,CAAC,CACpF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8HAA8H,EAC9H;IACE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC9F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAuC,CAAC,CAAC,CAChF,CAAC;AAEF,iFAAiF;AACjF,wEAAwE;AACxE,6BAA6B;AAE7B,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mIAAmI,EACnI;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC9D,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAA0C,CAAC,CAAC,CACtF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,wIAAwI,EACxI;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC9D,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAA2C,CAAC,CAAC,CACxF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,sIAAsI,EACtI;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC9D,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAA8C,CAAC,CAAC,CAC9F,CAAC;AAEF,oEAAoE;AACpE,2CAA2C;AAC3C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,sGAAsG,EACtG;IACE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7D,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACrF,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACjF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACzE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAwC,CAAC,CAAC,CAClF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,+DAA+D,EAC/D;IACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAwC,CAAC,CAAC,CAClF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2FAA2F,EAC3F;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC/D,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAChE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAwC,CAAC,CAAC,CAClF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mIAAmI,EACnI;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC1D,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CAC9H,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAwC,CAAC,CAAC,CAClF,CAAC;AAEF,oEAAoE;AACpE,4CAA4C;AAC5C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,mGAAmG,EACnG;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACxE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAsC,CAAC,CAAC,CAC9E,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,qGAAqG,EACrG;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC/C,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAyC,CAAC,CAAC,CACpF,CAAC;AAEF,oEAAoE;AACpE,oCAAoC;AACpC,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,+EAA+E,EAC/E;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAC5F,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAmC,CAAC,CAAC,CACxE,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,gEAAgE,EAChE;IACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAA2C,CAAC,CAAC,CACxF,CAAC;AAEF,oEAAoE;AACpE,8CAA8C;AAC9C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8EAA8E,EAC9E;IACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IAC/G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAA+C,CAAC,CAAC,CAChG,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,uDAAuD,EACvD;IACE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjF,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CACvE,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAA8C,CAAC,CAAC,CAC9F,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,6EAA6E,EAC7E;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC7D,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACvE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC9D,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAgD,CAAC,CAAC,CAClG,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,yHAAyH,EACzH;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC9D,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACxG,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAA2C,CAAC,CAAC,CACxF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wQAAwQ,EACxQ;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACxF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC7F,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACpG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACvG,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAwC,CAAC,CAAC,CAClF,CAAC;AAEF,oEAAoE;AACpE,4CAA4C;AAC5C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,mHAAmH,EACnH;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC9G,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAA8C,CAAC,CAAC,CAC9F,CAAC;AAEF,oEAAoE;AACpE,4CAA4C;AAC5C,oEAAoE;AAEpE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,kHAAkH,EAClH;IACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;QACb,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB;QAChE,0BAA0B,EAAE,YAAY,EAAE,gBAAgB;KAC3D,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IAChH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC7G,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAC9G,EACD,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAmC,CAAC,CAAC,CACxE,CAAC;AAEF,oEAAoE;AACpE,YAAY;AACZ,oEAAoE;AAEpE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import { marketingEnquiry } from "./tools/marketing-enquiry.js";
28
28
  import { autoResponder } from "./tools/auto-responder.js";
29
29
  import { customerPreferences } from "./tools/customer-preferences.js";
30
30
  import { supplier } from "./tools/supplier.js";
31
+ import { lifelineTool } from "../../../../../../platform/lib/mcp-lifeline/dist/index.js";
31
32
  import { closeDriver } from "./lib/neo4j.js";
32
33
  import { selectLoopKeyStore } from "./lib/key-store.js";
33
34
 
@@ -72,7 +73,7 @@ function toolHandler(fn: (p: Record<string, unknown>) => Promise<string>) {
72
73
  // Key Management Tools (3)
73
74
  // ─────────────────────────────────────────────────────────────────
74
75
 
75
- server.tool(
76
+ lifelineTool(server,
76
77
  "loop-key-register",
77
78
  "Register a Loop CRM API key for a team. Validates the key against Loop's API, encrypts it, and stores it in the graph. Each key maps to one team.",
78
79
  {
@@ -101,7 +102,7 @@ server.tool(
101
102
  }
102
103
  );
103
104
 
104
- server.tool(
105
+ lifelineTool(server,
105
106
  "loop-key-deregister",
106
107
  "Remove a registered Loop CRM team key. The key is permanently deleted from the graph.",
107
108
  { teamName: z.string().min(1).describe("Name of the team to remove") },
@@ -121,7 +122,7 @@ server.tool(
121
122
  }
122
123
  );
123
124
 
124
- server.tool(
125
+ lifelineTool(server,
125
126
  "loop-key-list",
126
127
  "List all registered Loop CRM teams for this account. Shows team names, addresses, and permissions. Never reveals API key values.",
127
128
  {},
@@ -132,7 +133,7 @@ server.tool(
132
133
  // People Tools (2) — permission: people
133
134
  // ─────────────────────────────────────────────────────────────────
134
135
 
135
- server.tool(
136
+ lifelineTool(server,
136
137
  "loop-people-search",
137
138
  "Search people in Loop CRM. Without a role, searches all contacts. With a role (buyers/sellers/renters/landlords), returns role-specific results with rich filters.",
138
139
  {
@@ -152,7 +153,7 @@ server.tool(
152
153
  toolHandler(async (p) => peopleSearch(p as Parameters<typeof peopleSearch>[0]))
153
154
  );
154
155
 
155
- server.tool(
156
+ lifelineTool(server,
156
157
  "loop-people-detail",
157
158
  "Get full details for a specific person by ID. Optionally specify a role (buyers/sellers/renters/landlords) for role-specific detail.",
158
159
  {
@@ -167,7 +168,7 @@ server.tool(
167
168
  // Property Tools (4) — permission: properties
168
169
  // ─────────────────────────────────────────────────────────────────
169
170
 
170
- server.tool(
171
+ lifelineTool(server,
171
172
  "loop-property-search",
172
173
  "Search properties in Loop CRM. Queries /property/residential/sales and /property/residential/lettings. Use department to narrow to one type.",
173
174
  {
@@ -185,7 +186,7 @@ server.tool(
185
186
  toolHandler(async (p) => propertySearch(p as Parameters<typeof propertySearch>[0]))
186
187
  );
187
188
 
188
- server.tool(
189
+ lifelineTool(server,
189
190
  "loop-property-detail",
190
191
  "Get full details for a specific property by ID and department. Optionally include a preview hash for the public preview.",
191
192
  {
@@ -197,7 +198,7 @@ server.tool(
197
198
  toolHandler(async (p) => propertyDetail(p as Parameters<typeof propertyDetail>[0]))
198
199
  );
199
200
 
200
- server.tool(
201
+ lifelineTool(server,
201
202
  "loop-property-listed",
202
203
  "Get properties currently listed on a specific channel (Rightmove, Zoopla, OnTheMarket, website). For exchanged/completed properties use loop-property-sold.",
203
204
  {
@@ -209,7 +210,7 @@ server.tool(
209
210
  toolHandler(async (p) => propertyListed(p as Parameters<typeof propertyListed>[0]))
210
211
  );
211
212
 
212
- server.tool(
213
+ lifelineTool(server,
213
214
  "loop-property-sold",
214
215
  "Get exchanged or completed properties on a specific channel. Powers canvassing from recent sales and sold-gallery rendering.",
215
216
  {
@@ -224,7 +225,7 @@ server.tool(
224
225
  // Each intent is a distinct operator action so the agent's tool surface
225
226
  // preserves intent fidelity.
226
227
 
227
- server.tool(
228
+ lifelineTool(server,
228
229
  "loop-property-viewing",
229
230
  "Request a viewing for a property. Use when the operator says 'book a viewing', 'arrange a viewing', or 'ask to see the property'.",
230
231
  {
@@ -239,7 +240,7 @@ server.tool(
239
240
  toolHandler(async (p) => propertyViewing(p as Parameters<typeof propertyViewing>[0]))
240
241
  );
241
242
 
242
- server.tool(
243
+ lifelineTool(server,
243
244
  "loop-property-callback",
244
245
  "Request a callback about a property. Use when the operator says 'ask them to call', 'request a callback', or 'have someone ring back'.",
245
246
  {
@@ -254,7 +255,7 @@ server.tool(
254
255
  toolHandler(async (p) => propertyCallback(p as Parameters<typeof propertyCallback>[0]))
255
256
  );
256
257
 
257
- server.tool(
258
+ lifelineTool(server,
258
259
  "loop-property-information",
259
260
  "Request more information about a property. Use when the operator says 'ask for details', 'request the brochure', or 'find out more'.",
260
261
  {
@@ -273,7 +274,7 @@ server.tool(
273
274
  // Viewing Tools (4) — permission: viewings
274
275
  // ─────────────────────────────────────────────────────────────────
275
276
 
276
- server.tool(
277
+ lifelineTool(server,
277
278
  "loop-viewing-search",
278
279
  "Search viewings in Loop CRM. Queries /residential/sales/viewings and /residential/lettings/viewings.",
279
280
  {
@@ -288,7 +289,7 @@ server.tool(
288
289
  toolHandler(async (p) => viewingSearch(p as Parameters<typeof viewingSearch>[0]))
289
290
  );
290
291
 
291
- server.tool(
292
+ lifelineTool(server,
292
293
  "loop-viewing-detail",
293
294
  "Get full details for a specific viewing by ID and department.",
294
295
  {
@@ -299,7 +300,7 @@ server.tool(
299
300
  toolHandler(async (p) => viewingDetail(p as Parameters<typeof viewingDetail>[0]))
300
301
  );
301
302
 
302
- server.tool(
303
+ lifelineTool(server,
303
304
  "loop-viewing-create",
304
305
  "Create a new viewing in Loop CRM. Creates the viewing and associated buyer/renter record.",
305
306
  {
@@ -315,7 +316,7 @@ server.tool(
315
316
  toolHandler(async (p) => viewingCreate(p as Parameters<typeof viewingCreate>[0]))
316
317
  );
317
318
 
318
- server.tool(
319
+ lifelineTool(server,
319
320
  "loop-viewing-update",
320
321
  "Add a note or record feedback for a viewing. For feedback, specify the party: buyer/seller (sales) or renter/landlord (lettings).",
321
322
  {
@@ -333,7 +334,7 @@ server.tool(
333
334
  // Feedback Tools (2) — permission: feedback
334
335
  // ─────────────────────────────────────────────────────────────────
335
336
 
336
- server.tool(
337
+ lifelineTool(server,
337
338
  "loop-feedback-get",
338
339
  "Get feedback for a specific viewing. Reads from /feedback/residential/{department}/viewings/{id}.",
339
340
  {
@@ -344,7 +345,7 @@ server.tool(
344
345
  toolHandler(async (p) => feedbackGet(p as Parameters<typeof feedbackGet>[0]))
345
346
  );
346
347
 
347
- server.tool(
348
+ lifelineTool(server,
348
349
  "loop-feedback-submit",
349
350
  "Submit feedback for a viewing. Writes to /feedback/residential/{department}/viewings/{id}/feedback.",
350
351
  {
@@ -360,7 +361,7 @@ server.tool(
360
361
  // Team Tools (2) — permission: team
361
362
  // ─────────────────────────────────────────────────────────────────
362
363
 
363
- server.tool(
364
+ lifelineTool(server,
364
365
  "loop-team-info",
365
366
  "Get team details from Loop CRM. Returns team name, address, phone, and email.",
366
367
  {
@@ -369,7 +370,7 @@ server.tool(
369
370
  toolHandler(async (p) => teamInfo(p as Parameters<typeof teamInfo>[0]))
370
371
  );
371
372
 
372
- server.tool(
373
+ lifelineTool(server,
373
374
  "loop-team-availability",
374
375
  "Get available time slots for a specific agent on a given date.",
375
376
  {
@@ -384,7 +385,7 @@ server.tool(
384
385
  // Marketing Tools (4) — permission: marketing
385
386
  // ─────────────────────────────────────────────────────────────────
386
387
 
387
- server.tool(
388
+ lifelineTool(server,
388
389
  "loop-marketing-match",
389
390
  "Get matching property detail and optionally the team profile for that match.",
390
391
  {
@@ -396,7 +397,7 @@ server.tool(
396
397
  toolHandler(async (p) => marketingMatchDetail(p as Parameters<typeof marketingMatchDetail>[0]))
397
398
  );
398
399
 
399
- server.tool(
400
+ lifelineTool(server,
400
401
  "loop-marketing-match-batch",
401
402
  "Get batch matching results for multiple property IDs.",
402
403
  {
@@ -407,7 +408,7 @@ server.tool(
407
408
  toolHandler(async (p) => marketingMatchBatch(p as Parameters<typeof marketingMatchBatch>[0]))
408
409
  );
409
410
 
410
- server.tool(
411
+ lifelineTool(server,
411
412
  "loop-marketing-match-request",
412
413
  "Submit a viewing, information, or callback request for a matching property.",
413
414
  {
@@ -423,7 +424,7 @@ server.tool(
423
424
  toolHandler(async (p) => marketingMatchRequest(p as Parameters<typeof marketingMatchRequest>[0]))
424
425
  );
425
426
 
426
- server.tool(
427
+ lifelineTool(server,
427
428
  "loop-marketing-enquiry",
428
429
  "Submit a seller-side marketing enquiry to Loop. For inbound applicant auto-responder workflows use loop-auto-responder.",
429
430
  {
@@ -433,7 +434,7 @@ server.tool(
433
434
  toolHandler(async (p) => marketingEnquiry(p as Parameters<typeof marketingEnquiry>[0]))
434
435
  );
435
436
 
436
- server.tool(
437
+ lifelineTool(server,
437
438
  "loop-auto-responder",
438
439
  "Read or progress an inbound enquiry through Loop's auto-responder (the surface behind Loop's 40% enquiry-efficiency claim). action=get reads questions+details; answers submits applicant replies; details updates the enquiry record; refer hands it to another team.",
439
440
  {
@@ -451,7 +452,7 @@ server.tool(
451
452
  // Customer Tools (1) — permission: customer
452
453
  // ─────────────────────────────────────────────────────────────────
453
454
 
454
- server.tool(
455
+ lifelineTool(server,
455
456
  "loop-customer-preferences",
456
457
  "Read or write customer preferences for a person. Action 'read' returns current preferences, 'write' updates them.",
457
458
  {
@@ -467,7 +468,7 @@ server.tool(
467
468
  // Supplier Tools (1) — permission: supplier
468
469
  // ─────────────────────────────────────────────────────────────────
469
470
 
470
- server.tool(
471
+ lifelineTool(server,
471
472
  "loop-supplier",
472
473
  "Supplier operations: maintenance jobs, quotes, board contractor jobs. Supports listing, completing, and quoting.",
473
474
  {