@rubytech/create-realagent 1.0.406

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 (817) hide show
  1. package/dist/index.js +915 -0
  2. package/dist/uninstall.js +569 -0
  3. package/package.json +31 -0
  4. package/payload/maxy/package.json +9 -0
  5. package/payload/maxy/public/assets/ChatInput-7sHhJaNJ.js +42 -0
  6. package/payload/maxy/public/assets/ChatInput-oLFewltq.css +1 -0
  7. package/payload/maxy/public/assets/admin-k0izNYS1.js +352 -0
  8. package/payload/maxy/public/assets/cormorant-cyrillic-300-normal-CzPHYadL.woff +0 -0
  9. package/payload/maxy/public/assets/cormorant-cyrillic-300-normal-DFUoTmrg.woff2 +0 -0
  10. package/payload/maxy/public/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
  11. package/payload/maxy/public/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
  12. package/payload/maxy/public/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
  13. package/payload/maxy/public/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
  14. package/payload/maxy/public/assets/cormorant-cyrillic-ext-300-normal-BXl3lXsi.woff2 +0 -0
  15. package/payload/maxy/public/assets/cormorant-cyrillic-ext-300-normal-DmxSOTe3.woff +0 -0
  16. package/payload/maxy/public/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
  17. package/payload/maxy/public/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
  18. package/payload/maxy/public/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
  19. package/payload/maxy/public/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
  20. package/payload/maxy/public/assets/cormorant-latin-300-normal-CJ5dfen0.woff2 +0 -0
  21. package/payload/maxy/public/assets/cormorant-latin-300-normal-DQZObO_3.woff +0 -0
  22. package/payload/maxy/public/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
  23. package/payload/maxy/public/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
  24. package/payload/maxy/public/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
  25. package/payload/maxy/public/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
  26. package/payload/maxy/public/assets/cormorant-latin-ext-300-normal-CkiUx0UG.woff +0 -0
  27. package/payload/maxy/public/assets/cormorant-latin-ext-300-normal-De3D72RL.woff2 +0 -0
  28. package/payload/maxy/public/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
  29. package/payload/maxy/public/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
  30. package/payload/maxy/public/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
  31. package/payload/maxy/public/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
  32. package/payload/maxy/public/assets/cormorant-vietnamese-300-normal-BVqIp_mg.woff2 +0 -0
  33. package/payload/maxy/public/assets/cormorant-vietnamese-300-normal-CEMS9Pw-.woff +0 -0
  34. package/payload/maxy/public/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
  35. package/payload/maxy/public/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
  36. package/payload/maxy/public/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
  37. package/payload/maxy/public/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
  38. package/payload/maxy/public/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
  39. package/payload/maxy/public/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
  40. package/payload/maxy/public/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
  41. package/payload/maxy/public/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
  42. package/payload/maxy/public/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff +0 -0
  43. package/payload/maxy/public/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2 +0 -0
  44. package/payload/maxy/public/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2 +0 -0
  45. package/payload/maxy/public/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff +0 -0
  46. package/payload/maxy/public/assets/public-3Y1Xk7cO.js +5 -0
  47. package/payload/maxy/public/brand/claude.png +0 -0
  48. package/payload/maxy/public/brand/maxy-black.png +0 -0
  49. package/payload/maxy/public/brand/maxy-monochrome.png +0 -0
  50. package/payload/maxy/public/brand/maxy.png +0 -0
  51. package/payload/maxy/public/brand-constants.json +8 -0
  52. package/payload/maxy/public/brand-defaults.css +12 -0
  53. package/payload/maxy/public/favicon.ico +0 -0
  54. package/payload/maxy/public/index.html +16 -0
  55. package/payload/maxy/public/public.html +16 -0
  56. package/payload/maxy/public/robots.txt +5 -0
  57. package/payload/maxy/public/vnc-popout.html +59 -0
  58. package/payload/maxy/server-init.cjs +115 -0
  59. package/payload/maxy/server.js +9876 -0
  60. package/payload/platform/config/brand.json +42 -0
  61. package/payload/platform/config/cloudflared.yml +17 -0
  62. package/payload/platform/knowledge/maxy.md +772 -0
  63. package/payload/platform/neo4j/migrations/001-backfill-scope.cypher +30 -0
  64. package/payload/platform/neo4j/schema.cypher +557 -0
  65. package/payload/platform/package-lock.json +2534 -0
  66. package/payload/platform/package.json +20 -0
  67. package/payload/platform/plugins/admin/PLUGIN.md +47 -0
  68. package/payload/platform/plugins/admin/hooks/agent-creation-approval.sh +153 -0
  69. package/payload/platform/plugins/admin/hooks/agent-creation-gate.sh +309 -0
  70. package/payload/platform/plugins/admin/hooks/agent-creation-post.sh +157 -0
  71. package/payload/platform/plugins/admin/hooks/pre-tool-use.sh +49 -0
  72. package/payload/platform/plugins/admin/hooks/session-start.sh +88 -0
  73. package/payload/platform/plugins/admin/hooks/test-agent-creation-gate.sh +878 -0
  74. package/payload/platform/plugins/admin/mcp/dist/index.d.ts +2 -0
  75. package/payload/platform/plugins/admin/mcp/dist/index.d.ts.map +1 -0
  76. package/payload/platform/plugins/admin/mcp/dist/index.js +616 -0
  77. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -0
  78. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts +5 -0
  79. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts.map +1 -0
  80. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +34 -0
  81. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -0
  82. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +23 -0
  83. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +1 -0
  84. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +160 -0
  85. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +1 -0
  86. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.d.ts +2 -0
  87. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.d.ts.map +1 -0
  88. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.js +224 -0
  89. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.test.js.map +1 -0
  90. package/payload/platform/plugins/admin/mcp/package.json +21 -0
  91. package/payload/platform/plugins/admin/references/chat-ui-guide.md +31 -0
  92. package/payload/platform/plugins/admin/references/contextual-ui.md +107 -0
  93. package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +28 -0
  94. package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +197 -0
  95. package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +42 -0
  96. package/payload/platform/plugins/admin/skills/datetime/SKILL.md +91 -0
  97. package/payload/platform/plugins/admin/skills/onboarding/skill.md +136 -0
  98. package/payload/platform/plugins/admin/skills/plugin-management/skill.md +76 -0
  99. package/payload/platform/plugins/admin/skills/public-agent-manager/skill.md +212 -0
  100. package/payload/platform/plugins/admin/skills/qr-code/SKILL.md +35 -0
  101. package/payload/platform/plugins/admin/skills/qr-code/references/data-formats.md +113 -0
  102. package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +112 -0
  103. package/payload/platform/plugins/admin/skills/skill-builder/references/lean-pattern.md +110 -0
  104. package/payload/platform/plugins/admin/skills/specialist-management/skill.md +44 -0
  105. package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +40 -0
  106. package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +161 -0
  107. package/payload/platform/plugins/admin/skills/update-knowledge/skill.md +47 -0
  108. package/payload/platform/plugins/anthropic/PLUGIN.md +38 -0
  109. package/payload/platform/plugins/anthropic/references/setup-guide.md +114 -0
  110. package/payload/platform/plugins/anthropic/skills/get-api-key.md +57 -0
  111. package/payload/platform/plugins/business-assistant/PLUGIN.md +59 -0
  112. package/payload/platform/plugins/business-assistant/references/crm.md +112 -0
  113. package/payload/platform/plugins/business-assistant/references/document-management.md +96 -0
  114. package/payload/platform/plugins/business-assistant/references/escalation.md +126 -0
  115. package/payload/platform/plugins/business-assistant/references/invoicing.md +163 -0
  116. package/payload/platform/plugins/business-assistant/references/profiling.md +50 -0
  117. package/payload/platform/plugins/business-assistant/references/quoting.md +56 -0
  118. package/payload/platform/plugins/business-assistant/references/scheduling.md +127 -0
  119. package/payload/platform/plugins/business-assistant/references/task-management.md +155 -0
  120. package/payload/platform/plugins/cloudflare/PLUGIN.md +48 -0
  121. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts +2 -0
  122. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts.map +1 -0
  123. package/payload/platform/plugins/cloudflare/mcp/dist/index.js +698 -0
  124. package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -0
  125. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +101 -0
  126. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +1 -0
  127. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +525 -0
  128. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -0
  129. package/payload/platform/plugins/cloudflare/mcp/package.json +19 -0
  130. package/payload/platform/plugins/cloudflare/references/setup-guide.md +126 -0
  131. package/payload/platform/plugins/cloudflare/skills/setup-tunnel.md +217 -0
  132. package/payload/platform/plugins/contacts/PLUGIN.md +20 -0
  133. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts +2 -0
  134. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts.map +1 -0
  135. package/payload/platform/plugins/contacts/mcp/dist/index.js +210 -0
  136. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -0
  137. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts +5 -0
  138. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts.map +1 -0
  139. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +34 -0
  140. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -0
  141. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +19 -0
  142. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -0
  143. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +68 -0
  144. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -0
  145. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts +12 -0
  146. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts.map +1 -0
  147. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js +35 -0
  148. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js.map +1 -0
  149. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts +22 -0
  150. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts.map +1 -0
  151. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js +47 -0
  152. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js.map +1 -0
  153. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +20 -0
  154. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -0
  155. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +57 -0
  156. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -0
  157. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts +13 -0
  158. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts.map +1 -0
  159. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js +54 -0
  160. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js.map +1 -0
  161. package/payload/platform/plugins/contacts/mcp/package.json +19 -0
  162. package/payload/platform/plugins/deep-research/PLUGIN.md +14 -0
  163. package/payload/platform/plugins/deep-research/skills/deep-research/SKILL.md +46 -0
  164. package/payload/platform/plugins/deep-research/skills/deep-research/references/citation-styles.md +52 -0
  165. package/payload/platform/plugins/deep-research/skills/deep-research/references/research-modes.md +22 -0
  166. package/payload/platform/plugins/deep-research/skills/deep-research/references/search-strategy.md +24 -0
  167. package/payload/platform/plugins/docs/PLUGIN.md +44 -0
  168. package/payload/platform/plugins/docs/references/access-control.md +51 -0
  169. package/payload/platform/plugins/docs/references/contacts-guide.md +59 -0
  170. package/payload/platform/plugins/docs/references/deployment.md +71 -0
  171. package/payload/platform/plugins/docs/references/getting-started.md +45 -0
  172. package/payload/platform/plugins/docs/references/memory-guide.md +87 -0
  173. package/payload/platform/plugins/docs/references/platform.md +64 -0
  174. package/payload/platform/plugins/docs/references/plugins-guide.md +83 -0
  175. package/payload/platform/plugins/docs/references/settings.md +89 -0
  176. package/payload/platform/plugins/docs/references/telegram-guide.md +58 -0
  177. package/payload/platform/plugins/docs/references/troubleshooting.md +88 -0
  178. package/payload/platform/plugins/documents/mcp/dist/index.d.ts +2 -0
  179. package/payload/platform/plugins/documents/mcp/dist/index.d.ts.map +1 -0
  180. package/payload/platform/plugins/documents/mcp/dist/index.js +98 -0
  181. package/payload/platform/plugins/documents/mcp/dist/index.js.map +1 -0
  182. package/payload/platform/plugins/email/PLUGIN.md +222 -0
  183. package/payload/platform/plugins/email/mcp/dist/index.d.ts +2 -0
  184. package/payload/platform/plugins/email/mcp/dist/index.d.ts.map +1 -0
  185. package/payload/platform/plugins/email/mcp/dist/index.js +288 -0
  186. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -0
  187. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +111 -0
  188. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -0
  189. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +357 -0
  190. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -0
  191. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts +2 -0
  192. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts.map +1 -0
  193. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +24 -0
  194. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -0
  195. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +87 -0
  196. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -0
  197. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +324 -0
  198. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -0
  199. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +215 -0
  200. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -0
  201. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +735 -0
  202. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -0
  203. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts +5 -0
  204. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts.map +1 -0
  205. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +34 -0
  206. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -0
  207. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts +25 -0
  208. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts.map +1 -0
  209. package/payload/platform/plugins/email/mcp/dist/lib/providers.js +116 -0
  210. package/payload/platform/plugins/email/mcp/dist/lib/providers.js.map +1 -0
  211. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +29 -0
  212. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +1 -0
  213. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +101 -0
  214. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +1 -0
  215. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +21 -0
  216. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -0
  217. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +77 -0
  218. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -0
  219. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +38 -0
  220. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +1 -0
  221. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +844 -0
  222. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -0
  223. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +25 -0
  224. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -0
  225. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +214 -0
  226. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -0
  227. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +19 -0
  228. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +1 -0
  229. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +151 -0
  230. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +1 -0
  231. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +22 -0
  232. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -0
  233. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +188 -0
  234. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -0
  235. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts +15 -0
  236. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -0
  237. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +142 -0
  238. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -0
  239. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts +14 -0
  240. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -0
  241. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +75 -0
  242. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -0
  243. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +10 -0
  244. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -0
  245. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +83 -0
  246. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -0
  247. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts +15 -0
  248. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -0
  249. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +63 -0
  250. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -0
  251. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +10 -0
  252. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -0
  253. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +25 -0
  254. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -0
  255. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts +22 -0
  256. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -0
  257. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +183 -0
  258. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -0
  259. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +6 -0
  260. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -0
  261. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +43 -0
  262. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -0
  263. package/payload/platform/plugins/email/mcp/package.json +23 -0
  264. package/payload/platform/plugins/memory/PLUGIN.md +52 -0
  265. package/payload/platform/plugins/memory/mcp/dist/index.d.ts +2 -0
  266. package/payload/platform/plugins/memory/mcp/dist/index.d.ts.map +1 -0
  267. package/payload/platform/plugins/memory/mcp/dist/index.js +899 -0
  268. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -0
  269. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts +37 -0
  270. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts.map +1 -0
  271. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js +68 -0
  272. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js.map +1 -0
  273. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts +31 -0
  274. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts.map +1 -0
  275. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +62 -0
  276. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -0
  277. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts +3 -0
  278. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts.map +1 -0
  279. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js +29 -0
  280. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js.map +1 -0
  281. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +5 -0
  282. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts.map +1 -0
  283. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +34 -0
  284. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -0
  285. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts +61 -0
  286. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.d.ts.map +1 -0
  287. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js +266 -0
  288. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.js.map +1 -0
  289. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.d.ts +2 -0
  290. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.d.ts.map +1 -0
  291. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.js +233 -0
  292. package/payload/platform/plugins/memory/mcp/dist/lib/semantic-chunker.test.js.map +1 -0
  293. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +19 -0
  294. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -0
  295. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +98 -0
  296. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -0
  297. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts +17 -0
  298. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -0
  299. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +92 -0
  300. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -0
  301. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts +40 -0
  302. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -0
  303. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +116 -0
  304. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -0
  305. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts +20 -0
  306. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -0
  307. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +108 -0
  308. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -0
  309. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +35 -0
  310. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -0
  311. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +233 -0
  312. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -0
  313. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts +17 -0
  314. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts.map +1 -0
  315. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +86 -0
  316. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -0
  317. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts +12 -0
  318. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts.map +1 -0
  319. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js +100 -0
  320. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js.map +1 -0
  321. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts +8 -0
  322. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -0
  323. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +71 -0
  324. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -0
  325. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts +13 -0
  326. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -0
  327. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +63 -0
  328. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -0
  329. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts +34 -0
  330. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -0
  331. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +380 -0
  332. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -0
  333. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +13 -0
  334. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -0
  335. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +62 -0
  336. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -0
  337. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +21 -0
  338. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -0
  339. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +60 -0
  340. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -0
  341. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts +13 -0
  342. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -0
  343. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +18 -0
  344. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -0
  345. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +41 -0
  346. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -0
  347. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +192 -0
  348. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -0
  349. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +21 -0
  350. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -0
  351. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +235 -0
  352. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -0
  353. package/payload/platform/plugins/memory/mcp/package.json +19 -0
  354. package/payload/platform/plugins/memory/references/schema-base.md +102 -0
  355. package/payload/platform/plugins/memory/references/schema-creator.md +35 -0
  356. package/payload/platform/plugins/memory/references/schema-estate-agent.md +35 -0
  357. package/payload/platform/plugins/memory/references/schema-food-beverage.md +32 -0
  358. package/payload/platform/plugins/memory/references/schema-hospitality.md +31 -0
  359. package/payload/platform/plugins/memory/references/schema-logistics.md +30 -0
  360. package/payload/platform/plugins/memory/references/schema-professional-services.md +33 -0
  361. package/payload/platform/plugins/memory/references/schema-retail.md +33 -0
  362. package/payload/platform/plugins/memory/references/schema-trades.md +36 -0
  363. package/payload/platform/plugins/memory/skills/conversational-memory.md +99 -0
  364. package/payload/platform/plugins/projects/PLUGIN.md +87 -0
  365. package/payload/platform/plugins/projects/references/investigation.md +63 -0
  366. package/payload/platform/plugins/projects/references/retrospective.md +71 -0
  367. package/payload/platform/plugins/projects/references/review.md +51 -0
  368. package/payload/platform/plugins/projects/references/sprint.md +168 -0
  369. package/payload/platform/plugins/sales/PLUGIN.md +106 -0
  370. package/payload/platform/plugins/sales/references/close-tracking.md +69 -0
  371. package/payload/platform/plugins/sales/references/comparisons.md +99 -0
  372. package/payload/platform/plugins/sales/references/competitive-positioning.md +51 -0
  373. package/payload/platform/plugins/sales/references/faq.md +62 -0
  374. package/payload/platform/plugins/sales/references/objection-handling.md +157 -0
  375. package/payload/platform/plugins/sales/references/pricing.md +71 -0
  376. package/payload/platform/plugins/scheduling/PLUGIN.md +79 -0
  377. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts +2 -0
  378. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts.map +1 -0
  379. package/payload/platform/plugins/scheduling/mcp/dist/index.js +201 -0
  380. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -0
  381. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts +2 -0
  382. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts.map +1 -0
  383. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js +19 -0
  384. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js.map +1 -0
  385. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +5 -0
  386. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts.map +1 -0
  387. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +34 -0
  388. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -0
  389. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +20 -0
  390. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -0
  391. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +475 -0
  392. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -0
  393. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts +7 -0
  394. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -0
  395. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +23 -0
  396. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -0
  397. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +23 -0
  398. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -0
  399. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +107 -0
  400. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -0
  401. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +25 -0
  402. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -0
  403. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +53 -0
  404. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -0
  405. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +20 -0
  406. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -0
  407. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +58 -0
  408. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -0
  409. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +18 -0
  410. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -0
  411. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +167 -0
  412. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -0
  413. package/payload/platform/plugins/scheduling/mcp/package.json +21 -0
  414. package/payload/platform/plugins/tasks/.claude-plugin/plugin.json +18 -0
  415. package/payload/platform/plugins/tasks/.mcp.json +13 -0
  416. package/payload/platform/plugins/tasks/PLUGIN.md +56 -0
  417. package/payload/platform/plugins/tasks/mcp/dist/index.d.ts +2 -0
  418. package/payload/platform/plugins/tasks/mcp/dist/index.d.ts.map +1 -0
  419. package/payload/platform/plugins/tasks/mcp/dist/index.js +287 -0
  420. package/payload/platform/plugins/tasks/mcp/dist/index.js.map +1 -0
  421. package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.d.ts +7 -0
  422. package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.d.ts.map +1 -0
  423. package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.js +24 -0
  424. package/payload/platform/plugins/tasks/mcp/dist/lib/embeddings.js.map +1 -0
  425. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.d.ts +5 -0
  426. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.d.ts.map +1 -0
  427. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js +34 -0
  428. package/payload/platform/plugins/tasks/mcp/dist/lib/neo4j.js.map +1 -0
  429. package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.d.ts +20 -0
  430. package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.d.ts.map +1 -0
  431. package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.js +37 -0
  432. package/payload/platform/plugins/tasks/mcp/dist/tools/session-list.js.map +1 -0
  433. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts +6 -0
  434. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.d.ts.map +1 -0
  435. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.js +13 -0
  436. package/payload/platform/plugins/tasks/mcp/dist/tools/session-name.js.map +1 -0
  437. package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.d.ts +16 -0
  438. package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.d.ts.map +1 -0
  439. package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.js +33 -0
  440. package/payload/platform/plugins/tasks/mcp/dist/tools/task-complete.js.map +1 -0
  441. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts +18 -0
  442. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.d.ts.map +1 -0
  443. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js +55 -0
  444. package/payload/platform/plugins/tasks/mcp/dist/tools/task-create.js.map +1 -0
  445. package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.d.ts +19 -0
  446. package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.d.ts.map +1 -0
  447. package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.js +51 -0
  448. package/payload/platform/plugins/tasks/mcp/dist/tools/task-get.js.map +1 -0
  449. package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.d.ts +18 -0
  450. package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.d.ts.map +1 -0
  451. package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.js +66 -0
  452. package/payload/platform/plugins/tasks/mcp/dist/tools/task-list.js.map +1 -0
  453. package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.d.ts +21 -0
  454. package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.d.ts.map +1 -0
  455. package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.js +54 -0
  456. package/payload/platform/plugins/tasks/mcp/dist/tools/task-ready.js.map +1 -0
  457. package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.d.ts +12 -0
  458. package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.d.ts.map +1 -0
  459. package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.js +31 -0
  460. package/payload/platform/plugins/tasks/mcp/dist/tools/task-relate.js.map +1 -0
  461. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts +11 -0
  462. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.d.ts.map +1 -0
  463. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js +62 -0
  464. package/payload/platform/plugins/tasks/mcp/dist/tools/task-update.js.map +1 -0
  465. package/payload/platform/plugins/tasks/mcp/package.json +20 -0
  466. package/payload/platform/plugins/waitlist/PLUGIN.md +63 -0
  467. package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts +2 -0
  468. package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts.map +1 -0
  469. package/payload/platform/plugins/waitlist/mcp/dist/index.js +276 -0
  470. package/payload/platform/plugins/waitlist/mcp/dist/index.js.map +1 -0
  471. package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.d.ts +23 -0
  472. package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.d.ts.map +1 -0
  473. package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.js +115 -0
  474. package/payload/platform/plugins/waitlist/mcp/dist/lib/anthropic.js.map +1 -0
  475. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts +3 -0
  476. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts.map +1 -0
  477. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js +48 -0
  478. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js.map +1 -0
  479. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts +5 -0
  480. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts.map +1 -0
  481. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +34 -0
  482. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +1 -0
  483. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts +12 -0
  484. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts.map +1 -0
  485. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js +197 -0
  486. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js.map +1 -0
  487. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts +22 -0
  488. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts.map +1 -0
  489. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js +57 -0
  490. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js.map +1 -0
  491. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +60 -0
  492. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts.map +1 -0
  493. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +342 -0
  494. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +1 -0
  495. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts +18 -0
  496. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts.map +1 -0
  497. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js +80 -0
  498. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js.map +1 -0
  499. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts +27 -0
  500. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts.map +1 -0
  501. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js +40 -0
  502. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js.map +1 -0
  503. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts +31 -0
  504. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts.map +1 -0
  505. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +336 -0
  506. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +1 -0
  507. package/payload/platform/plugins/waitlist/mcp/package.json +21 -0
  508. package/payload/platform/plugins/workflows/.claude-plugin/plugin.json +17 -0
  509. package/payload/platform/plugins/workflows/.mcp.json +12 -0
  510. package/payload/platform/plugins/workflows/PLUGIN.md +187 -0
  511. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts +2 -0
  512. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts.map +1 -0
  513. package/payload/platform/plugins/workflows/mcp/dist/index.js +408 -0
  514. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -0
  515. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts +2 -0
  516. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts.map +1 -0
  517. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js +19 -0
  518. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js.map +1 -0
  519. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +48 -0
  520. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +1 -0
  521. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +281 -0
  522. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +1 -0
  523. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts +5 -0
  524. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts.map +1 -0
  525. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +34 -0
  526. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -0
  527. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +71 -0
  528. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -0
  529. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +183 -0
  530. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -0
  531. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts +24 -0
  532. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts.map +1 -0
  533. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js +60 -0
  534. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js.map +1 -0
  535. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +35 -0
  536. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -0
  537. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +124 -0
  538. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -0
  539. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts +6 -0
  540. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts.map +1 -0
  541. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js +25 -0
  542. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js.map +1 -0
  543. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +50 -0
  544. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -0
  545. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +383 -0
  546. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -0
  547. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts +27 -0
  548. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts.map +1 -0
  549. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js +49 -0
  550. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js.map +1 -0
  551. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts +16 -0
  552. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts.map +1 -0
  553. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js +43 -0
  554. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js.map +1 -0
  555. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts +27 -0
  556. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts.map +1 -0
  557. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js +64 -0
  558. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js.map +1 -0
  559. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts +11 -0
  560. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -0
  561. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +162 -0
  562. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -0
  563. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts +13 -0
  564. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts.map +1 -0
  565. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js +53 -0
  566. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js.map +1 -0
  567. package/payload/platform/plugins/workflows/mcp/package.json +20 -0
  568. package/payload/platform/plugins/workflows/mcp/test-runner.mjs +710 -0
  569. package/payload/platform/plugins/workflows/mcp/test-workflows.sh +73 -0
  570. package/payload/platform/plugins/workflows/skills/workflow-manager/skill.md +88 -0
  571. package/payload/platform/scripts/hooks/pre-commit +111 -0
  572. package/payload/platform/scripts/resume-tunnel.sh +86 -0
  573. package/payload/platform/scripts/seed-neo4j.sh +273 -0
  574. package/payload/platform/scripts/setup.sh +177 -0
  575. package/payload/platform/scripts/vnc.sh +127 -0
  576. package/payload/platform/templates/account.json +13 -0
  577. package/payload/platform/templates/agents/admin/AGENTS.md +10 -0
  578. package/payload/platform/templates/agents/admin/IDENTITY.md +124 -0
  579. package/payload/platform/templates/agents/admin/LEARNINGS.md +21 -0
  580. package/payload/platform/templates/agents/admin/SOUL.md +1 -0
  581. package/payload/platform/templates/agents/public/IDENTITY.md +18 -0
  582. package/payload/platform/templates/agents/public/SOUL.md +7 -0
  583. package/payload/platform/templates/agents/public/config.json +9 -0
  584. package/payload/platform/templates/specialists/.claude-plugin/plugin.json +4 -0
  585. package/payload/platform/templates/specialists/agents/admin-specialist.md +13 -0
  586. package/payload/platform/templates/specialists/agents/browser-specialist.md +35 -0
  587. package/payload/platform/templates/specialists/agents/document-specialist.md +70 -0
  588. package/payload/platform/templates/specialists/agents/memory-specialist.md +13 -0
  589. package/payload/platform/templates/specialists/agents/researcher.md +52 -0
  590. package/payload/platform/templates/specialists/agents/scheduler.md +11 -0
  591. package/payload/platform/tsconfig.base.json +18 -0
  592. package/payload/premium-plugins/real-agency/PLUGIN.md +101 -0
  593. package/payload/premium-plugins/real-agency/references/agent-performance-atomic-habits.md +52 -0
  594. package/payload/premium-plugins/real-agency/references/agent-performance-daily-routine-scorecard.md +104 -0
  595. package/payload/premium-plugins/real-agency/references/agent-performance-hp6-model.md +63 -0
  596. package/payload/premium-plugins/real-agency/references/agent-performance-twelve-week-year.md +71 -0
  597. package/payload/premium-plugins/real-agency/references/bespoke-coaching-coaching-boundaries.md +56 -0
  598. package/payload/premium-plugins/real-agency/references/bespoke-coaching-feedback-framework.md +61 -0
  599. package/payload/premium-plugins/real-agency/references/bespoke-coaching-performance-framework.md +109 -0
  600. package/payload/premium-plugins/real-agency/references/bootstrap-onboarding-flow.md +63 -0
  601. package/payload/premium-plugins/real-agency/references/business-growth-buy-back-your-time.md +37 -0
  602. package/payload/premium-plugins/real-agency/references/business-growth-firewave-gost-scorecards.md +14 -0
  603. package/payload/premium-plugins/real-agency/references/business-growth-keller-org-model.md +17 -0
  604. package/payload/premium-plugins/real-agency/references/business-growth-lencioni-team-models.md +22 -0
  605. package/payload/premium-plugins/real-agency/references/business-growth-listing-management-system.md +11 -0
  606. package/payload/premium-plugins/real-agency/references/business-growth-net-figure-form.md +11 -0
  607. package/payload/premium-plugins/real-agency/references/business-growth-serhant-bizinbox-notes.md +13 -0
  608. package/payload/premium-plugins/real-agency/references/business-growth-team-roles-commission.md +14 -0
  609. package/payload/premium-plugins/real-agency/references/business-growth-va-2026-ops.md +43 -0
  610. package/payload/premium-plugins/real-agency/references/business-growth-wingman-structure.md +13 -0
  611. package/payload/premium-plugins/real-agency/references/business-operations-crm-systems.md +57 -0
  612. package/payload/premium-plugins/real-agency/references/business-operations-hiring-guide.md +59 -0
  613. package/payload/premium-plugins/real-agency/references/business-operations-impact-framework.md +47 -0
  614. package/payload/premium-plugins/real-agency/references/business-operations-minutes-equal-money.md +55 -0
  615. package/payload/premium-plugins/real-agency/references/business-operations-team-management.md +48 -0
  616. package/payload/premium-plugins/real-agency/references/buyer-management-buyer-qualification-questions.md +16 -0
  617. package/payload/premium-plugins/real-agency/references/buyer-management-buyer-qualification.md +59 -0
  618. package/payload/premium-plugins/real-agency/references/buyer-management-buyer-scripts.md +63 -0
  619. package/payload/premium-plugins/real-agency/references/buyer-management-buyer-working-scripts.md +54 -0
  620. package/payload/premium-plugins/real-agency/references/buyer-management-feedback-collection.md +42 -0
  621. package/payload/premium-plugins/real-agency/references/buyer-management-offer-capture.md +38 -0
  622. package/payload/premium-plugins/real-agency/references/buyer-management-viewing-booking.md +32 -0
  623. package/payload/premium-plugins/real-agency/references/buyer-management-viewing-management.md +52 -0
  624. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-care-fees-guide.md +68 -0
  625. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-divorce-sales-guide.md +61 -0
  626. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-downsizing-guide.md +45 -0
  627. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-first-time-buyers.md +92 -0
  628. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-first-time-sellers.md +78 -0
  629. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-probate-guide.md +53 -0
  630. package/payload/premium-plugins/real-agency/references/buyer-seller-guides-upsizing-guide.md +41 -0
  631. package/payload/premium-plugins/real-agency/references/coaching-toolkit-coaching-exercises.md +86 -0
  632. package/payload/premium-plugins/real-agency/references/coaching-toolkit-goal-setting.md +78 -0
  633. package/payload/premium-plugins/real-agency/references/coaching-toolkit-one-to-one-framework.md +92 -0
  634. package/payload/premium-plugins/real-agency/references/coaching-toolkit-soi-workbook.md +103 -0
  635. package/payload/premium-plugins/real-agency/references/content-directory-module-delivery.md +65 -0
  636. package/payload/premium-plugins/real-agency/references/content-directory-progress-tracking.md +47 -0
  637. package/payload/premium-plugins/real-agency/references/exp-partnership-12-reasons.md +39 -0
  638. package/payload/premium-plugins/real-agency/references/exp-partnership-95-5-system.md +66 -0
  639. package/payload/premium-plugins/real-agency/references/exp-partnership-agent-attraction-scripts.md +90 -0
  640. package/payload/premium-plugins/real-agency/references/exp-partnership-business-partnership.md +92 -0
  641. package/payload/premium-plugins/real-agency/references/exp-partnership-exp-model-overview.md +66 -0
  642. package/payload/premium-plugins/real-agency/references/exp-partnership-model-comparison.md +66 -0
  643. package/payload/premium-plugins/real-agency/references/exp-partnership-revenue-share-explained.md +57 -0
  644. package/payload/premium-plugins/real-agency/references/home-preparation-kerb-appeal.md +38 -0
  645. package/payload/premium-plugins/real-agency/references/home-preparation-photo-day.md +59 -0
  646. package/payload/premium-plugins/real-agency/references/home-preparation-situational-tips.md +50 -0
  647. package/payload/premium-plugins/real-agency/references/home-preparation-staging-guide.md +52 -0
  648. package/payload/premium-plugins/real-agency/references/lead-nurturing-buyer-search-letter.md +28 -0
  649. package/payload/premium-plugins/real-agency/references/lead-nurturing-buyer-search-letters.md +37 -0
  650. package/payload/premium-plugins/real-agency/references/lead-nurturing-database-reactivation.md +30 -0
  651. package/payload/premium-plugins/real-agency/references/lead-nurturing-email-nurture-sequences.md +45 -0
  652. package/payload/premium-plugins/real-agency/references/lead-nurturing-facebook-referrals.md +30 -0
  653. package/payload/premium-plugins/real-agency/references/lead-nurturing-firewave-email-nurture-sequences.md +41 -0
  654. package/payload/premium-plugins/real-agency/references/lead-nurturing-keller-33-touch.md +34 -0
  655. package/payload/premium-plugins/real-agency/references/lead-nurturing-neighbour-letters.md +31 -0
  656. package/payload/premium-plugins/real-agency/references/lead-nurturing-neighbour-notification-letter.md +20 -0
  657. package/payload/premium-plugins/real-agency/references/lead-nurturing-ofi-follow-up-dialogue.md +22 -0
  658. package/payload/premium-plugins/real-agency/references/lead-nurturing-ofi-follow-up.md +26 -0
  659. package/payload/premium-plugins/real-agency/references/lead-nurturing-serhant-three-fs-plus.md +21 -0
  660. package/payload/premium-plugins/real-agency/references/lead-nurturing-sharran-10x10x10.md +18 -0
  661. package/payload/premium-plugins/real-agency/references/lead-nurturing-sms-templates.md +40 -0
  662. package/payload/premium-plugins/real-agency/references/lead-nurturing-sphere-of-influence-notes.md +34 -0
  663. package/payload/premium-plugins/real-agency/references/lead-nurturing-sphere-of-influence.md +60 -0
  664. package/payload/premium-plugins/real-agency/references/lead-nurturing-tom-panos-sms-templates.md +59 -0
  665. package/payload/premium-plugins/real-agency/references/listing-presentation-booking-script.md +51 -0
  666. package/payload/premium-plugins/real-agency/references/listing-presentation-objection-scripts.md +193 -0
  667. package/payload/premium-plugins/real-agency/references/listing-presentation-penhaul-presentation.md +123 -0
  668. package/payload/premium-plugins/real-agency/references/listing-presentation-pre-listing-kit.md +139 -0
  669. package/payload/premium-plugins/real-agency/references/listing-presentation-set-to-sell.md +55 -0
  670. package/payload/premium-plugins/real-agency/references/listing-presentation-sharran-frameworks.md +107 -0
  671. package/payload/premium-plugins/real-agency/references/negotiation-deal-saving.md +47 -0
  672. package/payload/premium-plugins/real-agency/references/negotiation-negotiation-deep-guide.md +64 -0
  673. package/payload/premium-plugins/real-agency/references/negotiation-negotiation-prep-principles.md +29 -0
  674. package/payload/premium-plugins/real-agency/references/negotiation-negotiation-techniques.md +42 -0
  675. package/payload/premium-plugins/real-agency/references/negotiation-offer-presentation.md +43 -0
  676. package/payload/premium-plugins/real-agency/references/personal-branding-attraction-agent-notes.md +31 -0
  677. package/payload/premium-plugins/real-agency/references/personal-branding-attraction-agent.md +58 -0
  678. package/payload/premium-plugins/real-agency/references/personal-branding-authenticity-boundaries.md +28 -0
  679. package/payload/premium-plugins/real-agency/references/personal-branding-become-a-brand-leader-notes.md +19 -0
  680. package/payload/premium-plugins/real-agency/references/personal-branding-blast-formula.md +42 -0
  681. package/payload/premium-plugins/real-agency/references/personal-branding-brand-leader.md +48 -0
  682. package/payload/premium-plugins/real-agency/references/personal-branding-brand-strategy-system.md +59 -0
  683. package/payload/premium-plugins/real-agency/references/personal-branding-content-engine.md +49 -0
  684. package/payload/premium-plugins/real-agency/references/personal-branding-firewave-blast-and-blogging.md +23 -0
  685. package/payload/premium-plugins/real-agency/references/personal-branding-gary-v-content.md +52 -0
  686. package/payload/premium-plugins/real-agency/references/personal-branding-gary-v-principles.md +20 -0
  687. package/payload/premium-plugins/real-agency/references/personal-branding-oversubscribed-positioning.md +18 -0
  688. package/payload/premium-plugins/real-agency/references/personal-branding-platforms.md +41 -0
  689. package/payload/premium-plugins/real-agency/references/personal-branding-priestley-oversubscribed.md +54 -0
  690. package/payload/premium-plugins/real-agency/references/personal-branding-storeys-style-examples.md +25 -0
  691. package/payload/premium-plugins/real-agency/references/personal-branding-visual-identity.md +27 -0
  692. package/payload/premium-plugins/real-agency/references/property-marketing-auction-report-template.md +41 -0
  693. package/payload/premium-plugins/real-agency/references/property-marketing-coming-soon-campaign.md +43 -0
  694. package/payload/premium-plugins/real-agency/references/property-marketing-direct-mail-templates.md +121 -0
  695. package/payload/premium-plugins/real-agency/references/property-marketing-eoi-form-template.md +62 -0
  696. package/payload/premium-plugins/real-agency/references/property-marketing-monthly-scorecard.md +63 -0
  697. package/payload/premium-plugins/real-agency/references/prospecting-database-matching.md +30 -0
  698. package/payload/premium-plugins/real-agency/references/prospecting-database-value.md +53 -0
  699. package/payload/premium-plugins/real-agency/references/prospecting-prospecting-dialogues.md +24 -0
  700. package/payload/premium-plugins/real-agency/references/prospecting-reactivation.md +34 -0
  701. package/payload/premium-plugins/real-agency/references/sales-closer-serhant-emotion-stages.md +36 -0
  702. package/payload/premium-plugins/real-agency/references/sales-discovery-chris-voss-discovery.md +88 -0
  703. package/payload/premium-plugins/real-agency/references/sales-discovery-firewave-gost-journey.md +68 -0
  704. package/payload/premium-plugins/real-agency/references/sales-discovery-phil-jones-openers.md +78 -0
  705. package/payload/premium-plugins/real-agency/references/sales-discovery-pre-listing-checklist.md +77 -0
  706. package/payload/premium-plugins/real-agency/references/sales-discovery-serhant-improv.md +22 -0
  707. package/payload/premium-plugins/real-agency/references/sales-discovery-tom-ferry-discovery.md +103 -0
  708. package/payload/premium-plugins/real-agency/references/sales-discovery-vendor-motivation-competitor.md +52 -0
  709. package/payload/premium-plugins/real-agency/references/sales-negotiation-chris-voss-negotiation.md +138 -0
  710. package/payload/premium-plugins/real-agency/references/sales-negotiation-phil-jones-price-words.md +68 -0
  711. package/payload/premium-plugins/real-agency/references/sales-negotiation-serhant-negotiation-plus.md +55 -0
  712. package/payload/premium-plugins/real-agency/references/sales-negotiation-tom-panos-commission-pricing.md +102 -0
  713. package/payload/premium-plugins/real-agency/references/sales-negotiation-tony-morris-questioning.md +71 -0
  714. package/payload/premium-plugins/real-agency/references/sales-progression-conveyancing-guide.md +54 -0
  715. package/payload/premium-plugins/real-agency/references/sales-progression-transaction-tracking.md +66 -0
  716. package/payload/premium-plugins/real-agency/references/serhant-training-agent-training-guide.md +70 -0
  717. package/payload/premium-plugins/real-agency/references/serhant-training-business-in-a-box.md +72 -0
  718. package/payload/premium-plugins/real-agency/references/serhant-training-buyers-guide.md +53 -0
  719. package/payload/premium-plugins/real-agency/references/serhant-training-codo-method.md +72 -0
  720. package/payload/premium-plugins/real-agency/references/serhant-training-website-planning-guide.md +79 -0
  721. package/payload/premium-plugins/real-agency/references/vendor-communication-fee-protection-and-agenda.md +28 -0
  722. package/payload/premium-plugins/real-agency/references/vendor-communication-listing-scripts.md +44 -0
  723. package/payload/premium-plugins/real-agency/references/vendor-communication-negotiation-deep-guide.md +70 -0
  724. package/payload/premium-plugins/real-agency/references/vendor-communication-price-alignment-scripts.md +33 -0
  725. package/payload/premium-plugins/real-agency/references/vendor-communication-price-alignment.md +34 -0
  726. package/payload/premium-plugins/real-agency/references/vendor-communication-scenario-scripts.md +38 -0
  727. package/payload/premium-plugins/real-agency/references/vendor-communication-seller-engagement.md +51 -0
  728. package/payload/premium-plugins/real-agency/references/vendor-communication-valuation-booking.md +76 -0
  729. package/payload/premium-plugins/real-agency/references/vendor-communication-vendor-scripts.md +63 -0
  730. package/payload/premium-plugins/real-agency/references/vendor-communication-vendor-updates.md +41 -0
  731. package/payload/premium-plugins/real-agency/skills/agent-performance.md +367 -0
  732. package/payload/premium-plugins/real-agency/skills/bespoke-coaching.md +28 -0
  733. package/payload/premium-plugins/real-agency/skills/bootstrap.md +26 -0
  734. package/payload/premium-plugins/real-agency/skills/business-growth.md +138 -0
  735. package/payload/premium-plugins/real-agency/skills/business-operations.md +32 -0
  736. package/payload/premium-plugins/real-agency/skills/buyer-feedback.md +109 -0
  737. package/payload/premium-plugins/real-agency/skills/buyer-management.md +41 -0
  738. package/payload/premium-plugins/real-agency/skills/buyer-seller-guides.md +407 -0
  739. package/payload/premium-plugins/real-agency/skills/coaching-toolkit.md +419 -0
  740. package/payload/premium-plugins/real-agency/skills/content-directory.md +39 -0
  741. package/payload/premium-plugins/real-agency/skills/exp-partnership.md +52 -0
  742. package/payload/premium-plugins/real-agency/skills/home-preparation.md +28 -0
  743. package/payload/premium-plugins/real-agency/skills/lead-nurturing.md +143 -0
  744. package/payload/premium-plugins/real-agency/skills/listing-presentation.md +286 -0
  745. package/payload/premium-plugins/real-agency/skills/negotiation.md +34 -0
  746. package/payload/premium-plugins/real-agency/skills/personal-branding.md +117 -0
  747. package/payload/premium-plugins/real-agency/skills/property-enquiry.md +126 -0
  748. package/payload/premium-plugins/real-agency/skills/property-marketing.md +337 -0
  749. package/payload/premium-plugins/real-agency/skills/prospecting.md +33 -0
  750. package/payload/premium-plugins/real-agency/skills/sales-closer.md +27 -0
  751. package/payload/premium-plugins/real-agency/skills/sales-discovery.md +34 -0
  752. package/payload/premium-plugins/real-agency/skills/sales-negotiation.md +31 -0
  753. package/payload/premium-plugins/real-agency/skills/sales-progression.md +27 -0
  754. package/payload/premium-plugins/real-agency/skills/serhant-training.md +410 -0
  755. package/payload/premium-plugins/real-agency/skills/valuation-booking.md +182 -0
  756. package/payload/premium-plugins/real-agency/skills/vendor-communication.md +42 -0
  757. package/payload/premium-plugins/real-agency/skills/vendor-updates.md +153 -0
  758. package/payload/premium-plugins/real-agency/skills/viewing-management.md +111 -0
  759. package/payload/premium-plugins/teaching/PLUGIN.md +58 -0
  760. package/payload/premium-plugins/teaching/references/assessment.md +70 -0
  761. package/payload/premium-plugins/teaching/references/classroom-conduct.md +43 -0
  762. package/payload/premium-plugins/teaching/references/context-gathering.md +41 -0
  763. package/payload/premium-plugins/teaching/references/disaggregation.md +49 -0
  764. package/payload/premium-plugins/teaching/references/materials.md +116 -0
  765. package/payload/premium-plugins/teaching/references/plan-structure.md +94 -0
  766. package/payload/premium-plugins/teaching/references/teaching-modes.md +83 -0
  767. package/payload/premium-plugins/teaching/skills/interactive-tutor.md +59 -0
  768. package/payload/premium-plugins/teaching/skills/lesson-planner.md +48 -0
  769. package/payload/premium-plugins/teaching/skills/study-pack-builder.md +52 -0
  770. package/payload/premium-plugins/writer-craft/PLUGIN.md +88 -0
  771. package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +92 -0
  772. package/payload/premium-plugins/writer-craft/references/audience-analysis.md +73 -0
  773. package/payload/premium-plugins/writer-craft/references/blueprinting-and-scene-cards.md +118 -0
  774. package/payload/premium-plugins/writer-craft/references/blueprinting-exercises.md +118 -0
  775. package/payload/premium-plugins/writer-craft/references/blueprinting-process.md +128 -0
  776. package/payload/premium-plugins/writer-craft/references/book-and-chapter-models.md +77 -0
  777. package/payload/premium-plugins/writer-craft/references/cause-effect-setup-payoff.md +79 -0
  778. package/payload/premium-plugins/writer-craft/references/citation-rules.md +103 -0
  779. package/payload/premium-plugins/writer-craft/references/conflict-escalation.md +81 -0
  780. package/payload/premium-plugins/writer-craft/references/copyediting.md +73 -0
  781. package/payload/premium-plugins/writer-craft/references/crafting-persuasive-story.md +76 -0
  782. package/payload/premium-plugins/writer-craft/references/developmental-editing.md +85 -0
  783. package/payload/premium-plugins/writer-craft/references/genre-specific-editing.md +78 -0
  784. package/payload/premium-plugins/writer-craft/references/hooking-readers.md +67 -0
  785. package/payload/premium-plugins/writer-craft/references/indirect-narration.md +72 -0
  786. package/payload/premium-plugins/writer-craft/references/inner-issue-and-protagonist-goal.md +66 -0
  787. package/payload/premium-plugins/writer-craft/references/journal-article-models.md +74 -0
  788. package/payload/premium-plugins/writer-craft/references/line-editing.md +55 -0
  789. package/payload/premium-plugins/writer-craft/references/misbelief-desire-worldview.md +87 -0
  790. package/payload/premium-plugins/writer-craft/references/neurochemistry-of-engagement.md +94 -0
  791. package/payload/premium-plugins/writer-craft/references/origin-scenes-and-escalation.md +82 -0
  792. package/payload/premium-plugins/writer-craft/references/other-source-models.md +146 -0
  793. package/payload/premium-plugins/writer-craft/references/persuasion-case-studies.md +67 -0
  794. package/payload/premium-plugins/writer-craft/references/pov-types-and-voice.md +91 -0
  795. package/payload/premium-plugins/writer-craft/references/prose-review-checklist.md +112 -0
  796. package/payload/premium-plugins/writer-craft/references/protagonist-filter.md +71 -0
  797. package/payload/premium-plugins/writer-craft/references/punctuation-and-grammar.md +72 -0
  798. package/payload/premium-plugins/writer-craft/references/reference-list-rules.md +70 -0
  799. package/payload/premium-plugins/writer-craft/references/repetition.md +71 -0
  800. package/payload/premium-plugins/writer-craft/references/review-manuscript-checklist.md +119 -0
  801. package/payload/premium-plugins/writer-craft/references/scene-analysis-framework.md +95 -0
  802. package/payload/premium-plugins/writer-craft/references/self-editing.md +89 -0
  803. package/payload/premium-plugins/writer-craft/references/sound-and-rhythm.md +64 -0
  804. package/payload/premium-plugins/writer-craft/references/tense-and-person.md +85 -0
  805. package/payload/premium-plugins/writer-craft/references/transformation-framework.md +86 -0
  806. package/payload/premium-plugins/writer-craft/references/word-economy.md +93 -0
  807. package/payload/premium-plugins/writer-craft/skills/citation-style.md +94 -0
  808. package/payload/premium-plugins/writer-craft/skills/editorial-practice.md +108 -0
  809. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling.md +114 -0
  810. package/payload/premium-plugins/writer-craft/skills/point-of-view.md +97 -0
  811. package/payload/premium-plugins/writer-craft/skills/prose-craft.md +100 -0
  812. package/payload/premium-plugins/writer-craft/skills/reader-engagement.md +100 -0
  813. package/payload/premium-plugins/writer-craft/skills/review-manuscript.md +111 -0
  814. package/payload/premium-plugins/writer-craft/skills/review-prose.md +99 -0
  815. package/payload/premium-plugins/writer-craft/skills/review-scene.md +99 -0
  816. package/payload/premium-plugins/writer-craft/skills/story-architecture.md +106 -0
  817. package/payload/premium-plugins/writer-craft/skills/story-blueprint.md +133 -0
@@ -0,0 +1,735 @@
1
+ import { ImapFlow } from "imapflow";
2
+ const CONNECT_TIMEOUT = 10_000;
3
+ const COMMAND_TIMEOUT = 30_000;
4
+ /** Diagnostic logging to stderr (captured by claude-agent-stderr log on Pi) */
5
+ function diag(op, step, detail) {
6
+ const ts = new Date().toISOString();
7
+ console.error(`[email] ${op}: ${step}${detail ? ` — ${detail}` : ""} [${ts}]`);
8
+ }
9
+ /**
10
+ * Safely close an IMAP client. Falls back to close() if logout() throws
11
+ * (e.g., when a download stream was left open mid-consumption).
12
+ */
13
+ async function safeLogout(client) {
14
+ try {
15
+ await client.logout();
16
+ }
17
+ catch {
18
+ try {
19
+ client.close();
20
+ }
21
+ catch { /* best effort */ }
22
+ }
23
+ }
24
+ // ─── Hard cap for tool-layer limit enforcement ──────────────────────
25
+ export const MAX_LIMIT = 50;
26
+ /**
27
+ * Resolve an IMAP folder name from a logical folder key.
28
+ * - "inbox" → "INBOX"
29
+ * - "sent" → discovered via \Sent special-use flag (RFC 6154)
30
+ *
31
+ * Throws if the requested folder cannot be found on this server.
32
+ */
33
+ export async function resolveFolderName(client, folder) {
34
+ if (folder === "inbox")
35
+ return "INBOX";
36
+ const mailboxes = await client.list();
37
+ for (const mb of mailboxes) {
38
+ if (mb.specialUse === "\\Sent") {
39
+ return mb.path;
40
+ }
41
+ }
42
+ throw new Error("Sent folder not found on this IMAP server — the server does not advertise a \\Sent special-use folder.");
43
+ }
44
+ function createClient(config, password) {
45
+ return new ImapFlow({
46
+ host: config.imapHost,
47
+ port: config.imapPort,
48
+ secure: config.imapSecurity === "tls",
49
+ auth: {
50
+ user: config.email,
51
+ pass: password,
52
+ },
53
+ logger: false,
54
+ tls: {
55
+ rejectUnauthorized: true,
56
+ },
57
+ connectionTimeout: CONNECT_TIMEOUT,
58
+ greetingTimeout: CONNECT_TIMEOUT,
59
+ socketTimeout: COMMAND_TIMEOUT,
60
+ });
61
+ }
62
+ /**
63
+ * Strip HTML tags and decode common entities.
64
+ * Used for extracting readable text from HTML-only email bodies.
65
+ */
66
+ export function stripHtml(html) {
67
+ return html
68
+ .replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "")
69
+ .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "")
70
+ .replace(/<[^>]+>/g, " ")
71
+ .replace(/&amp;/g, "&")
72
+ .replace(/&lt;/g, "<")
73
+ .replace(/&gt;/g, ">")
74
+ .replace(/&quot;/g, '"')
75
+ .replace(/&#39;/g, "'")
76
+ .replace(/&nbsp;/g, " ")
77
+ .replace(/\s+/g, " ")
78
+ .trim();
79
+ }
80
+ /** Max bytes to fetch per message body (4KB is plenty for a 500-char preview). */
81
+ const BODY_MAX_BYTES = 4096;
82
+ /** Max characters for body preview in tool output. */
83
+ const BODY_PREVIEW_LENGTH = 500;
84
+ /**
85
+ * Decode a raw IMAP body part buffer according to its transfer encoding.
86
+ * Returns a UTF-8 string. Falls back to raw UTF-8 for unknown encodings.
87
+ */
88
+ export function decodeBodyPart(buf, encoding) {
89
+ const enc = encoding?.toLowerCase().trim();
90
+ if (!enc || enc === "7bit" || enc === "8bit" || enc === "binary") {
91
+ return buf.toString("utf-8");
92
+ }
93
+ if (enc === "base64") {
94
+ return Buffer.from(buf.toString("ascii").replace(/\s/g, ""), "base64").toString("utf-8");
95
+ }
96
+ if (enc === "quoted-printable") {
97
+ return buf
98
+ .toString("ascii")
99
+ .replace(/=\r?\n/g, "")
100
+ .replace(/=([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
101
+ }
102
+ // Unknown encoding — best-effort UTF-8
103
+ return buf.toString("utf-8");
104
+ }
105
+ /**
106
+ * Extract a text body preview from a fetched message's inline bodyParts + bodyStructure.
107
+ *
108
+ * Determines the content type and transfer encoding of part "1" from
109
+ * bodyStructure (single-part: structure itself, multipart: first childNode).
110
+ * Skips non-text parts and multipart containers. Strips HTML. Truncates
111
+ * to BODY_PREVIEW_LENGTH characters.
112
+ */
113
+ export function extractBodyFromFetch(msg) {
114
+ const buf = msg.bodyParts?.get("1");
115
+ if (!buf || buf.length === 0)
116
+ return "(body unavailable)";
117
+ const structure = msg.bodyStructure;
118
+ if (!structure)
119
+ return "(body unavailable)";
120
+ // Determine content type and encoding for IMAP part "1":
121
+ // - Single-part message: bodyStructure itself describes the body
122
+ // - Multipart message: first childNode describes part "1"
123
+ let type;
124
+ let encoding;
125
+ if (structure.childNodes && structure.childNodes.length > 0) {
126
+ const firstChild = structure.childNodes[0];
127
+ type = firstChild.type?.toLowerCase();
128
+ encoding = firstChild.encoding;
129
+ }
130
+ else {
131
+ type = structure.type?.toLowerCase();
132
+ encoding = structure.encoding;
133
+ }
134
+ // Skip non-text content (binary attachments, images, nested multipart containers)
135
+ if (!type || !type.startsWith("text/"))
136
+ return "(body unavailable)";
137
+ let text = decodeBodyPart(buf, encoding);
138
+ if (type === "text/html") {
139
+ text = stripHtml(text);
140
+ }
141
+ text = text.trim();
142
+ if (!text)
143
+ return "(body unavailable)";
144
+ return text.length > BODY_PREVIEW_LENGTH
145
+ ? text.slice(0, BODY_PREVIEW_LENGTH) + "\u2026"
146
+ : text;
147
+ }
148
+ /**
149
+ * Test IMAP connectivity and authentication.
150
+ * Returns null on success, error message on failure.
151
+ */
152
+ export async function testConnection(config, password) {
153
+ const client = createClient(config, password);
154
+ try {
155
+ await client.connect();
156
+ await client.logout();
157
+ return null;
158
+ }
159
+ catch (err) {
160
+ const msg = err instanceof Error ? err.message : String(err);
161
+ if (msg.includes("AUTHENTICATIONFAILED") || msg.includes("Invalid credentials") || msg.includes("LOGIN failed")) {
162
+ return `IMAP authentication failed for ${config.email}. Check the password — most providers require an app-specific password when 2FA is enabled.`;
163
+ }
164
+ if (msg.includes("ECONNREFUSED")) {
165
+ return `IMAP connection refused at ${config.imapHost}:${config.imapPort}. Check that IMAP is enabled in your email provider settings.`;
166
+ }
167
+ if (msg.includes("ENOTFOUND")) {
168
+ return `IMAP host ${config.imapHost} not found. Check the hostname.`;
169
+ }
170
+ if (msg.includes("certificate") || msg.includes("TLS") || msg.includes("SSL")) {
171
+ return `IMAP TLS error connecting to ${config.imapHost}:${config.imapPort}. Try port 993 (TLS) or 143 (STARTTLS).`;
172
+ }
173
+ if (msg.includes("ETIMEDOUT") || msg.includes("timeout")) {
174
+ return `IMAP connection timed out to ${config.imapHost}:${config.imapPort}. Check the host and port.`;
175
+ }
176
+ return `IMAP connection failed: ${msg}`;
177
+ }
178
+ }
179
+ // ─── Over-fetch multiplier for client-side TO filtering ─────────────
180
+ // When filtering by recipient client-side (instead of via IMAP SEARCH TO,
181
+ // which full-scans headers and times out on large mailboxes), we fetch
182
+ // more envelopes than requested to compensate for non-matching messages.
183
+ const TO_OVERFETCH_MULTIPLIER = 3;
184
+ // ─── Default since floor for unbounded alias searches ───────────────
185
+ const DEFAULT_SINCE_DAYS = 7;
186
+ /**
187
+ * Check whether an IMAP envelope's TO field contains the target address.
188
+ * Case-insensitive comparison. Strict: if the server didn't return TO
189
+ * addresses, the message is excluded — we cannot confirm it was addressed
190
+ * to the target.
191
+ */
192
+ export function matchesRecipient(envelope, targetAddress) {
193
+ if (!envelope.to || envelope.to.length === 0)
194
+ return false;
195
+ const target = targetAddress.toLowerCase();
196
+ return envelope.to.some((addr) => addr.address?.toLowerCase() === target);
197
+ }
198
+ /**
199
+ * Build IMAP SEARCH criteria for fetchRecent.
200
+ * Never includes TO — that filter is applied client-side to avoid
201
+ * full-mailbox header scans that timeout on large mailboxes.
202
+ */
203
+ export function buildFetchRecentCriteria(options) {
204
+ const { sender, since, before, to, limit = 20 } = options;
205
+ const criteria = {};
206
+ if (sender)
207
+ criteria.from = sender;
208
+ if (since)
209
+ criteria.since = since;
210
+ if (before)
211
+ criteria.before = before;
212
+ // TO is intentionally excluded — filtered client-side after fetch
213
+ if (Object.keys(criteria).length === 0) {
214
+ criteria.all = true;
215
+ }
216
+ return {
217
+ criteria,
218
+ clientSideTo: to,
219
+ fetchLimit: to ? limit * TO_OVERFETCH_MULTIPLIER : limit,
220
+ };
221
+ }
222
+ /**
223
+ * Build IMAP SEARCH criteria for searchMessages.
224
+ * Never includes TO — that filter is applied client-side.
225
+ * When TO was the only filter (no other criteria provide bounding),
226
+ * injects a since floor to prevent unbounded full-mailbox scans.
227
+ */
228
+ export function buildSearchCriteria(options) {
229
+ const { sender, subject, body, since, before, to } = options;
230
+ const criteria = {};
231
+ if (sender)
232
+ criteria.from = sender;
233
+ if (subject)
234
+ criteria.subject = subject;
235
+ if (body)
236
+ criteria.body = body;
237
+ if (since)
238
+ criteria.since = since;
239
+ if (before)
240
+ criteria.before = before;
241
+ // TO is intentionally excluded — filtered client-side after fetch
242
+ // When TO was the only effective filter (nothing else bounds the search),
243
+ // inject a date floor to prevent unbounded full-mailbox scans
244
+ if (to && Object.keys(criteria).length === 0) {
245
+ const sinceFloor = new Date();
246
+ sinceFloor.setDate(sinceFloor.getDate() - DEFAULT_SINCE_DAYS);
247
+ criteria.since = sinceFloor;
248
+ }
249
+ if (Object.keys(criteria).length === 0) {
250
+ criteria.all = true;
251
+ }
252
+ return {
253
+ criteria,
254
+ clientSideTo: to,
255
+ };
256
+ }
257
+ /**
258
+ * Fetch recent messages from a mailbox folder.
259
+ * Returns the most recent N messages with cursor-based pagination.
260
+ *
261
+ * TO filtering is applied client-side (not via IMAP SEARCH) to avoid
262
+ * full-mailbox header scans that exceed socketTimeout on large mailboxes.
263
+ */
264
+ export async function fetchRecent(config, password, options = {}) {
265
+ const { limit = 20, sender, subjectPattern, since, before, to, folder = "inbox", beforeUid } = options;
266
+ const client = createClient(config, password);
267
+ // Compile subject regex once before the fetch loop
268
+ let subjectRegex = null;
269
+ if (subjectPattern) {
270
+ try {
271
+ subjectRegex = new RegExp(subjectPattern, "i");
272
+ }
273
+ catch { /* invalid — ignore */ }
274
+ }
275
+ const { criteria, clientSideTo, fetchLimit } = buildFetchRecentCriteria({
276
+ sender, since, before, to, limit,
277
+ });
278
+ const t0 = Date.now();
279
+ diag("fetchRecent", "start", `folder=${folder} criteria=${JSON.stringify(criteria)} fetchLimit=${fetchLimit} clientSideTo=${clientSideTo ?? "none"} beforeUid=${beforeUid ?? "none"}`);
280
+ try {
281
+ await client.connect();
282
+ diag("fetchRecent", "connected", `${Date.now() - t0}ms`);
283
+ const folderPath = await resolveFolderName(client, folder);
284
+ diag("fetchRecent", "folder resolved", `${folder} → ${folderPath}`);
285
+ const lock = await client.getMailboxLock(folderPath);
286
+ diag("fetchRecent", "mailbox locked", `${Date.now() - t0}ms`);
287
+ try {
288
+ const t1 = Date.now();
289
+ const searchResult = await client.search(criteria, { uid: true });
290
+ let uids = searchResult || [];
291
+ diag("fetchRecent", "search done", `${uids.length} UIDs in ${Date.now() - t1}ms (total ${Date.now() - t0}ms)`);
292
+ // Apply cursor: keep only UIDs older than (less than) beforeUid
293
+ if (beforeUid && beforeUid > 0) {
294
+ uids = uids.filter((uid) => uid < beforeUid);
295
+ diag("fetchRecent", "cursor applied", `${uids.length} UIDs after beforeUid=${beforeUid} filter`);
296
+ }
297
+ if (uids.length === 0)
298
+ return { messages: [] };
299
+ // Determine if more results exist beyond what we'll return
300
+ const totalAfterCursor = uids.length;
301
+ // Take the most recent UIDs (over-fetched when client-side TO filtering)
302
+ const recentUids = uids.slice(-fetchLimit);
303
+ const messages = [];
304
+ const t2 = Date.now();
305
+ const uidList = recentUids.map(String).join(",");
306
+ diag("fetchRecent", "fetching envelopes", `UIDs=[${uidList}]`);
307
+ let envelopeCount = 0;
308
+ for await (const msg of client.fetch(uidList, {
309
+ envelope: true,
310
+ uid: true,
311
+ bodyStructure: true,
312
+ bodyParts: [{ key: "1", start: 0, maxLength: BODY_MAX_BYTES }],
313
+ }, { uid: true })) {
314
+ envelopeCount++;
315
+ diag("fetchRecent", `envelope #${envelopeCount}`, `uid=${msg.uid} from=${msg.envelope?.from?.[0]?.address ?? "?"} at ${Date.now() - t2}ms`);
316
+ // Client-side TO filter (replaces IMAP SEARCH TO)
317
+ if (clientSideTo && !matchesRecipient(msg.envelope ?? {}, clientSideTo))
318
+ continue;
319
+ const fromAddr = msg.envelope?.from?.[0]?.address ?? "(unknown)";
320
+ const subject = msg.envelope?.subject ?? "(no subject)";
321
+ const date = msg.envelope?.date?.toISOString() ?? "(unknown date)";
322
+ const messageId = msg.envelope?.messageId ?? null;
323
+ const inReplyTo = msg.envelope?.inReplyTo ?? null;
324
+ if (subjectRegex && !subjectRegex.test(subject))
325
+ continue;
326
+ // Stop once we have enough matches
327
+ if (messages.length >= limit)
328
+ break;
329
+ const bodyPreview = extractBodyFromFetch(msg);
330
+ diag("fetchRecent", `body #${envelopeCount}`, `uid=${msg.uid} preview=${bodyPreview.length}chars type=${msg.bodyStructure?.type ?? "?"}`);
331
+ messages.push({
332
+ uid: msg.uid,
333
+ messageId,
334
+ inReplyTo,
335
+ from: fromAddr,
336
+ subject,
337
+ date,
338
+ bodyPreview,
339
+ });
340
+ }
341
+ diag("fetchRecent", "fetch done", `${envelopeCount} envelopes, ${messages.length} messages in ${Date.now() - t2}ms (total ${Date.now() - t0}ms)`);
342
+ // Return newest first
343
+ messages.reverse();
344
+ // Calculate pagination cursor: use the oldest UID in the *fetched* set
345
+ // (not the filtered set) to avoid skipping messages between filtered-out
346
+ // and kept messages when client-side TO/subject filtering is active
347
+ const result = { messages };
348
+ if (totalAfterCursor > fetchLimit && recentUids.length > 0) {
349
+ const oldestFetchedUid = recentUids[0]; // UIDs are sorted ascending
350
+ result.nextBeforeUid = oldestFetchedUid;
351
+ diag("fetchRecent", "pagination", `nextBeforeUid=${oldestFetchedUid}`);
352
+ }
353
+ else {
354
+ diag("fetchRecent", "pagination", "exhausted");
355
+ }
356
+ return result;
357
+ }
358
+ finally {
359
+ lock.release();
360
+ }
361
+ }
362
+ catch (err) {
363
+ diag("fetchRecent", "FAILED", `${err instanceof Error ? err.message : String(err)} after ${Date.now() - t0}ms`);
364
+ throw err;
365
+ }
366
+ finally {
367
+ await safeLogout(client);
368
+ }
369
+ }
370
+ /**
371
+ * Search a mailbox folder by query criteria with cursor-based pagination.
372
+ */
373
+ export async function searchMessages(config, password, query) {
374
+ const { sender, subject, body, since, before, limit = 20, to, folder = "inbox", beforeUid } = query;
375
+ const client = createClient(config, password);
376
+ // When client-side TO filtering is active, overfetch to compensate for non-matching messages
377
+ const fetchLimit = to ? limit * TO_OVERFETCH_MULTIPLIER : limit;
378
+ const { criteria, clientSideTo } = buildSearchCriteria({
379
+ sender, subject, body, since, before, to,
380
+ });
381
+ const t0 = Date.now();
382
+ diag("searchMessages", "start", `folder=${folder} criteria=${JSON.stringify(criteria)} clientSideTo=${clientSideTo ?? "none"} beforeUid=${beforeUid ?? "none"}`);
383
+ try {
384
+ await client.connect();
385
+ diag("searchMessages", "connected", `${Date.now() - t0}ms`);
386
+ const folderPath = await resolveFolderName(client, folder);
387
+ diag("searchMessages", "folder resolved", `${folder} → ${folderPath}`);
388
+ const lock = await client.getMailboxLock(folderPath);
389
+ diag("searchMessages", "mailbox locked", `${Date.now() - t0}ms`);
390
+ try {
391
+ const t1 = Date.now();
392
+ const searchResult = await client.search(criteria, { uid: true });
393
+ let uids = searchResult || [];
394
+ diag("searchMessages", "search done", `${uids.length} UIDs in ${Date.now() - t1}ms (total ${Date.now() - t0}ms)`);
395
+ // Apply cursor: keep only UIDs older than (less than) beforeUid
396
+ if (beforeUid && beforeUid > 0) {
397
+ uids = uids.filter((uid) => uid < beforeUid);
398
+ diag("searchMessages", "cursor applied", `${uids.length} UIDs after beforeUid=${beforeUid} filter`);
399
+ }
400
+ if (uids.length === 0)
401
+ return { messages: [] };
402
+ const totalAfterCursor = uids.length;
403
+ const recentUids = uids.slice(-fetchLimit);
404
+ const messages = [];
405
+ const t2 = Date.now();
406
+ let envelopeCount = 0;
407
+ for await (const msg of client.fetch(recentUids.map(String).join(","), {
408
+ envelope: true,
409
+ uid: true,
410
+ bodyStructure: true,
411
+ bodyParts: [{ key: "1", start: 0, maxLength: BODY_MAX_BYTES }],
412
+ }, { uid: true })) {
413
+ envelopeCount++;
414
+ // Client-side TO filter (replaces IMAP SEARCH TO)
415
+ if (clientSideTo && !matchesRecipient(msg.envelope ?? {}, clientSideTo))
416
+ continue;
417
+ const fromAddr = msg.envelope?.from?.[0]?.address ?? "(unknown)";
418
+ const subj = msg.envelope?.subject ?? "(no subject)";
419
+ const date = msg.envelope?.date?.toISOString() ?? "(unknown date)";
420
+ const messageId = msg.envelope?.messageId ?? null;
421
+ const inReplyTo = msg.envelope?.inReplyTo ?? null;
422
+ // Stop once we have enough matches
423
+ if (messages.length >= limit)
424
+ break;
425
+ const bodyPreview = extractBodyFromFetch(msg);
426
+ messages.push({
427
+ uid: msg.uid,
428
+ messageId,
429
+ inReplyTo,
430
+ from: fromAddr,
431
+ subject: subj,
432
+ date,
433
+ bodyPreview,
434
+ });
435
+ }
436
+ diag("searchMessages", "fetch done", `${envelopeCount} envelopes, ${messages.length} messages in ${Date.now() - t2}ms (total ${Date.now() - t0}ms)`);
437
+ messages.reverse();
438
+ const result = { messages };
439
+ if (totalAfterCursor > fetchLimit && recentUids.length > 0) {
440
+ const oldestFetchedUid = recentUids[0]; // UIDs are sorted ascending
441
+ result.nextBeforeUid = oldestFetchedUid;
442
+ diag("searchMessages", "pagination", `nextBeforeUid=${oldestFetchedUid}`);
443
+ }
444
+ else {
445
+ diag("searchMessages", "pagination", "exhausted");
446
+ }
447
+ return result;
448
+ }
449
+ finally {
450
+ lock.release();
451
+ }
452
+ }
453
+ catch (err) {
454
+ diag("searchMessages", "FAILED", `${err instanceof Error ? err.message : String(err)} after ${Date.now() - t0}ms`);
455
+ throw err;
456
+ }
457
+ finally {
458
+ await safeLogout(client);
459
+ }
460
+ }
461
+ /**
462
+ * Fetch emails from INBOX since a given UID (exclusive) for incremental polling.
463
+ * Returns the UIDVALIDITY and all matching messages with UID > sinceUid.
464
+ *
465
+ * When sinceUid is 0 (first poll), fetches emails from the last 7 days
466
+ * to avoid pulling the entire mailbox on large accounts.
467
+ *
468
+ * Client-side TO filtering is applied when recipientAddress differs
469
+ * from the auth email (alias/catchall scenarios).
470
+ */
471
+ export async function fetchSinceUid(config, password, sinceUid, recipientAddress) {
472
+ const client = createClient(config, password);
473
+ const t0 = Date.now();
474
+ const isFirstPoll = sinceUid === 0;
475
+ const filterTo = recipientAddress.toLowerCase() !== config.email.toLowerCase();
476
+ diag("fetchSinceUid", "start", `sinceUid=${sinceUid} firstPoll=${isFirstPoll} filterTo=${filterTo ? recipientAddress : "none"}`);
477
+ try {
478
+ await client.connect();
479
+ diag("fetchSinceUid", "connected", `${Date.now() - t0}ms`);
480
+ const mailbox = await client.mailboxOpen("INBOX");
481
+ const uidValidity = Number(mailbox.uidValidity);
482
+ diag("fetchSinceUid", "mailbox open", `uidValidity=${uidValidity} exists=${mailbox.exists}`);
483
+ if (mailbox.exists === 0) {
484
+ return { uidValidity, emails: [], maxUid: 0 };
485
+ }
486
+ // Build search criteria
487
+ const criteria = {};
488
+ if (isFirstPoll) {
489
+ // First poll: fetch last 7 days only
490
+ const sinceDate = new Date();
491
+ sinceDate.setDate(sinceDate.getDate() - DEFAULT_SINCE_DAYS);
492
+ criteria.since = sinceDate;
493
+ }
494
+ else {
495
+ // Incremental: UID > sinceUid
496
+ criteria.uid = `${sinceUid + 1}:*`;
497
+ }
498
+ const t1 = Date.now();
499
+ const searchResult = await client.search(criteria, { uid: true });
500
+ const uids = searchResult || [];
501
+ diag("fetchSinceUid", "search done", `${uids.length} UIDs in ${Date.now() - t1}ms`);
502
+ if (uids.length === 0) {
503
+ return { uidValidity, emails: [], maxUid: sinceUid };
504
+ }
505
+ const emails = [];
506
+ let maxUid = sinceUid;
507
+ const t2 = Date.now();
508
+ const uidList = uids.map(String).join(",");
509
+ for await (const msg of client.fetch(uidList, {
510
+ envelope: true,
511
+ uid: true,
512
+ bodyStructure: true,
513
+ bodyParts: [{ key: "1", start: 0, maxLength: BODY_MAX_BYTES }],
514
+ }, { uid: true })) {
515
+ // Track highest UID for high-water mark
516
+ const uid = Number(msg.uid);
517
+ if (uid > maxUid)
518
+ maxUid = uid;
519
+ // Client-side TO filter for alias/catchall accounts
520
+ if (filterTo && !matchesRecipient(msg.envelope ?? {}, recipientAddress))
521
+ continue;
522
+ const fromAddr = msg.envelope?.from?.[0]?.address ?? "(unknown)";
523
+ const fromName = msg.envelope?.from?.[0]?.name ?? null;
524
+ const subject = msg.envelope?.subject ?? "(no subject)";
525
+ const date = msg.envelope?.date?.toISOString() ?? new Date().toISOString();
526
+ const messageId = msg.envelope?.messageId ?? null;
527
+ const inReplyTo = msg.envelope?.inReplyTo ?? null;
528
+ const toAddresses = (msg.envelope?.to ?? []).map((a) => a.address).filter((a) => !!a);
529
+ const ccAddresses = (msg.envelope?.cc ?? []).map((a) => a.address).filter((a) => !!a);
530
+ const bodyPreview = extractBodyFromFetch(msg);
531
+ emails.push({ uid, messageId, inReplyTo, toAddresses, ccAddresses, fromAddress: fromAddr, fromName, subject, date, bodyPreview });
532
+ }
533
+ diag("fetchSinceUid", "fetch done", `${emails.length} emails (maxUid=${maxUid}) in ${Date.now() - t2}ms (total ${Date.now() - t0}ms)`);
534
+ return { uidValidity, emails, maxUid };
535
+ }
536
+ catch (err) {
537
+ diag("fetchSinceUid", "FAILED", `${err instanceof Error ? err.message : String(err)} after ${Date.now() - t0}ms`);
538
+ throw err;
539
+ }
540
+ finally {
541
+ await safeLogout(client);
542
+ }
543
+ }
544
+ /**
545
+ * Get the inbox message count.
546
+ */
547
+ export async function getInboxCount(config, password) {
548
+ const client = createClient(config, password);
549
+ try {
550
+ await client.connect();
551
+ const mailbox = await client.mailboxOpen("INBOX");
552
+ return mailbox.exists;
553
+ }
554
+ finally {
555
+ await safeLogout(client);
556
+ }
557
+ }
558
+ // ─── Auto-respond types and fetch ────────────────────────────────────
559
+ /** Headers used to detect auto-replies (RFC 3834) and mailing lists. */
560
+ const AUTO_REPLY_HEADER_FIELDS = [
561
+ "Auto-Submitted",
562
+ "X-Auto-Response-Suppress",
563
+ "Precedence",
564
+ "List-Unsubscribe",
565
+ "List-Id",
566
+ ];
567
+ /**
568
+ * Parse raw IMAP header text into a map of lowercased header names → values.
569
+ * Handles multi-line continuation (lines starting with whitespace).
570
+ */
571
+ export function parseRawHeaders(raw) {
572
+ const headers = new Map();
573
+ const lines = raw.split(/\r?\n/);
574
+ let currentKey = "";
575
+ let currentValue = "";
576
+ for (const line of lines) {
577
+ if (line === "")
578
+ break; // End of headers
579
+ if (/^\s/.test(line)) {
580
+ // Continuation of previous header
581
+ currentValue += " " + line.trim();
582
+ }
583
+ else {
584
+ // Flush previous header
585
+ if (currentKey) {
586
+ const existing = headers.get(currentKey) ?? [];
587
+ existing.push(currentValue);
588
+ headers.set(currentKey, existing);
589
+ }
590
+ const colonIdx = line.indexOf(":");
591
+ if (colonIdx > 0) {
592
+ currentKey = line.slice(0, colonIdx).trim().toLowerCase();
593
+ currentValue = line.slice(colonIdx + 1).trim();
594
+ }
595
+ else {
596
+ currentKey = "";
597
+ currentValue = "";
598
+ }
599
+ }
600
+ }
601
+ // Flush last header
602
+ if (currentKey) {
603
+ const existing = headers.get(currentKey) ?? [];
604
+ existing.push(currentValue);
605
+ headers.set(currentKey, existing);
606
+ }
607
+ return headers;
608
+ }
609
+ /**
610
+ * Detect whether a message is an auto-reply based on RFC 3834 headers.
611
+ *
612
+ * Checks:
613
+ * - Auto-Submitted: any value other than "no"
614
+ * - X-Auto-Response-Suppress: present
615
+ * - Precedence: bulk, junk, or list
616
+ * - List-Unsubscribe or List-Id: present (mailing list)
617
+ */
618
+ export function detectAutoReply(headers) {
619
+ const autoSubmitted = headers.get("auto-submitted");
620
+ if (autoSubmitted && autoSubmitted.some((v) => v.trim().toLowerCase() !== "no")) {
621
+ return true;
622
+ }
623
+ if (headers.has("x-auto-response-suppress"))
624
+ return true;
625
+ const precedence = headers.get("precedence");
626
+ if (precedence) {
627
+ const val = precedence[0]?.trim().toLowerCase();
628
+ if (val === "bulk" || val === "junk" || val === "list")
629
+ return true;
630
+ }
631
+ if (headers.has("list-unsubscribe") || headers.has("list-id"))
632
+ return true;
633
+ return false;
634
+ }
635
+ /**
636
+ * Fetch new messages for auto-respond processing.
637
+ *
638
+ * Returns messages with UIDs greater than `sinceUid`, filtered by the
639
+ * agent's address (TO header). Includes envelope, body, and auto-reply
640
+ * detection headers in a single IMAP FETCH.
641
+ *
642
+ * Unlike fetchRecent (optimised for tool output with pagination),
643
+ * this function fetches everything needed for auto-respond in one pass:
644
+ * envelope for threading, body for agent input, headers for loop guards.
645
+ */
646
+ export async function fetchForAutoRespond(config, password, options) {
647
+ const { sinceUid, agentAddress, limit = 20 } = options;
648
+ const client = createClient(config, password);
649
+ const t0 = Date.now();
650
+ diag("fetchForAutoRespond", "start", `sinceUid=${sinceUid} agentAddress=${agentAddress} limit=${limit}`);
651
+ try {
652
+ await client.connect();
653
+ diag("fetchForAutoRespond", "connected", `${Date.now() - t0}ms`);
654
+ const lock = await client.getMailboxLock("INBOX");
655
+ diag("fetchForAutoRespond", "mailbox locked", `${Date.now() - t0}ms`);
656
+ try {
657
+ // Search for messages with UID > sinceUid
658
+ const criteria = {};
659
+ if (sinceUid > 0) {
660
+ criteria.uid = `${sinceUid + 1}:*`;
661
+ }
662
+ else {
663
+ // First poll: only fetch recent messages (last 7 days)
664
+ const since = new Date();
665
+ since.setDate(since.getDate() - DEFAULT_SINCE_DAYS);
666
+ criteria.since = since;
667
+ }
668
+ const t1 = Date.now();
669
+ const searchResult = await client.search(criteria, { uid: true });
670
+ const uids = searchResult || [];
671
+ diag("fetchForAutoRespond", "search done", `${uids.length} UIDs in ${Date.now() - t1}ms`);
672
+ if (uids.length === 0)
673
+ return [];
674
+ // Take the oldest N UIDs (process in chronological order)
675
+ const processUids = uids.slice(0, limit);
676
+ const messages = [];
677
+ const t2 = Date.now();
678
+ const headerSection = `HEADER.FIELDS (${AUTO_REPLY_HEADER_FIELDS.join(" ")})`;
679
+ for await (const msg of client.fetch(processUids.map(String).join(","), {
680
+ envelope: true,
681
+ uid: true,
682
+ bodyStructure: true,
683
+ bodyParts: [
684
+ { key: "1", start: 0, maxLength: BODY_MAX_BYTES },
685
+ ],
686
+ headers: AUTO_REPLY_HEADER_FIELDS.map((h) => h.toLowerCase()),
687
+ }, { uid: true })) {
688
+ // Client-side TO filter: only messages addressed to the agent
689
+ if (!matchesRecipient(msg.envelope ?? {}, agentAddress))
690
+ continue;
691
+ const envelope = msg.envelope ?? {};
692
+ const fromAddr = envelope.from?.[0]?.address ?? "";
693
+ const toAddrs = (envelope.to ?? []).map((a) => a.address ?? "");
694
+ const subject = envelope.subject ?? "(no subject)";
695
+ const date = envelope.date?.toISOString() ?? new Date().toISOString();
696
+ const messageId = envelope.messageId ?? "";
697
+ const inReplyTo = envelope.inReplyTo ?? null;
698
+ // Extract References from envelope (not available in all IMAP servers)
699
+ // Fall back to null — threading still works with just In-Reply-To
700
+ const references = null;
701
+ // Extract body
702
+ const body = extractBodyFromFetch(msg);
703
+ // Detect auto-reply from raw headers (Buffer from ImapFlow)
704
+ const rawHeaders = msg.headers ? msg.headers.toString("utf-8") : "";
705
+ const headerMap = parseRawHeaders(rawHeaders);
706
+ const isAutoReply = detectAutoReply(headerMap);
707
+ messages.push({
708
+ uid: msg.uid,
709
+ messageId,
710
+ from: fromAddr,
711
+ to: toAddrs,
712
+ subject,
713
+ date,
714
+ inReplyTo,
715
+ references,
716
+ body,
717
+ isAutoReply,
718
+ });
719
+ }
720
+ diag("fetchForAutoRespond", "fetch done", `${messages.length} messages in ${Date.now() - t2}ms (total ${Date.now() - t0}ms)`);
721
+ return messages;
722
+ }
723
+ finally {
724
+ lock.release();
725
+ }
726
+ }
727
+ catch (err) {
728
+ diag("fetchForAutoRespond", "FAILED", `${err instanceof Error ? err.message : String(err)} after ${Date.now() - t0}ms`);
729
+ throw err;
730
+ }
731
+ finally {
732
+ await safeLogout(client);
733
+ }
734
+ }
735
+ //# sourceMappingURL=imap.js.map