@rubytech/create-siteoffice-code 0.1.256

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2573) hide show
  1. package/dist/__tests__/account-id-env.test.js +48 -0
  2. package/dist/__tests__/apt-resolve.test.js +179 -0
  3. package/dist/__tests__/brand-fonts.test.js +102 -0
  4. package/dist/__tests__/brew-install.test.js +151 -0
  5. package/dist/__tests__/brew-resolve.test.js +138 -0
  6. package/dist/__tests__/bundler-rewrite-platform-lib.test.js +68 -0
  7. package/dist/__tests__/cdp-port-no-silent-fallback.test.js +53 -0
  8. package/dist/__tests__/claude-ptys-slice.test.js +25 -0
  9. package/dist/__tests__/cloudflared-slice.test.js +19 -0
  10. package/dist/__tests__/entitlement-flag.test.js +43 -0
  11. package/dist/__tests__/init-logging.test.js +85 -0
  12. package/dist/__tests__/installer-settings-permissions.test.js +112 -0
  13. package/dist/__tests__/installer-specialist-registration.test.js +116 -0
  14. package/dist/__tests__/launchd-plist.test.js +195 -0
  15. package/dist/__tests__/macos-darwin-branch.test.js +85 -0
  16. package/dist/__tests__/macos-version.test.js +96 -0
  17. package/dist/__tests__/onboarding-state-readback.test.js +61 -0
  18. package/dist/__tests__/peer-brand-detect.test.js +103 -0
  19. package/dist/__tests__/platform-detect.test.js +50 -0
  20. package/dist/__tests__/platform-port-stamp.test.js +28 -0
  21. package/dist/__tests__/plugin-install.test.js +123 -0
  22. package/dist/__tests__/port-canonicalisation.test.js +200 -0
  23. package/dist/__tests__/preflight-port-classifier.test.js +330 -0
  24. package/dist/__tests__/premium-bundle-gate.test.js +59 -0
  25. package/dist/__tests__/premium-mcp-discover.test.js +127 -0
  26. package/dist/__tests__/rss-sampler-installer.test.js +27 -0
  27. package/dist/__tests__/samba-provision.test.js +226 -0
  28. package/dist/__tests__/snap-chromium.test.js +115 -0
  29. package/dist/__tests__/tier-flag.test.js +53 -0
  30. package/dist/apt-resolve.js +73 -0
  31. package/dist/brew-install.js +180 -0
  32. package/dist/brew-resolve.js +68 -0
  33. package/dist/bundler-rewrite-platform-lib.js +29 -0
  34. package/dist/index.js +4048 -0
  35. package/dist/init-logging.js +28 -0
  36. package/dist/launchd-plist.js +68 -0
  37. package/dist/lib/plugin-install.js +110 -0
  38. package/dist/lib/premium-mcp-discover.js +41 -0
  39. package/dist/macos-version.js +53 -0
  40. package/dist/onboarding-readback.js +27 -0
  41. package/dist/peer-brand-detect.js +39 -0
  42. package/dist/permissions-seed.js +76 -0
  43. package/dist/pinned-binaries.js +12 -0
  44. package/dist/platform-detect.js +36 -0
  45. package/dist/port-resolution.js +208 -0
  46. package/dist/preflight-port-classifier.js +222 -0
  47. package/dist/samba-provision.js +218 -0
  48. package/dist/snap-chromium.js +88 -0
  49. package/dist/specialist-registration.js +78 -0
  50. package/dist/tier-flag.js +85 -0
  51. package/dist/uninstall.js +947 -0
  52. package/package.json +35 -0
  53. package/payload/platform/.docs/search-surface-contract.md +58 -0
  54. package/payload/platform/config/brand-registry.json +28 -0
  55. package/payload/platform/config/brand.json +82 -0
  56. package/payload/platform/docs/superpowers/plans/2026-06-02-task-610-follower-202-retry.md +372 -0
  57. package/payload/platform/docs/superpowers/plans/2026-06-04-public-agent-knowledge-delivery.md +230 -0
  58. package/payload/platform/docs/superpowers/specs/2026-06-02-task-610-follower-202-retry-design.md +116 -0
  59. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.d.ts +2 -0
  60. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.d.ts.map +1 -0
  61. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.js +88 -0
  62. package/payload/platform/lib/account-enumeration/dist/__tests__/enumerate.test.js.map +1 -0
  63. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.d.ts +2 -0
  64. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.d.ts.map +1 -0
  65. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js +55 -0
  66. package/payload/platform/lib/account-enumeration/dist/__tests__/validate-env.test.js.map +1 -0
  67. package/payload/platform/lib/account-enumeration/dist/index.d.ts +49 -0
  68. package/payload/platform/lib/account-enumeration/dist/index.d.ts.map +1 -0
  69. package/payload/platform/lib/account-enumeration/dist/index.js +109 -0
  70. package/payload/platform/lib/account-enumeration/dist/index.js.map +1 -0
  71. package/payload/platform/lib/account-enumeration/src/__tests__/enumerate.test.ts +94 -0
  72. package/payload/platform/lib/account-enumeration/src/__tests__/validate-env.test.ts +57 -0
  73. package/payload/platform/lib/account-enumeration/src/index.ts +140 -0
  74. package/payload/platform/lib/account-enumeration/tsconfig.json +8 -0
  75. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts +54 -0
  76. package/payload/platform/lib/admin-conversation-purge/dist/index.d.ts.map +1 -0
  77. package/payload/platform/lib/admin-conversation-purge/dist/index.js +84 -0
  78. package/payload/platform/lib/admin-conversation-purge/dist/index.js.map +1 -0
  79. package/payload/platform/lib/admin-conversation-purge/src/index.ts +120 -0
  80. package/payload/platform/lib/admin-conversation-purge/tsconfig.json +8 -0
  81. package/payload/platform/lib/admins-write/dist/index.d.ts +86 -0
  82. package/payload/platform/lib/admins-write/dist/index.d.ts.map +1 -0
  83. package/payload/platform/lib/admins-write/dist/index.js +245 -0
  84. package/payload/platform/lib/admins-write/dist/index.js.map +1 -0
  85. package/payload/platform/lib/admins-write/src/index.ts +305 -0
  86. package/payload/platform/lib/admins-write/tsconfig.json +8 -0
  87. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts +33 -0
  88. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts.map +1 -0
  89. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js +119 -0
  90. package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js.map +1 -0
  91. package/payload/platform/lib/aeo-llms-txt-writer/src/index.ts +172 -0
  92. package/payload/platform/lib/aeo-llms-txt-writer/tsconfig.json +8 -0
  93. package/payload/platform/lib/anthropic-key/dist/index.d.ts +22 -0
  94. package/payload/platform/lib/anthropic-key/dist/index.d.ts.map +1 -0
  95. package/payload/platform/lib/anthropic-key/dist/index.js +232 -0
  96. package/payload/platform/lib/anthropic-key/dist/index.js.map +1 -0
  97. package/payload/platform/lib/brand-templating/dist/index.d.ts +18 -0
  98. package/payload/platform/lib/brand-templating/dist/index.d.ts.map +1 -0
  99. package/payload/platform/lib/brand-templating/dist/index.js +69 -0
  100. package/payload/platform/lib/brand-templating/dist/index.js.map +1 -0
  101. package/payload/platform/lib/brand-templating/src/index.ts +76 -0
  102. package/payload/platform/lib/brand-templating/tsconfig.json +8 -0
  103. package/payload/platform/lib/device-url/dist/index.d.ts +44 -0
  104. package/payload/platform/lib/device-url/dist/index.d.ts.map +1 -0
  105. package/payload/platform/lib/device-url/dist/index.js +68 -0
  106. package/payload/platform/lib/device-url/dist/index.js.map +1 -0
  107. package/payload/platform/lib/device-url/src/index.ts +78 -0
  108. package/payload/platform/lib/device-url/tsconfig.json +8 -0
  109. package/payload/platform/lib/embed-client/dist/index.d.ts +4 -0
  110. package/payload/platform/lib/embed-client/dist/index.d.ts.map +1 -0
  111. package/payload/platform/lib/embed-client/dist/index.js +53 -0
  112. package/payload/platform/lib/embed-client/dist/index.js.map +1 -0
  113. package/payload/platform/lib/embed-client/src/index.ts +53 -0
  114. package/payload/platform/lib/embed-client/tsconfig.json +8 -0
  115. package/payload/platform/lib/entitlement/PUBKEY-HASH.txt +1 -0
  116. package/payload/platform/lib/entitlement/dist/canonicalize.d.ts +26 -0
  117. package/payload/platform/lib/entitlement/dist/canonicalize.d.ts.map +1 -0
  118. package/payload/platform/lib/entitlement/dist/canonicalize.js +54 -0
  119. package/payload/platform/lib/entitlement/dist/canonicalize.js.map +1 -0
  120. package/payload/platform/lib/entitlement/dist/index.d.ts +76 -0
  121. package/payload/platform/lib/entitlement/dist/index.d.ts.map +1 -0
  122. package/payload/platform/lib/entitlement/dist/index.js +293 -0
  123. package/payload/platform/lib/entitlement/dist/index.js.map +1 -0
  124. package/payload/platform/lib/entitlement/rubytech-pubkey.pem +3 -0
  125. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.d.ts +2 -0
  126. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.d.ts.map +1 -0
  127. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.js +97 -0
  128. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate-write.test.js.map +1 -0
  129. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.d.ts +2 -0
  130. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.d.ts.map +1 -0
  131. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.js +112 -0
  132. package/payload/platform/lib/graph-mcp/dist/__tests__/cypher-validate.test.js.map +1 -0
  133. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.d.ts +2 -0
  134. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.d.ts.map +1 -0
  135. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.js +163 -0
  136. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cache.test.js.map +1 -0
  137. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.d.ts +2 -0
  138. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.d.ts.map +1 -0
  139. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.js +89 -0
  140. package/payload/platform/lib/graph-mcp/dist/__tests__/schema-cypher-parser.test.js.map +1 -0
  141. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.d.ts +2 -0
  142. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.d.ts.map +1 -0
  143. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js +140 -0
  144. package/payload/platform/lib/graph-mcp/dist/__tests__/warnings-envelope.test.js.map +1 -0
  145. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts +37 -0
  146. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.d.ts.map +1 -0
  147. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js +333 -0
  148. package/payload/platform/lib/graph-mcp/dist/cypher-rewrite-stamp.js.map +1 -0
  149. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts +85 -0
  150. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.d.ts.map +1 -0
  151. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js +93 -0
  152. package/payload/platform/lib/graph-mcp/dist/cypher-shim-read.js.map +1 -0
  153. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts +71 -0
  154. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.d.ts.map +1 -0
  155. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js +168 -0
  156. package/payload/platform/lib/graph-mcp/dist/cypher-shim-write.js.map +1 -0
  157. package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts +50 -0
  158. package/payload/platform/lib/graph-mcp/dist/cypher-validate.d.ts.map +1 -0
  159. package/payload/platform/lib/graph-mcp/dist/cypher-validate.js +197 -0
  160. package/payload/platform/lib/graph-mcp/dist/cypher-validate.js.map +1 -0
  161. package/payload/platform/lib/graph-mcp/dist/index.d.ts +26 -0
  162. package/payload/platform/lib/graph-mcp/dist/index.d.ts.map +1 -0
  163. package/payload/platform/lib/graph-mcp/dist/index.js +845 -0
  164. package/payload/platform/lib/graph-mcp/dist/index.js.map +1 -0
  165. package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts +76 -0
  166. package/payload/platform/lib/graph-mcp/dist/schema-cache.d.ts.map +1 -0
  167. package/payload/platform/lib/graph-mcp/dist/schema-cache.js +218 -0
  168. package/payload/platform/lib/graph-mcp/dist/schema-cache.js.map +1 -0
  169. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts +42 -0
  170. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.d.ts.map +1 -0
  171. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js +87 -0
  172. package/payload/platform/lib/graph-mcp/dist/schema-cypher-parser.js.map +1 -0
  173. package/payload/platform/lib/graph-mcp/src/__tests__/cypher-validate-write.test.ts +150 -0
  174. package/payload/platform/lib/graph-mcp/src/__tests__/cypher-validate.test.ts +141 -0
  175. package/payload/platform/lib/graph-mcp/src/__tests__/schema-cache.test.ts +169 -0
  176. package/payload/platform/lib/graph-mcp/src/__tests__/schema-cypher-parser.test.ts +99 -0
  177. package/payload/platform/lib/graph-mcp/src/__tests__/warnings-envelope.test.ts +151 -0
  178. package/payload/platform/lib/graph-mcp/src/cypher-rewrite-stamp.ts +349 -0
  179. package/payload/platform/lib/graph-mcp/src/cypher-shim-read.ts +141 -0
  180. package/payload/platform/lib/graph-mcp/src/cypher-shim-write.ts +240 -0
  181. package/payload/platform/lib/graph-mcp/src/cypher-validate.ts +249 -0
  182. package/payload/platform/lib/graph-mcp/src/index.ts +1074 -0
  183. package/payload/platform/lib/graph-mcp/src/schema-cache.ts +243 -0
  184. package/payload/platform/lib/graph-mcp/src/schema-cypher-parser.ts +84 -0
  185. package/payload/platform/lib/graph-mcp/tsconfig.json +8 -0
  186. package/payload/platform/lib/graph-search/dist/boosts.d.ts +39 -0
  187. package/payload/platform/lib/graph-search/dist/boosts.d.ts.map +1 -0
  188. package/payload/platform/lib/graph-search/dist/boosts.js +57 -0
  189. package/payload/platform/lib/graph-search/dist/boosts.js.map +1 -0
  190. package/payload/platform/lib/graph-search/dist/dedup.d.ts +29 -0
  191. package/payload/platform/lib/graph-search/dist/dedup.d.ts.map +1 -0
  192. package/payload/platform/lib/graph-search/dist/dedup.js +97 -0
  193. package/payload/platform/lib/graph-search/dist/dedup.js.map +1 -0
  194. package/payload/platform/lib/graph-search/dist/index.d.ts +355 -0
  195. package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -0
  196. package/payload/platform/lib/graph-search/dist/index.js +864 -0
  197. package/payload/platform/lib/graph-search/dist/index.js.map +1 -0
  198. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts +37 -0
  199. package/payload/platform/lib/graph-search/dist/query-expansion.d.ts.map +1 -0
  200. package/payload/platform/lib/graph-search/dist/query-expansion.js +101 -0
  201. package/payload/platform/lib/graph-search/dist/query-expansion.js.map +1 -0
  202. package/payload/platform/lib/graph-search/dist/route.d.ts +29 -0
  203. package/payload/platform/lib/graph-search/dist/route.d.ts.map +1 -0
  204. package/payload/platform/lib/graph-search/dist/route.js +53 -0
  205. package/payload/platform/lib/graph-search/dist/route.js.map +1 -0
  206. package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts +31 -0
  207. package/payload/platform/lib/graph-search/dist/rrf-fusion.d.ts.map +1 -0
  208. package/payload/platform/lib/graph-search/dist/rrf-fusion.js +57 -0
  209. package/payload/platform/lib/graph-search/dist/rrf-fusion.js.map +1 -0
  210. package/payload/platform/lib/graph-search/src/__tests__/bm25-label-gate.test.ts +88 -0
  211. package/payload/platform/lib/graph-search/src/__tests__/bm25-only.test.ts +129 -0
  212. package/payload/platform/lib/graph-search/src/__tests__/bm25-strong-bypass-threshold.test.ts +126 -0
  213. package/payload/platform/lib/graph-search/src/__tests__/boosts.test.ts +59 -0
  214. package/payload/platform/lib/graph-search/src/__tests__/brochure-threshold.test.ts +136 -0
  215. package/payload/platform/lib/graph-search/src/__tests__/dedup.test.ts +83 -0
  216. package/payload/platform/lib/graph-search/src/__tests__/escape-and-normalise.test.ts +53 -0
  217. package/payload/platform/lib/graph-search/src/__tests__/expand-batch.test.ts +206 -0
  218. package/payload/platform/lib/graph-search/src/__tests__/fulltext-coverage.test.ts +357 -0
  219. package/payload/platform/lib/graph-search/src/__tests__/hybrid.test.ts +355 -0
  220. package/payload/platform/lib/graph-search/src/__tests__/route.test.ts +62 -0
  221. package/payload/platform/lib/graph-search/src/__tests__/rrf-fusion.test.ts +39 -0
  222. package/payload/platform/lib/graph-search/src/__tests__/vector-index-coverage.test.ts +198 -0
  223. package/payload/platform/lib/graph-search/src/__tests__/vector-threshold.test.ts +170 -0
  224. package/payload/platform/lib/graph-search/src/boosts.ts +61 -0
  225. package/payload/platform/lib/graph-search/src/dedup.ts +108 -0
  226. package/payload/platform/lib/graph-search/src/index.ts +1162 -0
  227. package/payload/platform/lib/graph-search/src/route.ts +70 -0
  228. package/payload/platform/lib/graph-search/src/rrf-fusion.ts +62 -0
  229. package/payload/platform/lib/graph-search/tsconfig.json +9 -0
  230. package/payload/platform/lib/graph-search/vitest.config.ts +9 -0
  231. package/payload/platform/lib/graph-style/dist/index.d.ts +80 -0
  232. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -0
  233. package/payload/platform/lib/graph-style/dist/index.js +285 -0
  234. package/payload/platform/lib/graph-style/dist/index.js.map +1 -0
  235. package/payload/platform/lib/graph-style/src/__tests__/parity.test.ts +114 -0
  236. package/payload/platform/lib/graph-style/src/index.ts +299 -0
  237. package/payload/platform/lib/graph-style/tsconfig.json +9 -0
  238. package/payload/platform/lib/graph-style/vitest.config.ts +9 -0
  239. package/payload/platform/lib/graph-trash/dist/index.d.ts +106 -0
  240. package/payload/platform/lib/graph-trash/dist/index.d.ts.map +1 -0
  241. package/payload/platform/lib/graph-trash/dist/index.js +340 -0
  242. package/payload/platform/lib/graph-trash/dist/index.js.map +1 -0
  243. package/payload/platform/lib/graph-trash/package.json +7 -0
  244. package/payload/platform/lib/graph-trash/src/index.ts +493 -0
  245. package/payload/platform/lib/graph-trash/tsconfig.json +8 -0
  246. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.d.ts +2 -0
  247. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.d.ts.map +1 -0
  248. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js +165 -0
  249. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js.map +1 -0
  250. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.d.ts +2 -0
  251. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.d.ts.map +1 -0
  252. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js +263 -0
  253. package/payload/platform/lib/graph-write/dist/__tests__/action-provenance-gate.test.js.map +1 -0
  254. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.d.ts +2 -0
  255. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.d.ts.map +1 -0
  256. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.js +147 -0
  257. package/payload/platform/lib/graph-write/dist/__tests__/audit.test.js.map +1 -0
  258. package/payload/platform/lib/graph-write/dist/audit.d.ts +84 -0
  259. package/payload/platform/lib/graph-write/dist/audit.d.ts.map +1 -0
  260. package/payload/platform/lib/graph-write/dist/audit.js +129 -0
  261. package/payload/platform/lib/graph-write/dist/audit.js.map +1 -0
  262. package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts +30 -0
  263. package/payload/platform/lib/graph-write/dist/conversation-provenance.d.ts.map +1 -0
  264. package/payload/platform/lib/graph-write/dist/conversation-provenance.js +88 -0
  265. package/payload/platform/lib/graph-write/dist/conversation-provenance.js.map +1 -0
  266. package/payload/platform/lib/graph-write/dist/index.d.ts +151 -0
  267. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -0
  268. package/payload/platform/lib/graph-write/dist/index.js +377 -0
  269. package/payload/platform/lib/graph-write/dist/index.js.map +1 -0
  270. package/payload/platform/lib/graph-write/src/__tests__/account-id-gate.test.ts +189 -0
  271. package/payload/platform/lib/graph-write/src/__tests__/action-provenance-gate.test.ts +279 -0
  272. package/payload/platform/lib/graph-write/src/__tests__/audit.test.ts +162 -0
  273. package/payload/platform/lib/graph-write/src/audit.ts +182 -0
  274. package/payload/platform/lib/graph-write/src/conversation-provenance.ts +148 -0
  275. package/payload/platform/lib/graph-write/src/index.ts +491 -0
  276. package/payload/platform/lib/graph-write/tsconfig.json +8 -0
  277. package/payload/platform/lib/mcp-eager/dist/index.d.ts +61 -0
  278. package/payload/platform/lib/mcp-eager/dist/index.d.ts.map +1 -0
  279. package/payload/platform/lib/mcp-eager/dist/index.js +49 -0
  280. package/payload/platform/lib/mcp-eager/dist/index.js.map +1 -0
  281. package/payload/platform/lib/mcp-eager/package.json +7 -0
  282. package/payload/platform/lib/mcp-eager/src/index.ts +78 -0
  283. package/payload/platform/lib/mcp-eager/tsconfig.json +8 -0
  284. package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts +53 -0
  285. package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts.map +1 -0
  286. package/payload/platform/lib/mcp-spawn-tee/dist/index.js +132 -0
  287. package/payload/platform/lib/mcp-spawn-tee/dist/index.js.map +1 -0
  288. package/payload/platform/lib/mcp-spawn-tee/src/index.ts +134 -0
  289. package/payload/platform/lib/mcp-spawn-tee/tsconfig.json +8 -0
  290. package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
  291. package/payload/platform/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
  292. package/payload/platform/lib/mcp-stderr-tee/dist/index.js +196 -0
  293. package/payload/platform/lib/mcp-stderr-tee/dist/index.js.map +1 -0
  294. package/payload/platform/lib/mcp-stderr-tee/package.json +7 -0
  295. package/payload/platform/lib/mcp-stderr-tee/src/index.ts +206 -0
  296. package/payload/platform/lib/mcp-stderr-tee/tsconfig.json +8 -0
  297. package/payload/platform/lib/models/dist/index.d.ts +7 -0
  298. package/payload/platform/lib/models/dist/index.d.ts.map +1 -0
  299. package/payload/platform/lib/models/dist/index.js +20 -0
  300. package/payload/platform/lib/models/dist/index.js.map +1 -0
  301. package/payload/platform/lib/models/src/index.ts +18 -0
  302. package/payload/platform/lib/models/tsconfig.json +8 -0
  303. package/payload/platform/lib/oauth-llm/dist/index.d.ts +116 -0
  304. package/payload/platform/lib/oauth-llm/dist/index.d.ts.map +1 -0
  305. package/payload/platform/lib/oauth-llm/dist/index.js +386 -0
  306. package/payload/platform/lib/oauth-llm/dist/index.js.map +1 -0
  307. package/payload/platform/lib/obsidian-parser/dist/index.d.ts +98 -0
  308. package/payload/platform/lib/obsidian-parser/dist/index.d.ts.map +1 -0
  309. package/payload/platform/lib/obsidian-parser/dist/index.js +480 -0
  310. package/payload/platform/lib/obsidian-parser/dist/index.js.map +1 -0
  311. package/payload/platform/lib/obsidian-parser/src/index.ts +572 -0
  312. package/payload/platform/lib/obsidian-parser/tsconfig.json +8 -0
  313. package/payload/platform/lib/persistent-components/dist/index.d.ts +20 -0
  314. package/payload/platform/lib/persistent-components/dist/index.d.ts.map +1 -0
  315. package/payload/platform/lib/persistent-components/dist/index.js +31 -0
  316. package/payload/platform/lib/persistent-components/dist/index.js.map +1 -0
  317. package/payload/platform/lib/persistent-components/src/index.ts +27 -0
  318. package/payload/platform/lib/persistent-components/tsconfig.json +8 -0
  319. package/payload/platform/lib/require-port-env/dist/index.d.ts +31 -0
  320. package/payload/platform/lib/require-port-env/dist/index.d.ts.map +1 -0
  321. package/payload/platform/lib/require-port-env/dist/index.js +52 -0
  322. package/payload/platform/lib/require-port-env/dist/index.js.map +1 -0
  323. package/payload/platform/lib/require-port-env/src/index.ts +56 -0
  324. package/payload/platform/lib/require-port-env/tsconfig.json +8 -0
  325. package/payload/platform/lib/screening-patterns/dist/index.d.ts +29 -0
  326. package/payload/platform/lib/screening-patterns/dist/index.d.ts.map +1 -0
  327. package/payload/platform/lib/screening-patterns/dist/index.js +48 -0
  328. package/payload/platform/lib/screening-patterns/dist/index.js.map +1 -0
  329. package/payload/platform/lib/task-secrets/dist/index.d.ts +40 -0
  330. package/payload/platform/lib/task-secrets/dist/index.d.ts.map +1 -0
  331. package/payload/platform/lib/task-secrets/dist/index.js +44 -0
  332. package/payload/platform/lib/task-secrets/dist/index.js.map +1 -0
  333. package/payload/platform/lib/task-secrets/src/__tests__/redact-secrets.test.ts +127 -0
  334. package/payload/platform/lib/task-secrets/src/index.ts +77 -0
  335. package/payload/platform/lib/task-secrets/tsconfig.json +9 -0
  336. package/payload/platform/lib/task-secrets/vitest.config.ts +9 -0
  337. package/payload/platform/neo4j/edge-annotations.json +158 -0
  338. package/payload/platform/neo4j/schema.cypher +1899 -0
  339. package/payload/platform/package-lock.json +4060 -0
  340. package/payload/platform/package.json +26 -0
  341. package/payload/platform/plugins/.claude-plugin/marketplace.json +158 -0
  342. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +17 -0
  343. package/payload/platform/plugins/admin/PLUGIN.md +163 -0
  344. package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +191 -0
  345. package/payload/platform/plugins/admin/hooks/__tests__/askuserquestion-investigate-gate.test.sh +176 -0
  346. package/payload/platform/plugins/admin/hooks/__tests__/hook-emit-stale-lock-ttl.test.sh +102 -0
  347. package/payload/platform/plugins/admin/hooks/__tests__/hook-emit.test.sh +75 -0
  348. package/payload/platform/plugins/admin/hooks/__tests__/pin-identity-gate.test.sh +96 -0
  349. package/payload/platform/plugins/admin/hooks/__tests__/post-tool-use-agent.test.sh +173 -0
  350. package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-directive.test.sh +70 -0
  351. package/payload/platform/plugins/admin/hooks/admin-authoring-observer.sh +155 -0
  352. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +224 -0
  353. package/payload/platform/plugins/admin/hooks/askuserquestion-investigate-gate.sh +257 -0
  354. package/payload/platform/plugins/admin/hooks/lib/hook-emit.sh +143 -0
  355. package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +16 -0
  356. package/payload/platform/plugins/admin/hooks/mcp-tool-missing.sh +94 -0
  357. package/payload/platform/plugins/admin/hooks/pin-identity-gate.sh +136 -0
  358. package/payload/platform/plugins/admin/hooks/post-tool-use-agent.sh +155 -0
  359. package/payload/platform/plugins/admin/hooks/prompt-optimiser-directive.sh +52 -0
  360. package/payload/platform/plugins/admin/hooks/webfetch-preflight.mjs +363 -0
  361. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.d.ts +2 -0
  362. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.d.ts.map +1 -0
  363. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.js +79 -0
  364. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-authoring-skill-gate.test.js.map +1 -0
  365. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts +2 -0
  366. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.d.ts.map +1 -0
  367. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js +34 -0
  368. package/payload/platform/plugins/admin/mcp/dist/__tests__/admin-identity-authenticate.test.js.map +1 -0
  369. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.d.ts +2 -0
  370. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.d.ts.map +1 -0
  371. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js +130 -0
  372. package/payload/platform/plugins/admin/mcp/dist/__tests__/capabilities-here.test.js.map +1 -0
  373. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts +2 -0
  374. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts.map +1 -0
  375. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js +91 -0
  376. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js.map +1 -0
  377. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.d.ts +2 -0
  378. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.d.ts.map +1 -0
  379. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js +98 -0
  380. package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js.map +1 -0
  381. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.d.ts +2 -0
  382. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.d.ts.map +1 -0
  383. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js +141 -0
  384. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load-required-inputs.test.js.map +1 -0
  385. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.d.ts +2 -0
  386. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.d.ts.map +1 -0
  387. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js +88 -0
  388. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-load.test.js.map +1 -0
  389. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.d.ts +2 -0
  390. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.d.ts.map +1 -0
  391. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.js +50 -0
  392. package/payload/platform/plugins/admin/mcp/dist/__tests__/skill-no-prescribed-role.test.js.map +1 -0
  393. package/payload/platform/plugins/admin/mcp/dist/index.d.ts +2 -0
  394. package/payload/platform/plugins/admin/mcp/dist/index.d.ts.map +1 -0
  395. package/payload/platform/plugins/admin/mcp/dist/index.js +3120 -0
  396. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -0
  397. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.d.ts +14 -0
  398. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.d.ts.map +1 -0
  399. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.js +50 -0
  400. package/payload/platform/plugins/admin/mcp/dist/lib/catalogue-census.js.map +1 -0
  401. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts +5 -0
  402. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.d.ts.map +1 -0
  403. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js +40 -0
  404. package/payload/platform/plugins/admin/mcp/dist/lib/neo4j.js.map +1 -0
  405. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts +39 -0
  406. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.d.ts.map +1 -0
  407. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js +249 -0
  408. package/payload/platform/plugins/admin/mcp/dist/lib/onboarding.js.map +1 -0
  409. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts +15 -0
  410. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts.map +1 -0
  411. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js +73 -0
  412. package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js.map +1 -0
  413. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts +44 -0
  414. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -0
  415. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +187 -0
  416. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -0
  417. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts +6 -0
  418. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.d.ts.map +1 -0
  419. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js +32 -0
  420. package/payload/platform/plugins/admin/mcp/dist/tools/admin-identity-authenticate.js.map +1 -0
  421. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts +28 -0
  422. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.d.ts.map +1 -0
  423. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js +68 -0
  424. package/payload/platform/plugins/admin/mcp/dist/tools/capabilities-here.js.map +1 -0
  425. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts +34 -0
  426. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts.map +1 -0
  427. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js +176 -0
  428. package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js.map +1 -0
  429. package/payload/platform/plugins/admin/mcp/package.json +23 -0
  430. package/payload/platform/plugins/admin/mcp/vitest.config.ts +9 -0
  431. package/payload/platform/plugins/admin/references/chat-ui-guide.md +31 -0
  432. package/payload/platform/plugins/admin/references/publish-site-routing.md +44 -0
  433. package/payload/platform/plugins/admin/skills/a4-print-documents/SKILL.md +241 -0
  434. package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +30 -0
  435. package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +154 -0
  436. package/payload/platform/plugins/admin/skills/admin-user-management/SKILL.md +49 -0
  437. package/payload/platform/plugins/admin/skills/business-profile/SKILL.md +53 -0
  438. package/payload/platform/plugins/admin/skills/capabilities-here/SKILL.md +31 -0
  439. package/payload/platform/plugins/admin/skills/datetime/SKILL.md +149 -0
  440. package/payload/platform/plugins/admin/skills/deck-pages/SKILL.md +404 -0
  441. package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +47 -0
  442. package/payload/platform/plugins/admin/skills/insight/SKILL.md +24 -0
  443. package/payload/platform/plugins/admin/skills/investigate/SKILL.md +318 -0
  444. package/payload/platform/plugins/admin/skills/plainly/SKILL.md +105 -0
  445. package/payload/platform/plugins/admin/skills/plainly/references/worked-examples.md +301 -0
  446. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +3943 -0
  447. package/payload/platform/plugins/admin/skills/plugin-management/SKILL.md +99 -0
  448. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +178 -0
  449. package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +256 -0
  450. package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +42 -0
  451. package/payload/platform/plugins/admin/skills/qr-code/SKILL.md +36 -0
  452. package/payload/platform/plugins/admin/skills/qr-code/references/data-formats.md +113 -0
  453. package/payload/platform/plugins/admin/skills/session-management/SKILL.md +62 -0
  454. package/payload/platform/plugins/admin/skills/skill-builder/SKILL.md +113 -0
  455. package/payload/platform/plugins/admin/skills/skill-builder/references/lean-pattern.md +110 -0
  456. package/payload/platform/plugins/admin/skills/skill-builder/references/pdf-generation.md +30 -0
  457. package/payload/platform/plugins/admin/skills/specialist-management/SKILL.md +45 -0
  458. package/payload/platform/plugins/admin/skills/stream-log-review/SKILL.md +71 -0
  459. package/payload/platform/plugins/admin/skills/stream-log-review/references/analysis-patterns.md +193 -0
  460. package/payload/platform/plugins/admin/skills/superpowers-sprint/SKILL.md +361 -0
  461. package/payload/platform/plugins/admin/skills/task/SKILL.md +314 -0
  462. package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +84 -0
  463. package/payload/platform/plugins/admin/skills/unzip-attachment/__tests__/preflight.sh +148 -0
  464. package/payload/platform/plugins/admin/skills/unzip-attachment/references/safety.md +116 -0
  465. package/payload/platform/plugins/admin/skills/update-knowledge/SKILL.md +52 -0
  466. package/payload/platform/plugins/admin/skills/upgrade/SKILL.md +34 -0
  467. package/payload/platform/plugins/aeo/.claude-plugin/plugin.json +17 -0
  468. package/payload/platform/plugins/aeo/PLUGIN.md +80 -0
  469. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.d.ts +2 -0
  470. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.d.ts.map +1 -0
  471. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.js +121 -0
  472. package/payload/platform/plugins/aeo/mcp/dist/__tests__/audit-heuristics.test.js.map +1 -0
  473. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.d.ts +2 -0
  474. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.d.ts.map +1 -0
  475. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.js +129 -0
  476. package/payload/platform/plugins/aeo/mcp/dist/__tests__/schema-mapping.test.js.map +1 -0
  477. package/payload/platform/plugins/aeo/mcp/dist/index.d.ts +2 -0
  478. package/payload/platform/plugins/aeo/mcp/dist/index.d.ts.map +1 -0
  479. package/payload/platform/plugins/aeo/mcp/dist/index.js +189 -0
  480. package/payload/platform/plugins/aeo/mcp/dist/index.js.map +1 -0
  481. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.d.ts +27 -0
  482. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.d.ts.map +1 -0
  483. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.js +274 -0
  484. package/payload/platform/plugins/aeo/mcp/dist/lib/audit-heuristics.js.map +1 -0
  485. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.d.ts +5 -0
  486. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.d.ts.map +1 -0
  487. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.js +38 -0
  488. package/payload/platform/plugins/aeo/mcp/dist/lib/neo4j.js.map +1 -0
  489. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.d.ts +48 -0
  490. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.d.ts.map +1 -0
  491. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.js +254 -0
  492. package/payload/platform/plugins/aeo/mcp/dist/lib/schema-mapping.js.map +1 -0
  493. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.d.ts +25 -0
  494. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.d.ts.map +1 -0
  495. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.js +78 -0
  496. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-audit-page.js.map +1 -0
  497. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.d.ts +18 -0
  498. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.d.ts.map +1 -0
  499. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.js +56 -0
  500. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-emit-jsonld.js.map +1 -0
  501. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.d.ts +9 -0
  502. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.d.ts.map +1 -0
  503. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.js +11 -0
  504. package/payload/platform/plugins/aeo/mcp/dist/tools/aeo-write-llms-txt.js.map +1 -0
  505. package/payload/platform/plugins/aeo/mcp/package.json +22 -0
  506. package/payload/platform/plugins/aeo/mcp/vitest.config.ts +9 -0
  507. package/payload/platform/plugins/aeo/skills/structured-answer/SKILL.md +53 -0
  508. package/payload/platform/plugins/browser/.claude-plugin/plugin.json +17 -0
  509. package/payload/platform/plugins/browser/PLUGIN.md +114 -0
  510. package/payload/platform/plugins/browser/mcp/dist/index.d.ts +2 -0
  511. package/payload/platform/plugins/browser/mcp/dist/index.d.ts.map +1 -0
  512. package/payload/platform/plugins/browser/mcp/dist/index.js +165 -0
  513. package/payload/platform/plugins/browser/mcp/dist/index.js.map +1 -0
  514. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.d.ts +98 -0
  515. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.d.ts.map +1 -0
  516. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.js +455 -0
  517. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-actions.js.map +1 -0
  518. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.d.ts +44 -0
  519. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.d.ts.map +1 -0
  520. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.js +89 -0
  521. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-render.js.map +1 -0
  522. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.d.ts +153 -0
  523. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.d.ts.map +1 -0
  524. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.js +401 -0
  525. package/payload/platform/plugins/browser/mcp/dist/lib/cdp-session.js.map +1 -0
  526. package/payload/platform/plugins/browser/mcp/package.json +19 -0
  527. package/payload/platform/plugins/business-assistant/.claude-plugin/plugin.json +8 -0
  528. package/payload/platform/plugins/business-assistant/PLUGIN.md +62 -0
  529. package/payload/platform/plugins/business-assistant/references/crm.md +112 -0
  530. package/payload/platform/plugins/business-assistant/references/document-management.md +96 -0
  531. package/payload/platform/plugins/business-assistant/references/escalation.md +126 -0
  532. package/payload/platform/plugins/business-assistant/references/invoicing.md +163 -0
  533. package/payload/platform/plugins/business-assistant/references/profiling.md +50 -0
  534. package/payload/platform/plugins/business-assistant/references/quoting.md +56 -0
  535. package/payload/platform/plugins/business-assistant/references/scheduling.md +127 -0
  536. package/payload/platform/plugins/business-assistant/references/task-management.md +163 -0
  537. package/payload/platform/plugins/cloudflare/.claude-plugin/plugin.json +8 -0
  538. package/payload/platform/plugins/cloudflare/PLUGIN.md +61 -0
  539. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts +2 -0
  540. package/payload/platform/plugins/cloudflare/mcp/dist/index.d.ts.map +1 -0
  541. package/payload/platform/plugins/cloudflare/mcp/dist/index.js +24 -0
  542. package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -0
  543. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +283 -0
  544. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +1 -0
  545. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +1155 -0
  546. package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -0
  547. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts +90 -0
  548. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.d.ts.map +1 -0
  549. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js +551 -0
  550. package/payload/platform/plugins/cloudflare/mcp/dist/lib/setup-orchestrator.js.map +1 -0
  551. package/payload/platform/plugins/cloudflare/mcp/package.json +18 -0
  552. package/payload/platform/plugins/cloudflare/mcp/vitest.config.ts +10 -0
  553. package/payload/platform/plugins/cloudflare/references/api.md +166 -0
  554. package/payload/platform/plugins/cloudflare/references/d1-data-capture.md +157 -0
  555. package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +173 -0
  556. package/payload/platform/plugins/cloudflare/references/hosting-sites.md +66 -0
  557. package/payload/platform/plugins/cloudflare/references/manual-setup.md +633 -0
  558. package/payload/platform/plugins/cloudflare/references/reset-guide.md +119 -0
  559. package/payload/platform/plugins/cloudflare/references/serving-published-sites.md +73 -0
  560. package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +72 -0
  561. package/payload/platform/plugins/contacts/.claude-plugin/plugin.json +17 -0
  562. package/payload/platform/plugins/contacts/PLUGIN.md +62 -0
  563. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts +2 -0
  564. package/payload/platform/plugins/contacts/mcp/dist/index.d.ts.map +1 -0
  565. package/payload/platform/plugins/contacts/mcp/dist/index.js +467 -0
  566. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -0
  567. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts +5 -0
  568. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.d.ts.map +1 -0
  569. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js +40 -0
  570. package/payload/platform/plugins/contacts/mcp/dist/lib/neo4j.js.map +1 -0
  571. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts +33 -0
  572. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.d.ts.map +1 -0
  573. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js +53 -0
  574. package/payload/platform/plugins/contacts/mcp/dist/lib/resolve-person.js.map +1 -0
  575. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +23 -0
  576. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -0
  577. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +123 -0
  578. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -0
  579. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts +28 -0
  580. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.d.ts.map +1 -0
  581. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js +39 -0
  582. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-delete.js.map +1 -0
  583. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts +52 -0
  584. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.d.ts.map +1 -0
  585. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js +181 -0
  586. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-erase.js.map +1 -0
  587. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts +52 -0
  588. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.d.ts.map +1 -0
  589. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js +122 -0
  590. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-export.js.map +1 -0
  591. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts +23 -0
  592. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.d.ts.map +1 -0
  593. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js +49 -0
  594. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-list.js.map +1 -0
  595. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +21 -0
  596. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -0
  597. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +70 -0
  598. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -0
  599. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts +14 -0
  600. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.d.ts.map +1 -0
  601. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js +43 -0
  602. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-update.js.map +1 -0
  603. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts +18 -0
  604. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.d.ts.map +1 -0
  605. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js +95 -0
  606. package/payload/platform/plugins/contacts/mcp/dist/tools/group-create.js.map +1 -0
  607. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.d.ts +15 -0
  608. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.d.ts.map +1 -0
  609. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js +72 -0
  610. package/payload/platform/plugins/contacts/mcp/dist/tools/group-manage.js.map +1 -0
  611. package/payload/platform/plugins/contacts/mcp/package.json +19 -0
  612. package/payload/platform/plugins/deep-research/.claude-plugin/plugin.json +8 -0
  613. package/payload/platform/plugins/deep-research/PLUGIN.md +19 -0
  614. package/payload/platform/plugins/deep-research/recipes/README.md +36 -0
  615. package/payload/platform/plugins/deep-research/skills/academic-verify/SKILL.md +75 -0
  616. package/payload/platform/plugins/deep-research/skills/book-mirror/SKILL.md +68 -0
  617. package/payload/platform/plugins/deep-research/skills/data-research/SKILL.md +108 -0
  618. package/payload/platform/plugins/deep-research/skills/deep-research/SKILL.md +46 -0
  619. package/payload/platform/plugins/deep-research/skills/deep-research/references/citation-styles.md +52 -0
  620. package/payload/platform/plugins/deep-research/skills/deep-research/references/research-modes.md +22 -0
  621. package/payload/platform/plugins/deep-research/skills/deep-research/references/search-strategy.md +24 -0
  622. package/payload/platform/plugins/deep-research/skills/strategic-reading/SKILL.md +69 -0
  623. package/payload/platform/plugins/docs/.claude-plugin/plugin.json +8 -0
  624. package/payload/platform/plugins/docs/PLUGIN.md +58 -0
  625. package/payload/platform/plugins/docs/references/access-control.md +84 -0
  626. package/payload/platform/plugins/docs/references/admin-identity-gate.md +81 -0
  627. package/payload/platform/plugins/docs/references/admin-session.md +177 -0
  628. package/payload/platform/plugins/docs/references/admin-ui.md +266 -0
  629. package/payload/platform/plugins/docs/references/aeo.md +87 -0
  630. package/payload/platform/plugins/docs/references/attachments.md +44 -0
  631. package/payload/platform/plugins/docs/references/cloudflare.md +102 -0
  632. package/payload/platform/plugins/docs/references/contacts-guide.md +94 -0
  633. package/payload/platform/plugins/docs/references/deployment.md +303 -0
  634. package/payload/platform/plugins/docs/references/getting-started.md +82 -0
  635. package/payload/platform/plugins/docs/references/graph.md +163 -0
  636. package/payload/platform/plugins/docs/references/internals.md +539 -0
  637. package/payload/platform/plugins/docs/references/investigate-and-task-skills.md +9 -0
  638. package/payload/platform/plugins/docs/references/linkedin-extension.md +49 -0
  639. package/payload/platform/plugins/docs/references/memory-guide.md +163 -0
  640. package/payload/platform/plugins/docs/references/neo4j.md +63 -0
  641. package/payload/platform/plugins/docs/references/outlook-guide.md +69 -0
  642. package/payload/platform/plugins/docs/references/platform.md +193 -0
  643. package/payload/platform/plugins/docs/references/plugins-guide.md +188 -0
  644. package/payload/platform/plugins/docs/references/projects-guide.md +94 -0
  645. package/payload/platform/plugins/docs/references/samba.md +80 -0
  646. package/payload/platform/plugins/docs/references/session-retrospective.md +14 -0
  647. package/payload/platform/plugins/docs/references/settings.md +82 -0
  648. package/payload/platform/plugins/docs/references/slides.md +31 -0
  649. package/payload/platform/plugins/docs/references/telegram-guide.md +58 -0
  650. package/payload/platform/plugins/docs/references/troubleshooting.md +289 -0
  651. package/payload/platform/plugins/docs/references/visitor-graph.md +83 -0
  652. package/payload/platform/plugins/docs/references/voice-mirror-guide.md +64 -0
  653. package/payload/platform/plugins/docs/superpowers/plans/2026-06-01-memory-edge.md +589 -0
  654. package/payload/platform/plugins/email/.claude-plugin/plugin.json +17 -0
  655. package/payload/platform/plugins/email/PLUGIN.md +98 -0
  656. package/payload/platform/plugins/email/mcp/dist/index.d.ts +2 -0
  657. package/payload/platform/plugins/email/mcp/dist/index.d.ts.map +1 -0
  658. package/payload/platform/plugins/email/mcp/dist/index.js +381 -0
  659. package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -0
  660. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.d.ts +39 -0
  661. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.d.ts.map +1 -0
  662. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.js +0 -0
  663. package/payload/platform/plugins/email/mcp/dist/lib/attachment-archive.js.map +1 -0
  664. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts +19 -0
  665. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts.map +1 -0
  666. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js +64 -0
  667. package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js.map +1 -0
  668. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +17 -0
  669. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +1 -0
  670. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +186 -0
  671. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -0
  672. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts +30 -0
  673. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.d.ts.map +1 -0
  674. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js +305 -0
  675. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-dispatch.js.map +1 -0
  676. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.d.ts +19 -0
  677. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.d.ts.map +1 -0
  678. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.js +51 -0
  679. package/payload/platform/plugins/email/mcp/dist/lib/conversation-archive-lookup.js.map +1 -0
  680. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +89 -0
  681. package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -0
  682. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +245 -0
  683. package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -0
  684. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts +2 -0
  685. package/payload/platform/plugins/email/mcp/dist/lib/embedding.d.ts.map +1 -0
  686. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js +24 -0
  687. package/payload/platform/plugins/email/mcp/dist/lib/embedding.js.map +1 -0
  688. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts +29 -0
  689. package/payload/platform/plugins/email/mcp/dist/lib/graph.d.ts.map +1 -0
  690. package/payload/platform/plugins/email/mcp/dist/lib/graph.js +18 -0
  691. package/payload/platform/plugins/email/mcp/dist/lib/graph.js.map +1 -0
  692. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +266 -0
  693. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -0
  694. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +770 -0
  695. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -0
  696. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +23 -0
  697. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -0
  698. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js +15 -0
  699. package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -0
  700. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts +5 -0
  701. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.d.ts.map +1 -0
  702. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js +40 -0
  703. package/payload/platform/plugins/email/mcp/dist/lib/neo4j.js.map +1 -0
  704. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts +60 -0
  705. package/payload/platform/plugins/email/mcp/dist/lib/providers.d.ts.map +1 -0
  706. package/payload/platform/plugins/email/mcp/dist/lib/providers.js +675 -0
  707. package/payload/platform/plugins/email/mcp/dist/lib/providers.js.map +1 -0
  708. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts +29 -0
  709. package/payload/platform/plugins/email/mcp/dist/lib/screening.d.ts.map +1 -0
  710. package/payload/platform/plugins/email/mcp/dist/lib/screening.js +105 -0
  711. package/payload/platform/plugins/email/mcp/dist/lib/screening.js.map +1 -0
  712. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts +25 -0
  713. package/payload/platform/plugins/email/mcp/dist/lib/smtp.d.ts.map +1 -0
  714. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js +78 -0
  715. package/payload/platform/plugins/email/mcp/dist/lib/smtp.js.map +1 -0
  716. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts +38 -0
  717. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.d.ts.map +1 -0
  718. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +817 -0
  719. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -0
  720. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts +30 -0
  721. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.d.ts.map +1 -0
  722. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js +215 -0
  723. package/payload/platform/plugins/email/mcp/dist/scripts/email-fetch.js.map +1 -0
  724. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts +2 -0
  725. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts.map +1 -0
  726. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js +56 -0
  727. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js.map +1 -0
  728. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts +19 -0
  729. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.d.ts.map +1 -0
  730. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js +151 -0
  731. package/payload/platform/plugins/email/mcp/dist/tools/email-auto-respond-config.js.map +1 -0
  732. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts +6 -0
  733. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.d.ts.map +1 -0
  734. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js +89 -0
  735. package/payload/platform/plugins/email/mcp/dist/tools/email-classify.js.map +1 -0
  736. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts +15 -0
  737. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts.map +1 -0
  738. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +54 -0
  739. package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -0
  740. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts +24 -0
  741. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.d.ts.map +1 -0
  742. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js +293 -0
  743. package/payload/platform/plugins/email/mcp/dist/tools/email-graph-query.js.map +1 -0
  744. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts +20 -0
  745. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -0
  746. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +191 -0
  747. package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -0
  748. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts +15 -0
  749. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -0
  750. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +142 -0
  751. package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -0
  752. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts +14 -0
  753. package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -0
  754. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +84 -0
  755. package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -0
  756. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +11 -0
  757. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -0
  758. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +74 -0
  759. package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -0
  760. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts +15 -0
  761. package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -0
  762. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +67 -0
  763. package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -0
  764. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +11 -0
  765. package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -0
  766. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +37 -0
  767. package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -0
  768. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts +22 -0
  769. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.d.ts.map +1 -0
  770. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +162 -0
  771. package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -0
  772. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +6 -0
  773. package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -0
  774. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +43 -0
  775. package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -0
  776. package/payload/platform/plugins/email/mcp/package.json +22 -0
  777. package/payload/platform/plugins/email/references/email-reference.md +144 -0
  778. package/payload/platform/plugins/email/skills/email-composition/SKILL.md +184 -0
  779. package/payload/platform/plugins/email/skills/email-ingest/SKILL.md +87 -0
  780. package/payload/platform/plugins/graph/.claude-plugin/plugin.json +8 -0
  781. package/payload/platform/plugins/graph/PLUGIN.md +37 -0
  782. package/payload/platform/plugins/graph-viewer/.claude-plugin/plugin.json +8 -0
  783. package/payload/platform/plugins/graph-viewer/PLUGIN.md +56 -0
  784. package/payload/platform/plugins/graph-viewer/mcp/dist/index.d.ts +7 -0
  785. package/payload/platform/plugins/graph-viewer/mcp/dist/index.d.ts.map +1 -0
  786. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js +70 -0
  787. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js.map +1 -0
  788. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.d.ts +5 -0
  789. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.d.ts.map +1 -0
  790. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.js +43 -0
  791. package/payload/platform/plugins/graph-viewer/mcp/dist/lib/neo4j.js.map +1 -0
  792. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.d.ts +28 -0
  793. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.d.ts.map +1 -0
  794. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.js +73 -0
  795. package/payload/platform/plugins/graph-viewer/mcp/dist/render/draw.js.map +1 -0
  796. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.d.ts +40 -0
  797. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.d.ts.map +1 -0
  798. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.js +117 -0
  799. package/payload/platform/plugins/graph-viewer/mcp/dist/render/layout.js.map +1 -0
  800. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts +45 -0
  801. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts.map +1 -0
  802. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js +198 -0
  803. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js.map +1 -0
  804. package/payload/platform/plugins/graph-viewer/mcp/package.json +25 -0
  805. package/payload/platform/plugins/graph-viewer/mcp/vitest.config.ts +8 -0
  806. package/payload/platform/plugins/graph-viewer/skills/render-graph/SKILL.md +38 -0
  807. package/payload/platform/plugins/linkedin-extension/.claude-plugin/plugin.json +8 -0
  808. package/payload/platform/plugins/linkedin-extension/PLUGIN.md +58 -0
  809. package/payload/platform/plugins/linkedin-extension/extension/README.md +44 -0
  810. package/payload/platform/plugins/linkedin-extension/extension/__tests__/fixtures/profile.html +34 -0
  811. package/payload/platform/plugins/linkedin-extension/extension/__tests__/fixtures/thread.html +36 -0
  812. package/payload/platform/plugins/linkedin-extension/extension/assets/pill.css +52 -0
  813. package/payload/platform/plugins/linkedin-extension/extension/background/sw.js +60 -0
  814. package/payload/platform/plugins/linkedin-extension/extension/content/extractors.js +127 -0
  815. package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +82 -0
  816. package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +84 -0
  817. package/payload/platform/plugins/linkedin-extension/extension/manifest.json +32 -0
  818. package/payload/platform/plugins/linkedin-extension/extension/options/options.html +33 -0
  819. package/payload/platform/plugins/linkedin-extension/extension/options/options.js +30 -0
  820. package/payload/platform/plugins/linkedin-extension/skills/linkedin-extension/SKILL.md +91 -0
  821. package/payload/platform/plugins/linkedin-import/.claude-plugin/plugin.json +8 -0
  822. package/payload/platform/plugins/linkedin-import/PLUGIN.md +27 -0
  823. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +119 -0
  824. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/connections.md +135 -0
  825. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/references/profile.md +94 -0
  826. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +17 -0
  827. package/payload/platform/plugins/memory/PLUGIN.md +291 -0
  828. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +616 -0
  829. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +106 -0
  830. package/payload/platform/plugins/memory/mcp/dist/index.d.ts +2 -0
  831. package/payload/platform/plugins/memory/mcp/dist/index.d.ts.map +1 -0
  832. package/payload/platform/plugins/memory/mcp/dist/index.js +2522 -0
  833. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -0
  834. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts +2 -0
  835. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.d.ts.map +1 -0
  836. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js +68 -0
  837. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-revision.test.js.map +1 -0
  838. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts +2 -0
  839. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.d.ts.map +1 -0
  840. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js +90 -0
  841. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/compiled-truth-rewriter-operator-hint.test.js.map +1 -0
  842. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts +2 -0
  843. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.d.ts.map +1 -0
  844. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js +41 -0
  845. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/document-sectioniser.test.js.map +1 -0
  846. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts +2 -0
  847. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.d.ts.map +1 -0
  848. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js +90 -0
  849. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-embed-net.test.js.map +1 -0
  850. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts +2 -0
  851. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.d.ts.map +1 -0
  852. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js +30 -0
  853. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-label.test.js.map +1 -0
  854. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts +2 -0
  855. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.d.ts.map +1 -0
  856. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js +25 -0
  857. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/graph-write-gate-property.test.js.map +1 -0
  858. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts +2 -0
  859. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.d.ts.map +1 -0
  860. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js +62 -0
  861. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-delete-gate.test.js.map +1 -0
  862. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.d.ts +2 -0
  863. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.d.ts.map +1 -0
  864. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.js +50 -0
  865. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/label-origin-gate.test.js.map +1 -0
  866. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.d.ts +2 -0
  867. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.d.ts.map +1 -0
  868. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js +154 -0
  869. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/live-schema-source.test.js.map +1 -0
  870. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts +2 -0
  871. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.d.ts.map +1 -0
  872. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js +226 -0
  873. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/llm-classifier.test.js.map +1 -0
  874. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.d.ts +2 -0
  875. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.d.ts.map +1 -0
  876. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.js +57 -0
  877. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/neo4j-password-path.test.js.map +1 -0
  878. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts +2 -0
  879. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.d.ts.map +1 -0
  880. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js +24 -0
  881. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-backlinks.test.js.map +1 -0
  882. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts +2 -0
  883. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.d.ts.map +1 -0
  884. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js +51 -0
  885. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-prune-revisions.test.js.map +1 -0
  886. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts +2 -0
  887. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.d.ts.map +1 -0
  888. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js +51 -0
  889. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/phase-tag-normalisation.test.js.map +1 -0
  890. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts +2 -0
  891. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.d.ts.map +1 -0
  892. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js +68 -0
  893. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relative-date.test.js.map +1 -0
  894. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.d.ts +2 -0
  895. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.d.ts.map +1 -0
  896. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.js +116 -0
  897. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/resolve-active-vertical.test.js.map +1 -0
  898. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.d.ts +2 -0
  899. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.d.ts.map +1 -0
  900. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +67 -0
  901. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -0
  902. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.d.ts +2 -0
  903. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.d.ts.map +1 -0
  904. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js +217 -0
  905. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-loader.test.js.map +1 -0
  906. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.d.ts +2 -0
  907. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.d.ts.map +1 -0
  908. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +640 -0
  909. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -0
  910. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts +2 -0
  911. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.d.ts.map +1 -0
  912. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js +111 -0
  913. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/timeline-extractor.test.js.map +1 -0
  914. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts +2 -0
  915. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.d.ts.map +1 -0
  916. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +79 -0
  917. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -0
  918. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts +2 -0
  919. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.d.ts.map +1 -0
  920. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js +27 -0
  921. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/vector-indexed-labels-drift.test.js.map +1 -0
  922. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts +37 -0
  923. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.d.ts.map +1 -0
  924. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js +69 -0
  925. package/payload/platform/plugins/memory/mcp/dist/lib/attachments.js.map +1 -0
  926. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts +91 -0
  927. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.d.ts.map +1 -0
  928. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js +39 -0
  929. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-revision.js.map +1 -0
  930. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts +60 -0
  931. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.d.ts.map +1 -0
  932. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js +169 -0
  933. package/payload/platform/plugins/memory/mcp/dist/lib/compiled-truth-rewriter.js.map +1 -0
  934. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts +3 -0
  935. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.d.ts.map +1 -0
  936. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js +61 -0
  937. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/email.js.map +1 -0
  938. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts +7 -0
  939. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.d.ts.map +1 -0
  940. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js +36 -0
  941. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/index.js.map +1 -0
  942. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.d.ts +49 -0
  943. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.d.ts.map +1 -0
  944. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.js +35 -0
  945. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/timestamp-scanner.js.map +1 -0
  946. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts +47 -0
  947. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.d.ts.map +1 -0
  948. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js +38 -0
  949. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/types.js.map +1 -0
  950. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts +3 -0
  951. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.d.ts.map +1 -0
  952. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js +155 -0
  953. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/whatsapp-text.js.map +1 -0
  954. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts +3 -0
  955. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.d.ts.map +1 -0
  956. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js +101 -0
  957. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-normalisers/x-dm.js.map +1 -0
  958. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts +11 -0
  959. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.d.ts.map +1 -0
  960. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js +20 -0
  961. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/delta-cursor.js.map +1 -0
  962. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts +16 -0
  963. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.d.ts.map +1 -0
  964. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js +43 -0
  965. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/derive-keys.js.map +1 -0
  966. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts +16 -0
  967. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.d.ts.map +1 -0
  968. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js +60 -0
  969. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sender-bind.js.map +1 -0
  970. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts +9 -0
  971. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.d.ts.map +1 -0
  972. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js +32 -0
  973. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/sessionize.js.map +1 -0
  974. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts +3 -0
  975. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.d.ts.map +1 -0
  976. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js +29 -0
  977. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/to-turn-text.js.map +1 -0
  978. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts +8 -0
  979. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.d.ts.map +1 -0
  980. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js +27 -0
  981. package/payload/platform/plugins/memory/mcp/dist/lib/conversation-pipeline/turn-text-cache-path.js.map +1 -0
  982. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts +45 -0
  983. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.d.ts.map +1 -0
  984. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js +125 -0
  985. package/payload/platform/plugins/memory/mcp/dist/lib/document-chunker.js.map +1 -0
  986. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts +9 -0
  987. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.d.ts.map +1 -0
  988. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js +61 -0
  989. package/payload/platform/plugins/memory/mcp/dist/lib/document-hierarchy.js.map +1 -0
  990. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts +10 -0
  991. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.d.ts.map +1 -0
  992. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js +47 -0
  993. package/payload/platform/plugins/memory/mcp/dist/lib/document-sectioniser.js.map +1 -0
  994. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts +44 -0
  995. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.d.ts.map +1 -0
  996. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js +14 -0
  997. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/index.js.map +1 -0
  998. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts +15 -0
  999. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.d.ts.map +1 -0
  1000. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js +37 -0
  1001. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-backlinks.js.map +1 -0
  1002. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +3 -0
  1003. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts.map +1 -0
  1004. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +16 -0
  1005. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js.map +1 -0
  1006. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts +19 -0
  1007. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.d.ts.map +1 -0
  1008. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js +39 -0
  1009. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-dead-edges.js.map +1 -0
  1010. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts +19 -0
  1011. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts.map +1 -0
  1012. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js +42 -0
  1013. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js.map +1 -0
  1014. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts +21 -0
  1015. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.d.ts.map +1 -0
  1016. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js +27 -0
  1017. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-prune-revisions.js.map +1 -0
  1018. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts +18 -0
  1019. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.d.ts.map +1 -0
  1020. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js +60 -0
  1021. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-stale-truth.js.map +1 -0
  1022. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts +25 -0
  1023. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.d.ts.map +1 -0
  1024. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js +90 -0
  1025. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-tag-normalisation.js.map +1 -0
  1026. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts +2 -0
  1027. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.d.ts.map +1 -0
  1028. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js +6 -0
  1029. package/payload/platform/plugins/memory/mcp/dist/lib/embeddings.js.map +1 -0
  1030. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.d.ts +36 -0
  1031. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.d.ts.map +1 -0
  1032. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.js +86 -0
  1033. package/payload/platform/plugins/memory/mcp/dist/lib/filter-token.js.map +1 -0
  1034. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts +41 -0
  1035. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.d.ts.map +1 -0
  1036. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js +113 -0
  1037. package/payload/platform/plugins/memory/mcp/dist/lib/graph-prune.js.map +1 -0
  1038. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts +76 -0
  1039. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.d.ts.map +1 -0
  1040. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js +148 -0
  1041. package/payload/platform/plugins/memory/mcp/dist/lib/graph-write-gate.js.map +1 -0
  1042. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts +41 -0
  1043. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.d.ts.map +1 -0
  1044. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js +69 -0
  1045. package/payload/platform/plugins/memory/mcp/dist/lib/kd-classify-gate.js.map +1 -0
  1046. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts +18 -0
  1047. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.d.ts.map +1 -0
  1048. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js +31 -0
  1049. package/payload/platform/plugins/memory/mcp/dist/lib/label-delete-gate.js.map +1 -0
  1050. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.d.ts +18 -0
  1051. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.d.ts.map +1 -0
  1052. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.js +35 -0
  1053. package/payload/platform/plugins/memory/mcp/dist/lib/label-origin-gate.js.map +1 -0
  1054. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts +119 -0
  1055. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.d.ts.map +1 -0
  1056. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js +208 -0
  1057. package/payload/platform/plugins/memory/mcp/dist/lib/live-schema-source.js.map +1 -0
  1058. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +248 -0
  1059. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -0
  1060. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +824 -0
  1061. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -0
  1062. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts +63 -0
  1063. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.d.ts.map +1 -0
  1064. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js +210 -0
  1065. package/payload/platform/plugins/memory/mcp/dist/lib/llm-ranker.js.map +1 -0
  1066. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts +65 -0
  1067. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.d.ts.map +1 -0
  1068. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js +182 -0
  1069. package/payload/platform/plugins/memory/mcp/dist/lib/log-ingest.js.map +1 -0
  1070. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts +19 -0
  1071. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1072. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js +76 -0
  1073. package/payload/platform/plugins/memory/mcp/dist/lib/neo4j.js.map +1 -0
  1074. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts +13 -0
  1075. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.d.ts.map +1 -0
  1076. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js +191 -0
  1077. package/payload/platform/plugins/memory/mcp/dist/lib/relative-date.js.map +1 -0
  1078. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.d.ts +33 -0
  1079. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.d.ts.map +1 -0
  1080. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.js +44 -0
  1081. package/payload/platform/plugins/memory/mcp/dist/lib/resolve-active-vertical.js.map +1 -0
  1082. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +141 -0
  1083. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -0
  1084. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +516 -0
  1085. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -0
  1086. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts +92 -0
  1087. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.d.ts.map +1 -0
  1088. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js +243 -0
  1089. package/payload/platform/plugins/memory/mcp/dist/lib/schema-validator.js.map +1 -0
  1090. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +127 -0
  1091. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -0
  1092. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js +56 -0
  1093. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.js.map +1 -0
  1094. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts +19 -0
  1095. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.d.ts.map +1 -0
  1096. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js +179 -0
  1097. package/payload/platform/plugins/memory/mcp/dist/lib/timeline-extractor.js.map +1 -0
  1098. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts +35 -0
  1099. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.d.ts.map +1 -0
  1100. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js +28 -0
  1101. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-pass.js.map +1 -0
  1102. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts +29 -0
  1103. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -0
  1104. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +142 -0
  1105. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -0
  1106. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.d.ts +3 -0
  1107. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.d.ts.map +1 -0
  1108. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js +12 -0
  1109. package/payload/platform/plugins/memory/mcp/dist/lib/uuid.js.map +1 -0
  1110. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts +22 -0
  1111. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.d.ts.map +1 -0
  1112. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js +44 -0
  1113. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/_helpers/emit-capture.js.map +1 -0
  1114. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts +2 -0
  1115. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.d.ts.map +1 -0
  1116. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js +20 -0
  1117. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/build-text-representation-bound.test.js.map +1 -0
  1118. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts +2 -0
  1119. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.d.ts.map +1 -0
  1120. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js +68 -0
  1121. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights-emit.test.js.map +1 -0
  1122. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts +7 -0
  1123. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.d.ts.map +1 -0
  1124. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +298 -0
  1125. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -0
  1126. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts +2 -0
  1127. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.d.ts.map +1 -0
  1128. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js +48 -0
  1129. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection-emit.test.js.map +1 -0
  1130. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.d.ts +2 -0
  1131. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.d.ts.map +1 -0
  1132. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js +184 -0
  1133. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-enrich-rejection.test.js.map +1 -0
  1134. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts +2 -0
  1135. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.d.ts.map +1 -0
  1136. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js +67 -0
  1137. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-preference-embed.test.js.map +1 -0
  1138. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts +2 -0
  1139. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.d.ts.map +1 -0
  1140. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js +53 -0
  1141. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-memory-expunge-emit.test.js.map +1 -0
  1142. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts +2 -0
  1143. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.d.ts.map +1 -0
  1144. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js +75 -0
  1145. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-source-agnosticism.test.js.map +1 -0
  1146. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts +2 -0
  1147. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.d.ts.map +1 -0
  1148. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js +109 -0
  1149. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-normalisers-whatsapp-text.test.js.map +1 -0
  1150. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts +2 -0
  1151. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.d.ts.map +1 -0
  1152. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js +34 -0
  1153. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/embeddings-cap.test.js.map +1 -0
  1154. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts +2 -0
  1155. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.d.ts.map +1 -0
  1156. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js +40 -0
  1157. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-add-emit.test.js.map +1 -0
  1158. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts +2 -0
  1159. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.d.ts.map +1 -0
  1160. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js +39 -0
  1161. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/graph-prune-denylist-remove-emit.test.js.map +1 -0
  1162. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts +2 -0
  1163. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.d.ts.map +1 -0
  1164. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js +241 -0
  1165. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/log-ingest.test.js.map +1 -0
  1166. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts +2 -0
  1167. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.d.ts.map +1 -0
  1168. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js +61 -0
  1169. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-section-writer.test.js.map +1 -0
  1170. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts +2 -0
  1171. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.d.ts.map +1 -0
  1172. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js +88 -0
  1173. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write-emit.test.js.map +1 -0
  1174. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.d.ts +2 -0
  1175. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.d.ts.map +1 -0
  1176. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js +106 -0
  1177. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-archive-write.test.js.map +1 -0
  1178. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts +2 -0
  1179. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.d.ts.map +1 -0
  1180. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js +58 -0
  1181. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-classify-emit.test.js.map +1 -0
  1182. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts +2 -0
  1183. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.d.ts.map +1 -0
  1184. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js +129 -0
  1185. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-compiled-truth-history.test.js.map +1 -0
  1186. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts +2 -0
  1187. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.d.ts.map +1 -0
  1188. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js +64 -0
  1189. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-emit.test.js.map +1 -0
  1190. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts +2 -0
  1191. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.d.ts.map +1 -0
  1192. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js +141 -0
  1193. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-delete-reserved-label.test.js.map +1 -0
  1194. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.d.ts +2 -0
  1195. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.d.ts.map +1 -0
  1196. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.js +164 -0
  1197. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edge.test.js.map +1 -0
  1198. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts +2 -0
  1199. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.d.ts.map +1 -0
  1200. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js +70 -0
  1201. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-edit-attachment-emit.test.js.map +1 -0
  1202. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.d.ts +2 -0
  1203. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.d.ts.map +1 -0
  1204. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js +168 -0
  1205. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-admin-conversation.test.js.map +1 -0
  1206. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts +2 -0
  1207. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.d.ts.map +1 -0
  1208. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js +48 -0
  1209. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-emit.test.js.map +1 -0
  1210. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts +2 -0
  1211. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.d.ts.map +1 -0
  1212. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js +86 -0
  1213. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-empty-trash-reserved-label.test.js.map +1 -0
  1214. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.d.ts +2 -0
  1215. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.d.ts.map +1 -0
  1216. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js +95 -0
  1217. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-body-server-sliced.test.js.map +1 -0
  1218. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts +2 -0
  1219. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.d.ts.map +1 -0
  1220. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js +124 -0
  1221. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-chat-body-server-sliced.test.js.map +1 -0
  1222. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts +2 -0
  1223. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.d.ts.map +1 -0
  1224. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js +74 -0
  1225. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-emit.test.js.map +1 -0
  1226. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts +2 -0
  1227. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.d.ts.map +1 -0
  1228. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js +47 -0
  1229. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-extract-emit.test.js.map +1 -0
  1230. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts +2 -0
  1231. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.d.ts.map +1 -0
  1232. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js +66 -0
  1233. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-inline-rewrite.test.js.map +1 -0
  1234. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts +2 -0
  1235. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.d.ts.map +1 -0
  1236. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js +104 -0
  1237. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-section-properties-strip.test.js.map +1 -0
  1238. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts +2 -0
  1239. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.d.ts.map +1 -0
  1240. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js +65 -0
  1241. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest-web-emit.test.js.map +1 -0
  1242. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts +2 -0
  1243. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.d.ts.map +1 -0
  1244. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +175 -0
  1245. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -0
  1246. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.d.ts +2 -0
  1247. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.d.ts.map +1 -0
  1248. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.js +135 -0
  1249. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-lookup-by-name.test.js.map +1 -0
  1250. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts +2 -0
  1251. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.d.ts.map +1 -0
  1252. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js +43 -0
  1253. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex-emit.test.js.map +1 -0
  1254. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts +2 -0
  1255. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.d.ts.map +1 -0
  1256. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js +87 -0
  1257. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-reindex.test.js.map +1 -0
  1258. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts +2 -0
  1259. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.d.ts.map +1 -0
  1260. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js +65 -0
  1261. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-rename-attachment-emit.test.js.map +1 -0
  1262. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts +2 -0
  1263. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.d.ts.map +1 -0
  1264. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js +115 -0
  1265. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-report-tools.test.js.map +1 -0
  1266. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts +2 -0
  1267. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.d.ts.map +1 -0
  1268. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js +49 -0
  1269. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-restore-emit.test.js.map +1 -0
  1270. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts +2 -0
  1271. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.d.ts.map +1 -0
  1272. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js +128 -0
  1273. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-fields.test.js.map +1 -0
  1274. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts +2 -0
  1275. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.d.ts.map +1 -0
  1276. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js +34 -0
  1277. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-search-threshold.test.js.map +1 -0
  1278. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts +2 -0
  1279. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts.map +1 -0
  1280. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js +125 -0
  1281. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js.map +1 -0
  1282. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts +2 -0
  1283. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.d.ts.map +1 -0
  1284. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js +79 -0
  1285. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-emit.test.js.map +1 -0
  1286. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts +2 -0
  1287. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.d.ts.map +1 -0
  1288. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js +329 -0
  1289. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-operator-hint.test.js.map +1 -0
  1290. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.d.ts +2 -0
  1291. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.d.ts.map +1 -0
  1292. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.js +39 -0
  1293. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-compiled-truth-rejection.test.js.map +1 -0
  1294. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts +2 -0
  1295. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.d.ts.map +1 -0
  1296. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js +81 -0
  1297. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-emit.test.js.map +1 -0
  1298. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.d.ts +2 -0
  1299. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.d.ts.map +1 -0
  1300. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.js +30 -0
  1301. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-timeline-learned-at.test.js.map +1 -0
  1302. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts +2 -0
  1303. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.d.ts.map +1 -0
  1304. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js +62 -0
  1305. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-delete-emit.test.js.map +1 -0
  1306. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts +2 -0
  1307. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.d.ts.map +1 -0
  1308. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js +76 -0
  1309. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-emit.test.js.map +1 -0
  1310. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.d.ts +2 -0
  1311. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.d.ts.map +1 -0
  1312. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js +88 -0
  1313. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-not-applicable.test.js.map +1 -0
  1314. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts +2 -0
  1315. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.d.ts.map +1 -0
  1316. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +149 -0
  1317. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -0
  1318. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +114 -0
  1319. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts.map +1 -0
  1320. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +415 -0
  1321. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -0
  1322. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts +41 -0
  1323. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.d.ts.map +1 -0
  1324. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js +124 -0
  1325. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-enrich-rejection.js.map +1 -0
  1326. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts +43 -0
  1327. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.d.ts.map +1 -0
  1328. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js +96 -0
  1329. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-list-chunks.js.map +1 -0
  1330. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts +8 -0
  1331. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.d.ts.map +1 -0
  1332. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js +15 -0
  1333. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-memory-expunge.js.map +1 -0
  1334. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts +7 -0
  1335. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.d.ts.map +1 -0
  1336. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js +32 -0
  1337. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-add.js.map +1 -0
  1338. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.d.ts +7 -0
  1339. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.d.ts.map +1 -0
  1340. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.js +7 -0
  1341. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-list.js.map +1 -0
  1342. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts +7 -0
  1343. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.d.ts.map +1 -0
  1344. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js +31 -0
  1345. package/payload/platform/plugins/memory/mcp/dist/tools/graph-prune-denylist-remove.js.map +1 -0
  1346. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.d.ts +15 -0
  1347. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.d.ts.map +1 -0
  1348. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.js +64 -0
  1349. package/payload/platform/plugins/memory/mcp/dist/tools/image-fetch.js.map +1 -0
  1350. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts +6 -0
  1351. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.d.ts.map +1 -0
  1352. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js +73 -0
  1353. package/payload/platform/plugins/memory/mcp/dist/tools/kd-classify.js.map +1 -0
  1354. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +202 -0
  1355. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -0
  1356. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +1084 -0
  1357. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -0
  1358. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts +35 -0
  1359. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.d.ts.map +1 -0
  1360. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js +80 -0
  1361. package/payload/platform/plugins/memory/mcp/dist/tools/memory-brain-capture-recent.js.map +1 -0
  1362. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts +34 -0
  1363. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.d.ts.map +1 -0
  1364. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js +62 -0
  1365. package/payload/platform/plugins/memory/mcp/dist/tools/memory-classify.js.map +1 -0
  1366. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts +41 -0
  1367. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.d.ts.map +1 -0
  1368. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js +73 -0
  1369. package/payload/platform/plugins/memory/mcp/dist/tools/memory-compiled-truth-history.js.map +1 -0
  1370. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +65 -0
  1371. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts.map +1 -0
  1372. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +151 -0
  1373. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -0
  1374. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts +48 -0
  1375. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.d.ts.map +1 -0
  1376. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js +197 -0
  1377. package/payload/platform/plugins/memory/mcp/dist/tools/memory-dream-run.js.map +1 -0
  1378. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts +21 -0
  1379. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts.map +1 -0
  1380. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js +51 -0
  1381. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js.map +1 -0
  1382. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts +16 -0
  1383. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.d.ts.map +1 -0
  1384. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js +95 -0
  1385. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edit-attachment.js.map +1 -0
  1386. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +50 -0
  1387. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -0
  1388. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js +104 -0
  1389. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -0
  1390. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts +58 -0
  1391. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.d.ts.map +1 -0
  1392. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js +125 -0
  1393. package/payload/platform/plugins/memory/mcp/dist/tools/memory-find-candidates.js.map +1 -0
  1394. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts +37 -0
  1395. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.d.ts.map +1 -0
  1396. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js +97 -0
  1397. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-extract.js.map +1 -0
  1398. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts +32 -0
  1399. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.d.ts.map +1 -0
  1400. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js +116 -0
  1401. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest-web.js.map +1 -0
  1402. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +194 -0
  1403. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -0
  1404. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +1273 -0
  1405. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -0
  1406. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts +19 -0
  1407. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.d.ts.map +1 -0
  1408. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js +125 -0
  1409. package/payload/platform/plugins/memory/mcp/dist/tools/memory-list-attachments.js.map +1 -0
  1410. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.d.ts +16 -0
  1411. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.d.ts.map +1 -0
  1412. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.js +56 -0
  1413. package/payload/platform/plugins/memory/mcp/dist/tools/memory-lookup-by-name.js.map +1 -0
  1414. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts +28 -0
  1415. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.d.ts.map +1 -0
  1416. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js +46 -0
  1417. package/payload/platform/plugins/memory/mcp/dist/tools/memory-node-exists.js.map +1 -0
  1418. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts +61 -0
  1419. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.d.ts.map +1 -0
  1420. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js +102 -0
  1421. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rank.js.map +1 -0
  1422. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts +12 -0
  1423. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.d.ts.map +1 -0
  1424. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js +100 -0
  1425. package/payload/platform/plugins/memory/mcp/dist/tools/memory-read-attachment.js.map +1 -0
  1426. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts +9 -0
  1427. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.d.ts.map +1 -0
  1428. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js +127 -0
  1429. package/payload/platform/plugins/memory/mcp/dist/tools/memory-reindex.js.map +1 -0
  1430. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts +13 -0
  1431. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.d.ts.map +1 -0
  1432. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js +67 -0
  1433. package/payload/platform/plugins/memory/mcp/dist/tools/memory-rename-attachment.js.map +1 -0
  1434. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts +28 -0
  1435. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.d.ts.map +1 -0
  1436. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js +64 -0
  1437. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-list.js.map +1 -0
  1438. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts +24 -0
  1439. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.d.ts.map +1 -0
  1440. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js +49 -0
  1441. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-read-latest.js.map +1 -0
  1442. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts +34 -0
  1443. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.d.ts.map +1 -0
  1444. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js +99 -0
  1445. package/payload/platform/plugins/memory/mcp/dist/tools/memory-report-write.js.map +1 -0
  1446. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts +24 -0
  1447. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts.map +1 -0
  1448. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js +47 -0
  1449. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js.map +1 -0
  1450. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts +29 -0
  1451. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.d.ts.map +1 -0
  1452. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js +67 -0
  1453. package/payload/platform/plugins/memory/mcp/dist/tools/memory-review-queue.js.map +1 -0
  1454. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts +7 -0
  1455. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.d.ts.map +1 -0
  1456. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js +184 -0
  1457. package/payload/platform/plugins/memory/mcp/dist/tools/memory-search.js.map +1 -0
  1458. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +35 -0
  1459. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +1 -0
  1460. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +73 -0
  1461. package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +1 -0
  1462. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts +29 -0
  1463. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.d.ts.map +1 -0
  1464. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js +22 -0
  1465. package/payload/platform/plugins/memory/mcp/dist/tools/memory-typed-edge-pass.js.map +1 -0
  1466. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts +15 -0
  1467. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts.map +1 -0
  1468. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js +45 -0
  1469. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js.map +1 -0
  1470. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts +16 -0
  1471. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.d.ts.map +1 -0
  1472. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +194 -0
  1473. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -0
  1474. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts +47 -0
  1475. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -0
  1476. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +376 -0
  1477. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -0
  1478. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts +127 -0
  1479. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts.map +1 -0
  1480. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js +477 -0
  1481. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js.map +1 -0
  1482. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts +24 -0
  1483. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.d.ts.map +1 -0
  1484. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js +35 -0
  1485. package/payload/platform/plugins/memory/mcp/dist/tools/profile-delete.js.map +1 -0
  1486. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +46 -0
  1487. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -0
  1488. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +423 -0
  1489. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -0
  1490. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts +65 -0
  1491. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -0
  1492. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +395 -0
  1493. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -0
  1494. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts +30 -0
  1495. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.d.ts.map +1 -0
  1496. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js +130 -0
  1497. package/payload/platform/plugins/memory/mcp/dist/tools/session-retrospective-skip-rate.js.map +1 -0
  1498. package/payload/platform/plugins/memory/mcp/package.json +23 -0
  1499. package/payload/platform/plugins/memory/mcp/scripts/backfill-typed-edges.ts +72 -0
  1500. package/payload/platform/plugins/memory/mcp/scripts/boot-smoke.sh +69 -0
  1501. package/payload/platform/plugins/memory/mcp/scripts/generate-edge-docs.ts +75 -0
  1502. package/payload/platform/plugins/memory/mcp/scripts/graph/accept.sh +217 -0
  1503. package/payload/platform/plugins/memory/mcp/scripts/graph/fixture.cypher +59 -0
  1504. package/payload/platform/plugins/memory/mcp/vitest.config.ts +48 -0
  1505. package/payload/platform/plugins/memory/references/graph-primitives.md +394 -0
  1506. package/payload/platform/plugins/memory/references/schema-base.md +334 -0
  1507. package/payload/platform/plugins/memory/references/schema-construction.md +72 -0
  1508. package/payload/platform/plugins/memory/references/schema-creator.md +35 -0
  1509. package/payload/platform/plugins/memory/references/schema-estate-agent.md +110 -0
  1510. package/payload/platform/plugins/memory/references/schema-food-beverage.md +32 -0
  1511. package/payload/platform/plugins/memory/references/schema-hospitality.md +31 -0
  1512. package/payload/platform/plugins/memory/references/schema-logistics.md +30 -0
  1513. package/payload/platform/plugins/memory/references/schema-professional-services.md +33 -0
  1514. package/payload/platform/plugins/memory/references/schema-retail.md +33 -0
  1515. package/payload/platform/plugins/memory/references/schema-trades.md +36 -0
  1516. package/payload/platform/plugins/memory/references/transcript-formats/circleback.md +49 -0
  1517. package/payload/platform/plugins/memory/references/transcript-formats/granola.md +50 -0
  1518. package/payload/platform/plugins/memory/references/transcript-formats/otter.md +50 -0
  1519. package/payload/platform/plugins/memory/skills/archive-crawler/SKILL.md +67 -0
  1520. package/payload/platform/plugins/memory/skills/challenge/SKILL.md +52 -0
  1521. package/payload/platform/plugins/memory/skills/concept-synthesis/SKILL.md +79 -0
  1522. package/payload/platform/plugins/memory/skills/connect/SKILL.md +56 -0
  1523. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +193 -0
  1524. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +207 -0
  1525. package/payload/platform/plugins/memory/skills/conversation-archive-mcp/SKILL.md +170 -0
  1526. package/payload/platform/plugins/memory/skills/conversational-memory/SKILL.md +113 -0
  1527. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +331 -0
  1528. package/payload/platform/plugins/memory/skills/emerge/SKILL.md +87 -0
  1529. package/payload/platform/plugins/notion-import/.claude-plugin/plugin.json +8 -0
  1530. package/payload/platform/plugins/notion-import/PLUGIN.md +27 -0
  1531. package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +114 -0
  1532. package/payload/platform/plugins/notion-import/skills/notion-import/references/attachments.md +55 -0
  1533. package/payload/platform/plugins/notion-import/skills/notion-import/references/databases.md +83 -0
  1534. package/payload/platform/plugins/notion-import/skills/notion-import/references/page-tree.md +61 -0
  1535. package/payload/platform/plugins/notion-import/skills/notion-import/references/workspace-export.md +41 -0
  1536. package/payload/platform/plugins/obsidian-import/.claude-plugin/plugin.json +8 -0
  1537. package/payload/platform/plugins/obsidian-import/PLUGIN.md +39 -0
  1538. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +92 -0
  1539. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/attachments.md +80 -0
  1540. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +31 -0
  1541. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/vault-structure.md +46 -0
  1542. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/wikilinks.md +70 -0
  1543. package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +17 -0
  1544. package/payload/platform/plugins/outlook/PLUGIN.md +74 -0
  1545. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts +2 -0
  1546. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.d.ts.map +1 -0
  1547. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +94 -0
  1548. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -0
  1549. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts +2 -0
  1550. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.d.ts.map +1 -0
  1551. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js +31 -0
  1552. package/payload/platform/plugins/outlook/mcp/dist/__tests__/log.test.js.map +1 -0
  1553. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts +2 -0
  1554. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts.map +1 -0
  1555. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js +213 -0
  1556. package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js.map +1 -0
  1557. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts +2 -0
  1558. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.d.ts.map +1 -0
  1559. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js +130 -0
  1560. package/payload/platform/plugins/outlook/mcp/dist/__tests__/token-store.test.js.map +1 -0
  1561. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts +65 -0
  1562. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.d.ts.map +1 -0
  1563. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js +261 -0
  1564. package/payload/platform/plugins/outlook/mcp/dist/auth/pkce-flow.js.map +1 -0
  1565. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts +61 -0
  1566. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.d.ts.map +1 -0
  1567. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js +170 -0
  1568. package/payload/platform/plugins/outlook/mcp/dist/auth/token-store.js.map +1 -0
  1569. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts +18 -0
  1570. package/payload/platform/plugins/outlook/mcp/dist/index.d.ts.map +1 -0
  1571. package/payload/platform/plugins/outlook/mcp/dist/index.js +183 -0
  1572. package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -0
  1573. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +60 -0
  1574. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -0
  1575. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +189 -0
  1576. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -0
  1577. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts +23 -0
  1578. package/payload/platform/plugins/outlook/mcp/dist/lib/log.d.ts.map +1 -0
  1579. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js +53 -0
  1580. package/payload/platform/plugins/outlook/mcp/dist/lib/log.js.map +1 -0
  1581. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts +26 -0
  1582. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.d.ts.map +1 -0
  1583. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js +50 -0
  1584. package/payload/platform/plugins/outlook/mcp/dist/tools/account-register.js.map +1 -0
  1585. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts +12 -0
  1586. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts.map +1 -0
  1587. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js +32 -0
  1588. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js.map +1 -0
  1589. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts +59 -0
  1590. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.d.ts.map +1 -0
  1591. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js +54 -0
  1592. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-list.js.map +1 -0
  1593. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts +14 -0
  1594. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.d.ts.map +1 -0
  1595. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js +45 -0
  1596. package/payload/platform/plugins/outlook/mcp/dist/tools/contacts-list.js.map +1 -0
  1597. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts +15 -0
  1598. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.d.ts.map +1 -0
  1599. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js +48 -0
  1600. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-list.js.map +1 -0
  1601. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts +8 -0
  1602. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.d.ts.map +1 -0
  1603. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js +49 -0
  1604. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-search.js.map +1 -0
  1605. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts +19 -0
  1606. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.d.ts.map +1 -0
  1607. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js +58 -0
  1608. package/payload/platform/plugins/outlook/mcp/dist/tools/mailbox-info.js.map +1 -0
  1609. package/payload/platform/plugins/outlook/mcp/package.json +20 -0
  1610. package/payload/platform/plugins/outlook/mcp/scripts/verify-doc-impl.sh +109 -0
  1611. package/payload/platform/plugins/outlook/references/auth.md +118 -0
  1612. package/payload/platform/plugins/outlook/references/graph-surfaces.md +114 -0
  1613. package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +65 -0
  1614. package/payload/platform/plugins/projects/.claude-plugin/plugin.json +8 -0
  1615. package/payload/platform/plugins/projects/PLUGIN.md +90 -0
  1616. package/payload/platform/plugins/projects/references/investigation.md +63 -0
  1617. package/payload/platform/plugins/projects/references/retrospective.md +71 -0
  1618. package/payload/platform/plugins/projects/references/review.md +51 -0
  1619. package/payload/platform/plugins/projects/references/sprint.md +168 -0
  1620. package/payload/platform/plugins/prompt-optimiser/.claude-plugin/plugin.json +8 -0
  1621. package/payload/platform/plugins/prompt-optimiser/PLUGIN.md +14 -0
  1622. package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +318 -0
  1623. package/payload/platform/plugins/replicate/.claude-plugin/plugin.json +17 -0
  1624. package/payload/platform/plugins/replicate/PLUGIN.md +49 -0
  1625. package/payload/platform/plugins/replicate/mcp/dist/index.d.ts +2 -0
  1626. package/payload/platform/plugins/replicate/mcp/dist/index.d.ts.map +1 -0
  1627. package/payload/platform/plugins/replicate/mcp/dist/index.js +125 -0
  1628. package/payload/platform/plugins/replicate/mcp/dist/index.js.map +1 -0
  1629. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.d.ts +15 -0
  1630. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.d.ts.map +1 -0
  1631. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.js +73 -0
  1632. package/payload/platform/plugins/replicate/mcp/dist/lib/replicate-key.js.map +1 -0
  1633. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.d.ts +14 -0
  1634. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.d.ts.map +1 -0
  1635. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.js +201 -0
  1636. package/payload/platform/plugins/replicate/mcp/dist/tools/image-generate.js.map +1 -0
  1637. package/payload/platform/plugins/replicate/mcp/package.json +21 -0
  1638. package/payload/platform/plugins/sales/.claude-plugin/plugin.json +8 -0
  1639. package/payload/platform/plugins/sales/PLUGIN.md +106 -0
  1640. package/payload/platform/plugins/sales/references/close-tracking.md +69 -0
  1641. package/payload/platform/plugins/sales/references/comparisons.md +99 -0
  1642. package/payload/platform/plugins/sales/references/competitive-positioning.md +51 -0
  1643. package/payload/platform/plugins/sales/references/faq.md +73 -0
  1644. package/payload/platform/plugins/sales/references/objection-handling.md +157 -0
  1645. package/payload/platform/plugins/sales/references/pricing.md +101 -0
  1646. package/payload/platform/plugins/scheduling/.claude-plugin/plugin.json +17 -0
  1647. package/payload/platform/plugins/scheduling/PLUGIN.md +153 -0
  1648. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.d.ts +2 -0
  1649. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.d.ts.map +1 -0
  1650. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js +16 -0
  1651. package/payload/platform/plugins/scheduling/mcp/dist/__tests__/time-resolve-description.test.js.map +1 -0
  1652. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts +2 -0
  1653. package/payload/platform/plugins/scheduling/mcp/dist/index.d.ts.map +1 -0
  1654. package/payload/platform/plugins/scheduling/mcp/dist/index.js +440 -0
  1655. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -0
  1656. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.d.ts +2 -0
  1657. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.d.ts.map +1 -0
  1658. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +119 -0
  1659. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js.map +1 -0
  1660. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts +2 -0
  1661. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.d.ts.map +1 -0
  1662. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js +19 -0
  1663. package/payload/platform/plugins/scheduling/mcp/dist/lib/embedding.js.map +1 -0
  1664. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts +80 -0
  1665. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.d.ts.map +1 -0
  1666. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js +410 -0
  1667. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics-graph-ingest.js.map +1 -0
  1668. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts +63 -0
  1669. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.d.ts.map +1 -0
  1670. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js +471 -0
  1671. package/payload/platform/plugins/scheduling/mcp/dist/lib/ics.js.map +1 -0
  1672. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts +30 -0
  1673. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1674. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js +89 -0
  1675. package/payload/platform/plugins/scheduling/mcp/dist/lib/neo4j.js.map +1 -0
  1676. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts +48 -0
  1677. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.d.ts.map +1 -0
  1678. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js +140 -0
  1679. package/payload/platform/plugins/scheduling/mcp/dist/lib/time-format.js.map +1 -0
  1680. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts +24 -0
  1681. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.d.ts.map +1 -0
  1682. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +572 -0
  1683. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -0
  1684. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts +20 -0
  1685. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.d.ts.map +1 -0
  1686. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js +63 -0
  1687. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-archive-ics.js.map +1 -0
  1688. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts +7 -0
  1689. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.d.ts.map +1 -0
  1690. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js +23 -0
  1691. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-cancel.js.map +1 -0
  1692. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +25 -0
  1693. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -0
  1694. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +121 -0
  1695. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -0
  1696. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts +9 -0
  1697. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.d.ts.map +1 -0
  1698. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js +77 -0
  1699. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-export-ics.js.map +1 -0
  1700. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +25 -0
  1701. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -0
  1702. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +53 -0
  1703. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -0
  1704. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.d.ts +8 -0
  1705. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.d.ts.map +1 -0
  1706. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.js +48 -0
  1707. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-import-ics.js.map +1 -0
  1708. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +20 -0
  1709. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -0
  1710. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +76 -0
  1711. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -0
  1712. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts +18 -0
  1713. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -0
  1714. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +167 -0
  1715. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -0
  1716. package/payload/platform/plugins/scheduling/mcp/package.json +23 -0
  1717. package/payload/platform/plugins/scheduling/mcp/vitest.config.ts +9 -0
  1718. package/payload/platform/plugins/scheduling/skills/briefing/SKILL.md +86 -0
  1719. package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +61 -0
  1720. package/payload/platform/plugins/slides/.claude-plugin/plugin.json +8 -0
  1721. package/payload/platform/plugins/slides/LICENSE +21 -0
  1722. package/payload/platform/plugins/slides/PLUGIN.md +18 -0
  1723. package/payload/platform/plugins/slides/PROVENANCE.md +40 -0
  1724. package/payload/platform/plugins/slides/commands/add-slide.md +29 -0
  1725. package/payload/platform/plugins/slides/commands/slides-claus.md +39 -0
  1726. package/payload/platform/plugins/slides/commands/slides-new-component.md +39 -0
  1727. package/payload/platform/plugins/slides/commands/slides-outline.md +43 -0
  1728. package/payload/platform/plugins/slides/commands/slides-review.md +52 -0
  1729. package/payload/platform/plugins/slides/commands/slides-theme.md +64 -0
  1730. package/payload/platform/plugins/slides/commands/slides.md +59 -0
  1731. package/payload/platform/plugins/slides/skills/deck-system/REFERENCE.md +581 -0
  1732. package/payload/platform/plugins/slides/skills/deck-system/SKILL.md +607 -0
  1733. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-board.md +426 -0
  1734. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-claus.md +185 -0
  1735. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-mbb.md +450 -0
  1736. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-product-launch.md +579 -0
  1737. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sales.md +464 -0
  1738. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING-sequoia.md +489 -0
  1739. package/payload/platform/plugins/slides/skills/deck-system/STORYTELLING.md +273 -0
  1740. package/payload/platform/plugins/slides/skills/deck-system/deck-craft.html +1371 -0
  1741. package/payload/platform/plugins/slides/skills/deck-system/deck-solid.html +1667 -0
  1742. package/payload/platform/plugins/slides/skills/deck-system/deck.html +1359 -0
  1743. package/payload/platform/plugins/substack-import/.claude-plugin/plugin.json +8 -0
  1744. package/payload/platform/plugins/substack-import/PLUGIN.md +34 -0
  1745. package/payload/platform/plugins/substack-import/skills/substack-import/SKILL.md +183 -0
  1746. package/payload/platform/plugins/substack-import/skills/substack-import/references/archive-shape.md +68 -0
  1747. package/payload/platform/plugins/substack-import/skills/substack-import/references/attachments.md +72 -0
  1748. package/payload/platform/plugins/substack-import/skills/substack-import/references/engagement.md +61 -0
  1749. package/payload/platform/plugins/substack-import/skills/substack-import/references/posts.md +80 -0
  1750. package/payload/platform/plugins/substack-import/skills/substack-import/references/subscribers.md +74 -0
  1751. package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +17 -0
  1752. package/payload/platform/plugins/telegram/PLUGIN.md +53 -0
  1753. package/payload/platform/plugins/telegram/mcp/dist/index.d.ts +2 -0
  1754. package/payload/platform/plugins/telegram/mcp/dist/index.d.ts.map +1 -0
  1755. package/payload/platform/plugins/telegram/mcp/dist/index.js +198 -0
  1756. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -0
  1757. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts +41 -0
  1758. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts.map +1 -0
  1759. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js +70 -0
  1760. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js.map +1 -0
  1761. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.d.ts +16 -0
  1762. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.d.ts.map +1 -0
  1763. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js +68 -0
  1764. package/payload/platform/plugins/telegram/mcp/dist/tools/message-history.js.map +1 -0
  1765. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts +20 -0
  1766. package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +1 -0
  1767. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +34 -0
  1768. package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +1 -0
  1769. package/payload/platform/plugins/telegram/mcp/package.json +19 -0
  1770. package/payload/platform/plugins/telegram/references/setup-guide.md +50 -0
  1771. package/payload/platform/plugins/url-get/.claude-plugin/plugin.json +17 -0
  1772. package/payload/platform/plugins/url-get/PLUGIN.md +91 -0
  1773. package/payload/platform/plugins/url-get/mcp/dist/index.d.ts +9 -0
  1774. package/payload/platform/plugins/url-get/mcp/dist/index.d.ts.map +1 -0
  1775. package/payload/platform/plugins/url-get/mcp/dist/index.js +53 -0
  1776. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -0
  1777. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts +8 -0
  1778. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.d.ts.map +1 -0
  1779. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js +83 -0
  1780. package/payload/platform/plugins/url-get/mcp/dist/lib/summarise.js.map +1 -0
  1781. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts +21 -0
  1782. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.d.ts.map +1 -0
  1783. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js +133 -0
  1784. package/payload/platform/plugins/url-get/mcp/dist/tools/url-get.js.map +1 -0
  1785. package/payload/platform/plugins/url-get/mcp/package.json +22 -0
  1786. package/payload/platform/plugins/whatsapp/.claude-plugin/plugin.json +17 -0
  1787. package/payload/platform/plugins/whatsapp/PLUGIN.md +108 -0
  1788. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.d.ts +2 -0
  1789. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.d.ts.map +1 -0
  1790. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.js +58 -0
  1791. package/payload/platform/plugins/whatsapp/mcp/dist/__tests__/boot-without-env.test.js.map +1 -0
  1792. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts +14 -0
  1793. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.d.ts.map +1 -0
  1794. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js +42 -0
  1795. package/payload/platform/plugins/whatsapp/mcp/dist/call-api.js.map +1 -0
  1796. package/payload/platform/plugins/whatsapp/mcp/dist/index.d.ts +8 -0
  1797. package/payload/platform/plugins/whatsapp/mcp/dist/index.d.ts.map +1 -0
  1798. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +489 -0
  1799. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -0
  1800. package/payload/platform/plugins/whatsapp/mcp/package.json +21 -0
  1801. package/payload/platform/plugins/whatsapp/mcp/vitest.config.ts +9 -0
  1802. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +256 -0
  1803. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +82 -0
  1804. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +93 -0
  1805. package/payload/platform/plugins/work/.claude-plugin/plugin.json +17 -0
  1806. package/payload/platform/plugins/work/.mcp.json +13 -0
  1807. package/payload/platform/plugins/work/PLUGIN.md +124 -0
  1808. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.d.ts +2 -0
  1809. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.d.ts.map +1 -0
  1810. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.js +78 -0
  1811. package/payload/platform/plugins/work/mcp/dist/cli/project-create-cli.js.map +1 -0
  1812. package/payload/platform/plugins/work/mcp/dist/index.d.ts +2 -0
  1813. package/payload/platform/plugins/work/mcp/dist/index.d.ts.map +1 -0
  1814. package/payload/platform/plugins/work/mcp/dist/index.js +547 -0
  1815. package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -0
  1816. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.d.ts +7 -0
  1817. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.d.ts.map +1 -0
  1818. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.js +24 -0
  1819. package/payload/platform/plugins/work/mcp/dist/lib/embeddings.js.map +1 -0
  1820. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.d.ts +5 -0
  1821. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1822. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.js +40 -0
  1823. package/payload/platform/plugins/work/mcp/dist/lib/neo4j.js.map +1 -0
  1824. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.d.ts +17 -0
  1825. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.d.ts.map +1 -0
  1826. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.js +76 -0
  1827. package/payload/platform/plugins/work/mcp/dist/tools/project-complete.js.map +1 -0
  1828. package/payload/platform/plugins/work/mcp/dist/tools/project-create.d.ts +29 -0
  1829. package/payload/platform/plugins/work/mcp/dist/tools/project-create.d.ts.map +1 -0
  1830. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js +235 -0
  1831. package/payload/platform/plugins/work/mcp/dist/tools/project-create.js.map +1 -0
  1832. package/payload/platform/plugins/work/mcp/dist/tools/project-get.d.ts +40 -0
  1833. package/payload/platform/plugins/work/mcp/dist/tools/project-get.d.ts.map +1 -0
  1834. package/payload/platform/plugins/work/mcp/dist/tools/project-get.js +125 -0
  1835. package/payload/platform/plugins/work/mcp/dist/tools/project-get.js.map +1 -0
  1836. package/payload/platform/plugins/work/mcp/dist/tools/project-list.d.ts +26 -0
  1837. package/payload/platform/plugins/work/mcp/dist/tools/project-list.d.ts.map +1 -0
  1838. package/payload/platform/plugins/work/mcp/dist/tools/project-list.js +81 -0
  1839. package/payload/platform/plugins/work/mcp/dist/tools/project-list.js.map +1 -0
  1840. package/payload/platform/plugins/work/mcp/dist/tools/project-update.d.ts +19 -0
  1841. package/payload/platform/plugins/work/mcp/dist/tools/project-update.d.ts.map +1 -0
  1842. package/payload/platform/plugins/work/mcp/dist/tools/project-update.js +102 -0
  1843. package/payload/platform/plugins/work/mcp/dist/tools/project-update.js.map +1 -0
  1844. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts +20 -0
  1845. package/payload/platform/plugins/work/mcp/dist/tools/session-list.d.ts.map +1 -0
  1846. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js +37 -0
  1847. package/payload/platform/plugins/work/mcp/dist/tools/session-list.js.map +1 -0
  1848. package/payload/platform/plugins/work/mcp/dist/tools/session-name.d.ts +12 -0
  1849. package/payload/platform/plugins/work/mcp/dist/tools/session-name.d.ts.map +1 -0
  1850. package/payload/platform/plugins/work/mcp/dist/tools/session-name.js +28 -0
  1851. package/payload/platform/plugins/work/mcp/dist/tools/session-name.js.map +1 -0
  1852. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.d.ts +16 -0
  1853. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.d.ts.map +1 -0
  1854. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.js +33 -0
  1855. package/payload/platform/plugins/work/mcp/dist/tools/work-complete.js.map +1 -0
  1856. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts +63 -0
  1857. package/payload/platform/plugins/work/mcp/dist/tools/work-create.d.ts.map +1 -0
  1858. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js +141 -0
  1859. package/payload/platform/plugins/work/mcp/dist/tools/work-create.js.map +1 -0
  1860. package/payload/platform/plugins/work/mcp/dist/tools/work-get.d.ts +19 -0
  1861. package/payload/platform/plugins/work/mcp/dist/tools/work-get.d.ts.map +1 -0
  1862. package/payload/platform/plugins/work/mcp/dist/tools/work-get.js +51 -0
  1863. package/payload/platform/plugins/work/mcp/dist/tools/work-get.js.map +1 -0
  1864. package/payload/platform/plugins/work/mcp/dist/tools/work-list.d.ts +18 -0
  1865. package/payload/platform/plugins/work/mcp/dist/tools/work-list.d.ts.map +1 -0
  1866. package/payload/platform/plugins/work/mcp/dist/tools/work-list.js +66 -0
  1867. package/payload/platform/plugins/work/mcp/dist/tools/work-list.js.map +1 -0
  1868. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.d.ts +21 -0
  1869. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.d.ts.map +1 -0
  1870. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.js +54 -0
  1871. package/payload/platform/plugins/work/mcp/dist/tools/work-ready.js.map +1 -0
  1872. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.d.ts +12 -0
  1873. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.d.ts.map +1 -0
  1874. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.js +59 -0
  1875. package/payload/platform/plugins/work/mcp/dist/tools/work-relate.js.map +1 -0
  1876. package/payload/platform/plugins/work/mcp/dist/tools/work-update.d.ts +32 -0
  1877. package/payload/platform/plugins/work/mcp/dist/tools/work-update.d.ts.map +1 -0
  1878. package/payload/platform/plugins/work/mcp/dist/tools/work-update.js +112 -0
  1879. package/payload/platform/plugins/work/mcp/dist/tools/work-update.js.map +1 -0
  1880. package/payload/platform/plugins/work/mcp/package.json +20 -0
  1881. package/payload/platform/plugins/work/skills/execute-task/SKILL.md +101 -0
  1882. package/payload/platform/plugins/workflows/.claude-plugin/plugin.json +17 -0
  1883. package/payload/platform/plugins/workflows/.mcp.json +12 -0
  1884. package/payload/platform/plugins/workflows/PLUGIN.md +160 -0
  1885. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts +2 -0
  1886. package/payload/platform/plugins/workflows/mcp/dist/index.d.ts.map +1 -0
  1887. package/payload/platform/plugins/workflows/mcp/dist/index.js +440 -0
  1888. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -0
  1889. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts +38 -0
  1890. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.d.ts.map +1 -0
  1891. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js +83 -0
  1892. package/payload/platform/plugins/workflows/mcp/dist/lib/active-runs.js.map +1 -0
  1893. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts +2 -0
  1894. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.d.ts.map +1 -0
  1895. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js +19 -0
  1896. package/payload/platform/plugins/workflows/mcp/dist/lib/embeddings.js.map +1 -0
  1897. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts +151 -0
  1898. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.d.ts.map +1 -0
  1899. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js +299 -0
  1900. package/payload/platform/plugins/workflows/mcp/dist/lib/llm-call.js.map +1 -0
  1901. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts +5 -0
  1902. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.d.ts.map +1 -0
  1903. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js +40 -0
  1904. package/payload/platform/plugins/workflows/mcp/dist/lib/neo4j.js.map +1 -0
  1905. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +66 -0
  1906. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -0
  1907. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +187 -0
  1908. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -0
  1909. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts +25 -0
  1910. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.d.ts.map +1 -0
  1911. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js +56 -0
  1912. package/payload/platform/plugins/workflows/mcp/dist/lib/validate-capabilities.js.map +1 -0
  1913. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +33 -0
  1914. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -0
  1915. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +130 -0
  1916. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -0
  1917. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts +28 -0
  1918. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.d.ts.map +1 -0
  1919. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js +57 -0
  1920. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-delete.js.map +1 -0
  1921. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +51 -0
  1922. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -0
  1923. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +382 -0
  1924. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -0
  1925. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts +24 -0
  1926. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.d.ts.map +1 -0
  1927. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js +48 -0
  1928. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-get.js.map +1 -0
  1929. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts +16 -0
  1930. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.d.ts.map +1 -0
  1931. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js +44 -0
  1932. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-list.js.map +1 -0
  1933. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts +28 -0
  1934. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.d.ts.map +1 -0
  1935. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js +71 -0
  1936. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-runs.js.map +1 -0
  1937. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts +11 -0
  1938. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -0
  1939. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +150 -0
  1940. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -0
  1941. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts +13 -0
  1942. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.d.ts.map +1 -0
  1943. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js +53 -0
  1944. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-validate.js.map +1 -0
  1945. package/payload/platform/plugins/workflows/mcp/package.json +20 -0
  1946. package/payload/platform/plugins/workflows/mcp/test-runner.mjs +710 -0
  1947. package/payload/platform/plugins/workflows/mcp/test-workflows.sh +77 -0
  1948. package/payload/platform/plugins/workflows/skills/workflow-manager/SKILL.md +93 -0
  1949. package/payload/platform/plugins/x-import/.claude-plugin/plugin.json +8 -0
  1950. package/payload/platform/plugins/x-import/PLUGIN.md +33 -0
  1951. package/payload/platform/plugins/x-import/references/archive-shape.md +124 -0
  1952. package/payload/platform/plugins/x-import/references/transcript-shape.md +121 -0
  1953. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +123 -0
  1954. package/payload/platform/scripts/__tests__/agents-md-bootstrap.test.sh +111 -0
  1955. package/payload/platform/scripts/__tests__/first-token-creates-stream-log.test.sh +37 -0
  1956. package/payload/platform/scripts/__tests__/logs-read-prefix.sh +237 -0
  1957. package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +251 -0
  1958. package/payload/platform/scripts/admin-conversation-recover.mjs +386 -0
  1959. package/payload/platform/scripts/admin-persist-audit.ts +211 -0
  1960. package/payload/platform/scripts/check-architecture-skill-no-drift.mjs +114 -0
  1961. package/payload/platform/scripts/check-canonical-tool-names.mjs +110 -0
  1962. package/payload/platform/scripts/check-cypher-int-params.mjs +277 -0
  1963. package/payload/platform/scripts/check-no-conversation-id-leaks.mjs +165 -0
  1964. package/payload/platform/scripts/check-no-direct-clipboard.mjs +54 -0
  1965. package/payload/platform/scripts/check-no-esm-require.mjs +138 -0
  1966. package/payload/platform/scripts/check-no-legacy-spawn-route.mjs +37 -0
  1967. package/payload/platform/scripts/check-no-task-id-leaks.mjs +110 -0
  1968. package/payload/platform/scripts/check-plugin-references.mjs +256 -0
  1969. package/payload/platform/scripts/check-plugin-tools-mcp-consistency.mjs +136 -0
  1970. package/payload/platform/scripts/check-roles-doc-completeness.mjs +96 -0
  1971. package/payload/platform/scripts/check-skill-frontmatter.mjs +139 -0
  1972. package/payload/platform/scripts/check-skill-load-coverage.mjs +100 -0
  1973. package/payload/platform/scripts/check-specialist-tool-surface.mjs +323 -0
  1974. package/payload/platform/scripts/conversation-id-allowlist.txt +142 -0
  1975. package/payload/platform/scripts/dedupe-userprofile-ghosts.sh +388 -0
  1976. package/payload/platform/scripts/generate-canonical-tool-names.mjs +63 -0
  1977. package/payload/platform/scripts/generate-entitlement-fixture.mjs +152 -0
  1978. package/payload/platform/scripts/identity-forbidden-token-check.mjs +88 -0
  1979. package/payload/platform/scripts/installer-device-verify.sh +249 -0
  1980. package/payload/platform/scripts/lib/agents-md-bootstrap.sh +49 -0
  1981. package/payload/platform/scripts/lib/canonical-tool-names.mjs +88 -0
  1982. package/payload/platform/scripts/lib/read-brand-json.sh +69 -0
  1983. package/payload/platform/scripts/lib/resolve-account-dir.sh +184 -0
  1984. package/payload/platform/scripts/log-adherence-check.sh +125 -0
  1985. package/payload/platform/scripts/logs-read-jsonl.test.sh +307 -0
  1986. package/payload/platform/scripts/logs-read.sh +980 -0
  1987. package/payload/platform/scripts/logs-read.test.sh +159 -0
  1988. package/payload/platform/scripts/redact-install-logs.sh +87 -0
  1989. package/payload/platform/scripts/resume-tunnel.sh +148 -0
  1990. package/payload/platform/scripts/rss-sampler.sh +58 -0
  1991. package/payload/platform/scripts/seed-neo4j.sh +193 -0
  1992. package/payload/platform/scripts/setup-account.sh +373 -0
  1993. package/payload/platform/scripts/smoke-boot-services.sh +413 -0
  1994. package/payload/platform/scripts/test-laptop-vnc-boot.sh +88 -0
  1995. package/payload/platform/scripts/verify-skill-tool-surface.sh +389 -0
  1996. package/payload/platform/scripts/vnc.sh +476 -0
  1997. package/payload/platform/scripts/wifi-provision-server/server.js +743 -0
  1998. package/payload/platform/scripts/wifi-provision.sh +492 -0
  1999. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts +39 -0
  2000. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.d.ts.map +1 -0
  2001. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js +133 -0
  2002. package/payload/platform/services/claude-session-manager/dist/admin-identity-audit.js.map +1 -0
  2003. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts +23 -0
  2004. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.d.ts.map +1 -0
  2005. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js +29 -0
  2006. package/payload/platform/services/claude-session-manager/dist/agent-identity-locator.js.map +1 -0
  2007. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.d.ts +4 -0
  2008. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.d.ts.map +1 -0
  2009. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.js +50 -0
  2010. package/payload/platform/services/claude-session-manager/dist/auth-snapshot.js.map +1 -0
  2011. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.d.ts +30 -0
  2012. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.d.ts.map +1 -0
  2013. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js +86 -0
  2014. package/payload/platform/services/claude-session-manager/dist/brand-foreign-filter.js.map +1 -0
  2015. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.d.ts +7 -0
  2016. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.d.ts.map +1 -0
  2017. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts +5 -0
  2018. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -0
  2019. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +205 -0
  2020. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -0
  2021. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.js +23 -0
  2022. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.js.map +1 -0
  2023. package/payload/platform/services/claude-session-manager/dist/config.d.ts +55 -0
  2024. package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -0
  2025. package/payload/platform/services/claude-session-manager/dist/config.js +234 -0
  2026. package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -0
  2027. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts +150 -0
  2028. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -0
  2029. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +881 -0
  2030. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -0
  2031. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts +7 -0
  2032. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.d.ts.map +1 -0
  2033. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js +90 -0
  2034. package/payload/platform/services/claude-session-manager/dist/hooks-discovery.js.map +1 -0
  2035. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +40 -0
  2036. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -0
  2037. package/payload/platform/services/claude-session-manager/dist/http-server.js +1761 -0
  2038. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -0
  2039. package/payload/platform/services/claude-session-manager/dist/index.d.ts +2 -0
  2040. package/payload/platform/services/claude-session-manager/dist/index.d.ts.map +1 -0
  2041. package/payload/platform/services/claude-session-manager/dist/index.js +675 -0
  2042. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -0
  2043. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +43 -0
  2044. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -0
  2045. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +155 -0
  2046. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -0
  2047. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts +30 -0
  2048. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.d.ts.map +1 -0
  2049. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js +204 -0
  2050. package/payload/platform/services/claude-session-manager/dist/jsonl-observer.js.map +1 -0
  2051. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +41 -0
  2052. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -0
  2053. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +105 -0
  2054. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -0
  2055. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts +81 -0
  2056. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.d.ts.map +1 -0
  2057. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js +499 -0
  2058. package/payload/platform/services/claude-session-manager/dist/jsonl-tail.js.map +1 -0
  2059. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.d.ts +38 -0
  2060. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.d.ts.map +1 -0
  2061. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.js +131 -0
  2062. package/payload/platform/services/claude-session-manager/dist/mcp-tools-probe.js.map +1 -0
  2063. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts +20 -0
  2064. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.d.ts.map +1 -0
  2065. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.js +71 -0
  2066. package/payload/platform/services/claude-session-manager/dist/permission-mode-tail.js.map +1 -0
  2067. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +40 -0
  2068. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -0
  2069. package/payload/platform/services/claude-session-manager/dist/pty-census.js +125 -0
  2070. package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -0
  2071. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +641 -0
  2072. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -0
  2073. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +2077 -0
  2074. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -0
  2075. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts +40 -0
  2076. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.d.ts.map +1 -0
  2077. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js +123 -0
  2078. package/payload/platform/services/claude-session-manager/dist/public-agent-reachability.js.map +1 -0
  2079. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts +33 -0
  2080. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts.map +1 -0
  2081. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js +149 -0
  2082. package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js.map +1 -0
  2083. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +157 -0
  2084. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -0
  2085. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +556 -0
  2086. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -0
  2087. package/payload/platform/services/claude-session-manager/dist/rc-life.d.ts +4 -0
  2088. package/payload/platform/services/claude-session-manager/dist/rc-life.d.ts.map +1 -0
  2089. package/payload/platform/services/claude-session-manager/dist/rc-life.js +16 -0
  2090. package/payload/platform/services/claude-session-manager/dist/rc-life.js.map +1 -0
  2091. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts +80 -0
  2092. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.d.ts.map +1 -0
  2093. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js +306 -0
  2094. package/payload/platform/services/claude-session-manager/dist/rc-script-spawn.js.map +1 -0
  2095. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts +28 -0
  2096. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -0
  2097. package/payload/platform/services/claude-session-manager/dist/reaper.js +118 -0
  2098. package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -0
  2099. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +91 -0
  2100. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -0
  2101. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +232 -0
  2102. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -0
  2103. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +49 -0
  2104. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -0
  2105. package/payload/platform/services/claude-session-manager/dist/session-store.js +52 -0
  2106. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -0
  2107. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts +28 -0
  2108. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts.map +1 -0
  2109. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js +77 -0
  2110. package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js.map +1 -0
  2111. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts +60 -0
  2112. package/payload/platform/services/claude-session-manager/dist/specialist-drift.d.ts.map +1 -0
  2113. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js +203 -0
  2114. package/payload/platform/services/claude-session-manager/dist/specialist-drift.js.map +1 -0
  2115. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +151 -0
  2116. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -0
  2117. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +445 -0
  2118. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -0
  2119. package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts +164 -0
  2120. package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts.map +1 -0
  2121. package/payload/platform/services/claude-session-manager/dist/systemd-scope.js +296 -0
  2122. package/payload/platform/services/claude-session-manager/dist/systemd-scope.js.map +1 -0
  2123. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +83 -0
  2124. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +1 -0
  2125. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +345 -0
  2126. package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +1 -0
  2127. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +69 -0
  2128. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -0
  2129. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +373 -0
  2130. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -0
  2131. package/payload/platform/services/claude-session-manager/dist/types.d.ts +41 -0
  2132. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -0
  2133. package/payload/platform/services/claude-session-manager/dist/types.js +2 -0
  2134. package/payload/platform/services/claude-session-manager/dist/types.js.map +1 -0
  2135. package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts +12 -0
  2136. package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts.map +1 -0
  2137. package/payload/platform/services/claude-session-manager/dist/url-capture.js +79 -0
  2138. package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -0
  2139. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts +39 -0
  2140. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts.map +1 -0
  2141. package/payload/platform/services/claude-session-manager/dist/user-title-store.js +138 -0
  2142. package/payload/platform/services/claude-session-manager/dist/user-title-store.js.map +1 -0
  2143. package/payload/platform/services/claude-session-manager/package.json +22 -0
  2144. package/payload/platform/services/claude-session-manager/scripts/stash-cleanup.sh +410 -0
  2145. package/payload/platform/services/claude-session-manager/vitest.config.ts +14 -0
  2146. package/payload/platform/templates/account.json +12 -0
  2147. package/payload/platform/templates/agents/admin/AGENTS.md +23 -0
  2148. package/payload/platform/templates/agents/admin/IDENTITY.md +69 -0
  2149. package/payload/platform/templates/agents/admin/LEARNINGS.md +3 -0
  2150. package/payload/platform/templates/agents/admin/SOUL.md +1 -0
  2151. package/payload/platform/templates/agents/public/IDENTITY.md +19 -0
  2152. package/payload/platform/templates/specialists/.claude-plugin/plugin.json +4 -0
  2153. package/payload/platform/templates/specialists/agents/archive-ingest-operator.md +45 -0
  2154. package/payload/platform/templates/specialists/agents/citation-auditor.md +37 -0
  2155. package/payload/platform/templates/specialists/agents/coding-assistant.md +73 -0
  2156. package/payload/platform/templates/specialists/agents/compiled-truth-rewriter.md +42 -0
  2157. package/payload/platform/templates/specialists/agents/content-producer.md +65 -0
  2158. package/payload/platform/templates/specialists/agents/database-operator.md +29 -0
  2159. package/payload/platform/templates/specialists/agents/librarian.md +57 -0
  2160. package/payload/platform/templates/specialists/agents/personal-assistant.md +63 -0
  2161. package/payload/platform/templates/specialists/agents/project-manager.md +63 -0
  2162. package/payload/platform/templates/specialists/agents/public-session-reviewer.md +40 -0
  2163. package/payload/platform/templates/specialists/agents/research-assistant.md +73 -0
  2164. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +37 -0
  2165. package/payload/platform/templates/systemd/edge.service.template +38 -0
  2166. package/payload/platform/tsconfig.base.json +18 -0
  2167. package/payload/premium-plugins/.claude-plugin/marketplace.json +23 -0
  2168. package/payload/premium-plugins/teaching/.claude-plugin/plugin.json +8 -0
  2169. package/payload/premium-plugins/teaching/PLUGIN.md +58 -0
  2170. package/payload/premium-plugins/teaching/skills/interactive-tutor/SKILL.md +59 -0
  2171. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/assessment.md +70 -0
  2172. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +43 -0
  2173. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +83 -0
  2174. package/payload/premium-plugins/teaching/skills/lesson-planner/SKILL.md +48 -0
  2175. package/payload/premium-plugins/teaching/skills/lesson-planner/references/context-gathering.md +41 -0
  2176. package/payload/premium-plugins/teaching/skills/lesson-planner/references/plan-structure.md +94 -0
  2177. package/payload/premium-plugins/teaching/skills/study-pack-builder/SKILL.md +52 -0
  2178. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/disaggregation.md +49 -0
  2179. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/materials.md +116 -0
  2180. package/payload/premium-plugins/venture-studio/.claude-plugin/plugin.json +8 -0
  2181. package/payload/premium-plugins/venture-studio/PLUGIN.md +119 -0
  2182. package/payload/premium-plugins/venture-studio/bin/scaffold.sh +116 -0
  2183. package/payload/premium-plugins/venture-studio/skills/brand-pack/SKILL.md +256 -0
  2184. package/payload/premium-plugins/venture-studio/skills/brand-pack/references/color-psychology.md +118 -0
  2185. package/payload/premium-plugins/venture-studio/skills/investor-data-room/SKILL.md +376 -0
  2186. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +64 -0
  2187. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +53 -0
  2188. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +88 -0
  2189. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +39 -0
  2190. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +79 -0
  2191. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +236 -0
  2192. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +33 -0
  2193. package/payload/premium-plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +88 -0
  2194. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +1565 -0
  2195. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +91 -0
  2196. package/payload/premium-plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +715 -0
  2197. package/payload/premium-plugins/venture-studio/skills/office-hours/SKILL.md +587 -0
  2198. package/payload/premium-plugins/venture-studio/skills/prototype-host/SKILL.md +179 -0
  2199. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +81 -0
  2200. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +60 -0
  2201. package/payload/premium-plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +104 -0
  2202. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/SKILL.md +336 -0
  2203. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +275 -0
  2204. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +93 -0
  2205. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +308 -0
  2206. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +262 -0
  2207. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +171 -0
  2208. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +246 -0
  2209. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +183 -0
  2210. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +190 -0
  2211. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +58 -0
  2212. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +114 -0
  2213. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +43 -0
  2214. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +237 -0
  2215. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +290 -0
  2216. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +105 -0
  2217. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +361 -0
  2218. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +167 -0
  2219. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +193 -0
  2220. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +200 -0
  2221. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +239 -0
  2222. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +103 -0
  2223. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +291 -0
  2224. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +225 -0
  2225. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +179 -0
  2226. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/prd.md +363 -0
  2227. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +74 -0
  2228. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +253 -0
  2229. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +256 -0
  2230. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +276 -0
  2231. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +248 -0
  2232. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +89 -0
  2233. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +121 -0
  2234. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +242 -0
  2235. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +271 -0
  2236. package/payload/premium-plugins/writer-craft/.claude-plugin/plugin.json +17 -0
  2237. package/payload/premium-plugins/writer-craft/PLUGIN.md +134 -0
  2238. package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +96 -0
  2239. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
  2240. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
  2241. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js +196 -0
  2242. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js.map +1 -0
  2243. package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/package.json +7 -0
  2244. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.d.ts +3 -0
  2245. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.d.ts.map +1 -0
  2246. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.js +58 -0
  2247. package/payload/premium-plugins/writer-craft/mcp/dist/cli/ingest-session-text.js.map +1 -0
  2248. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts +3 -0
  2249. package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts.map +1 -0
  2250. package/payload/premium-plugins/writer-craft/mcp/dist/index.js +362 -0
  2251. package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -0
  2252. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts +14 -0
  2253. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts.map +1 -0
  2254. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js +47 -0
  2255. package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js.map +1 -0
  2256. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +86 -0
  2257. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -0
  2258. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js +110 -0
  2259. package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -0
  2260. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts +82 -0
  2261. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -0
  2262. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +560 -0
  2263. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -0
  2264. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.d.ts +19 -0
  2265. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.d.ts.map +1 -0
  2266. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js +123 -0
  2267. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-ingest-session-text.js.map +1 -0
  2268. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts +32 -0
  2269. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -0
  2270. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js +82 -0
  2271. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js.map +1 -0
  2272. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts +47 -0
  2273. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -0
  2274. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +160 -0
  2275. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -0
  2276. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +17 -0
  2277. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -0
  2278. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +98 -0
  2279. package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -0
  2280. package/payload/premium-plugins/writer-craft/mcp/package-lock.json +1327 -0
  2281. package/payload/premium-plugins/writer-craft/mcp/package.json +19 -0
  2282. package/payload/premium-plugins/writer-craft/mcp/scripts/smoke.mjs +351 -0
  2283. package/payload/premium-plugins/writer-craft/mcp/src/index.ts +409 -0
  2284. package/payload/premium-plugins/writer-craft/mcp/src/lib/neo4j.ts +56 -0
  2285. package/payload/premium-plugins/writer-craft/mcp/src/lib/voice-corpus.ts +115 -0
  2286. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +767 -0
  2287. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-ingest-session-text.ts +152 -0
  2288. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +128 -0
  2289. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +234 -0
  2290. package/payload/premium-plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +139 -0
  2291. package/payload/premium-plugins/writer-craft/mcp/tsconfig.json +8 -0
  2292. package/payload/premium-plugins/writer-craft/skills/citation-style/SKILL.md +94 -0
  2293. package/payload/premium-plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +77 -0
  2294. package/payload/premium-plugins/writer-craft/skills/citation-style/references/citation-rules.md +103 -0
  2295. package/payload/premium-plugins/writer-craft/skills/citation-style/references/journal-article-models.md +74 -0
  2296. package/payload/premium-plugins/writer-craft/skills/citation-style/references/other-source-models.md +146 -0
  2297. package/payload/premium-plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +70 -0
  2298. package/payload/premium-plugins/writer-craft/skills/editorial-practice/SKILL.md +108 -0
  2299. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/copyediting.md +73 -0
  2300. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +85 -0
  2301. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +78 -0
  2302. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/line-editing.md +55 -0
  2303. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/self-editing.md +89 -0
  2304. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +114 -0
  2305. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +73 -0
  2306. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +76 -0
  2307. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +67 -0
  2308. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +86 -0
  2309. package/payload/premium-plugins/writer-craft/skills/point-of-view/SKILL.md +97 -0
  2310. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +72 -0
  2311. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +91 -0
  2312. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +71 -0
  2313. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +85 -0
  2314. package/payload/premium-plugins/writer-craft/skills/prose-craft/SKILL.md +100 -0
  2315. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +72 -0
  2316. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/repetition.md +71 -0
  2317. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +64 -0
  2318. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/word-economy.md +93 -0
  2319. package/payload/premium-plugins/writer-craft/skills/reader-engagement/SKILL.md +100 -0
  2320. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +79 -0
  2321. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +81 -0
  2322. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +67 -0
  2323. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +94 -0
  2324. package/payload/premium-plugins/writer-craft/skills/review-manuscript/SKILL.md +111 -0
  2325. package/payload/premium-plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +119 -0
  2326. package/payload/premium-plugins/writer-craft/skills/review-prose/SKILL.md +99 -0
  2327. package/payload/premium-plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +112 -0
  2328. package/payload/premium-plugins/writer-craft/skills/review-scene/SKILL.md +99 -0
  2329. package/payload/premium-plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +95 -0
  2330. package/payload/premium-plugins/writer-craft/skills/story-architecture/SKILL.md +106 -0
  2331. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +118 -0
  2332. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +66 -0
  2333. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +87 -0
  2334. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +82 -0
  2335. package/payload/premium-plugins/writer-craft/skills/story-blueprint/SKILL.md +133 -0
  2336. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +118 -0
  2337. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +128 -0
  2338. package/payload/premium-plugins/writer-craft/skills/voice-mirror/SKILL.md +228 -0
  2339. package/payload/server/adminuser-self-heal-YC47O34W.js +46 -0
  2340. package/payload/server/chunk-76HRO7NX.js +5684 -0
  2341. package/payload/server/chunk-HYQNUVGO.js +38 -0
  2342. package/payload/server/maxy-edge.js +814 -0
  2343. package/payload/server/package.json +11 -0
  2344. package/payload/server/public/assets/AdminShell-T-YknnBn.js +1 -0
  2345. package/payload/server/public/assets/AdminShell-qc_xy7Az.css +1 -0
  2346. package/payload/server/public/assets/Checkbox-DmDxpqVv.js +1 -0
  2347. package/payload/server/public/assets/_baseFor-Cs8Y-rGh.js +1 -0
  2348. package/payload/server/public/assets/admin-COUV-jgt.js +1 -0
  2349. package/payload/server/public/assets/admin-CWMpccrR.css +1 -0
  2350. package/payload/server/public/assets/arc-B2CweJq3.js +1 -0
  2351. package/payload/server/public/assets/architecture-YZFGNWBL-Dnn6Hc65.js +1 -0
  2352. package/payload/server/public/assets/architectureDiagram-Q4EWVU46-DP2o-MFV.js +36 -0
  2353. package/payload/server/public/assets/array-iHZP4KWJ.js +1 -0
  2354. package/payload/server/public/assets/blockDiagram-DXYQGD6D-DO4mcYDJ.js +132 -0
  2355. package/payload/server/public/assets/c4Diagram-AHTNJAMY-Sy1giHbj.js +10 -0
  2356. package/payload/server/public/assets/channel-CEpR_0rE.js +1 -0
  2357. package/payload/server/public/assets/chunk-2KRD3SAO-CKsCYCsN.js +1 -0
  2358. package/payload/server/public/assets/chunk-336JU56O-C0-P-aUF.js +2 -0
  2359. package/payload/server/public/assets/chunk-426QAEUC-DFjEt3Zb.js +1 -0
  2360. package/payload/server/public/assets/chunk-4BX2VUAB-B8bqAmBa.js +1 -0
  2361. package/payload/server/public/assets/chunk-4TB4RGXK-D1k0VSlW.js +206 -0
  2362. package/payload/server/public/assets/chunk-55IACEB6-B-p_QNqz.js +1 -0
  2363. package/payload/server/public/assets/chunk-5FUZZQ4R-D6U6tV_j.js +62 -0
  2364. package/payload/server/public/assets/chunk-5PVQY5BW-CYK76xfs.js +2 -0
  2365. package/payload/server/public/assets/chunk-67CJDMHE-BC9js-lf.js +1 -0
  2366. package/payload/server/public/assets/chunk-7N4EOEYR-4j2OqKkv.js +1 -0
  2367. package/payload/server/public/assets/chunk-AA7GKIK3-Coen-fXN.js +1 -0
  2368. package/payload/server/public/assets/chunk-BSJP7CBP-CAiOBvec.js +1 -0
  2369. package/payload/server/public/assets/chunk-CIAEETIT-AJzzpZVb.js +1 -0
  2370. package/payload/server/public/assets/chunk-DD-I1_y5.js +1 -0
  2371. package/payload/server/public/assets/chunk-EDXVE4YY-BL4BKozX.js +1 -0
  2372. package/payload/server/public/assets/chunk-ENJZ2VHE-mhAFG8UD.js +10 -0
  2373. package/payload/server/public/assets/chunk-FMBD7UC4-H231gZA_.js +15 -0
  2374. package/payload/server/public/assets/chunk-FOC6F5B3-Cl3ZZjYG.js +1 -0
  2375. package/payload/server/public/assets/chunk-ICPOFSXX-DOEzvzJa.js +122 -0
  2376. package/payload/server/public/assets/chunk-K5T4RW27-C_ipbUDD.js +94 -0
  2377. package/payload/server/public/assets/chunk-KGLVRYIC-CTsDNSCU.js +1 -0
  2378. package/payload/server/public/assets/chunk-LIHQZDEY-DvSXhkGf.js +1 -0
  2379. package/payload/server/public/assets/chunk-ORNJ4GCN-p574NOI7.js +1 -0
  2380. package/payload/server/public/assets/chunk-OYMX7WX6-BlEgFM6U.js +231 -0
  2381. package/payload/server/public/assets/chunk-QZHKN3VN-DpF06ZZQ.js +1 -0
  2382. package/payload/server/public/assets/chunk-U2HBQHQK-B2bDK0jv.js +70 -0
  2383. package/payload/server/public/assets/chunk-X2U36JSP-D69BxKFw.js +1 -0
  2384. package/payload/server/public/assets/chunk-XPW4576I-Dm-PcyUi.js +32 -0
  2385. package/payload/server/public/assets/chunk-YZCP3GAM-Be8RnXgx.js +1 -0
  2386. package/payload/server/public/assets/chunk-ZZ45TVLE-Ck8PCTa4.js +1 -0
  2387. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CYbXvKLI.js +1 -0
  2388. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-DEyHzRhq.js +1 -0
  2389. package/payload/server/public/assets/clone-y8gexbBy.js +1 -0
  2390. package/payload/server/public/assets/cormorant-cyrillic-300-normal-CzPHYadL.woff +0 -0
  2391. package/payload/server/public/assets/cormorant-cyrillic-300-normal-DFUoTmrg.woff2 +0 -0
  2392. package/payload/server/public/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2 +0 -0
  2393. package/payload/server/public/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff +0 -0
  2394. package/payload/server/public/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff +0 -0
  2395. package/payload/server/public/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2 +0 -0
  2396. package/payload/server/public/assets/cormorant-cyrillic-ext-300-normal-BXl3lXsi.woff2 +0 -0
  2397. package/payload/server/public/assets/cormorant-cyrillic-ext-300-normal-DmxSOTe3.woff +0 -0
  2398. package/payload/server/public/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff +0 -0
  2399. package/payload/server/public/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2 +0 -0
  2400. package/payload/server/public/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff +0 -0
  2401. package/payload/server/public/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2 +0 -0
  2402. package/payload/server/public/assets/cormorant-latin-300-normal-CJ5dfen0.woff2 +0 -0
  2403. package/payload/server/public/assets/cormorant-latin-300-normal-DQZObO_3.woff +0 -0
  2404. package/payload/server/public/assets/cormorant-latin-400-normal-BGH8Vunh.woff2 +0 -0
  2405. package/payload/server/public/assets/cormorant-latin-400-normal-C3_-2Ua-.woff +0 -0
  2406. package/payload/server/public/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff +0 -0
  2407. package/payload/server/public/assets/cormorant-latin-500-normal-EBdSCOD3.woff2 +0 -0
  2408. package/payload/server/public/assets/cormorant-latin-ext-300-normal-CkiUx0UG.woff +0 -0
  2409. package/payload/server/public/assets/cormorant-latin-ext-300-normal-De3D72RL.woff2 +0 -0
  2410. package/payload/server/public/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2 +0 -0
  2411. package/payload/server/public/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff +0 -0
  2412. package/payload/server/public/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2 +0 -0
  2413. package/payload/server/public/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff +0 -0
  2414. package/payload/server/public/assets/cormorant-vietnamese-300-normal-BVqIp_mg.woff2 +0 -0
  2415. package/payload/server/public/assets/cormorant-vietnamese-300-normal-CEMS9Pw-.woff +0 -0
  2416. package/payload/server/public/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2 +0 -0
  2417. package/payload/server/public/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff +0 -0
  2418. package/payload/server/public/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2 +0 -0
  2419. package/payload/server/public/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff +0 -0
  2420. package/payload/server/public/assets/cose-bilkent-S5V4N54A-CmkW2Eaj.js +1 -0
  2421. package/payload/server/public/assets/cytoscape.esm-BR2GOQ8_.js +321 -0
  2422. package/payload/server/public/assets/dagre-Dqp-ns8F.js +1 -0
  2423. package/payload/server/public/assets/dagre-KV5264BT-ZgWWXPLc.js +4 -0
  2424. package/payload/server/public/assets/data-gy6QH9c1.js +1 -0
  2425. package/payload/server/public/assets/defaultLocale-B9aLeOTg.js +1 -0
  2426. package/payload/server/public/assets/diagram-5BDNPKRD-CTX5-ScM.js +10 -0
  2427. package/payload/server/public/assets/diagram-G4DWMVQ6-BovIsO6H.js +24 -0
  2428. package/payload/server/public/assets/diagram-MMDJMWI5-DcETsQy-.js +43 -0
  2429. package/payload/server/public/assets/diagram-TYMM5635-yyq6peoZ.js +24 -0
  2430. package/payload/server/public/assets/dist-DB-VPj_8.js +1 -0
  2431. package/payload/server/public/assets/dm-sans-latin-400-normal-BwCSEQnW.woff +0 -0
  2432. package/payload/server/public/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2 +0 -0
  2433. package/payload/server/public/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2 +0 -0
  2434. package/payload/server/public/assets/dm-sans-latin-500-normal-Dr3UlScf.woff +0 -0
  2435. package/payload/server/public/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff +0 -0
  2436. package/payload/server/public/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2 +0 -0
  2437. package/payload/server/public/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2 +0 -0
  2438. package/payload/server/public/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff +0 -0
  2439. package/payload/server/public/assets/erDiagram-SMLLAGMA-CiNToftB.js +85 -0
  2440. package/payload/server/public/assets/flatten-BtFI066E.js +1 -0
  2441. package/payload/server/public/assets/flowDiagram-DWJPFMVM-Xnl3SpIM.js +162 -0
  2442. package/payload/server/public/assets/ganttDiagram-T4ZO3ILL-C1iyWe0f.js +292 -0
  2443. package/payload/server/public/assets/gitGraph-7Q5UKJZL-CNs-LD5i.js +1 -0
  2444. package/payload/server/public/assets/gitGraphDiagram-UUTBAWPF-D97pbMQb.js +106 -0
  2445. package/payload/server/public/assets/graph-labels-cZu4pK16.js +1 -0
  2446. package/payload/server/public/assets/graph-qz5tFKqU.js +51 -0
  2447. package/payload/server/public/assets/graphlib-Lq8ijgON.js +1 -0
  2448. package/payload/server/public/assets/info-OMHHGYJF-DsTNigSS.js +1 -0
  2449. package/payload/server/public/assets/infoDiagram-42DDH7IO-C_OarRTA.js +2 -0
  2450. package/payload/server/public/assets/init-BNFRgqHM.js +1 -0
  2451. package/payload/server/public/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  2452. package/payload/server/public/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  2453. package/payload/server/public/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  2454. package/payload/server/public/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  2455. package/payload/server/public/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  2456. package/payload/server/public/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  2457. package/payload/server/public/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  2458. package/payload/server/public/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  2459. package/payload/server/public/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  2460. package/payload/server/public/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  2461. package/payload/server/public/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  2462. package/payload/server/public/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  2463. package/payload/server/public/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  2464. package/payload/server/public/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  2465. package/payload/server/public/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  2466. package/payload/server/public/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  2467. package/payload/server/public/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  2468. package/payload/server/public/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  2469. package/payload/server/public/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  2470. package/payload/server/public/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  2471. package/payload/server/public/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  2472. package/payload/server/public/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  2473. package/payload/server/public/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  2474. package/payload/server/public/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  2475. package/payload/server/public/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  2476. package/payload/server/public/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  2477. package/payload/server/public/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  2478. package/payload/server/public/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  2479. package/payload/server/public/assets/isEmpty-D6QovjYR.js +1 -0
  2480. package/payload/server/public/assets/ishikawaDiagram-UXIWVN3A-B8XBdjJn.js +70 -0
  2481. package/payload/server/public/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  2482. package/payload/server/public/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  2483. package/payload/server/public/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  2484. package/payload/server/public/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  2485. package/payload/server/public/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  2486. package/payload/server/public/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  2487. package/payload/server/public/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  2488. package/payload/server/public/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  2489. package/payload/server/public/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  2490. package/payload/server/public/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  2491. package/payload/server/public/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  2492. package/payload/server/public/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  2493. package/payload/server/public/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  2494. package/payload/server/public/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  2495. package/payload/server/public/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  2496. package/payload/server/public/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  2497. package/payload/server/public/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  2498. package/payload/server/public/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  2499. package/payload/server/public/assets/journeyDiagram-VCZTEJTY-CZYbiOaQ.js +139 -0
  2500. package/payload/server/public/assets/kanban-definition-6JOO6SKY-B1PybFoh.js +89 -0
  2501. package/payload/server/public/assets/katex-B-EfS3nw.js +257 -0
  2502. package/payload/server/public/assets/line-D-tw3hHp.js +1 -0
  2503. package/payload/server/public/assets/linear-BHhXD3cd.js +1 -0
  2504. package/payload/server/public/assets/mermaid-parser.core-C9RAnysF.js +4 -0
  2505. package/payload/server/public/assets/mermaid.core-B532LT1r.js +11 -0
  2506. package/payload/server/public/assets/mindmap-definition-QFDTVHPH-DGlgeeTV.js +96 -0
  2507. package/payload/server/public/assets/newsreader-latin-300-normal-AOSWdb_s.woff +0 -0
  2508. package/payload/server/public/assets/newsreader-latin-300-normal-FGBQ0wlI.woff2 +0 -0
  2509. package/payload/server/public/assets/newsreader-latin-400-normal-BFBkh4jY.woff2 +0 -0
  2510. package/payload/server/public/assets/newsreader-latin-400-normal-gRTjlS2D.woff +0 -0
  2511. package/payload/server/public/assets/newsreader-latin-500-normal-B66TYsaK.woff2 +0 -0
  2512. package/payload/server/public/assets/newsreader-latin-500-normal-DFwuUcdu.woff +0 -0
  2513. package/payload/server/public/assets/newsreader-latin-ext-300-normal-CFtw49Zd.woff +0 -0
  2514. package/payload/server/public/assets/newsreader-latin-ext-300-normal-DRMzurxT.woff2 +0 -0
  2515. package/payload/server/public/assets/newsreader-latin-ext-400-normal-DYA1XoQK.woff +0 -0
  2516. package/payload/server/public/assets/newsreader-latin-ext-400-normal-svq1FPys.woff2 +0 -0
  2517. package/payload/server/public/assets/newsreader-latin-ext-500-normal-BNHmvKvI.woff2 +0 -0
  2518. package/payload/server/public/assets/newsreader-latin-ext-500-normal-CZruMFou.woff +0 -0
  2519. package/payload/server/public/assets/newsreader-vietnamese-300-normal-CsrIkm-V.woff +0 -0
  2520. package/payload/server/public/assets/newsreader-vietnamese-300-normal-D3VHEe81.woff2 +0 -0
  2521. package/payload/server/public/assets/newsreader-vietnamese-400-normal-BekUZro8.woff +0 -0
  2522. package/payload/server/public/assets/newsreader-vietnamese-400-normal-DdKr49mV.woff2 +0 -0
  2523. package/payload/server/public/assets/newsreader-vietnamese-500-normal-BEAbKU8A.woff +0 -0
  2524. package/payload/server/public/assets/newsreader-vietnamese-500-normal-CL6a8tp2.woff2 +0 -0
  2525. package/payload/server/public/assets/ordinal-Bl-aM5b9.js +1 -0
  2526. package/payload/server/public/assets/packet-4T2RLAQJ-DGES22b-.js +1 -0
  2527. package/payload/server/public/assets/path-DmWWdwp7.js +1 -0
  2528. package/payload/server/public/assets/pie-ZZUOXDRM-ChKeDbzt.js +1 -0
  2529. package/payload/server/public/assets/pieDiagram-DEJITSTG-DV9FIWko.js +30 -0
  2530. package/payload/server/public/assets/public-Bu2_Xi0a.js +35 -0
  2531. package/payload/server/public/assets/public-vnj7OhQj.css +1 -0
  2532. package/payload/server/public/assets/quadrantDiagram-34T5L4WZ-Betwya4l.js +7 -0
  2533. package/payload/server/public/assets/radar-PYXPWWZC-FGG5Fs7N.js +1 -0
  2534. package/payload/server/public/assets/reduce-BD4xUd2c.js +1 -0
  2535. package/payload/server/public/assets/requirementDiagram-MS252O5E-Cq3vODdg.js +84 -0
  2536. package/payload/server/public/assets/rough.esm-Ci7Kjt46.js +1 -0
  2537. package/payload/server/public/assets/sankeyDiagram-XADWPNL6-x8krXWcS.js +10 -0
  2538. package/payload/server/public/assets/sequenceDiagram-FGHM5R23-i-_uH-Yl.js +157 -0
  2539. package/payload/server/public/assets/src-C1jfwBq0.js +1 -0
  2540. package/payload/server/public/assets/stateDiagram-FHFEXIEX-il4KqSgI.js +1 -0
  2541. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B6zNJ6Tv.js +1 -0
  2542. package/payload/server/public/assets/timeline-definition-GMOUNBTQ-DATdZkA5.js +120 -0
  2543. package/payload/server/public/assets/treeView-SZITEDCU-VAQQdbtf.js +1 -0
  2544. package/payload/server/public/assets/treemap-W4RFUUIX-DKchO3zI.js +1 -0
  2545. package/payload/server/public/assets/useSelectionMode-A5KItZ2T.js +13 -0
  2546. package/payload/server/public/assets/useSelectionMode-C-Ojh7W9.css +1 -0
  2547. package/payload/server/public/assets/vennDiagram-DHZGUBPP-BJh9tJTt.js +34 -0
  2548. package/payload/server/public/assets/wardley-RL74JXVD-CBGtx0bS.js +1 -0
  2549. package/payload/server/public/assets/wardleyDiagram-NUSXRM2D-EMN1Hdfg.js +20 -0
  2550. package/payload/server/public/assets/xychartDiagram-5P7HB3ND-DbUWXa7T.js +7 -0
  2551. package/payload/server/public/brand/claude.png +0 -0
  2552. package/payload/server/public/brand/favicon.ico +0 -0
  2553. package/payload/server/public/brand/maxy-black.png +0 -0
  2554. package/payload/server/public/brand/maxy-horizontal.png +0 -0
  2555. package/payload/server/public/brand/maxy-monochrome.png +0 -0
  2556. package/payload/server/public/brand/maxy-square.png +0 -0
  2557. package/payload/server/public/brand/maxy.png +0 -0
  2558. package/payload/server/public/brand/star.png +0 -0
  2559. package/payload/server/public/brand-constants.json +8 -0
  2560. package/payload/server/public/brand-defaults.css +12 -0
  2561. package/payload/server/public/consent.css +97 -0
  2562. package/payload/server/public/consent.js +259 -0
  2563. package/payload/server/public/data.html +19 -0
  2564. package/payload/server/public/favicon.ico +0 -0
  2565. package/payload/server/public/graph.html +20 -0
  2566. package/payload/server/public/index.html +21 -0
  2567. package/payload/server/public/privacy.html +129 -0
  2568. package/payload/server/public/public.html +19 -0
  2569. package/payload/server/public/robots.txt +5 -0
  2570. package/payload/server/public/v.js +244 -0
  2571. package/payload/server/public/vnc-popout.html +63 -0
  2572. package/payload/server/server-init.cjs +197 -0
  2573. package/payload/server/server.js +21128 -0
@@ -0,0 +1,2522 @@
1
+ import { initStderrTee } from "../../../../lib/mcp-stderr-tee/dist/index.js";
2
+ initStderrTee("memory");
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { eagerTool } from "../../../../lib/mcp-eager/dist/index.js";
5
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
+ import { z } from "zod";
7
+ import { int } from "neo4j-driver";
8
+ import { memorySearch } from "./tools/memory-search.js";
9
+ import { memoryWrite } from "./tools/memory-write.js";
10
+ import { loadSchema } from "./lib/schema-loader.js";
11
+ import { buildLiveSchemaSource, defaultSchemaCypherPath, } from "./lib/live-schema-source.js";
12
+ import { memoryReindex } from "./tools/memory-reindex.js";
13
+ import { memoryIngestExtract } from "./tools/memory-ingest-extract.js";
14
+ import { memoryIngest } from "./tools/memory-ingest.js";
15
+ import { CONVERSATION_SOURCES } from "./lib/conversation-normalisers/types.js";
16
+ import { kdClassify } from "./tools/kd-classify.js";
17
+ import { memoryArchiveWrite } from "./tools/memory-archive-write.js";
18
+ import { obsidianVaultImport, } from "./tools/obsidian-vault-import.js";
19
+ // whatsapp-export-{parse,preview,insight-write} deleted. Conversation
20
+ // transcripts now flow through the source-agnostic `conversation-archive` skill
21
+ // + `memory/bin/conversation-archive-ingest.sh`, writing :ConversationArchive
22
+ // (Task 397 — keyed on `conversationIdentity`) + :Section chunks via
23
+ // memory-ingest. The writer dispatches on the presence of
24
+ // `conversationIdentity`; the parent label tracks the dispatch.
25
+ // whatsapp-export-insight-pass deleted (Phase 2 deferred).
26
+ import { memoryIngestWeb } from "./tools/memory-ingest-web.js";
27
+ import { memoryUpdate } from "./tools/memory-update.js";
28
+ import { memoryEdge } from "./tools/memory-edge.js";
29
+ import { memoryUpdateByName } from "./tools/memory-update-by-name.js";
30
+ import { memoryDelete } from "./tools/memory-delete.js";
31
+ import { memoryFindCandidates } from "./tools/memory-find-candidates.js";
32
+ import { memoryNodeExists, ALLOWED_LABELS as MEMORY_NODE_EXISTS_LABELS } from "./tools/memory-node-exists.js";
33
+ import { memoryLookupByName } from "./tools/memory-lookup-by-name.js";
34
+ import { memoryRestore } from "./tools/memory-restore.js";
35
+ import { memoryEmptyTrash } from "./tools/memory-empty-trash.js";
36
+ import { memoryListAttachments } from "./tools/memory-list-attachments.js";
37
+ import { memoryReadAttachment } from "./tools/memory-read-attachment.js";
38
+ import { memoryEditAttachment } from "./tools/memory-edit-attachment.js";
39
+ import { memoryRenameAttachment } from "./tools/memory-rename-attachment.js";
40
+ import { profileRead } from "./tools/profile-read.js";
41
+ import { memoryBrainCaptureRecent } from "./tools/memory-brain-capture-recent.js";
42
+ import { profileUpdate } from "./tools/profile-update.js";
43
+ import { profileDelete } from "./tools/profile-delete.js";
44
+ import { graphPruneDenylistAdd } from "./tools/graph-prune-denylist-add.js";
45
+ import { graphPruneDenylistList } from "./tools/graph-prune-denylist-list.js";
46
+ import { graphPruneDenylistRemove } from "./tools/graph-prune-denylist-remove.js";
47
+ import { conversationMemoryExpunge } from "./tools/conversation-memory-expunge.js";
48
+ import { conversationArchiveDeriveInsights, PROPOSAL_KINDS, } from "./tools/conversation-archive-derive-insights.js";
49
+ import { conversationArchiveListChunks } from "./tools/conversation-archive-list-chunks.js";
50
+ import { conversationArchiveEnrichRejection } from "./tools/conversation-archive-enrich-rejection.js";
51
+ import { fetchImageAsContent } from "./tools/image-fetch.js";
52
+ import { memoryTypedEdgePass } from "./tools/memory-typed-edge-pass.js";
53
+ import { memoryReportWrite } from "./tools/memory-report-write.js";
54
+ import { memoryReportReadLatest } from "./tools/memory-report-read-latest.js";
55
+ import { memoryReportList } from "./tools/memory-report-list.js";
56
+ import { memoryDreamRun } from "./tools/memory-dream-run.js";
57
+ import { memoryReviewQueue } from "./tools/memory-review-queue.js";
58
+ import { memoryCompiledTruthHistory } from "./tools/memory-compiled-truth-history.js";
59
+ import { getSession, closeDriver } from "./lib/neo4j.js";
60
+ import { embed } from "./lib/embeddings.js";
61
+ import { notTrashed } from "../../../../lib/graph-trash/dist/index.js";
62
+ const server = new McpServer({
63
+ name: "maxy-memory",
64
+ version: "0.1.0",
65
+ });
66
+ const readOnly = process.env.READ_ONLY === "true";
67
+ // Plugin-system boot tolerance — see Task 202.
68
+ // Module-init must never throw; plugin-system spawn enumerates tools/list
69
+ // before ACCOUNT_ID is set. Per-call refusal preserves account isolation.
70
+ const accountId = process.env.ACCOUNT_ID ?? null;
71
+ // Task 476/487 — extended boot signal: sessionId, agentSlug (provenance),
72
+ // and agentScope (read-scope) land here so a stale spawn-env contract is
73
+ // visible at the first byte of stderr. Regression shapes: `sessionId ===
74
+ // accountId`; `agentSlug` empty on a specialist spawn (provenance lost);
75
+ // `agentScope` non-empty on the admin operator spawn (search wrongly scoped).
76
+ process.stderr.write(`[memory] boot accountId=${accountId ?? "null"} sessionId=${process.env.SESSION_ID || "-"} agentSlug=${process.env.AGENT_SLUG || "-"} agentScope=${process.env.AGENT_SLUG_SCOPE || "-"}\n`);
77
+ function refuseNoAccount(toolName) {
78
+ process.stderr.write(`[memory] tool=${toolName} refuse reason=no-account-context\n`);
79
+ return {
80
+ content: [
81
+ {
82
+ type: "text",
83
+ text: `${toolName} cannot execute: this MCP instance was launched without ACCOUNT_ID (plugin-system metadata-only mode). Per-account graph access requires ACCOUNT_ID at spawn.`,
84
+ },
85
+ ],
86
+ isError: true,
87
+ };
88
+ }
89
+ // Load the markdown schema sidecar once at startup. Every memory-write call
90
+ // reads its required-property and synonym maps. If loading fails we throw —
91
+ // a memory server running with a broken schema is worse than one that fails
92
+ // to start loudly.
93
+ const schema = loadSchema();
94
+ // Live label source. The memory MCP runs as a separate stdio
95
+ // process from graph-mcp, so it owns its own SchemaCache instance backed by
96
+ // the existing Neo4j driver. The cache refreshes every 60s and tap-fires
97
+ // drift detection from its emit hook. Boot does NOT block on the first
98
+ // refresh — `defaultDeclaredOnly` is sufficient until live joins, since
99
+ // declared labels cover the bootstrap labels (LocalBusiness etc.).
100
+ const schemaCypherPath = defaultSchemaCypherPath();
101
+ const liveSchemaRuntime = buildLiveSchemaSource({
102
+ schemaCypherPath,
103
+ markdownLabels: schema.markdownLabels.keys(),
104
+ fetcher: {
105
+ async labels() {
106
+ const session = getSession();
107
+ try {
108
+ const result = await session.run("CALL db.labels() YIELD label RETURN label");
109
+ return result.records
110
+ .map((r) => r.get("label"))
111
+ .filter((v) => typeof v === "string");
112
+ }
113
+ finally {
114
+ await session.close();
115
+ }
116
+ },
117
+ async relationshipTypes() {
118
+ const session = getSession();
119
+ try {
120
+ const result = await session.run("CALL db.relationshipTypes() YIELD relationshipType RETURN relationshipType");
121
+ return result.records
122
+ .map((r) => r.get("relationshipType"))
123
+ .filter((v) => typeof v === "string");
124
+ }
125
+ finally {
126
+ await session.close();
127
+ }
128
+ },
129
+ },
130
+ });
131
+ // Boot drift fires once the first refresh resolves. We do not await — the
132
+ // validator handles boot races by accepting declared labels (which include
133
+ // the bootstrap set) until live joins. Drift logs land in server.log as
134
+ // soon as the snapshot lands, with no impact on serving requests.
135
+ liveSchemaRuntime.ready.then(() => {
136
+ process.stderr.write(`[schema-validator] using-cache cacheAgeMs=0 ready=${liveSchemaRuntime.source.liveReady()}\n`);
137
+ });
138
+ const validator = {
139
+ schema,
140
+ liveSource: liveSchemaRuntime.source,
141
+ };
142
+ const userId = process.env.USER_ID; // Optional — present for admin sessions with users.json auth
143
+ // Scope filtering: comma-separated list of allowed scopes (e.g. "public,shared").
144
+ // When set, memory-search only returns nodes whose scope is in this list.
145
+ // When absent (admin), no scope filtering is applied.
146
+ const allowedScopes = process.env.ALLOWED_SCOPES
147
+ ? process.env.ALLOWED_SCOPES.split(",").map((s) => s.trim()).filter(Boolean)
148
+ : undefined;
149
+ // Task 485 — per-visitor slice ringfence. Stamped by pty-spawner on
150
+ // gated public-agent spawns. When present, every memory-search WHERE
151
+ // composes `(n.sliceToken = $sliceToken OR n.scope IN $allowedScopes)`
152
+ // so the agent sees its visitor's user-scoped nodes alongside public-scope
153
+ // rows. When absent (admin path + open-mode public), behaviour is
154
+ // unchanged.
155
+ const accessSliceToken = typeof process.env.ACCESS_SLICE_TOKEN === "string" && process.env.ACCESS_SLICE_TOKEN.length > 0
156
+ ? process.env.ACCESS_SLICE_TOKEN
157
+ : undefined;
158
+ // Per-handler session resolution. Module-load env capture was
159
+ // wrong: when the admin agent didn't set SESSION_ID on MCP spawn, `sessionId`
160
+ // was undefined for the entire process lifetime — every subsequent
161
+ // `createdBySession` write was empty. Read per-handler so the env value
162
+ // (now set in claude-agent.ts:3107 baseEnv) is observed at call time, and
163
+ // allow per-call override via tool argument when an agent has better info.
164
+ function resolveSessionId(override) {
165
+ if (override && override.trim())
166
+ return override.trim();
167
+ const fromEnv = process.env.SESSION_ID;
168
+ return fromEnv && fromEnv.trim() ? fromEnv.trim() : undefined;
169
+ }
170
+ // Provenance stamp: AGENT_SLUG is the agent identity recorded as
171
+ // `createdByAgent` on every write. The admin operator gets the 'admin'
172
+ // sentinel (Task 487); specialists/public get their slug.
173
+ const envAgentSlug = process.env.AGENT_SLUG || undefined;
174
+ // Per-agent knowledge scoping (Task 487 split this off AGENT_SLUG): when set,
175
+ // memory-search only returns nodes whose `agents` array contains this slug.
176
+ // Specialists/public get their slug here (server-level enforcement); the admin
177
+ // operator gets EMPTY so search stays wide-open. For admin, an optional tool
178
+ // param can still scope a single query. Read-scope and provenance are now
179
+ // independent — admin writes stamp 'admin' while admin reads stay unscoped.
180
+ const envAgentScopeSlug = process.env.AGENT_SLUG_SCOPE || undefined;
181
+ // Keyword subscriptions: comma-separated list of keywords for BM25-based reactive
182
+ // knowledge inclusion. When set, memory-search runs a BM25 query per keyword and
183
+ // unions results with directly-tagged nodes. Capped at 5 for Pi performance.
184
+ const MAX_KEYWORD_SUBSCRIPTIONS = 5;
185
+ const envKeywordSubscriptions = process.env.KNOWLEDGE_KEYWORDS
186
+ ? process.env.KNOWLEDGE_KEYWORDS.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean).slice(0, MAX_KEYWORD_SUBSCRIPTIONS)
187
+ : undefined;
188
+ // Output character budget for memory-search results. Claude Code's tool result token
189
+ // limit is roughly 100K chars; 80K leaves headroom for MCP framing and avoids the
190
+ // dump-to-file cascade that forces multi-step Bash parsing.
191
+ const OUTPUT_CHAR_BUDGET = 80_000;
192
+ /** Format a single search result. When includeRelated is false, related nodes are omitted. */
193
+ function formatResult(r, includeRelated) {
194
+ let text = `[${r.labels.join(", ")}] (id: ${r.nodeId}) (score: ${r.score.toFixed(3)})\n`;
195
+ for (const [k, v] of Object.entries(r.properties)) {
196
+ text += ` ${k}: ${String(v)}\n`;
197
+ }
198
+ if (includeRelated && r.related.length > 0) {
199
+ text += " Related:\n";
200
+ for (const rel of r.related) {
201
+ const arrow = rel.direction === "outgoing" ? `--[${rel.relationship}]-->` : `<--[${rel.relationship}]--`;
202
+ text += ` ${arrow} [${rel.labels.join(", ")}]`;
203
+ const relProps = Object.entries(rel.properties)
204
+ .filter(([k]) => k !== "embedding" && k !== "accountId")
205
+ .map(([k, v]) => `${k}: ${String(v)}`)
206
+ .join(", ");
207
+ if (relProps)
208
+ text += ` {${relProps}}`;
209
+ text += "\n";
210
+ }
211
+ }
212
+ return text;
213
+ }
214
+ eagerTool(server, "memory-search", "Search the knowledge graph using semantic vector search with graph traversal. Returns relevant nodes and their relationships.", {
215
+ query: z.string().describe("Natural language search query"),
216
+ labels: z
217
+ .array(z.string())
218
+ .optional()
219
+ .describe("Filter by node labels (e.g. Question, Service, DefinedTerm, Review, Person)"),
220
+ limit: z
221
+ .number()
222
+ .optional()
223
+ .describe("Maximum number of results (default 10)"),
224
+ expandHops: z
225
+ .number()
226
+ .optional()
227
+ .describe("Graph traversal depth for related nodes (default 1). Use 0 for listing/inventory queries (node properties only, compact output). Use 1 for deep context queries (includes related nodes — can produce large output for nodes with many relationships)."),
228
+ keywords: z
229
+ .array(z.string())
230
+ .optional()
231
+ .describe("Filter KnowledgeDocument results to those containing these topic keywords"),
232
+ keywordMatch: z
233
+ .enum(["any", "all"])
234
+ .optional()
235
+ .describe("Keyword match mode: 'any' (default, OR — matches docs with any listed keyword) or 'all' (AND — must have every keyword)"),
236
+ agentSlug: z
237
+ .string()
238
+ .optional()
239
+ .describe("Filter to nodes tagged for this agent slug (nodes where slug is in the agents array). For admin use — public agents use server-level env var."),
240
+ fields: z
241
+ .array(z.string())
242
+ .optional()
243
+ .describe("Narrow the response `properties` to these keys per result. Omit to return all properties (default). Empty array returns no properties (explicit 'none'). Unknown keys are silently skipped; nodes lacking a requested key omit it on that row. Use for known-shape lookups (slug → name) to avoid shipping bios, notes, source URLs on every turn. Ranking is unaffected — hybrid() sees the full text either way. See `references/graph-primitives.md` § Projecting fields."),
244
+ retrievalClass: z
245
+ .enum(["entity", "temporal", "event", "general", "none"])
246
+ .optional()
247
+ .describe("Hint that selects the per-class index mix (route-hint contract). Pass 'entity' for who/what-is-this lookups (vector-heavy, Person|Company|Concept filter), 'temporal' for when-did-this-happen (BM25-heavy over :Event with Timeline), 'event' for pure event listings, 'none' to skip graph lookup entirely (greetings/instructions). Omit or pass 'general' for the balanced default. Routing only takes effect when MAXY_GS_ROUTE is enabled; otherwise the value is recorded in the log line but does not change index selection."),
248
+ }, async ({ query, labels, limit, expandHops, keywords, keywordMatch, agentSlug: toolAgentSlug, fields, retrievalClass }) => {
249
+ if (!accountId)
250
+ return refuseNoAccount("memory-search");
251
+ // AGENT_SLUG_SCOPE takes precedence over the tool param (security: public
252
+ // agent server-level enforcement). Empty for the admin operator, so admin
253
+ // falls through to the optional tool param (default: unscoped).
254
+ const effectiveAgentSlug = envAgentScopeSlug ?? toolAgentSlug;
255
+ try {
256
+ const results = await memorySearch({
257
+ query,
258
+ labels,
259
+ accountId,
260
+ limit,
261
+ expandHops,
262
+ allowedScopes,
263
+ sliceToken: accessSliceToken,
264
+ keywords,
265
+ keywordMatch,
266
+ agentSlug: effectiveAgentSlug,
267
+ keywordSubscriptions: envKeywordSubscriptions,
268
+ fields,
269
+ retrievalClass,
270
+ });
271
+ // Task 485 — per-call slice/public/user breakdown so the
272
+ // `[memory-search] sliceFilter=…|none publicCount=… userCount=…` grep
273
+ // proves the gated filter fired on the right turn. Inspects results
274
+ // after hybrid() applied the WHERE, so the counts reflect what the
275
+ // agent actually saw, not the unscoped corpus.
276
+ let publicCount = 0;
277
+ let userCount = 0;
278
+ for (const r of results) {
279
+ const scope = r.properties.scope;
280
+ const sliceTokenRow = r.properties.sliceToken;
281
+ if (scope === "public")
282
+ publicCount += 1;
283
+ if (typeof sliceTokenRow === "string" && sliceTokenRow.length > 0)
284
+ userCount += 1;
285
+ }
286
+ process.stderr.write(`[memory-search] sliceFilter=${accessSliceToken ? accessSliceToken.slice(0, 8) : "none"} ` +
287
+ `resultCount=${results.length} publicCount=${publicCount} userCount=${userCount}\n`);
288
+ if (results.length === 0) {
289
+ return {
290
+ content: [
291
+ {
292
+ type: "text",
293
+ text: "No results found for this query.",
294
+ },
295
+ ],
296
+ };
297
+ }
298
+ const formatted = results.map((r) => formatResult(r, true));
299
+ const separator = "\n---\n";
300
+ let output = formatted.join(separator);
301
+ let droppedRelated = 0;
302
+ let droppedResults = 0;
303
+ if (output.length > OUTPUT_CHAR_BUDGET) {
304
+ const originalChars = output.length;
305
+ // Pass 1: strip related nodes from lowest-scored results first.
306
+ // Results are already sorted by score descending, so we iterate
307
+ // from the tail (lowest score) toward the head.
308
+ for (let i = formatted.length - 1; i >= 0 && output.length > OUTPUT_CHAR_BUDGET; i--) {
309
+ if (results[i].related.length > 0) {
310
+ droppedRelated += results[i].related.length;
311
+ formatted[i] = formatResult(results[i], false);
312
+ output = formatted.join(separator);
313
+ }
314
+ }
315
+ // Pass 2: if still over budget, drop entire results from the tail.
316
+ while (formatted.length > 0 && output.length > OUTPUT_CHAR_BUDGET) {
317
+ formatted.pop();
318
+ droppedResults++;
319
+ output = formatted.join(separator);
320
+ }
321
+ const notice = `\n\n[Truncated: ${droppedRelated} related nodes removed` +
322
+ (droppedResults > 0 ? `, ${droppedResults} results omitted` : "") +
323
+ `. Use expandHops: 0 for compact listing, or reduce limit.]`;
324
+ output += notice;
325
+ process.stderr.write(`[memory-search] [${accountId}] output truncated: ${originalChars} → ${output.length}, ` +
326
+ `${droppedRelated} related nodes dropped, ${droppedResults} results dropped\n`);
327
+ }
328
+ return {
329
+ content: [{ type: "text", text: output }],
330
+ };
331
+ }
332
+ catch (err) {
333
+ return {
334
+ content: [
335
+ {
336
+ type: "text",
337
+ text: `Search failed: ${err instanceof Error ? err.message : String(err)}`,
338
+ },
339
+ ],
340
+ isError: true,
341
+ };
342
+ }
343
+ });
344
+ eagerTool(server, "memory-lookup-by-name", "Deterministic by-name entity lookup. Returns every node whose `name` matches " +
345
+ "the given name exactly (case-insensitive), bypassing the memory-search ranking " +
346
+ "stack — a name match is a predicate, not a similarity score, so there is no " +
347
+ "result cut to fall below. Use this when memory-search returns no result for a " +
348
+ "named entity you believe exists, or when the operator asks for 'the X node' by " +
349
+ "name. Optionally constrain by `labels`. Scoped to your account, allowed scopes, " +
350
+ "slice, and agent the same way memory-search is, and excludes trashed nodes. " +
351
+ "Returns an explicit empty list when nothing matches (not an error). For ranked " +
352
+ "fuzzy/semantic discovery use memory-search instead.", {
353
+ name: z.string().describe("Exact entity name to match (case-insensitive). e.g. \"Rubytech LLC\"."),
354
+ labels: z
355
+ .array(z.string())
356
+ .optional()
357
+ .describe("Optional label filter — return only nodes carrying any of these labels (e.g. [\"Organization\"]). Omit to match on name alone across all labels."),
358
+ limit: z
359
+ .number()
360
+ .optional()
361
+ .describe("Maximum number of matching nodes to return (default 25)."),
362
+ }, async ({ name, labels, limit }) => {
363
+ if (!accountId)
364
+ return refuseNoAccount("memory-lookup-by-name");
365
+ const effectiveAgentSlug = envAgentScopeSlug;
366
+ try {
367
+ const hits = await memoryLookupByName({
368
+ name,
369
+ accountId,
370
+ labels,
371
+ allowedScopes,
372
+ sliceToken: accessSliceToken,
373
+ agentSlug: effectiveAgentSlug,
374
+ limit,
375
+ });
376
+ process.stderr.write(`[memory-lookup-by-name] name=${JSON.stringify(name)} ` +
377
+ `labels=${labels && labels.length > 0 ? labels.join("|") : "any"} ` +
378
+ `resultCount=${hits.length} ` +
379
+ `scope=${accessSliceToken ? accessSliceToken.slice(0, 8) : allowedScopes ? allowedScopes.join("|") : "admin"}\n`);
380
+ if (hits.length === 0) {
381
+ return {
382
+ content: [
383
+ {
384
+ type: "text",
385
+ text: `No node found with name=${JSON.stringify(name)}${labels && labels.length > 0 ? ` and labels=[${labels.join(", ")}]` : ""}.`,
386
+ },
387
+ ],
388
+ };
389
+ }
390
+ const formatted = hits.map((h) => {
391
+ let text = `[${h.labels.join(", ")}] (id: ${h.nodeId})\n`;
392
+ for (const [k, v] of Object.entries(h.properties)) {
393
+ text += ` ${k}: ${String(v)}\n`;
394
+ }
395
+ return text;
396
+ });
397
+ return { content: [{ type: "text", text: formatted.join("\n---\n") }] };
398
+ }
399
+ catch (err) {
400
+ return {
401
+ content: [{ type: "text", text: `memory-lookup-by-name failed: ${err instanceof Error ? err.message : String(err)}` }],
402
+ isError: true,
403
+ };
404
+ }
405
+ });
406
+ // ---------------------------------------------------------------------------
407
+ // conversation-archive Phase 2 — chunk page reader (Task 433).
408
+ // Returns one page of :Section chunk bodies for the named :ConversationArchive
409
+ // so the conversation-archive-enrich skill can drive the dispatched
410
+ // specialist to read each chunk and emit claims in-turn. Read-only.
411
+ // ---------------------------------------------------------------------------
412
+ server.tool("conversation-archive-list-chunks", "Page through the :Section chunks of one named :ConversationArchive and return each chunk's elementId, ordered index, summary, and full body. The conversation-archive-enrich skill calls this per page, then prompts the dispatched specialist to read each chunk's body in-turn and emit claims; the skill hands those claims back to `conversation-archive-derive-insights` for per-kind cypher emission. Read-only.", {
413
+ archiveElementId: z
414
+ .string()
415
+ .describe("elementId of the :ConversationArchive parent (Task 397 — keyed on conversationIdentity) the operator named (required)."),
416
+ chunkOffset: z
417
+ .number()
418
+ .int()
419
+ .nonnegative()
420
+ .optional()
421
+ .describe("Zero-based chunk offset. Default 0. Advance by chunkLimit per page."),
422
+ chunkLimit: z
423
+ .number()
424
+ .int()
425
+ .positive()
426
+ .max(20)
427
+ .optional()
428
+ .describe("Chunks per page (1..20). Default 5."),
429
+ }, async ({ archiveElementId, chunkOffset, chunkLimit }) => {
430
+ if (!accountId)
431
+ return refuseNoAccount("conversation-archive-list-chunks");
432
+ try {
433
+ const result = await conversationArchiveListChunks({
434
+ accountId,
435
+ archiveElementId,
436
+ chunkOffset,
437
+ chunkLimit,
438
+ });
439
+ const header = `archiveElementId=${result.archiveElementId} title=${JSON.stringify(result.archiveTitle ?? "")} totalChunks=${result.totalChunks} walked=${result.walkedFrom}..${result.walkedTo} chunks=${result.chunks.length} chunksRemaining=${result.chunksRemaining}`;
440
+ const chunkBlocks = result.chunks
441
+ .map((c) => [
442
+ `Chunk ${c.index + 1}/${result.totalChunks}:`,
443
+ ` elementId=${c.elementId}`,
444
+ ` summary=${JSON.stringify(c.summary)}`,
445
+ ` body=${JSON.stringify(c.body)}`,
446
+ ].join("\n"))
447
+ .join("\n\n");
448
+ return {
449
+ content: [
450
+ {
451
+ type: "text",
452
+ text: result.chunks.length === 0
453
+ ? `${header}\n(no chunks at this offset)`
454
+ : `${header}\n\n${chunkBlocks}`,
455
+ },
456
+ ],
457
+ };
458
+ }
459
+ catch (err) {
460
+ const msg = err instanceof Error ? err.message : String(err);
461
+ return {
462
+ content: [{ type: "text", text: msg }],
463
+ isError: true,
464
+ };
465
+ }
466
+ });
467
+ process.stderr.write("[memory-mcp] registered tool=conversation-archive-list-chunks\n");
468
+ // ---------------------------------------------------------------------------
469
+ // conversation-archive Phase 2: per-chunk claim → cypher proposal emitter.
470
+ // Task 433: accepts the agent-produced `claims` array for one chunk (read
471
+ // from `conversation-archive-list-chunks`) and returns operator-facing
472
+ // proposals carrying the per-kind mergeCypher. Rejection sidecar filter is
473
+ // applied here. The tool itself NEVER writes; idempotency lives on the
474
+ // MERGE-key (chunkElementId, kind, contentHash) baked into each mergeCypher.
475
+ // ---------------------------------------------------------------------------
476
+ const claimSchema = z.object({
477
+ kind: z.enum([...PROPOSAL_KINDS]).describe("One of: mention, task, preference, observed-relationship."),
478
+ evidenceSnippet: z
479
+ .string()
480
+ .describe("Near-verbatim quote from the chunk body (≤80 chars enforced server-side)."),
481
+ subject: z
482
+ .string()
483
+ .nullable()
484
+ .optional()
485
+ .describe("Display name of the primary entity. Required for mention + observed-relationship."),
486
+ object: z
487
+ .string()
488
+ .nullable()
489
+ .optional()
490
+ .describe("Display name of the related entity. Required for observed-relationship only."),
491
+ payload: z
492
+ .record(z.string(), z.unknown())
493
+ .optional()
494
+ .describe("Kind-specific structured fields (taskTitle/taskDueHint for task; preferenceCategory/preferenceKey/preferenceValue for preference; relationshipType for observed-relationship)."),
495
+ });
496
+ server.tool("conversation-archive-derive-insights", "Convert one chunk's agent-produced claims into operator-facing claim proposals (mention, task, preference, observed-relationship). The conversation-archive-enrich skill reads chunk bodies via `conversation-archive-list-chunks`, drives the dispatched specialist to emit claims in-turn, and passes them here for per-kind cypher emission. Applies the durable rejection sidecar so already-triaged claims do not re-surface. Read-only: the per-row operator gate runs in the skill, this tool never writes.", {
497
+ archiveElementId: z
498
+ .string()
499
+ .describe("elementId of the :ConversationArchive parent (Task 397 — keyed on conversationIdentity) the operator named (required)."),
500
+ chunkElementId: z
501
+ .string()
502
+ .describe("elementId of the single :Section chunk the agent just read (required)."),
503
+ claims: z
504
+ .array(claimSchema)
505
+ .describe("Claims the dispatched specialist emitted in-turn from the chunk body. Zero is valid — pass [] to record an empty-chunk pass."),
506
+ inlineRewrite: z.boolean().optional().describe("When true, count mention-claim subjects in this chunk and return those reaching inlineRewriteThreshold in inlineRewriteSignals. The calling skill accumulates signals across chunks; when an entity's cumulative count hits threshold, resolve it via memory-search and dispatch the compiled-truth-rewriter specialist."),
507
+ inlineRewriteThreshold: z.number().int().min(1).optional().describe("Minimum mention-claim count for a subject to appear in inlineRewriteSignals. Default: 2."),
508
+ }, async ({ archiveElementId, chunkElementId, claims, inlineRewrite, inlineRewriteThreshold }) => {
509
+ if (!accountId)
510
+ return refuseNoAccount("conversation-archive-derive-insights");
511
+ try {
512
+ const result = await conversationArchiveDeriveInsights({
513
+ accountId,
514
+ archiveElementId,
515
+ chunkElementId,
516
+ claims: claims,
517
+ sessionId: resolveSessionId(),
518
+ inlineRewrite,
519
+ inlineRewriteThreshold,
520
+ });
521
+ const proposalLines = result.proposals
522
+ .map((p, i) => {
523
+ const disambig = p.disambiguation && p.disambiguation.needsResolution.length > 0
524
+ ? ` resolve:${p.disambiguation.needsResolution.map((r) => `${r.role}="${r.displayName}"`).join(",")}`
525
+ : "";
526
+ return [
527
+ `Proposal ${i + 1}/${result.proposals.length}:`,
528
+ ` chunkElementId=${p.chunkElementId}`,
529
+ ` kind=${p.kind}`,
530
+ ` contentHash=${p.contentHash}`,
531
+ ` evidence="${p.evidenceSnippet}"`,
532
+ ` proposedAction=${p.proposedAction}${disambig}`,
533
+ ` mergeCypher=${p.mergeCypher.replace(/\n/g, " ")}`,
534
+ ` mergeParams=${JSON.stringify(p.mergeParams)}`,
535
+ ].join("\n");
536
+ })
537
+ .join("\n\n");
538
+ const signalsSuffix = result.inlineRewriteSignals && result.inlineRewriteSignals.length > 0
539
+ ? ` inlineRewriteSignals=${JSON.stringify(result.inlineRewriteSignals)}`
540
+ : "";
541
+ const header = `archiveElementId=${result.archiveElementId} chunkElementId=${result.chunkElementId} proposals=${result.proposals.length} rejectionsFiltered=${result.rejectionsFiltered} invalidClaims=${result.invalidClaims}${signalsSuffix}`;
542
+ return {
543
+ content: [
544
+ {
545
+ type: "text",
546
+ text: result.proposals.length === 0
547
+ ? `${header}\n(no proposals from this chunk's claims)`
548
+ : `${header}\n\n${proposalLines}`,
549
+ },
550
+ ],
551
+ };
552
+ }
553
+ catch (err) {
554
+ const msg = err instanceof Error ? err.message : String(err);
555
+ return {
556
+ content: [{ type: "text", text: msg }],
557
+ isError: true,
558
+ };
559
+ }
560
+ });
561
+ process.stderr.write("[memory-mcp] registered tool=conversation-archive-derive-insights\n");
562
+ // ---------------------------------------------------------------------------
563
+ // durable rejection memory for conversation-archive-enrich.
564
+ // Writes to a sidecar JSONL alongside the account's state directory; the
565
+ // filter step in conversation-archive-derive-insights reads the same file.
566
+ // Modes:
567
+ // record — append rejection line (idempotent on duplicate keys).
568
+ // undo — drop matching line via atomic-rename (called after a `wire`
569
+ // so a later wire of a once-rejected key cleans up its rejection).
570
+ // ---------------------------------------------------------------------------
571
+ server.tool("conversation-archive-enrich-rejection", "Record or undo a per-row rejection from conversation-archive-enrich. Writes a sidecar JSONL keyed on (chunkElementId, kind, contentHash). Call with mode='record' on operator `reject`; call with mode='undo' after a successful `wire` so a later wire of a once-rejected key clears its rejection. Idempotent: duplicate records are no-ops.", {
572
+ archiveElementId: z
573
+ .string()
574
+ .describe("elementId of the conversation-document parent (carried on each line for diagnostics)."),
575
+ chunkElementId: z
576
+ .string()
577
+ .describe("elementId of the :Section chunk the rejection applies to."),
578
+ kind: z
579
+ .string()
580
+ .describe("Proposal kind — one of mention|task|preference|observed-relationship."),
581
+ contentHash: z
582
+ .string()
583
+ .describe("The proposal's contentHash (sha256 over kind + payload)."),
584
+ mode: z
585
+ .enum(["record", "undo"])
586
+ .describe("record = append rejection; undo = remove rejection (called after `wire`)."),
587
+ }, async ({ archiveElementId, chunkElementId, kind, contentHash, mode }) => {
588
+ if (!accountId)
589
+ return refuseNoAccount("conversation-archive-enrich-rejection");
590
+ try {
591
+ const result = await conversationArchiveEnrichRejection({
592
+ accountId,
593
+ archiveElementId,
594
+ chunkElementId,
595
+ kind,
596
+ contentHash,
597
+ mode,
598
+ sessionId: resolveSessionId(),
599
+ });
600
+ const summary = `mode=${result.mode} beforeCount=${result.beforeCount} afterCount=${result.afterCount} path=${result.path}`;
601
+ return {
602
+ content: [{ type: "text", text: summary }],
603
+ };
604
+ }
605
+ catch (err) {
606
+ const msg = err instanceof Error ? err.message : String(err);
607
+ process.stderr.write(`[conversation-archive-enrich] rejection-tool-fail mode=${mode} chunk=${chunkElementId} reason="${msg}"\n`);
608
+ return {
609
+ content: [{ type: "text", text: msg }],
610
+ isError: true,
611
+ };
612
+ }
613
+ });
614
+ process.stderr.write("[memory-mcp] registered tool=conversation-archive-enrich-rejection\n");
615
+ // ---------------------------------------------------------------------------
616
+ // :Report read surface (Task 332). Both tools are read-only and available
617
+ // to admin agents without the !readOnly gate. Routing for "latest X" /
618
+ // "show me X report" intents lives in the admin IDENTITY.md clause and in
619
+ // these tools' descriptions.
620
+ // ---------------------------------------------------------------------------
621
+ eagerTool(server, "memory-report-read-latest", "Return the most recent :Report node tagged with the given keyword. Reports are the durable output of admin workflows (daily briefing, dream cycle, ad-hoc analyses) — keyword-routed so 'latest briefing' or 'last night's dream cycle' resolve deterministically. Default limit=1 returns just the freshest match; raise it to scan a window. Prefer this over memory-search when the operator says 'latest', 'last', 'most recent', or 'show me the X report'.", {
622
+ keyword: z
623
+ .string()
624
+ .min(1)
625
+ .describe("Keyword to match against the report's keywords array (e.g. 'daily-briefing', 'dream-cycle'). Any-match — a report with this keyword in its array qualifies."),
626
+ limit: z
627
+ .number()
628
+ .int()
629
+ .min(1)
630
+ .max(20)
631
+ .optional()
632
+ .describe("Maximum number of reports to return, newest first. Default 1."),
633
+ }, async ({ keyword, limit }) => {
634
+ if (!accountId)
635
+ return refuseNoAccount("memory-report-read-latest");
636
+ try {
637
+ const result = await memoryReportReadLatest({ accountId, keyword, limit });
638
+ if (result.results.length === 0) {
639
+ return {
640
+ content: [
641
+ {
642
+ type: "text",
643
+ text: `No reports found tagged with keyword '${keyword}'.`,
644
+ },
645
+ ],
646
+ };
647
+ }
648
+ const body = result.results
649
+ .map((r) => {
650
+ const wf = r.sourceWorkflow ? ` (workflow=${r.sourceWorkflow})` : "";
651
+ return `# ${r.title}${wf}\nreportId: ${r.reportId}\noccurredAt: ${r.occurredAt}\nkeywords: ${r.keywords.join(", ")}\n\n${r.body}`;
652
+ })
653
+ .join("\n\n---\n\n");
654
+ return { content: [{ type: "text", text: body }] };
655
+ }
656
+ catch (err) {
657
+ return {
658
+ content: [
659
+ {
660
+ type: "text",
661
+ text: `memory-report-read-latest failed: ${err instanceof Error ? err.message : String(err)}`,
662
+ },
663
+ ],
664
+ isError: true,
665
+ };
666
+ }
667
+ });
668
+ eagerTool(server, "memory-report-list", "List :Report nodes, newest first, with optional keyword and sourceWorkflow filters. Returns metadata only (title, keywords, sourceWorkflow, occurredAt, body length) — no body — so the agent can scan the catalogue without paying for full bodies. Use memory-report-read-latest to fetch the body of the single most recent match for a keyword.", {
669
+ keyword: z
670
+ .string()
671
+ .optional()
672
+ .describe("Optional keyword filter (any-match against the report's keywords array)."),
673
+ sourceWorkflow: z
674
+ .string()
675
+ .optional()
676
+ .describe("Optional exact-match filter on the originating workflow (e.g. 'daily-briefing', 'dream-cycle')."),
677
+ limit: z
678
+ .number()
679
+ .int()
680
+ .min(1)
681
+ .max(100)
682
+ .optional()
683
+ .describe("Page size, newest first. Default 20, max 100."),
684
+ offset: z
685
+ .number()
686
+ .int()
687
+ .min(0)
688
+ .optional()
689
+ .describe("Zero-based offset for pagination. Default 0."),
690
+ }, async ({ keyword, sourceWorkflow, limit, offset }) => {
691
+ if (!accountId)
692
+ return refuseNoAccount("memory-report-list");
693
+ try {
694
+ const result = await memoryReportList({
695
+ accountId,
696
+ keyword,
697
+ sourceWorkflow,
698
+ limit,
699
+ offset,
700
+ });
701
+ if (result.results.length === 0) {
702
+ return {
703
+ content: [
704
+ {
705
+ type: "text",
706
+ text: `No reports found${keyword ? ` for keyword '${keyword}'` : ""}${sourceWorkflow ? ` (workflow='${sourceWorkflow}')` : ""}.`,
707
+ },
708
+ ],
709
+ };
710
+ }
711
+ const header = `Showing ${result.results.length} of ${result.total} reports.`;
712
+ const rows = result.results
713
+ .map((r) => {
714
+ const wf = r.sourceWorkflow ? ` workflow=${r.sourceWorkflow}` : "";
715
+ return `- ${r.occurredAt} ${r.title} [${r.keywords.join(",")}]${wf} body=${r.bodyChars}c id=${r.reportId.slice(0, 8)} elementId=${r.nodeId}`;
716
+ })
717
+ .join("\n");
718
+ return {
719
+ content: [{ type: "text", text: `${header}\n${rows}` }],
720
+ };
721
+ }
722
+ catch (err) {
723
+ return {
724
+ content: [
725
+ {
726
+ type: "text",
727
+ text: `memory-report-list failed: ${err instanceof Error ? err.message : String(err)}`,
728
+ },
729
+ ],
730
+ isError: true,
731
+ };
732
+ }
733
+ });
734
+ process.stderr.write("[memory-mcp] registered tool=memory-report-read-latest\n");
735
+ process.stderr.write("[memory-mcp] registered tool=memory-report-list\n");
736
+ eagerTool(server, "memory-compiled-truth-history", "Return the audit history of `compiledTruth` values for one entity (:Person | :Organization | :Concept), newest first, capped at 20 revisions. Each row carries the truth text, when it was written, and whether the rewriter or an operator authored it. Use when the operator asks 'how has my understanding of X changed over time?' or 'when did the agent introduce this claim about X?' — pass the entity's elementId and present the diff between adjacent revisions in chat.", {
737
+ nodeId: z
738
+ .string()
739
+ .describe("elementId of the :Person | :Organization | :Concept whose revision history is being read."),
740
+ }, async ({ nodeId }) => {
741
+ if (!accountId)
742
+ return refuseNoAccount("memory-compiled-truth-history");
743
+ try {
744
+ const result = await memoryCompiledTruthHistory({ accountId, nodeId });
745
+ if (result.revisions.length === 0) {
746
+ return {
747
+ content: [
748
+ {
749
+ type: "text",
750
+ text: `No compiled-truth revisions found for nodeId=${nodeId.slice(0, 12)}.`,
751
+ },
752
+ ],
753
+ };
754
+ }
755
+ const header = `Showing ${result.revisions.length} revision(s) (newest first) for nodeId=${nodeId.slice(0, 12)}.`;
756
+ const rows = result.revisions
757
+ .map((r, i) => `## #${i + 1} ${r.writtenAt} source=${r.source} revisionId=${r.revisionId.slice(0, 8)}\n${r.truth}`)
758
+ .join("\n\n");
759
+ return { content: [{ type: "text", text: `${header}\n\n${rows}` }] };
760
+ }
761
+ catch (err) {
762
+ return {
763
+ content: [
764
+ {
765
+ type: "text",
766
+ text: `memory-compiled-truth-history failed: ${err instanceof Error ? err.message : String(err)}`,
767
+ },
768
+ ],
769
+ isError: true,
770
+ };
771
+ }
772
+ });
773
+ process.stderr.write("[memory-mcp] registered tool=memory-compiled-truth-history\n");
774
+ if (!readOnly) {
775
+ eagerTool(server, "memory-write", "Create a new node in the knowledge graph with automatic embedding computation. Every node must be created with at least one relationship — call memory-search first to find target elementIds. Writes targeting :Person, :UserProfile, :AdminUser, :Organization, :LocalBusiness, :CloudflareTunnel, or :CloudflareHostname additionally require an inbound :PRODUCED edge from :Task, :Conversation, or :Message. For autonomous workflows that own a :Task lifecycle, pass the Task's elementId as `producedByTaskId`. For direct asks during a conversation, omit `producedByTaskId` — the platform auto-injects the edge from the active conversation.", {
776
+ labels: z
777
+ .array(z.string())
778
+ .describe("Node labels (e.g. ['Person'], ['Question'], ['DefinedTerm'])"),
779
+ properties: z
780
+ .record(z.string(), z.unknown())
781
+ .describe("Node properties as key-value pairs"),
782
+ scope: z
783
+ .string()
784
+ .describe("Visibility scope — required. Valid values: 'public', 'shared', 'admin', or 'user:{identifier}'."),
785
+ relationships: z
786
+ .array(z.object({
787
+ type: z.string().describe("Relationship type (e.g. HAS_PRICING, OFFERS)"),
788
+ direction: z.enum(["outgoing", "incoming"]),
789
+ targetNodeId: z.string().describe("Element ID of the target node"),
790
+ }))
791
+ .min(1)
792
+ .describe("Relationships to create with existing nodes. At least one is required — a node without an adjacency is noise, not knowledge."),
793
+ producedByTaskId: z
794
+ .string()
795
+ .optional()
796
+ .describe("Active Task elementId for autonomous-workflow writes. When set, an inbound :PRODUCED edge from this Task is composed into relationships before the write. Task must share the same accountId; mismatch is rejected. Omit for direct conversation asks — the platform composes the edge from the active conversation instead."),
797
+ }, async ({ labels, properties, scope, relationships, producedByTaskId }) => {
798
+ if (!accountId)
799
+ return refuseNoAccount("memory-write");
800
+ try {
801
+ const result = await memoryWrite({
802
+ labels,
803
+ properties: properties,
804
+ accountId,
805
+ scope,
806
+ relationships,
807
+ createdBy: {
808
+ agent: envAgentSlug,
809
+ session: resolveSessionId(),
810
+ tool: "memory-write",
811
+ },
812
+ validator,
813
+ producedByTaskId,
814
+ });
815
+ return {
816
+ content: [
817
+ {
818
+ type: "text",
819
+ text: `Node created: [${result.labels.join(", ")}] (ID: ${result.nodeId})`,
820
+ },
821
+ ],
822
+ };
823
+ }
824
+ catch (err) {
825
+ return {
826
+ content: [
827
+ {
828
+ type: "text",
829
+ text: `Write failed: ${err instanceof Error ? err.message : String(err)}`,
830
+ },
831
+ ],
832
+ isError: true,
833
+ };
834
+ }
835
+ });
836
+ eagerTool(server, "memory-report-write", "Persist a workflow's output as a durable :Report node. Reports are append-only, keyword-routed, and embedded for hybrid search. Use at the end of any operator-initiated workflow whose output the operator will want to recall later — daily briefing, dream cycle, ad-hoc analyses. Idempotent on (title, occurredAt-within-same-minute): a second call with the same title in the same minute returns the existing report instead of duplicating. The platform auto-parents the report to the active conversation (or to the account's :AdminUser when no conversation context exists).", {
837
+ title: z
838
+ .string()
839
+ .min(1)
840
+ .describe("Short report title (e.g. 'Daily briefing 2026-05-25', 'Dream cycle 2026-05-25 14:30'). Used for idempotency together with occurredAt — same title in the same minute deduplicates."),
841
+ body: z
842
+ .string()
843
+ .max(10_000)
844
+ .describe("Report body in markdown. Maximum 10,000 characters; trim or summarise above the cap."),
845
+ keywords: z
846
+ .array(z.string().min(1))
847
+ .min(1)
848
+ .describe("Keyword tags used by memory-report-read-latest routing. Always include the workflow slug (e.g. 'daily-briefing', 'dream-cycle') plus the date in 'YYYY-MM-DD' form. Add topic keywords when the report focuses on one subject."),
849
+ sourceWorkflow: z
850
+ .string()
851
+ .optional()
852
+ .describe("Originating workflow slug for indexed lookup (e.g. 'daily-briefing', 'dream-cycle'). Recommended when the report comes from a named skill or scheduled workflow."),
853
+ occurredAt: z
854
+ .string()
855
+ .optional()
856
+ .describe("ISO 8601 timestamp the report describes. Defaults to now(). Override only when persisting a backdated report."),
857
+ }, async ({ title, body, keywords, sourceWorkflow, occurredAt }) => {
858
+ if (!accountId)
859
+ return refuseNoAccount("memory-report-write");
860
+ try {
861
+ const result = await memoryReportWrite({
862
+ accountId,
863
+ title,
864
+ body,
865
+ keywords,
866
+ sourceWorkflow,
867
+ occurredAt,
868
+ conversationNodeId: process.env.SESSION_NODE_ID,
869
+ });
870
+ const status = result.created
871
+ ? `Report created`
872
+ : `Report already existed (idempotent: ${result.idempotencyReason ?? "match"})`;
873
+ return {
874
+ content: [
875
+ {
876
+ type: "text",
877
+ text: `${status} — reportId: ${result.reportId} elementId: ${result.nodeId}`,
878
+ },
879
+ ],
880
+ };
881
+ }
882
+ catch (err) {
883
+ return {
884
+ content: [
885
+ {
886
+ type: "text",
887
+ text: `memory-report-write failed: ${err instanceof Error ? err.message : String(err)}`,
888
+ },
889
+ ],
890
+ isError: true,
891
+ };
892
+ }
893
+ });
894
+ server.tool("memory-update-by-name", "Update an existing node addressed by (label, name, accountId) instead of elementId. Use this as a repair surface when memory-search cannot return an elementId for a node you know exists by name — typically an ingest-created :Organization the search route is failing to surface. Resolves the unique node matching the tuple, then delegates to memory-update (embedding refresh, write gates, compiled-truth refusal, and provenance stamping all carry over). Rejects loudly on zero matches (the row does not exist) and on two-or-more matches (ambiguous — the rejection lists candidate elementIds so you can pick one and call memory-update directly). Trashed nodes are excluded from the lookup. For one-off updates where you already have the elementId from a successful memory-search, prefer memory-update — this tool is the fallback when search hides the node.", {
895
+ label: z.string().describe("The single label to MATCH on (e.g. 'Organization', 'Person', 'Project'). Must be exactly the label carried by the target node — the tool does not iterate label variants."),
896
+ name: z.string().describe("The exact `name` property of the target node (case-sensitive). Forbidden-property rules still apply downstream — if the label rejects `name`, use memory-update with the correct identifier instead."),
897
+ properties: z
898
+ .record(z.string(), z.unknown())
899
+ .describe("Properties to set or overwrite. Same restrictions as memory-update — embedding/accountId/createdAt are silently stripped; compiled-truth fields are refused unless the caller is the compiled-truth-rewriter specialist."),
900
+ }, async ({ label, name, properties }) => {
901
+ if (!accountId)
902
+ return refuseNoAccount("memory-update-by-name");
903
+ try {
904
+ const result = await memoryUpdateByName({
905
+ label,
906
+ name,
907
+ accountId,
908
+ properties: properties,
909
+ createdBy: {
910
+ agent: envAgentSlug,
911
+ session: resolveSessionId(),
912
+ tool: "memory-update-by-name",
913
+ },
914
+ });
915
+ return {
916
+ content: [
917
+ {
918
+ type: "text",
919
+ text: `Node updated: [${result.labels.join(", ")}] (ID: ${result.nodeId})`,
920
+ },
921
+ ],
922
+ };
923
+ }
924
+ catch (err) {
925
+ return {
926
+ content: [
927
+ {
928
+ type: "text",
929
+ text: `Update failed: ${err instanceof Error ? err.message : String(err)}`,
930
+ },
931
+ ],
932
+ isError: true,
933
+ };
934
+ }
935
+ });
936
+ server.tool("memory-update", "Update properties on an existing node in the knowledge graph. Finds the node by element ID, verifies account ownership, sets the provided properties, and recomputes the embedding. To refresh `compiledTruth` / `compiledTruthPublic` on :Person / :Organization / :Concept / :Project / :LocalBusiness, dispatch the `compiled-truth-rewriter` specialist via the Task tool — admin sends the nodeId plus any `operatorHint` / `publicOperatorHint`; the specialist reads the node + 90-day timeline, computes the new summary, and writes it back via memory-update. Direct writes to compiled-truth properties via this tool are refused unless the caller is the compiled-truth-rewriter specialist (gated by MAXY_SPECIALIST env). When you only have the node's name (typically because memory-search couldn't return it), use memory-update-by-name instead.", {
937
+ nodeId: z.string().describe("Element ID of the node to update (from memory-search results)"),
938
+ properties: z
939
+ .record(z.string(), z.unknown())
940
+ .describe("Properties to set or overwrite. Restricted keys (embedding, accountId, createdAt) are ignored. Compiled-truth fields are system-managed; only the compiled-truth-rewriter specialist may write them."),
941
+ }, async ({ nodeId, properties }) => {
942
+ if (!accountId)
943
+ return refuseNoAccount("memory-update");
944
+ try {
945
+ const result = await memoryUpdate({
946
+ nodeId,
947
+ properties: properties,
948
+ accountId,
949
+ createdBy: {
950
+ agent: envAgentSlug,
951
+ session: resolveSessionId(),
952
+ tool: "memory-update",
953
+ },
954
+ });
955
+ return {
956
+ content: [
957
+ {
958
+ type: "text",
959
+ text: `Node updated: [${result.labels.join(", ")}] (ID: ${result.nodeId})`,
960
+ },
961
+ ],
962
+ };
963
+ }
964
+ catch (err) {
965
+ return {
966
+ content: [
967
+ {
968
+ type: "text",
969
+ text: `Update failed: ${err instanceof Error ? err.message : String(err)}`,
970
+ },
971
+ ],
972
+ isError: true,
973
+ };
974
+ }
975
+ });
976
+ server.tool("memory-edge", "Create or delete a typed directed edge between two nodes that already exist in the knowledge graph. Both nodes must belong to the same account. Use action='create' to MERGE the edge (idempotent — returns {created:false} if it already exists) or action='delete' to remove it (returns {deleted:false} if already absent). relationshipType is uppercase-coerced; types starting with underscore are reserved and rejected. Properties are stamped on the edge on CREATE only.", {
977
+ action: z.enum(["create", "delete"]).describe("'create' MERGEs the edge (idempotent); 'delete' removes it (no-op if absent)."),
978
+ fromId: z.string().describe("elementId of the source node (from memory-search results)."),
979
+ toId: z.string().describe("elementId of the target node (from memory-search results)."),
980
+ relationshipType: z.string().describe("Relationship type label — e.g. RELATES_TO, MENTIONS, WORKED_WITH. Uppercase-coerced. Underscore-prefixed types (_SOFT_DELETE, etc.) are reserved and rejected."),
981
+ properties: z.record(z.string(), z.unknown()).optional().describe("Properties to set on the relationship on CREATE. Ignored on DELETE and on idempotent CREATE (MERGE-matched)."),
982
+ }, async ({ action, fromId, toId, relationshipType, properties }) => {
983
+ if (!accountId)
984
+ return refuseNoAccount("memory-edge");
985
+ try {
986
+ const result = await memoryEdge({
987
+ action,
988
+ fromId,
989
+ toId,
990
+ relationshipType,
991
+ properties,
992
+ accountId,
993
+ });
994
+ if ("error" in result) {
995
+ return {
996
+ content: [{ type: "text", text: `memory-edge rejected: ${JSON.stringify(result)}` }],
997
+ isError: true,
998
+ };
999
+ }
1000
+ const detail = "created" in result
1001
+ ? result.created
1002
+ ? "Edge created."
1003
+ : "Edge already exists (idempotent)."
1004
+ : result.deleted
1005
+ ? "Edge deleted."
1006
+ : "Edge was not present (no-op).";
1007
+ return { content: [{ type: "text", text: detail }] };
1008
+ }
1009
+ catch (err) {
1010
+ return {
1011
+ content: [{ type: "text", text: `memory-edge failed: ${err instanceof Error ? err.message : String(err)}` }],
1012
+ isError: true,
1013
+ };
1014
+ }
1015
+ });
1016
+ eagerTool(server, "session-compact-status", "Check whether a session compaction summary exists in the graph. Returns the most recent summary title, date, and briefing text. Use this at session start to determine whether a prior session was compacted and its context should be restored.", {}, async () => {
1017
+ if (!accountId)
1018
+ return refuseNoAccount("session-compact-status");
1019
+ const session = getSession();
1020
+ try {
1021
+ const result = await session.run(`MATCH (n:CreativeWork {accountId: $accountId})
1022
+ WHERE n.title STARTS WITH 'Session Summary'
1023
+ RETURN n.title AS title, n.createdAt AS createdAt, n.abstract AS abstract
1024
+ ORDER BY n.createdAt DESC LIMIT 1`, { accountId });
1025
+ if (result.records.length === 0) {
1026
+ return { content: [{ type: "text", text: "No session summaries found." }] };
1027
+ }
1028
+ const r = result.records[0];
1029
+ const text = `Title: ${r.get("title")}\nDate: ${r.get("createdAt")}\n\n${r.get("abstract")}`;
1030
+ return { content: [{ type: "text", text }] };
1031
+ }
1032
+ catch (err) {
1033
+ return {
1034
+ content: [{ type: "text", text: `session-compact-status failed: ${err instanceof Error ? err.message : String(err)}` }],
1035
+ isError: true,
1036
+ };
1037
+ }
1038
+ finally {
1039
+ await session.close();
1040
+ }
1041
+ });
1042
+ eagerTool(server, "session-compact", "Write a session summary to the knowledge graph. Call this when compacting context — provide the full briefing and the tool handles labelling, structure, and embedding.", {
1043
+ content: z.string().describe("The session briefing — what was discussed, decisions made, work in progress, open questions, and anything learned about the user or their business"),
1044
+ }, async ({ content }) => {
1045
+ if (!accountId)
1046
+ return refuseNoAccount("session-compact");
1047
+ try {
1048
+ // Write doctrine: session summaries link back to the
1049
+ // Conversation they summarise, so an operator searching a session's
1050
+ // graph sees the summary hanging off its source. Hard-require
1051
+ // SESSION_ID — the previous revision fell back to "most recent
1052
+ // admin Conversation" which would cross-attach a summary to an
1053
+ // unrelated session hours later (reviewer flagged this as silent
1054
+ // provenance corruption).
1055
+ const sessionIdForCompact = resolveSessionId();
1056
+ if (!sessionIdForCompact) {
1057
+ throw new Error("session-compact requires SESSION_ID — the tool must be invoked inside an admin session so the summary can link back to its Conversation.");
1058
+ }
1059
+ const lookupSession = getSession();
1060
+ let conversationElementId = null;
1061
+ try {
1062
+ const r = await lookupSession.run(`MATCH (c:Conversation {sessionKey: $sessionId, accountId: $accountId}) RETURN elementId(c) AS id LIMIT 1`, { sessionId: sessionIdForCompact, accountId });
1063
+ if (r.records.length > 0) {
1064
+ conversationElementId = r.records[0].get("id");
1065
+ }
1066
+ }
1067
+ finally {
1068
+ await lookupSession.close();
1069
+ }
1070
+ if (!conversationElementId) {
1071
+ throw new Error(`session-compact: no Conversation found with sessionKey=${sessionIdForCompact} in this account. Cannot link summary — refuse rather than create an orphan.`);
1072
+ }
1073
+ const title = `Session Summary ${new Date().toISOString().slice(0, 10)}`;
1074
+ const result = await memoryWrite({
1075
+ labels: ["CreativeWork"],
1076
+ properties: { title, abstract: content },
1077
+ accountId,
1078
+ scope: "admin",
1079
+ relationships: [
1080
+ {
1081
+ type: "SUMMARIZES",
1082
+ direction: "outgoing",
1083
+ targetNodeId: conversationElementId,
1084
+ },
1085
+ ],
1086
+ createdBy: {
1087
+ agent: envAgentSlug,
1088
+ session: sessionIdForCompact,
1089
+ tool: "session-compact",
1090
+ },
1091
+ validator,
1092
+ });
1093
+ return {
1094
+ content: [{ type: "text", text: `Session summary saved (ID: ${result.nodeId})` }],
1095
+ };
1096
+ }
1097
+ catch (err) {
1098
+ return {
1099
+ content: [{ type: "text", text: `session-compact failed: ${err instanceof Error ? err.message : String(err)}` }],
1100
+ isError: true,
1101
+ };
1102
+ }
1103
+ });
1104
+ eagerTool(server, "memory-reindex", "Rebuild vector embeddings for all nodes missing embeddings. Run after seeding or bulk updates.", {}, async () => {
1105
+ if (!accountId)
1106
+ return refuseNoAccount("memory-reindex");
1107
+ try {
1108
+ const result = await memoryReindex(accountId);
1109
+ return {
1110
+ content: [
1111
+ {
1112
+ type: "text",
1113
+ text: `Reindex complete: ${result.nodesProcessed} processed, ${result.nodesSkipped} skipped, ${result.scopeBackfilled} scope backfilled.${result.errors.length > 0 ? `\nErrors: ${result.errors.join("; ")}` : ""}`,
1114
+ },
1115
+ ],
1116
+ };
1117
+ }
1118
+ catch (err) {
1119
+ console.error("[memory-reindex] failed:", err instanceof Error ? err.message : String(err));
1120
+ return {
1121
+ content: [
1122
+ {
1123
+ type: "text",
1124
+ text: `Reindex failed: ${err instanceof Error ? err.message : String(err)}`,
1125
+ },
1126
+ ],
1127
+ isError: true,
1128
+ };
1129
+ }
1130
+ });
1131
+ server.tool("memory-ingest-extract", "Extract text from an uploaded file and cache it server-side for memory-ingest. " +
1132
+ "Supports PDF (via pdftotext), plain text, and markdown. " +
1133
+ "Rejects CSV (structured data — use memory-write instead) and images (metadata-only). " +
1134
+ "Returns file metadata + a short preview; the full text lives in the in-process cache keyed by attachmentId. " +
1135
+ "The dispatched specialist reads the cached text and produces the typed-section JSON in-turn from the loaded ontology, then calls memory-ingest directly.", {
1136
+ storagePath: z.string().describe("Absolute path to the stored file on disk"),
1137
+ filename: z.string().describe("Original filename as uploaded"),
1138
+ mimeType: z.string().describe("MIME type of the file"),
1139
+ attachmentId: z.string().describe("UUID of the file attachment — used as cache key for memory-ingest"),
1140
+ }, async ({ storagePath, filename, mimeType, attachmentId }) => {
1141
+ if (!accountId)
1142
+ return refuseNoAccount("memory-ingest-extract");
1143
+ try {
1144
+ const result = await memoryIngestExtract({ storagePath, filename, mimeType, attachmentId });
1145
+ return {
1146
+ content: [{
1147
+ type: "text",
1148
+ text: JSON.stringify(result),
1149
+ }],
1150
+ };
1151
+ }
1152
+ catch (err) {
1153
+ return {
1154
+ content: [{
1155
+ type: "text",
1156
+ text: `memory-ingest-extract failed for "${filename}": ${err instanceof Error ? err.message : String(err)}`,
1157
+ }],
1158
+ isError: true,
1159
+ };
1160
+ }
1161
+ });
1162
+ server.tool("memory-ingest", "Write a classified document or conversation-archive session into the graph as typed nodes anchored to a subject. " +
1163
+ "Two mutually-exclusive parent paths — exactly one MUST be set: " +
1164
+ "(1) **Document path** — set `attachmentId` (requires a prior memory-ingest-extract call for the text cache). MERGEs under `:KnowledgeDocument` keyed on attachmentId. The typed-section JSON in `sections` is produced by the dispatched specialist in-turn from the loaded ontology. " +
1165
+ "(2) **Conversation-archive path** — set `conversationIdentity` along with the conversation-document fields (`source`, `archiveSha256`, `archiveSourceFile`, `participantElementIds`, `lastIngestedMessageHash`, `lastIngestedMessageAt`, `sessionIndex`, optionally `archiveTitle` and `cleanupPriorChunks`). MERGEs under `:ConversationArchive` keyed on conversationIdentity. The specialist invokes this once per session prepared by `conversation-archive-ingest.sh`, advancing the cursor atomically with each session's chunks. `:Section.body` is server-sliced from the per-session turnText tempfile the bin wrote at `turnTextCachePath(conversationIdentity, archiveSha256, sessionIndex)` — the specialist emits offsets, never body text (server-sliced via per-session tempfile). " +
1166
+ "Each section becomes either a typed graph node (Position, Service, Credential, etc.) anchored to the named " +
1167
+ "subject via the natural ontology edge plus a (parent)-[:REFERENCES]->(typed) link, or — for " +
1168
+ "UNMAPPED sections — a generic :Section node hanging off the parent via HAS_SECTION (legacy fallback). " +
1169
+ "Document re-ingest replaces the document's typed and untyped children (same attachmentId). Conversation-archive re-ingest is delta-append: prior chunks are never touched unless `cleanupPriorChunks=true` is set (only legitimate on the FIRST session of a `--rebuild` run). " +
1170
+ "Shared related entities (Organizations, Persons referenced by typed nodes) " +
1171
+ "are MERGEd by identifying property and never deleted on re-ingest.", {
1172
+ attachmentId: z.string().optional().describe("UUID of the file attachment — must match a prior memory-ingest-extract call. Document path only — mutually exclusive with conversationIdentity."),
1173
+ conversationIdentity: z.string().optional().describe("sha256(accountId + ':' + sortedParticipantElementIds.join(',')) — produced by `conversation-archive-ingest.sh`. Conversation-archive path only — mutually exclusive with attachmentId."),
1174
+ source: z.enum(CONVERSATION_SOURCES).optional().describe("Conversation source enum. Required on the conversation-archive path."),
1175
+ archiveSha256: z.string().optional().describe("sha256 of the export bytes. Required on the conversation-archive path; stamped on every :Section chunk so cleanup-by-archiveSha256 is exact."),
1176
+ archiveSourceFile: z.string().optional().describe("Basename of the source file (e.g. `_chat.txt`). Required on the conversation-archive path."),
1177
+ participantElementIds: z.array(z.string()).optional().describe("Owner + operator-confirmed participants (elementIds). Required on the conversation-archive path. Owner is included first; :PARTICIPANT_IN edges land for every entry. Order is irrelevant for conversationIdentity, which is derived from a sorted set."),
1178
+ lastIngestedMessageHash: z.string().optional().describe("sha256 of the last message in THIS session. Required on the conversation-archive path; written to :ConversationArchive.lastIngestedMessageHash atomically with this session's chunks for delta-append on the next ingest."),
1179
+ lastIngestedMessageAt: z.string().optional().describe("ISO timestamp of the last message in THIS session. Required on the conversation-archive path; written to :ConversationArchive.lastIngestedMessageAt."),
1180
+ archiveTitle: z.string().optional().describe("Stable archive title (`<source> · <owner> ↔ <others> · <YYYY-MM-DD>→<YYYY-MM-DD>`) computed by `conversation-archive-ingest.sh`. Written ON CREATE and COALESCE-on-MATCH so the UI label is stable across re-ingests. Conversation-archive path only."),
1181
+ cleanupPriorChunks: z.boolean().optional().describe("When true, the writer deletes prior chunks for the matching archiveSha256 before MERGE. Set this ONLY on the FIRST session of a `--rebuild` run; subsequent sessions in the same run MUST set it false or the writer drops chunks the earlier sessions just wrote. Defaults to false."),
1182
+ sessionIndex: z.number().int().min(1).optional().describe("Conversation-archive path: required. The per-session index emitted by `conversation-archive-ingest.sh` (1-based). The writer uses it together with `conversationIdentity` and `archiveSha256` to locate the per-session turnText tempfile written by the bin and slice :Section.body server-side from a non-LLM source (server-sliced via per-session tempfile). Ignored on the document path."),
1183
+ documentSummary: z.string().describe("Classifier-produced summary (1-3 sentences) for the document path. On the conversation-archive path, pass the stable `archiveTitle` so the parent's summary matches the title."),
1184
+ anchorNodeId: z.string().describe("Element ID of the anchor node. Document path: the operator-confirmed document subject (UserProfile/LocalBusiness/Person/Organization). Conversation-archive path: the owner :AdminUser elementId (or :Person for a third-party archive)."),
1185
+ anchorLabel: z.string().describe("Primary label of the anchor node (e.g. 'UserProfile', 'LocalBusiness', 'AdminUser'). Used in the per-section MATCH for anchor-edge creation."),
1186
+ sections: z.array(z.object({
1187
+ kind: z.string().describe("Section kind from the closed enumeration (Position/Education/Chapter/Parties/.../Other), or a standalone-node kind like 'Project'."),
1188
+ title: z.string(),
1189
+ body: z.string().optional().describe("Omit on BOTH paths — the writer derives body server-side via cachedText.slice(sourceStart, sourceEnd). Document-path source: extractCache (server-side). Conversation-archive-path source: per-session tempfile written by the bin (server-sliced via per-session tempfile). Any value supplied here is logged and ignored."),
1190
+ summary: z.string().describe("1-3 sentence summary of the section, ≤500 chars; stored as :Section.summary."),
1191
+ sourceStart: z.number().int().nonnegative().describe("Whole-document char offset where the section begins (inclusive). Translated to whole-doc coords by the chunked-classify path."),
1192
+ sourceEnd: z.number().int().nonnegative().describe("Whole-document char offset where the section ends (exclusive)."),
1193
+ properties: z.record(z.string(), z.unknown()),
1194
+ anchorEdge: z.object({
1195
+ type: z.string(),
1196
+ direction: z.enum(["from-anchor", "to-anchor"]),
1197
+ properties: z.record(z.string(), z.unknown()).optional(),
1198
+ }).nullable(),
1199
+ related: z.array(z.object({
1200
+ kind: z.string(),
1201
+ properties: z.record(z.string(), z.unknown()),
1202
+ edge: z.object({
1203
+ type: z.string(),
1204
+ direction: z.enum(["outgoing", "incoming"]),
1205
+ properties: z.record(z.string(), z.unknown()).optional(),
1206
+ }),
1207
+ merge: z.boolean().optional(),
1208
+ })).optional(),
1209
+ classifierReason: z.string().optional().describe("Required when kind === 'Other' — one-line description of what the section is about, stamped on :Section:Other.classifierReason for ontology-growth review."),
1210
+ })).describe("Sections in reading order, produced in-turn by the dispatched specialist from the extract cache. The writer chains them via :NEXT in this order."),
1211
+ documentEdges: z.array(z.object({
1212
+ type: z.string(),
1213
+ direction: z.enum(["outgoing", "incoming"]),
1214
+ targetKind: z.string(),
1215
+ targetProperties: z.record(z.string(), z.unknown()),
1216
+ merge: z.boolean().optional(),
1217
+ })).optional().describe("Document-level edges (e.g. PARTY edges off KnowledgeDocument for a contract). Currently emitted by the classifier when a Parties section is detected."),
1218
+ orphanCandidates: z.array(z.object({
1219
+ kind: z.string(),
1220
+ label: z.string(),
1221
+ reason: z.string(),
1222
+ })).optional().describe("Orphan candidates from the classifier — nodes the classifier could not edge naturally. NOT written to the graph; the skill surfaces these to the operator loudly so they decide whether the orphan is intentional (rare, valid) or a classifier miss (bug)."),
1223
+ scope: z.string().describe("Visibility scope for all created nodes — required. Valid values: 'public', 'shared', 'admin', or 'user:{identifier}'."),
1224
+ sourceUrl: z.string().optional().describe("Original URL for web-sourced documents. Omit for file uploads."),
1225
+ sourceType: z.string().optional().describe("Provenance: 'upload' or 'web'."),
1226
+ documentKeywords: z.array(z.string()).optional().describe("Classifier-extracted topic keywords."),
1227
+ userKeywords: z.array(z.string()).optional().describe("Keywords explicitly provided by the user. Merged additively with documentKeywords."),
1228
+ sessionId: z.string().optional().describe("Session UUID for provenance stamping. Optional override; the server falls back to the SESSION_ID env var set by the admin agent at MCP spawn. The agent only needs to pass this when calling outside the normal admin-session context."),
1229
+ inlineRewrite: z.boolean().optional().describe("When true, after writing all sections and edges, run the inline compiled-truth reconciliation gate. Counts MENTIONS/REFERENCES edges from this document (KnowledgeDocument + its sections) to existing entities that carry compiledTruth. Entities with >= inlineRewriteThreshold such edges (default 2) and compiledTruthUpdatedAt older than 7 days are returned in inlineRewriteCandidates. Dispatch the compiled-truth-rewriter specialist for each before the skill returns. Disabled by default."),
1230
+ forceRewrite: z.boolean().optional().describe("When inlineRewrite is true, bypass the 7-day per-entity cooldown on compiledTruthUpdatedAt. All threshold-qualifying entities are returned as inlineRewriteCandidates regardless of when their truth was last rewritten."),
1231
+ inlineRewriteThreshold: z.number().int().min(1).optional().describe("Minimum MENTIONS/REFERENCES edge count from this source to an entity for it to qualify as an inline-rewrite candidate. Default: 2."),
1232
+ }, async ({ attachmentId, conversationIdentity, source, archiveSha256, archiveSourceFile, participantElementIds, lastIngestedMessageHash, lastIngestedMessageAt, archiveTitle, cleanupPriorChunks, sessionIndex, documentSummary, anchorNodeId, anchorLabel, sections, documentEdges, orphanCandidates, scope, sourceUrl, sourceType, documentKeywords, userKeywords, sessionId: sessionIdOverride, inlineRewrite, forceRewrite, inlineRewriteThreshold }) => {
1233
+ if (!accountId)
1234
+ return refuseNoAccount("memory-ingest");
1235
+ try {
1236
+ const result = await memoryIngest({
1237
+ accountId,
1238
+ attachmentId,
1239
+ conversationIdentity,
1240
+ source,
1241
+ archiveSha256,
1242
+ archiveSourceFile,
1243
+ participantElementIds,
1244
+ lastIngestedMessageHash,
1245
+ lastIngestedMessageAt,
1246
+ archiveTitle,
1247
+ cleanupPriorChunks,
1248
+ sessionIndex,
1249
+ documentSummary,
1250
+ anchorNodeId,
1251
+ anchorLabel,
1252
+ sections,
1253
+ documentEdges,
1254
+ orphanCandidates,
1255
+ scope,
1256
+ sourceUrl,
1257
+ sourceType,
1258
+ documentKeywords,
1259
+ userKeywords,
1260
+ sessionId: resolveSessionId(sessionIdOverride),
1261
+ inlineRewrite,
1262
+ forceRewrite,
1263
+ inlineRewriteThreshold,
1264
+ });
1265
+ return {
1266
+ content: [{
1267
+ type: "text",
1268
+ text: JSON.stringify({
1269
+ documentNodeId: result.documentNodeId,
1270
+ sectionCount: result.sectionCount,
1271
+ kindBreakdown: result.kindBreakdown,
1272
+ edgeBreakdown: result.edgeBreakdown,
1273
+ relatedCount: result.relatedCount,
1274
+ standaloneCount: result.standaloneCount,
1275
+ orphanCandidates: result.orphanCandidates,
1276
+ documentSummary: result.documentSummary,
1277
+ keywords: result.keywords,
1278
+ cleanedPriorChunks: result.cleanedPriorChunks,
1279
+ inlineRewriteCandidates: result.inlineRewriteCandidates,
1280
+ inlineRewriteDeferred: result.inlineRewriteDeferred,
1281
+ }),
1282
+ }],
1283
+ };
1284
+ }
1285
+ catch (err) {
1286
+ return {
1287
+ content: [{
1288
+ type: "text",
1289
+ text: `memory-ingest failed: ${err instanceof Error ? err.message : String(err)}`,
1290
+ }],
1291
+ isError: true,
1292
+ };
1293
+ }
1294
+ });
1295
+ eagerTool(server, "kd-classify", "Operator-solicited reclassify for any :KnowledgeDocument that carries a `body` property (today: email-thread KDs; future: any thread-shaped source). Reads the KD by attachmentId, decides via a body-growth gate (proceed iff body grew ≥25% since the last classify, or first-ever classify), stages the body to a temp file under $ACCOUNT_DIR/tmp/, and returns a dispatch envelope the admin agent hands to the `librarian` specialist. Librarian runs the document-ingest skill against the temp file; memory-ingest MERGEs by attachmentId, replacing any prior :Section children, and stamps lastClassifiedAt + lastClassifiedBodyLength on the KD so the next gate call has a baseline. Bodyless attachment KDs (PDFs etc.) are not supported here — they have no growth signal.", {
1296
+ attachmentId: z.string().describe("attachmentId of the :KnowledgeDocument to classify. For email threads, this is sha256(`email:<accountId>:<rootMessageId>`)."),
1297
+ }, async ({ attachmentId }) => {
1298
+ if (!accountId)
1299
+ return refuseNoAccount("kd-classify");
1300
+ try {
1301
+ const text = await kdClassify({ accountId, attachmentId });
1302
+ return { content: [{ type: "text", text }] };
1303
+ }
1304
+ catch (err) {
1305
+ return {
1306
+ content: [{
1307
+ type: "text",
1308
+ text: `kd-classify failed: ${err instanceof Error ? err.message : String(err)}`,
1309
+ }],
1310
+ isError: true,
1311
+ };
1312
+ }
1313
+ });
1314
+ eagerTool(server, "memory-archive-write", "Bulk-archive write surface for flat datasets. " +
1315
+ "Writes typed entities + natural edges in 500-row UNWIND batches. The Cypher body is fixed " +
1316
+ "server-side per `archiveType`; the agent supplies parsed rows + the discriminant, never " +
1317
+ "raw Cypher. Use ONLY for flat first-class entity exports (LinkedIn Connections.csv and " +
1318
+ "future CRM-type seeds). Conversation transcripts (WhatsApp, Telegram, Signal, …) flow " +
1319
+ "through the `conversation-archive` skill (memory/bin/conversation-archive-ingest.sh) " +
1320
+ "instead, which writes :ConversationArchive (Task 397 — keyed on conversationIdentity) + :Section chunks via memory-ingest. " +
1321
+ "Currently supported archiveType values: `linkedin-connections`, `obsidian-vault` (invoked indirectly by the obsidian-import skill via the obsidian-vault-import tool).", {
1322
+ archiveType: z
1323
+ .enum(["linkedin-connections", "obsidian-vault"])
1324
+ .describe("Discriminant naming the per-source schema and Cypher body the server runs. Add a new value here only when the corresponding handler is added in memory-archive-write.ts."),
1325
+ ownerNodeId: z
1326
+ .string()
1327
+ .min(1)
1328
+ .describe("elementId of the archive owner — :AdminUser for an operator's own archive, or :Person for an external-archive owner. Confirmed during the skill's owner-confirmation flow before this tool is invoked."),
1329
+ rows: z
1330
+ .array(z.record(z.string(), z.unknown()))
1331
+ .min(1)
1332
+ .describe("Parsed rows. The skill's selective-ingest gate runs BEFORE this tool — large blanket archives get filtered (Company / Position / Connected On range for linkedin-connections) before the write call."),
1333
+ sessionId: z
1334
+ .string()
1335
+ .optional()
1336
+ .describe("Skill-run UUID for provenance stamping. Falls back to SESSION_ID env var when absent."),
1337
+ }, async ({ archiveType, ownerNodeId, rows, sessionId: sessionIdOverride }) => {
1338
+ if (!accountId)
1339
+ return refuseNoAccount("memory-archive-write");
1340
+ try {
1341
+ const result = await memoryArchiveWrite({
1342
+ archiveType,
1343
+ ownerNodeId,
1344
+ accountId,
1345
+ rows: rows,
1346
+ sessionId: resolveSessionId(sessionIdOverride),
1347
+ });
1348
+ return {
1349
+ content: [{
1350
+ type: "text",
1351
+ text: JSON.stringify(result),
1352
+ }],
1353
+ };
1354
+ }
1355
+ catch (err) {
1356
+ return {
1357
+ content: [{
1358
+ type: "text",
1359
+ text: `memory-archive-write failed: ${err instanceof Error ? err.message : String(err)}`,
1360
+ }],
1361
+ isError: true,
1362
+ };
1363
+ }
1364
+ });
1365
+ eagerTool(server, "obsidian-vault-import", "Two-phase server-side ingestion for an extracted Obsidian vault directory. " +
1366
+ "Phase 1 (`mode='dry-run'`) walks the vault, parses pages/wikilinks/tags/attachments, " +
1367
+ "classifies wikilinks against intra-vault pages + existing graph entities (fuzzy match), " +
1368
+ "and returns a plan with any ambiguities the operator must disambiguate. " +
1369
+ "Phase 2 (`mode='commit'`) takes the operator's resolutions, applies content-hash " +
1370
+ "idempotency against existing :KnowledgeDocument nodes, copies attachments to " +
1371
+ "{accountDir}/archive/obsidian/<importId>/, and invokes memory-archive-write with " +
1372
+ "archiveType='obsidian-vault'. The agent never reads or parses markdown — parsing is " +
1373
+ "fully server-side. Routed from the obsidian-import skill under the database-operator " +
1374
+ "specialist; do not call directly from admin chat.", {
1375
+ ownerNodeId: z
1376
+ .string()
1377
+ .min(1)
1378
+ .describe("elementId of the vault owner — :AdminUser for the operator's own vault, :Person for a vault ingested for reference. Confirmed via the skill's owner-confirmation flow before this tool is invoked."),
1379
+ extractedDir: z
1380
+ .string()
1381
+ .min(1)
1382
+ .describe("Absolute path to the extracted vault directory (typically the output of unzip-attachment under <accountDir>/extracted/<id>/). Must be a directory tree of markdown + asset files."),
1383
+ mode: z
1384
+ .enum(["dry-run", "commit"])
1385
+ .describe("`dry-run` returns the resolution plan + ambiguities without writing. `commit` requires the importId returned by the prior dry-run and a `resolutions` map covering every ambiguity."),
1386
+ importId: z
1387
+ .string()
1388
+ .optional()
1389
+ .describe("Stable identifier for the import run. Generated by dry-run; passed back in the commit call so observability lines tie together."),
1390
+ filters: z
1391
+ .object({
1392
+ folderPrefixes: z.array(z.string()).optional()
1393
+ .describe("Vault-relative folder prefixes (with trailing slash optional) to include. Pages outside these prefixes are skipped."),
1394
+ tags: z.array(z.string()).optional()
1395
+ .describe("Tag tokens (without `#`) to filter by. A page must carry at least one to qualify."),
1396
+ modifiedSince: z.string().optional()
1397
+ .describe("ISO 8601 date or epoch-ms. Pages with mtime older than this are skipped."),
1398
+ })
1399
+ .optional()
1400
+ .describe("Selective-ingest filter. The skill's filter conversation drives this — the operator picks folder / tag / modified-since combinations."),
1401
+ resolutions: z
1402
+ .record(z.string(), z.discriminatedUnion("kind", [
1403
+ z.object({ kind: z.literal("page"), obsidianPath: z.string() }),
1404
+ z.object({ kind: z.literal("entity"), nodeId: z.string() }),
1405
+ z.object({ kind: z.literal("stub") }),
1406
+ ]))
1407
+ .optional()
1408
+ .describe("Operator answers to dry-run ambiguities, keyed by the ambiguity id the dry-run returned. Required on commit when ambiguities were reported."),
1409
+ selectiveIngestThreshold: z
1410
+ .number()
1411
+ .int()
1412
+ .positive()
1413
+ .optional()
1414
+ .describe("Page-count threshold above which dry-run sets `selectiveIngestSuggested=true`. Default 100."),
1415
+ sessionId: z
1416
+ .string()
1417
+ .optional()
1418
+ .describe("Skill-run UUID for provenance stamping. Falls back to SESSION_ID env var when absent."),
1419
+ }, async ({ ownerNodeId, extractedDir, mode, importId, filters, resolutions, selectiveIngestThreshold, sessionId: sessionIdOverride, }) => {
1420
+ if (!accountId)
1421
+ return refuseNoAccount("obsidian-vault-import");
1422
+ try {
1423
+ const result = await obsidianVaultImport({
1424
+ accountId,
1425
+ ownerNodeId,
1426
+ extractedDir,
1427
+ mode,
1428
+ importId,
1429
+ filters: filters,
1430
+ resolutions: resolutions,
1431
+ selectiveIngestThreshold,
1432
+ sessionId: resolveSessionId(sessionIdOverride),
1433
+ });
1434
+ return {
1435
+ content: [{
1436
+ type: "text",
1437
+ text: JSON.stringify(result),
1438
+ }],
1439
+ };
1440
+ }
1441
+ catch (err) {
1442
+ return {
1443
+ content: [{
1444
+ type: "text",
1445
+ text: `obsidian-vault-import failed: ${err instanceof Error ? err.message : String(err)}`,
1446
+ }],
1447
+ isError: true,
1448
+ };
1449
+ }
1450
+ });
1451
+ // retired the `whatsapp-export-insight-pass` Phase-2 tool
1452
+ // generalised the entire conversation-archive ingest path (no longer
1453
+ // WhatsApp-specific) — see `memory/skills/conversation-archive/` and
1454
+ // `memory/bin/conversation-archive-ingest.{mjs,sh}`. Phase-2 insight
1455
+ // derivation will operate on conversation-document :Section chunks regardless of
1456
+ // source.
1457
+ server.tool("memory-ingest-web", "Adapter for web-content ingestion. Accepts a URL, its pre-fetched readable content " +
1458
+ "(the agent calls WebFetch first, then passes the text here), and the page's editorial title parsed from " +
1459
+ "the HTML `<title>` / `og:title`. Writes the content to a temp file and delegates to memory-ingest-extract — " +
1460
+ "caching the text under a freshly-generated attachmentId. The dispatched specialist then produces typed-section " +
1461
+ "JSON in-turn from the loaded ontology and calls memory-ingest, exactly as for a file upload. " +
1462
+ "Title fallback chain when the caller omits `title`: markdown H1 → URL-derived slug → URL. Body prose is never used as a title. " +
1463
+ "If the URL was previously ingested, returns the existing document info so the agent can inform the user.", {
1464
+ url: z.string().describe("The web page URL being ingested"),
1465
+ content: z.string().describe("The readable text content of the web page (pre-fetched by the agent via WebFetch)"),
1466
+ title: z.string().optional().describe("Editorial page title parsed by the caller from the HTML `<title>` / `og:title` tag. " +
1467
+ "When present, used verbatim as `KnowledgeDocument.name` (capped at 200 chars). " +
1468
+ "When absent, the server falls back to the markdown H1, then a URL-derived slug, then the URL."),
1469
+ scope: z.string().optional().describe("Intended visibility scope (for logging). The actual scope is set when the agent subsequently calls memory-ingest."),
1470
+ }, async ({ url, content, title, scope }) => {
1471
+ if (!accountId)
1472
+ return refuseNoAccount("memory-ingest-web");
1473
+ try {
1474
+ const result = await memoryIngestWeb({
1475
+ accountId,
1476
+ url,
1477
+ content,
1478
+ title,
1479
+ scope,
1480
+ });
1481
+ const response = {
1482
+ attachmentId: result.attachmentId,
1483
+ title: result.title,
1484
+ titleSource: result.titleSource,
1485
+ sourceUrl: url,
1486
+ sourceType: "web",
1487
+ ...result.extract,
1488
+ };
1489
+ if (result.existingDocument) {
1490
+ response.existingDocument = result.existingDocument;
1491
+ }
1492
+ return {
1493
+ content: [{
1494
+ type: "text",
1495
+ text: JSON.stringify(response),
1496
+ }],
1497
+ };
1498
+ }
1499
+ catch (err) {
1500
+ return {
1501
+ content: [{
1502
+ type: "text",
1503
+ text: `memory-ingest-web failed: ${err instanceof Error ? err.message : String(err)}`,
1504
+ }],
1505
+ isError: true,
1506
+ };
1507
+ }
1508
+ });
1509
+ server.tool("memory-find-candidates", "Deterministic bulk-delete selector for Conversation nodes. Returns a structured list of candidates " +
1510
+ "matching a fixed-name filter ('empty' = zero :PART_OF messages; 'single-assistant' = exactly one " +
1511
+ "assistant-role message) and an opaque filterToken. Pair with memory-delete(filterToken=…) — the server " +
1512
+ "re-runs the same predicate per elementId before trashing, so a stale or forged token never deletes. " +
1513
+ "Never author custom delete-selection Cypher for bulk flows; always use this tool.", {
1514
+ filter: z.enum(["empty", "single-assistant"]).describe("Selection predicate. 'empty' = no :PART_OF Messages. 'single-assistant' = exactly one :PART_OF " +
1515
+ "Message with role='assistant'. A content-matching filter ('no-real-user-input') is not yet available."),
1516
+ agentType: z.enum(["admin", "public"]).optional().describe("Scope to conversations matching c.agentType. Omit to scope across both."),
1517
+ limit: z.number().int().positive().optional().describe("Max candidates to return (default 200, hard cap 1000)."),
1518
+ dryRun: z.boolean().optional().describe("Preview matches without minting an actionable filterToken. Candidates are listed in the response, but no delete can be performed against them — caller must re-run without dryRun to receive a token."),
1519
+ }, async ({ filter, agentType, limit, dryRun }) => {
1520
+ if (!accountId)
1521
+ return refuseNoAccount("memory-find-candidates");
1522
+ try {
1523
+ const result = await memoryFindCandidates({ accountId, filter, agentType, limit, dryRun });
1524
+ if (result.items.length === 0) {
1525
+ return { content: [{ type: "text", text: `No candidates matched filter=${filter} agentType=${agentType ?? "any"}. No delete will happen.` }] };
1526
+ }
1527
+ const tokenLine = result.dryRun
1528
+ ? "filterToken=(none — dryRun; re-run without dryRun to get an actionable token)"
1529
+ : `filterToken=${result.filterToken}`;
1530
+ const trailer = result.dryRun
1531
+ ? "This is a dryRun preview. No delete can be performed until you re-run without dryRun."
1532
+ : "Pass each elementId to memory-delete with the filterToken above. The server re-verifies on every call.";
1533
+ const lines = [
1534
+ `Matched ${result.matched} candidate(s) for filter=${filter} agentType=${agentType ?? "any"}.`,
1535
+ tokenLine,
1536
+ "",
1537
+ trailer,
1538
+ "",
1539
+ ...result.items.map((i) => {
1540
+ const preview = i.firstUserMsgPreview ? ` userPreview=${JSON.stringify(i.firstUserMsgPreview)}` : "";
1541
+ return `- elementId=${i.elementId} sessionId=${i.sessionId ?? "null"} assistantMsgs=${i.assistantMsgCount} realUserMsgs=${i.realUserMsgCount}${preview}`;
1542
+ }),
1543
+ ];
1544
+ return { content: [{ type: "text", text: lines.join("\n") }] };
1545
+ }
1546
+ catch (err) {
1547
+ return {
1548
+ content: [{ type: "text", text: `memory-find-candidates failed: ${err instanceof Error ? err.message : String(err)}` }],
1549
+ isError: true,
1550
+ };
1551
+ }
1552
+ });
1553
+ server.tool("memory-node-exists", "Deterministic label-existence check for installer-seeded singleton roots. " +
1554
+ "Returns { exists, elementId, labels } for a single label/accountId lookup, " +
1555
+ "bypassing the memory-search ranking stack so an installer-seeded node with " +
1556
+ "empty content properties (e.g. a freshly seeded :LocalBusiness with no name yet) " +
1557
+ "is still reported as exists=true. Allow-list of labels is fixed: LocalBusiness, " +
1558
+ "AdminUser, UserProfile, Person. Refuses any other label — use memory-search for " +
1559
+ "ranked discovery on general labels. Use this before any branch that claims a " +
1560
+ "singleton root is missing.", {
1561
+ label: z.enum(MEMORY_NODE_EXISTS_LABELS).describe("Installer-seeded singleton label. One of: LocalBusiness, AdminUser, UserProfile, Person."),
1562
+ }, async ({ label }) => {
1563
+ if (!accountId)
1564
+ return refuseNoAccount("memory-node-exists");
1565
+ try {
1566
+ const result = await memoryNodeExists({ accountId, label });
1567
+ const payload = JSON.stringify(result);
1568
+ return { content: [{ type: "text", text: payload }] };
1569
+ }
1570
+ catch (err) {
1571
+ return {
1572
+ content: [{ type: "text", text: `memory-node-exists failed: ${err instanceof Error ? err.message : String(err)}` }],
1573
+ isError: true,
1574
+ };
1575
+ }
1576
+ });
1577
+ server.tool("memory-delete", "Soft-delete a single graph node by elementId. Adds the :Trashed label, preserves relationships, " +
1578
+ "and excludes the node from memory-search and any read filtered via notTrashed. For KnowledgeDocument, " +
1579
+ "cascades to linked Section and Chunk children. For Conversation, cascades to attached :PART_OF Messages " +
1580
+ ". Hard removal happens later via memory-empty-trash after the grace period (default 30 days). " +
1581
+ "For bulk-delete flows, pass filterToken from memory-find-candidates — the server re-verifies the predicate " +
1582
+ "before trashing. For GDPR Right-to-Erasure, use contact-erase instead (bypasses this primitive and " +
1583
+ "hard-deletes per Article 17).", {
1584
+ elementId: z.string().describe("Neo4j elementId of the node to trash (from memory-search or memory-find-candidates)."),
1585
+ reason: z.string().optional().describe("Optional human-readable explanation; persisted as trashReason for audit."),
1586
+ filterToken: z.string().optional().describe("Opaque token from memory-find-candidates. Required for bulk-selector flows; the server re-runs the " +
1587
+ "canonical predicate on this elementId before trashing. Omit for single-node deletes where the caller " +
1588
+ "chose the target directly (e.g. from a memory-search result)."),
1589
+ }, async ({ elementId, reason, filterToken }) => {
1590
+ if (!accountId)
1591
+ return refuseNoAccount("memory-delete");
1592
+ try {
1593
+ const result = await memoryDelete({ accountId, elementId, reason, filterToken });
1594
+ const head = result.alreadyTrashed
1595
+ ? `Already trashed: [${result.labels.join(", ")}] elementId=${elementId}`
1596
+ : `Trashed: [${result.labels.join(", ")}] elementId=${elementId}`;
1597
+ const cascade = result.cascade.sections + result.cascade.chunks > 0
1598
+ ? `\nCascaded: ${result.cascade.sections} sections, ${result.cascade.chunks} chunks.`
1599
+ : "";
1600
+ const trail = result.alreadyTrashed
1601
+ ? ""
1602
+ : `\nTrashed at ${result.trashedAt}. Restore via memory-restore; hard removal after grace period via memory-empty-trash.`;
1603
+ return { content: [{ type: "text", text: `${head}${cascade}${trail}` }] };
1604
+ }
1605
+ catch (err) {
1606
+ return {
1607
+ content: [{ type: "text", text: `memory-delete failed: ${err instanceof Error ? err.message : String(err)}` }],
1608
+ isError: true,
1609
+ };
1610
+ }
1611
+ });
1612
+ server.tool("memory-restore", "Undo memory-delete on a single graph node by elementId. Removes the :Trashed label and restores " +
1613
+ "snapshotted unique-key properties. For KnowledgeDocument, walks HAS_SECTION/HAS_CHUNK edges to bring " +
1614
+ "trashed children back too. Fails loudly when an active node already holds a unique slot the trashed " +
1615
+ "node needs back (e.g. a fresh LocalBusiness was created while the old one was in trash) — " +
1616
+ "the error names the conflicting elementId so the caller can decide how to resolve.", {
1617
+ elementId: z.string().describe("Neo4j elementId of the trashed node to restore."),
1618
+ }, async ({ elementId }) => {
1619
+ if (!accountId)
1620
+ return refuseNoAccount("memory-restore");
1621
+ try {
1622
+ const result = await memoryRestore({ accountId, elementId });
1623
+ const cascade = result.cascade.sections + result.cascade.chunks > 0
1624
+ ? `\nCascaded: ${result.cascade.sections} sections, ${result.cascade.chunks} chunks.`
1625
+ : "";
1626
+ return {
1627
+ content: [{
1628
+ type: "text",
1629
+ text: `Restored: [${result.labels.join(", ")}] elementId=${elementId}${cascade}`,
1630
+ }],
1631
+ };
1632
+ }
1633
+ catch (err) {
1634
+ return {
1635
+ content: [{ type: "text", text: `memory-restore failed: ${err instanceof Error ? err.message : String(err)}` }],
1636
+ isError: true,
1637
+ };
1638
+ }
1639
+ });
1640
+ server.tool("memory-empty-trash", "Hard-delete trashed nodes whose trashedAt is older than the grace period (default 30 days). " +
1641
+ "For KnowledgeDocument candidates, also removes the on-disk attachment directory. Use dryRun=true " +
1642
+ "to preview candidates without mutating — the absence of [trash:emptied] log lines after a " +
1643
+ "[trash:empty-run] dryRun=true line is the correct-behaviour signal. Optional labels filter " +
1644
+ "restricts the sweep to a subset of node types (e.g. ['Person']).", {
1645
+ graceDays: z.number().int().min(0).optional().describe("Minimum age in days a trashed node must reach before it's eligible. Default 30."),
1646
+ dryRun: z.boolean().optional().describe("When true, lists candidates without deleting. Default false."),
1647
+ labels: z.array(z.string()).optional().describe("Optional whitelist of node labels — only nodes carrying any of these labels are eligible."),
1648
+ }, async ({ graceDays, dryRun, labels }) => {
1649
+ if (!accountId)
1650
+ return refuseNoAccount("memory-empty-trash");
1651
+ try {
1652
+ const result = await memoryEmptyTrash({ accountId, graceDays, dryRun, labels });
1653
+ const lines = [];
1654
+ lines.push(`Empty-trash run: graceDays=${result.graceDays} dryRun=${result.dryRun} candidates=${result.candidates.length} emptied=${result.emptied} attachmentDirsRemoved=${result.attachmentDirsRemoved}`);
1655
+ if (result.candidates.length > 0 && result.candidates.length <= 25) {
1656
+ for (const c of result.candidates) {
1657
+ lines.push(` - [${c.labels.join(", ")}] elementId=${c.elementId} trashedAt=${c.trashedAt} by=${c.trashedBy ?? "unknown"}`);
1658
+ }
1659
+ }
1660
+ else if (result.candidates.length > 25) {
1661
+ lines.push(` (${result.candidates.length} candidates — too many to list; grep [trash:empty-run]/[trash:emptied] in server.log for detail)`);
1662
+ }
1663
+ return { content: [{ type: "text", text: lines.join("\n") }] };
1664
+ }
1665
+ catch (err) {
1666
+ return {
1667
+ content: [{ type: "text", text: `memory-empty-trash failed: ${err instanceof Error ? err.message : String(err)}` }],
1668
+ isError: true,
1669
+ };
1670
+ }
1671
+ });
1672
+ server.tool("memory-list-attachments", "List stored file attachments for this account with their ingestion status. " +
1673
+ "Returns original filenames, sizes, upload dates, and whether each file has been ingested " +
1674
+ "into the knowledge graph. Does not include web-ingested documents (those have no file on disk).", {}, async () => {
1675
+ if (!accountId)
1676
+ return refuseNoAccount("memory-list-attachments");
1677
+ try {
1678
+ const result = await memoryListAttachments(accountId);
1679
+ if (result.entries.length === 0) {
1680
+ return { content: [{ type: "text", text: "No stored attachments found." }] };
1681
+ }
1682
+ const lines = result.entries.map((e) => {
1683
+ const status = e.softDeleted
1684
+ ? "deleted (pending purge)"
1685
+ : e.ingested
1686
+ ? "ingested"
1687
+ : "not ingested";
1688
+ const size = e.sizeBytes < 1024
1689
+ ? `${e.sizeBytes} B`
1690
+ : e.sizeBytes < 1024 * 1024
1691
+ ? `${(e.sizeBytes / 1024).toFixed(1)} KB`
1692
+ : `${(e.sizeBytes / (1024 * 1024)).toFixed(1)} MB`;
1693
+ const idLine = e.elementId
1694
+ ? ` ID: ${e.attachmentId} elementId: ${e.elementId} Stored: ${e.storedAt}`
1695
+ : ` ID: ${e.attachmentId} Stored: ${e.storedAt}`;
1696
+ return `${e.filename} (${e.mimeType}, ${size}) [${status}]\n${idLine}`;
1697
+ });
1698
+ const summary = `${result.totalFiles} files (${result.ingestedCount} ingested${result.skippedCount > 0 ? `, ${result.skippedCount} skipped` : ""})`;
1699
+ return {
1700
+ content: [{ type: "text", text: `${summary}\n\n${lines.join("\n\n")}` }],
1701
+ };
1702
+ }
1703
+ catch (err) {
1704
+ return {
1705
+ content: [{ type: "text", text: `memory-list-attachments failed: ${err instanceof Error ? err.message : String(err)}` }],
1706
+ isError: true,
1707
+ };
1708
+ }
1709
+ });
1710
+ server.tool("memory-read-attachment", "Read the content of a stored attachment from disk. Returns the full text for text/markdown files, " +
1711
+ "extracted text for PDFs (via pdftotext), and metadata + HTTP URL for images. " +
1712
+ "Use this to show the user what's in a file or to prepare content for editing.", {
1713
+ attachmentId: z.string().describe("UUID of the attachment to read"),
1714
+ }, async ({ attachmentId }) => {
1715
+ if (!accountId)
1716
+ return refuseNoAccount("memory-read-attachment");
1717
+ try {
1718
+ const result = await memoryReadAttachment(accountId, attachmentId);
1719
+ let text = `**${result.filename}** (${result.mimeType}, ${result.sizeBytes} bytes)\nStored: ${result.storedAt}\n`;
1720
+ if (result.contentNote)
1721
+ text += `\n_${result.contentNote}_\n`;
1722
+ if (result.httpUrl)
1723
+ text += `\nURL: ${result.httpUrl}\n`;
1724
+ if (result.content)
1725
+ text += `\n---\n\n${result.content}`;
1726
+ return { content: [{ type: "text", text }] };
1727
+ }
1728
+ catch (err) {
1729
+ return {
1730
+ content: [{ type: "text", text: `memory-read-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
1731
+ isError: true,
1732
+ };
1733
+ }
1734
+ });
1735
+ server.tool("memory-edit-attachment", "Edit a stored text/markdown attachment in place. Replaces the file content on disk, updates the " +
1736
+ "metadata timestamp, and re-extracts the file for chunking (populating the extract cache). " +
1737
+ "After this call, use memory-ingest with updated summaries to sync the knowledge graph. " +
1738
+ "Only text/plain and text/markdown files are editable — PDFs and images are rejected.", {
1739
+ attachmentId: z.string().describe("UUID of the attachment to edit"),
1740
+ content: z.string().describe("The full replacement text content"),
1741
+ }, async ({ attachmentId, content }) => {
1742
+ if (!accountId)
1743
+ return refuseNoAccount("memory-edit-attachment");
1744
+ try {
1745
+ const result = await memoryEditAttachment({ accountId, attachmentId, content });
1746
+ let text = `Edited: ${result.filename} (${result.oldSizeBytes} → ${result.newSizeBytes} bytes)`;
1747
+ if (result.cachePopulated) {
1748
+ text += `\nExtract cache populated: ${result.extractTextLength} chars.`;
1749
+ text += `\nProduce typed-section JSON in-turn from the loaded ontology and call memory-ingest to re-sync the knowledge graph.`;
1750
+ }
1751
+ else {
1752
+ text += `\nWARNING: File updated on disk but extract cache could not be populated.`;
1753
+ text += `\nCall memory-ingest-extract manually, then produce typed-section JSON in-turn and call memory-ingest.`;
1754
+ }
1755
+ return { content: [{ type: "text", text }] };
1756
+ }
1757
+ catch (err) {
1758
+ return {
1759
+ content: [{ type: "text", text: `memory-edit-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
1760
+ isError: true,
1761
+ };
1762
+ }
1763
+ });
1764
+ server.tool("memory-rename-attachment", "Rename a stored attachment. Updates the filename in the .meta.json sidecar and the " +
1765
+ "KnowledgeDocument name in Neo4j (if the file has been ingested). The file on disk " +
1766
+ "is not renamed — it uses UUID-based naming. Only the human-readable metadata changes.", {
1767
+ attachmentId: z.string().describe("UUID of the attachment to rename"),
1768
+ newFilename: z.string().describe("The new filename (e.g. 'quarterly-report-q1.pdf')"),
1769
+ }, async ({ attachmentId, newFilename }) => {
1770
+ if (!accountId)
1771
+ return refuseNoAccount("memory-rename-attachment");
1772
+ try {
1773
+ const result = await memoryRenameAttachment({ accountId, attachmentId, newFilename });
1774
+ if (result.oldFilename === result.newFilename) {
1775
+ return { content: [{ type: "text", text: `Filename unchanged: "${result.newFilename}"` }] };
1776
+ }
1777
+ let text = `Renamed: "${result.oldFilename}" → "${result.newFilename}"`;
1778
+ text += result.graphUpdated
1779
+ ? `\nKnowledge graph updated.`
1780
+ : `\nNo KnowledgeDocument in graph (file not yet ingested — metadata only).`;
1781
+ return { content: [{ type: "text", text }] };
1782
+ }
1783
+ catch (err) {
1784
+ return {
1785
+ content: [{ type: "text", text: `memory-rename-attachment failed: ${err instanceof Error ? err.message : String(err)}` }],
1786
+ isError: true,
1787
+ };
1788
+ }
1789
+ });
1790
+ // --- conversation-list formatting helpers ---
1791
+ /** Strip Neo4j DateTime timezone ID bracket (e.g. "[UTC]", "[Europe/London]") that Date.parse rejects. */
1792
+ function cleanNeo4jIso(isoStr) {
1793
+ return isoStr.replace(/\[.*\]$/, "");
1794
+ }
1795
+ /** Format an ISO timestamp to short human-readable form: "YYYY-MM-DD HH:MM UTC". Empty string if invalid. */
1796
+ function shortIso(isoStr) {
1797
+ if (!isoStr)
1798
+ return "";
1799
+ const ms = Date.parse(cleanNeo4jIso(isoStr));
1800
+ if (!Number.isFinite(ms))
1801
+ return "";
1802
+ return new Date(ms).toISOString().replace("T", " ").slice(0, 16) + " UTC";
1803
+ }
1804
+ /** Compute relative time string from an ISO timestamp. Returns null for >= 7 days or invalid input. */
1805
+ function relativeTime(isoStr) {
1806
+ if (!isoStr)
1807
+ return null;
1808
+ const ms = Date.parse(cleanNeo4jIso(isoStr));
1809
+ if (!Number.isFinite(ms))
1810
+ return null;
1811
+ const diffMs = Date.now() - ms;
1812
+ if (diffMs < 60_000)
1813
+ return "just now"; // includes future timestamps (clock drift)
1814
+ const mins = Math.floor(diffMs / 60_000);
1815
+ if (mins < 60)
1816
+ return `${mins}m ago`;
1817
+ const hours = Math.floor(mins / 60);
1818
+ if (hours < 24)
1819
+ return `${hours}h ago`;
1820
+ const days = Math.floor(hours / 24);
1821
+ if (days < 7)
1822
+ return `${days}d ago`;
1823
+ return null;
1824
+ }
1825
+ /** Format conversation header line with activity timestamps. Shared across metadata and inline modes. */
1826
+ function formatConversationHeader(opts) {
1827
+ const label = opts.name ? `"${opts.name}"` : opts.sessionId.slice(0, 8) + "…";
1828
+ const agentInfo = opts.agentSlug ? `${opts.agentType}/${opts.agentSlug}` : opts.agentType;
1829
+ const createdStr = shortIso(opts.createdAt) || "(no timestamp)";
1830
+ const updatedStr = shortIso(opts.updatedAt);
1831
+ if (!updatedStr) {
1832
+ return `${label} [${agentInfo}] · created ${createdStr} · (activity unknown) — ${opts.messageCount} messages`;
1833
+ }
1834
+ const createdMs = Date.parse(cleanNeo4jIso(opts.createdAt));
1835
+ const updatedMs = Date.parse(cleanNeo4jIso(opts.updatedAt));
1836
+ if (Number.isFinite(createdMs) && Number.isFinite(updatedMs) && Math.abs(updatedMs - createdMs) < 1000) {
1837
+ const ago = relativeTime(opts.updatedAt);
1838
+ const agoStr = ago ? ` (${ago})` : "";
1839
+ return `${label} [${agentInfo}] · created ${createdStr}${agoStr} — ${opts.messageCount} messages`;
1840
+ }
1841
+ const ago = relativeTime(opts.updatedAt);
1842
+ const agoStr = ago ? ` (${ago})` : "";
1843
+ return `${label} [${agentInfo}] · created ${createdStr} · active ${updatedStr}${agoStr} — ${opts.messageCount} messages`;
1844
+ }
1845
+ server.tool("conversation-list", "List conversations or retrieve messages from a specific conversation. " +
1846
+ "Without sessionId: lists all conversations with message counts, ordered by most recent activity (updatedAt DESC). " +
1847
+ "Headers show both creation time and last activity time; when they differ, the conversation was resumed. " +
1848
+ "With sessionId: returns all messages in that conversation chronologically with per-message timestamps. " +
1849
+ "With includeMessages: returns conversations with their timestamped messages inline (useful for batch review). " +
1850
+ "The since filter matches against activity time (updatedAt), not creation time.", {
1851
+ sessionId: z
1852
+ .string()
1853
+ .optional()
1854
+ .describe("If provided, returns messages for this conversation. If omitted, lists all conversations."),
1855
+ agentType: z
1856
+ .string()
1857
+ .optional()
1858
+ .describe("Filter conversations by agent type ('admin' or 'public'). Only applies when listing conversations."),
1859
+ agentSlug: z
1860
+ .string()
1861
+ .optional()
1862
+ .describe("Filter conversations by public agent slug (e.g. 'maxy-assistant'). Only applies when listing conversations."),
1863
+ since: z
1864
+ .string()
1865
+ .optional()
1866
+ .describe("ISO 8601 timestamp. Only return conversations with activity (updatedAt) at or after this time. Only applies when listing conversations."),
1867
+ includeMessages: z
1868
+ .boolean()
1869
+ .optional()
1870
+ .describe("When true, include message content inline with each conversation (max 50 messages per conversation). Only applies when listing conversations."),
1871
+ limit: z
1872
+ .number()
1873
+ .optional()
1874
+ .describe("Maximum results (default 50 for conversations, 200 for messages)"),
1875
+ }, async ({ sessionId, agentType, agentSlug, since, includeMessages, limit }) => {
1876
+ if (!accountId)
1877
+ return refuseNoAccount("conversation-list");
1878
+ const startTime = Date.now();
1879
+ const dbSession = getSession();
1880
+ try {
1881
+ if (sessionId) {
1882
+ // Messages mode — chronological listing for a specific conversation
1883
+ const messageLimit = limit ?? 200;
1884
+ const result = await dbSession.run(`MATCH (m:Message)-[:PART_OF]->(c:Conversation {sessionId: $sessionId, accountId: $accountId})
1885
+ WHERE ${notTrashed("m")} AND ${notTrashed("c")}
1886
+ RETURN m.role AS role, m.content AS content, m.createdAt AS createdAt
1887
+ ORDER BY m.createdAt ASC
1888
+ LIMIT $limit`, { sessionId, accountId, limit: int(messageLimit) });
1889
+ if (result.records.length === 0) {
1890
+ return {
1891
+ content: [{ type: "text", text: "No messages found for this conversation." }],
1892
+ };
1893
+ }
1894
+ const formatted = result.records.map((r) => {
1895
+ const role = String(r.get("role") ?? "unknown");
1896
+ const content = String(r.get("content") ?? "");
1897
+ const ts = shortIso(String(r.get("createdAt") ?? ""));
1898
+ return ts ? `[${role} ${ts}]\n ${content}` : `[${role}]\n ${content}`;
1899
+ });
1900
+ process.stderr.write(`[conversation-list] [${accountId}] mode=messages sessionId=${sessionId.slice(0, 8)}… count=${result.records.length} (${Date.now() - startTime}ms)\n`);
1901
+ return {
1902
+ content: [{ type: "text", text: formatted.join("\n---\n") }],
1903
+ };
1904
+ }
1905
+ // List mode — all conversations with message counts (or inline messages)
1906
+ const convLimit = limit ?? (includeMessages ? 20 : 50);
1907
+ const whereClauses = [];
1908
+ if (agentType)
1909
+ whereClauses.push("c.agentType = $agentType");
1910
+ if (agentSlug)
1911
+ whereClauses.push("c.agentSlug = $agentSlug");
1912
+ if (since)
1913
+ whereClauses.push("c.updatedAt >= datetime($since)");
1914
+ const whereStr = whereClauses.length > 0 ? `WHERE ${whereClauses.join(" AND ")}` : "";
1915
+ const params = {
1916
+ accountId,
1917
+ limit: int(convLimit),
1918
+ ...(agentType ? { agentType } : {}),
1919
+ ...(agentSlug ? { agentSlug } : {}),
1920
+ ...(since ? { since } : {}),
1921
+ };
1922
+ if (includeMessages) {
1923
+ // Inline messages mode — conversations with message content
1924
+ const msgLimit = 50;
1925
+ const trashedConvFilter = notTrashed("c");
1926
+ const trashedMsgFilter = notTrashed("m");
1927
+ const result = await dbSession.run(`MATCH (c:Conversation {accountId: $accountId})
1928
+ ${whereStr ? whereStr + " AND " : "WHERE "}${trashedConvFilter}
1929
+ WITH c ORDER BY c.updatedAt DESC LIMIT $limit
1930
+ OPTIONAL MATCH (m:Message)-[:PART_OF]->(c) WHERE ${trashedMsgFilter}
1931
+ WITH c, m ORDER BY m.createdAt ASC
1932
+ WITH c, collect({role: m.role, content: m.content, createdAt: m.createdAt})[0..${msgLimit}] AS messages
1933
+ RETURN c.sessionId AS sessionId,
1934
+ c.agentType AS agentType,
1935
+ c.agentSlug AS agentSlug,
1936
+ c.name AS name,
1937
+ c.createdAt AS createdAt,
1938
+ c.updatedAt AS updatedAt,
1939
+ size(messages) AS messageCount,
1940
+ messages
1941
+ ORDER BY c.updatedAt DESC`, params);
1942
+ if (result.records.length === 0) {
1943
+ return {
1944
+ content: [{ type: "text", text: "No conversations found." }],
1945
+ };
1946
+ }
1947
+ const formatted = result.records.map((r) => {
1948
+ const id = String(r.get("sessionId") ?? "");
1949
+ const msgCount = Number(r.get("messageCount") ?? 0);
1950
+ const header = formatConversationHeader({
1951
+ name: r.get("name"),
1952
+ sessionId: id,
1953
+ agentType: String(r.get("agentType") ?? ""),
1954
+ agentSlug: r.get("agentSlug"),
1955
+ createdAt: String(r.get("createdAt") ?? ""),
1956
+ updatedAt: String(r.get("updatedAt") ?? ""),
1957
+ messageCount: msgCount,
1958
+ });
1959
+ const messages = r.get("messages");
1960
+ const validMessages = (messages || []).filter((m) => m.role != null);
1961
+ if (validMessages.length === 0) {
1962
+ return `### ${header}\n (no messages)`;
1963
+ }
1964
+ let missingTs = 0;
1965
+ const msgLines = validMessages.map((m) => {
1966
+ const role = String(m.role);
1967
+ const content = String(m.content ?? "");
1968
+ const ts = shortIso(String(m.createdAt ?? ""));
1969
+ if (!ts)
1970
+ missingTs++;
1971
+ return ts ? `[${role} ${ts}] ${content}` : `[${role}] ${content}`;
1972
+ });
1973
+ const footer = missingTs > 0 ? `\n(${missingTs} message${missingTs > 1 ? "s" : ""} had no timestamp)` : "";
1974
+ return `### ${header}\n${msgLines.join("\n")}${footer}`;
1975
+ });
1976
+ process.stderr.write(`[conversation-list] [${accountId}] mode=inline agentType=${agentType ?? "all"} agentSlug=${agentSlug ?? "all"} since=${since ?? "none"} count=${result.records.length} (${Date.now() - startTime}ms)\n`);
1977
+ return {
1978
+ content: [{ type: "text", text: formatted.join("\n\n") }],
1979
+ };
1980
+ }
1981
+ // Metadata mode — conversations with message counts only
1982
+ const trashedConvFilter = notTrashed("c");
1983
+ const trashedMsgFilter = notTrashed("m");
1984
+ const result = await dbSession.run(`MATCH (c:Conversation {accountId: $accountId})
1985
+ ${whereStr ? whereStr + " AND " : "WHERE "}${trashedConvFilter}
1986
+ WITH c ORDER BY c.updatedAt DESC LIMIT $limit
1987
+ OPTIONAL MATCH (m:Message)-[:PART_OF]->(c) WHERE ${trashedMsgFilter}
1988
+ RETURN c.sessionId AS sessionId,
1989
+ c.agentType AS agentType,
1990
+ c.agentSlug AS agentSlug,
1991
+ c.name AS name,
1992
+ c.createdAt AS createdAt,
1993
+ c.updatedAt AS updatedAt,
1994
+ count(m) AS messageCount
1995
+ ORDER BY c.updatedAt DESC`, params);
1996
+ if (result.records.length === 0) {
1997
+ return {
1998
+ content: [{ type: "text", text: "No conversations found." }],
1999
+ };
2000
+ }
2001
+ const formatted = result.records.map((r) => {
2002
+ const id = String(r.get("sessionId") ?? "");
2003
+ const msgCount = typeof r.get("messageCount") === "number"
2004
+ ? r.get("messageCount")
2005
+ : Number(r.get("messageCount"));
2006
+ return formatConversationHeader({
2007
+ name: r.get("name"),
2008
+ sessionId: id,
2009
+ agentType: String(r.get("agentType") ?? ""),
2010
+ agentSlug: r.get("agentSlug"),
2011
+ createdAt: String(r.get("createdAt") ?? ""),
2012
+ updatedAt: String(r.get("updatedAt") ?? ""),
2013
+ messageCount: msgCount,
2014
+ });
2015
+ });
2016
+ process.stderr.write(`[conversation-list] [${accountId}] mode=list agentType=${agentType ?? "all"} agentSlug=${agentSlug ?? "all"} since=${since ?? "none"} count=${result.records.length} (${Date.now() - startTime}ms)\n`);
2017
+ return {
2018
+ content: [{ type: "text", text: formatted.join("\n") }],
2019
+ };
2020
+ }
2021
+ catch (err) {
2022
+ return {
2023
+ content: [
2024
+ {
2025
+ type: "text",
2026
+ text: `conversation-list failed: ${err instanceof Error ? err.message : String(err)}`,
2027
+ },
2028
+ ],
2029
+ isError: true,
2030
+ };
2031
+ }
2032
+ finally {
2033
+ await dbSession.close();
2034
+ }
2035
+ });
2036
+ server.tool("profile-update", "Create, update, or reinforce a user preference; set top-level UserProfile fields (timezone, locale, givenName, role, expertise) via profileFields; AND set operator-identity fields (email, telephone) on the operator's personal-profile Person via personFields. Person is the canonical operator-identity store; UserProfile carries preferences and behavioural state only. Supports modes: reinforce (re-observed, boost confidence), update (value changed), contradict (value contradicts prior), merge (combine overlapping preferences).", {
2037
+ category: z.enum(["communication", "scheduling", "decision", "workflow", "content", "interaction"])
2038
+ .describe("Preference category"),
2039
+ key: z.string().describe("Preference identifier (e.g. 'response_length', 'meeting_time')"),
2040
+ value: z.string().describe("The preference value (e.g. 'terse', 'never before 10am')"),
2041
+ source: z.enum(["explicit", "behavioural"]).optional()
2042
+ .describe("How the preference was observed. Defaults to 'behavioural'."),
2043
+ mode: z.enum(["reinforce", "update", "contradict", "merge"]).optional()
2044
+ .describe("Update mode. Defaults to 'reinforce'."),
2045
+ sessionId: z.string().optional()
2046
+ .describe("Conversation ID for evidence linking"),
2047
+ profileFields: z.record(z.string(), z.unknown()).optional()
2048
+ .describe("Top-level UserProfile fields to update (e.g. timezone, locale, role)"),
2049
+ personFields: z.object({
2050
+ email: z.string().optional(),
2051
+ telephone: z.string().optional(),
2052
+ }).optional()
2053
+ .describe("Operator-identity fields written to the OWNS-bound Person. Use canonical `telephone` (NOT `phone` — that is the schema synonym, not the canonical name). Tool throws if the AdminUser-OWNS-Person edge is missing rather than silently no-op."),
2054
+ mergeSourceIds: z.array(z.string()).optional()
2055
+ .describe("For mode 'merge': preferenceIds of sources to combine into this preference"),
2056
+ }, async ({ category, key, value, source, mode, sessionId, profileFields, personFields, mergeSourceIds }) => {
2057
+ if (!accountId)
2058
+ return refuseNoAccount("profile-update");
2059
+ try {
2060
+ if (!userId) {
2061
+ return { content: [{ type: "text", text: "profile-update requires an authenticated admin session with userId" }], isError: true };
2062
+ }
2063
+ const result = await profileUpdate({
2064
+ accountId,
2065
+ userId,
2066
+ category,
2067
+ key,
2068
+ value,
2069
+ source,
2070
+ mode,
2071
+ sessionId,
2072
+ profileFields: profileFields,
2073
+ personFields,
2074
+ mergeSourceIds,
2075
+ });
2076
+ return {
2077
+ content: [{
2078
+ type: "text",
2079
+ text: `Preference ${result.action}: ${category}/${key} (confidence: ${result.confidence.toFixed(2)}${result.mergedCount ? `, merged ${result.mergedCount} sources` : ""})`,
2080
+ }],
2081
+ };
2082
+ }
2083
+ catch (err) {
2084
+ return {
2085
+ content: [{
2086
+ type: "text",
2087
+ text: `profile-update failed: ${err instanceof Error ? err.message : String(err)}`,
2088
+ }],
2089
+ isError: true,
2090
+ };
2091
+ }
2092
+ });
2093
+ server.tool("profile-delete", "Soft-delete a specific user preference (marks :Trashed, restorable via memory-restore within the grace period; permanently removed later by memory-empty-trash). Use when the owner says 'forget that' or 'don't remember X'. Idempotent — succeeds even if the preference doesn't exist.", {
2094
+ category: z.enum(["communication", "scheduling", "decision", "workflow", "content", "interaction"])
2095
+ .describe("Preference category"),
2096
+ key: z.string().describe("Preference key to delete"),
2097
+ }, async ({ category, key }) => {
2098
+ if (!accountId)
2099
+ return refuseNoAccount("profile-delete");
2100
+ try {
2101
+ if (!userId) {
2102
+ return { content: [{ type: "text", text: "profile-delete requires an authenticated admin session with userId" }], isError: true };
2103
+ }
2104
+ const result = await profileDelete({ accountId, userId, category, key });
2105
+ return {
2106
+ content: [{
2107
+ type: "text",
2108
+ text: result.deleted
2109
+ ? `Deleted preference: ${category}/${key}`
2110
+ : `No preference found for ${category}/${key} — nothing to delete.`,
2111
+ }],
2112
+ };
2113
+ }
2114
+ catch (err) {
2115
+ return {
2116
+ content: [{
2117
+ type: "text",
2118
+ text: `profile-delete failed: ${err instanceof Error ? err.message : String(err)}`,
2119
+ }],
2120
+ isError: true,
2121
+ };
2122
+ }
2123
+ });
2124
+ // profile-read contains owner PII (name, role, timezone, preferences) —
2125
+ // admin-only, not exposed to the public agent.
2126
+ server.tool("profile-read", "Read the business owner's profile and preferences. Returns preferences grouped by category (communication, scheduling, decisions, workflow, content, interaction). " +
2127
+ "With detail=true: includes per-preference confidence scores, evidence trail (which conversations the preference was observed in), source (explicit vs behavioural), and summary statistics. " +
2128
+ "Use detail=true when the owner asks 'what do you know about me?' or when reviewing memory accuracy.", {
2129
+ detail: z.boolean().optional().describe("When true, returns per-preference confidence, source, evidence trail, and memory statistics. " +
2130
+ "Default false returns a compact summary for system prompt injection."),
2131
+ }, async ({ detail }) => {
2132
+ if (!accountId)
2133
+ return refuseNoAccount("profile-read");
2134
+ try {
2135
+ if (!userId) {
2136
+ return { content: [{ type: "text", text: "profile-read requires an authenticated admin session with userId" }], isError: true };
2137
+ }
2138
+ const result = await profileRead({ accountId, userId, detail: detail ?? false });
2139
+ return {
2140
+ content: [{ type: "text", text: result.summary }],
2141
+ };
2142
+ }
2143
+ catch (err) {
2144
+ return {
2145
+ content: [
2146
+ {
2147
+ type: "text",
2148
+ text: `profile-read failed: ${err instanceof Error ? err.message : String(err)}`,
2149
+ },
2150
+ ],
2151
+ isError: true,
2152
+ };
2153
+ }
2154
+ });
2155
+ // memory-brain-capture-recent: read-only diagnostic for the graph writes
2156
+ // admin dispatches to `database-operator` (inline mid-turn, plus the
2157
+ // on-demand `/insight` graph-completeness sweep).
2158
+ // Returns recent :MENTIONS edges (:Message-[:MENTIONS]->Entity) and
2159
+ // :Idea nodes filtered by r.createdByAgent='database-operator'. The
2160
+ // admin agent uses this to answer "what has the brain captured today?"
2161
+ // without touching cypher. Task 439.
2162
+ server.tool("memory-brain-capture-recent", "Read the most recent per-turn graph-pass writes for this account: entity mentions extracted from operator messages, and original-thinking :Idea nodes. " +
2163
+ "Default window is the last 24 hours. " +
2164
+ "Use this when the operator asks 'what has the brain captured today?', 'show me recent mentions of X', or 'what ideas did I leave on the table this week?'.", {
2165
+ windowHours: z.number().int().optional().describe("Hours back from now. Default 24. Capped at 720 (30 days)."),
2166
+ limit: z.number().int().optional().describe("Max rows returned. Default 50, max 200."),
2167
+ }, async ({ windowHours, limit }) => {
2168
+ try {
2169
+ if (!accountId)
2170
+ return refuseNoAccount("memory-brain-capture-recent");
2171
+ const result = await memoryBrainCaptureRecent({ accountId, windowHours, limit });
2172
+ return {
2173
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
2174
+ };
2175
+ }
2176
+ catch (err) {
2177
+ return {
2178
+ content: [{
2179
+ type: "text",
2180
+ text: `memory-brain-capture-recent failed: ${err instanceof Error ? err.message : String(err)}`,
2181
+ }],
2182
+ isError: true,
2183
+ };
2184
+ }
2185
+ });
2186
+ // -------------------------------------------------------------------------
2187
+ // Deny-list maintenance + conversation-memory expunge.
2188
+ //
2189
+ // The deny-list is operator-curated storage of "never surface these
2190
+ // substrings" signal. Nothing auto-applies it — no cron, no bulk engine.
2191
+ // The admin agent reads the list and applies discretion per case via
2192
+ // memory-update, memory-delete, or conversation-memory-expunge. This
2193
+ // replaces the removed graph-prune autonomous rule engine whose
2194
+ // orphan-delete rule wiped 19 nodes on 2026-04-20.
2195
+ // -------------------------------------------------------------------------
2196
+ server.tool("graph-prune-denylist-add", "Add one or more strings to the operator-curated deny-list. The list is a stored signal — no cron, no " +
2197
+ "autonomous sweep. The admin agent reads the list and decides per case whether to null a property " +
2198
+ "via memory-update, remove a node via memory-delete, or scrub a conversation's :Memory via " +
2199
+ "conversation-memory-expunge. Use to record poisonous substrings (retired domain names, wrong " +
2200
+ "account ids, fabricated identifiers) that you want the agent to watch for. The list is shared " +
2201
+ "per-device and survives upgrades.", {
2202
+ values: z.array(z.string().min(1)).min(1).describe("Substring values to add. Match is exact substring (case-sensitive) against string-typed properties only."),
2203
+ }, async ({ values }) => {
2204
+ if (!accountId)
2205
+ return refuseNoAccount("graph-prune-denylist-add");
2206
+ try {
2207
+ const result = await graphPruneDenylistAdd(values);
2208
+ const lines = [
2209
+ `Added ${result.added.length} entries to deny-list (total ${result.totalAfter}).`,
2210
+ ];
2211
+ if (result.added.length > 0)
2212
+ lines.push(`Added: ${result.added.join(", ")}`);
2213
+ if (result.skipped.length > 0)
2214
+ lines.push(`Already present (skipped): ${result.skipped.join(", ")}`);
2215
+ lines.push("No autonomous sweep — apply discretion via memory-update / memory-delete / conversation-memory-expunge on reads that surface matching content.");
2216
+ return { content: [{ type: "text", text: lines.join("\n") }] };
2217
+ }
2218
+ catch (err) {
2219
+ return {
2220
+ content: [{ type: "text", text: `graph-prune-denylist-add failed: ${err instanceof Error ? err.message : String(err)}` }],
2221
+ isError: true,
2222
+ };
2223
+ }
2224
+ });
2225
+ server.tool("graph-prune-denylist-remove", "Remove one or more strings from the operator-curated deny-list. Entries no longer serve as signal " +
2226
+ "for the admin agent. Any property values previously nulled via manual memory-update calls are not " +
2227
+ "restored — audit entries on each affected node remain for forensic review.", {
2228
+ values: z.array(z.string().min(1)).min(1).describe("Substring values to remove (must match exactly as previously added)."),
2229
+ }, async ({ values }) => {
2230
+ if (!accountId)
2231
+ return refuseNoAccount("graph-prune-denylist-remove");
2232
+ try {
2233
+ const result = await graphPruneDenylistRemove(values);
2234
+ const lines = [
2235
+ `Removed ${result.removed.length} entries from deny-list (total ${result.totalAfter}).`,
2236
+ ];
2237
+ if (result.removed.length > 0)
2238
+ lines.push(`Removed: ${result.removed.join(", ")}`);
2239
+ if (result.notFound.length > 0)
2240
+ lines.push(`Not present (skipped): ${result.notFound.join(", ")}`);
2241
+ return { content: [{ type: "text", text: lines.join("\n") }] };
2242
+ }
2243
+ catch (err) {
2244
+ return {
2245
+ content: [{ type: "text", text: `graph-prune-denylist-remove failed: ${err instanceof Error ? err.message : String(err)}` }],
2246
+ isError: true,
2247
+ };
2248
+ }
2249
+ });
2250
+ server.tool("conversation-memory-expunge", "Remove deny-listable content from a specific conversation's :Memory nodes by manually-supplied " +
2251
+ "substring pattern. Targets :Memory nodes linked to the named Conversation; nulls every string property " +
2252
+ "whose value contains the pattern, with an audit entry on each affected node. The conversation transcript " +
2253
+ "(Message nodes) is immutable history and is never modified — only the derived :Memory payload that " +
2254
+ "memory-search would otherwise re-surface. Use when a single conversation polluted memory with claims " +
2255
+ "that should not propagate (e.g. wrong-account hostnames, fabricated identifiers).", {
2256
+ sessionId: z.string().min(1).describe("The Conversation node's sessionId to scope the expunge to."),
2257
+ pattern: z.string().min(1).describe("The substring to scrub from string properties on linked :Memory nodes."),
2258
+ }, async ({ sessionId, pattern }) => {
2259
+ if (!accountId)
2260
+ return refuseNoAccount("conversation-memory-expunge");
2261
+ try {
2262
+ const result = await conversationMemoryExpunge({ accountId, sessionId, pattern });
2263
+ const lines = [
2264
+ `Expunged "${result.pattern}" from conversation ${result.sessionId.slice(0, 8)}…`,
2265
+ `:Memory nodes scanned: ${result.nodesScanned}`,
2266
+ `Properties nulled: ${result.propertiesNulled}`,
2267
+ ];
2268
+ if (result.affectedNodeIds.length > 0 && result.affectedNodeIds.length <= 25) {
2269
+ lines.push(`Affected node ids: ${result.affectedNodeIds.join(", ")}`);
2270
+ }
2271
+ else if (result.affectedNodeIds.length > 25) {
2272
+ lines.push(`Affected node ids: ${result.affectedNodeIds.length} nodes (too many to list — see graph-prune.log for [graph:prune:action] entries).`);
2273
+ }
2274
+ return { content: [{ type: "text", text: lines.join("\n") }] };
2275
+ }
2276
+ catch (err) {
2277
+ return {
2278
+ content: [{ type: "text", text: `conversation-memory-expunge failed: ${err instanceof Error ? err.message : String(err)}` }],
2279
+ isError: true,
2280
+ };
2281
+ }
2282
+ });
2283
+ }
2284
+ // graph-prune-denylist-list and conversation-search are read-only — available regardless of readOnly mode.
2285
+ server.tool("graph-prune-denylist-list", "List the current operator-curated deny-list values used by the daily graph-prune cron. " +
2286
+ "Returns the substring values, the timestamp of the last edit, and the total count.", {}, () => {
2287
+ if (!accountId)
2288
+ return refuseNoAccount("graph-prune-denylist-list");
2289
+ try {
2290
+ const result = graphPruneDenylistList();
2291
+ if (result.count === 0) {
2292
+ return { content: [{ type: "text", text: "Deny-list is empty. Use graph-prune-denylist-add to seed entries." }] };
2293
+ }
2294
+ const text = `Deny-list (${result.count} entries, updated ${result.updatedAt}):\n${result.values.map((v) => ` - ${v}`).join("\n")}`;
2295
+ return { content: [{ type: "text", text }] };
2296
+ }
2297
+ catch (err) {
2298
+ return {
2299
+ content: [{ type: "text", text: `graph-prune-denylist-list failed: ${err instanceof Error ? err.message : String(err)}` }],
2300
+ isError: true,
2301
+ };
2302
+ }
2303
+ });
2304
+ // conversation-search is read-only — available regardless of readOnly mode.
2305
+ // When SESSION_ID is set (public agent), results are scoped to that conversation only.
2306
+ eagerTool(server, "conversation-search", "Search conversation history using semantic vector search. Returns relevant past messages, ordered by relevance. Use this to recall specific past interactions.", {
2307
+ query: z.string().describe("Natural language search query"),
2308
+ limit: z
2309
+ .number()
2310
+ .optional()
2311
+ .describe("Maximum number of results (default 10)"),
2312
+ }, async ({ query, limit: maxResults }) => {
2313
+ if (!accountId)
2314
+ return refuseNoAccount("conversation-search");
2315
+ try {
2316
+ const queryEmbedding = await embed(query);
2317
+ const resultLimit = maxResults ?? 10;
2318
+ const dbSession = getSession();
2319
+ try {
2320
+ const conversationSessionId = resolveSessionId();
2321
+ const sessionClause = conversationSessionId
2322
+ ? "AND node.sessionId = $sessionId"
2323
+ : "";
2324
+ const result = await dbSession.run(`CALL db.index.vector.queryNodes('message_embedding', $limit, $embedding)
2325
+ YIELD node, score
2326
+ WHERE node.accountId = $accountId
2327
+ ${sessionClause}
2328
+ AND ${notTrashed("node")}
2329
+ WITH node, score
2330
+ OPTIONAL MATCH (node)-[:PART_OF]->(c:Conversation) WHERE ${notTrashed("c")}
2331
+ RETURN node.messageId AS messageId,
2332
+ node.role AS role,
2333
+ node.content AS content,
2334
+ node.sessionId AS sessionId,
2335
+ c.name AS sessionName,
2336
+ node.createdAt AS createdAt,
2337
+ score
2338
+ ORDER BY score DESC
2339
+ LIMIT $limit`, {
2340
+ embedding: queryEmbedding,
2341
+ limit: int(resultLimit),
2342
+ accountId,
2343
+ ...(conversationSessionId ? { sessionId: conversationSessionId } : {}),
2344
+ });
2345
+ if (result.records.length === 0) {
2346
+ return {
2347
+ content: [{ type: "text", text: "No conversation history found for this query." }],
2348
+ };
2349
+ }
2350
+ const formatted = result.records.map((r) => {
2351
+ const role = r.get("role");
2352
+ const content = r.get("content");
2353
+ const score = typeof r.get("score") === "number" ? r.get("score") : Number(r.get("score"));
2354
+ const createdAt = String(r.get("createdAt"));
2355
+ const convId = r.get("sessionId");
2356
+ const sessionName = r.get("sessionName");
2357
+ const convPrefix = convId ? convId.slice(0, 8) : "unknown";
2358
+ const convLabel = sessionName
2359
+ ? `[conv:${convPrefix} "${sessionName}"]`
2360
+ : `[conv:${convPrefix}]`;
2361
+ return `${convLabel} [${role}] (score: ${score.toFixed(3)}, ${createdAt})\n ${content}`;
2362
+ });
2363
+ // Diagnostic: log when admin search results span multiple conversations
2364
+ const distinctConvIds = new Set(result.records
2365
+ .map((r) => r.get("sessionId"))
2366
+ .filter(Boolean));
2367
+ if (distinctConvIds.size > 1) {
2368
+ const prefixes = [...distinctConvIds].map((id) => id.slice(0, 8));
2369
+ process.stderr.write(`[conversation-search] [${accountId}] results span ${distinctConvIds.size} conversations: ${prefixes.join(", ")} (query: ${query.slice(0, 80)})\n`);
2370
+ }
2371
+ return {
2372
+ content: [{ type: "text", text: formatted.join("\n---\n") }],
2373
+ };
2374
+ }
2375
+ finally {
2376
+ await dbSession.close();
2377
+ }
2378
+ }
2379
+ catch (err) {
2380
+ return {
2381
+ content: [
2382
+ {
2383
+ type: "text",
2384
+ text: `Conversation search failed: ${err instanceof Error ? err.message : String(err)}`,
2385
+ },
2386
+ ],
2387
+ isError: true,
2388
+ };
2389
+ }
2390
+ });
2391
+ // image-fetch — return a remote image URL as a vision-capable content block.
2392
+ // Built for the listing-curator specialist's per-image vision pass; useful to
2393
+ // any caller that has an image URL in hand and a model that can see images.
2394
+ // Specialist tool, not in ADMIN_CORE_TOOLS — registered via server.tool, not
2395
+ // eagerTool (deferred-by-default ToolSearch tax is acceptable because the
2396
+ // curator is the only routine caller).
2397
+ server.tool("image-fetch", [
2398
+ "Fetch a remote image URL and return its bytes as an inline image content block the model can see.",
2399
+ "Guards: http/https only, content-type must start with image/, 10 MB byte cap, 30 s timeout.",
2400
+ "Returns one text block summarising the fetch plus one image block on success; one text block with isError on failure.",
2401
+ ].join(" "), {
2402
+ url: z.string().describe("Absolute http(s) URL of the image to fetch."),
2403
+ }, async ({ url }) => {
2404
+ const result = await fetchImageAsContent(url);
2405
+ if (!result.ok) {
2406
+ return {
2407
+ content: [{ type: "text", text: `image-fetch failed: ${result.reason}` }],
2408
+ isError: true,
2409
+ };
2410
+ }
2411
+ return {
2412
+ content: [
2413
+ {
2414
+ type: "text",
2415
+ text: `Fetched ${result.bytes} bytes (${result.mimeType}) from ${url}`,
2416
+ },
2417
+ {
2418
+ type: "image",
2419
+ data: result.base64,
2420
+ mimeType: result.mimeType,
2421
+ },
2422
+ ],
2423
+ };
2424
+ });
2425
+ // ===================================================================
2426
+ // Typed-edge auto-extraction pass (Task 305)
2427
+ // ===================================================================
2428
+ //
2429
+ // Schema-bounded pass that reads prose-bearing nodes the operator's account
2430
+ // wrote since `sinceIso` and asks Haiku for typed-edge proposals against
2431
+ // `TYPED_EDGE_ALLOWLIST`. Owned by `database-operator`
2432
+ // (admin Task-spawns it during an on-demand `/insight` pass); NOT in
2433
+ // `ADMIN_CORE_TOOLS`. Backfill is via the CLI under `scripts/backfill-typed-edges.ts`,
2434
+ // bypassing this tool.
2435
+ server.tool("memory-typed-edge-pass", "Run the typed-edge auto-extraction pass over prose-bearing nodes this account wrote since sinceIso. Reads Message/Page/Meeting/Email/Idea/Note/Post/Report nodes, batches them, asks Haiku for typed-edge proposals against the closed allowlist (ATTENDED, WORKS_AT, INVESTED_IN, FOUNDED, ADVISES, MENTIONS, AUTHORED, ATTACHED_TO, REFERENCES), validates each proposal inline, and MERGEs accepted edges with createdBy provenance. Returns the counters (nodes, proposed, accepted, rejected, failed, ms) for the caller to hand back to admin for its insight-pass summary.", {
2436
+ sinceIso: z.string().describe("ISO timestamp lower bound. Prose nodes with updatedAt >= sinceIso are processed."),
2437
+ sessionId: z.string().optional().describe("Conversation id stamped onto the createdBy provenance of MERGEd edges. Defaults to SESSION_ID env if absent."),
2438
+ }, async (args) => {
2439
+ if (!accountId)
2440
+ return refuseNoAccount("memory-typed-edge-pass");
2441
+ const dbSession = getSession();
2442
+ try {
2443
+ // Cast: the McpServer instance is `any`-typed at the module level (see
2444
+ // file-top comment on TS2589), so `args` infers as the loose
2445
+ // ShapeOutput<ZodRawShapeCompat> instead of the Zod schema above.
2446
+ // Runtime shape is enforced by the schema; this re-asserts the typed
2447
+ // contract at the consumer boundary. Task 404.
2448
+ const result = await memoryTypedEdgePass(args, dbSession, accountId);
2449
+ return {
2450
+ content: [{
2451
+ type: "text",
2452
+ text: JSON.stringify(result),
2453
+ }],
2454
+ };
2455
+ }
2456
+ catch (err) {
2457
+ return {
2458
+ content: [{
2459
+ type: "text",
2460
+ text: `Typed-edge pass failed: ${err instanceof Error ? err.message : String(err)}`,
2461
+ }],
2462
+ isError: true,
2463
+ };
2464
+ }
2465
+ finally {
2466
+ await dbSession.close();
2467
+ }
2468
+ });
2469
+ // ===================================================================
2470
+ // Dream-cycle (Task 327, absorbs 330)
2471
+ // ===================================================================
2472
+ // Report MCP tools (Task 332) are registered earlier in this file.
2473
+ // Dream-run calls the same writer in-process for the per-run :Report.
2474
+ server.tool("memory-dream-run", "Operator-initiated dream-cycle: graph-hygiene sweep across seven phases " +
2475
+ "(orphan detection, stale compiled-truth, edges to :Trashed targets, citation audit on :TimelineEvent, " +
2476
+ "prune compiled-truth revisions, materialise :BACKLINKS edges, tag normalisation). " +
2477
+ "Writes a :Report node at the end. Failure of any phase logs and continues. " +
2478
+ "Pass phases=[4] to run only the citation audit (e.g. after a bulk ingest), phases=[5] for revision prune only, " +
2479
+ "or phases=[6,7] for backlink/tag maintenance only.", {
2480
+ operatorId: z.string().optional().describe("Identifier of the operator who triggered the run; appears in the report and log line."),
2481
+ phases: z.array(z.number().int().min(1).max(7)).optional().describe("Subset of phases to run. Default [1,2,3,4,5,6,7]. Order is fixed."),
2482
+ maxEventsPerRun: z.number().int().positive().optional().describe("Phase 4 cap on :TimelineEvent rows scanned per run. Default 200."),
2483
+ }, async ({ operatorId, phases, maxEventsPerRun }) => {
2484
+ if (!accountId)
2485
+ return refuseNoAccount("memory-dream-run");
2486
+ try {
2487
+ const result = await memoryDreamRun({ accountId, operatorId, phases, maxEventsPerRun });
2488
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
2489
+ }
2490
+ catch (err) {
2491
+ return {
2492
+ content: [{ type: "text", text: `memory-dream-run failed: ${err instanceof Error ? err.message : String(err)}` }],
2493
+ isError: true,
2494
+ };
2495
+ }
2496
+ });
2497
+ server.tool("memory-review-queue", "Read-only summary of the dream-cycle's review queues (:OrphanCandidate, :CitationProposal). " +
2498
+ "Returns per-queue counts and a small sample so the operator can see whether to triage.", {
2499
+ sampleSize: z.number().int().positive().optional().describe("Sample rows per queue. Default 5, max 25."),
2500
+ }, async ({ sampleSize }) => {
2501
+ if (!accountId)
2502
+ return refuseNoAccount("memory-review-queue");
2503
+ try {
2504
+ const result = await memoryReviewQueue({ accountId, sampleSize });
2505
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
2506
+ }
2507
+ catch (err) {
2508
+ return {
2509
+ content: [{ type: "text", text: `memory-review-queue failed: ${err instanceof Error ? err.message : String(err)}` }],
2510
+ isError: true,
2511
+ };
2512
+ }
2513
+ });
2514
+ // Cleanup on exit
2515
+ process.on("SIGINT", async () => {
2516
+ liveSchemaRuntime.cache.stop();
2517
+ await closeDriver();
2518
+ process.exit(0);
2519
+ });
2520
+ const transport = new StdioServerTransport();
2521
+ await server.connect(transport);
2522
+ //# sourceMappingURL=index.js.map